1 / 313

Master in BIOINFORMATICA Corso propedeutico di Informatica DOCENTE: Elisa Tiezzi

Master in BIOINFORMATICA Corso propedeutico di Informatica DOCENTE: Elisa Tiezzi UNIVERSITA’ DI SIENA. Programma. Introduzione all’informatica Cos’è l’informatica Introduzione al concetto di algoritmo Struttura dell’elaboratore Introduzione al concetto di programma

larya
Download Presentation

Master in BIOINFORMATICA Corso propedeutico di Informatica DOCENTE: Elisa Tiezzi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Master in BIOINFORMATICA Corso propedeutico di Informatica DOCENTE: Elisa Tiezzi UNIVERSITA’ DI SIENA

  2. Programma Introduzione all’informatica • Cos’è l’informatica • Introduzione al concetto di algoritmo Struttura dell’elaboratore • Introduzione al concetto di programma • Esecuzione delle istruzioni • L’organizzazione dell’unità centrale di elaborazione (CPU) • La memoria centrale • La memoria secondaria • Dispositivi di input/output Linguaggi di programmazione • Introduzione ai linguaggi di programmazione

  3. Elementi del Linguaggio Java • Ambiente di lavoro • Struttura di un programma • Tipi di dati fondamentali • Istruzioni di input/output • Costrutto decisionale if-then-else • I cicli con contatore for • Cicli condizionali while • Dati strutturati: stringhe e vettori • Cicli for annidiati • Classi e oggetti • Implementazioni di algoritmi Introduzione alla Complessità • Complessità di problemi • Analisi del caso medio e caso pessimo • Valutazione della complessità: relazioni di ricorrenza Progetto e analisi di alcuni algoritmi di Ordinamento • Ricorsività • Divide et impera • Mergesort • Quicksort Sistemi operativi • Windows

  4. LIBRO UTILI • JAVA Fondamenti di Progettazione software John Lewis, William Loftus ADDISON-WESLEY • Java: An introduction to computer science and programming, 2 edizione Walter Savitch Prentice-Hall, Inc

  5. INFORMATICA Alla metà del 900 il MONDO dell’INFORMAZIONE diviene importante. INFORMATICA = insieme degli strumenti teorici e pratici che hanno lo scopo di elaborare l’informazione. Il termine corrisponde al francese INFORMATIQUE (contrazione di INFORMATION AUTOMATIQUE) che compare verso la metà degli anni sessanta. In realtà l’informatica si occupa non solo dell’elaborazione dei dati ma anche della scienza e dell’ingegneria dei calcolatori. Gli anglosassoni usano il termine COMPUTER SCIENCE per sottolineare questa seconda accezione.

  6. L’informatica ha quindi due significati: • Insiste sull’oggetto = PROCEDURA EFFETTIVA O ALGORITMO • Insiste sullo strumento = CALCOLATORE ELETTRONICO

  7. ALGORITMO Le radici dell’algoritmica sono antiche. Anche se il suo assetto teorico definitivo è stato raggiunto nella prima metà di questo secolo e le tecniche di progetto ed analisi di algoritmi hanno segnato progressi enormi con la recente diffusione di calcolatori elettronici, i primi esempi di algoritmi risalgono alle origini della storia dell’uomo e sono registrati in documenti di matematica antica. La parola ALGORITMO fu creata nel latino medievale per assonanza con il nome del matematico persiano Al-Khuwarizmi.

  8. Informalmente la parola algoritmo indica la specificazione dei passi elementari che un esecutore deve compiere per giungere alla soluzione di un problema. • ALGORITMO = complesso di istruzioni…. • precisamente determinato in maniera da non consentire situazioni di dubbio • universalmente comprensibile nel senso che chiunque possa applicarle • abbastanza generali da potersi applicare ad ogni problema di una data classe • tali che applicate ai dati forniscano criteri per determinare quando la soluzione è raggiunta e questo avvenga in un numero finito di passi

  9. Alcuni algoritmi I più antichi algoritmi non banali conosciuti oggi furono registrati dallo scriba egizio Ahmes (1650 a.c.) Algoritmo moltiplicazione (dati A E B risultato P) -poni P=0 assegnazione -finché A≠0 ripeti la sequenza iterazione se A è dispari allora addiziona B a Pesecuzione dimezza A trascurando il restocondizionata raddoppia B

  10. Definizione intuitiva di algoritmo • Elenco finito di istruzioni che specificano una serie di operazioni, eseguendo le quali e’ possibile risolvere ogni istanza di un problema di un dato tipo

  11. Proprietà degli algoritmi • FINITI • NON AMBIGUI • GENERALI

  12. Soluzione di ax2+bx+c=0 1. inizio dell’algoritmo; 2. acquisire dall’esterno i valori dei coefficienti a, b e c; 3. calcolare il valore b2-4ac; 4. se , allora non esistono radici reali: eseguire 8; 5. se , allora x1=x2=-b/2a: eseguire 7; 6. se , allora x1=(-b+)/2a e x2=(-b-)/2a; 7. comunicare all’esterno i valori di x1 ed x2; 8. fine dell’algoritmo.

  13. Descrizione degli algoritmi Diagramma a blocchi (flow chart): rappresentazione grafica di un algoritmo che indica il flusso delle trasformazioni descritte dall’algoritmo che devono essere eseguite a partire dai dati iniziali per ottenere i risultati finali.

  14. input azione begin falso vero C output end Blocchi elementari

  15. begin a, b, c b2-4ac V F  V F  x1=-b/2a x1=(-b+)/2a x2=-b/2a x2=(-b-)/2a x1, x2 radici c.c. end Esempio su ax2+bx+c=0

  16. Il gioco dei quindici Quindici oggetti, ad esempio fiammiferi, sono su una tavola. Il primo giocatore ne raccoglie 1, 2 o 3. Il secondo giocatore ne raccoglie a sua volta 1, 2 o 3. Quindi è ancora il primo giocatore a raccogliere 1, 2 o 3 fiammiferi. I giocatori alternano le loro mosse finchè sul tavolo non esistono più fiammiferi. Il giocatore che è costretto a raccogliere l’ultimo fiammifero è il perdente. Descrivere una strategia vincente per il primo giocatore.

  17. Problema delle dodici monete Tra 12 monete di identico aspetto potrebbe nascondersene una falsa e pertanto di peso diverso. Disponendo di una bilancia a 2 piatti per confrontare gruppi di monete, si vuole individuare la moneta falsa e stabilire se essa pesi più o meno delle altre, mediante non più di 3 pesate.

  18. Soluzione del gioco dei quindici Siano A il primo giocatore e B il secondo 1. Prima mossa: A raccoglie 2 fiammiferi 2. Mosse successive: se B raccoglie k fiammiferi (k<=3), allora A raccoglie 4-k fiammiferi

  19. 1, 2, 3, 4 : 5, 6, 7, 8 1L 2L 3L 4L 5P 6P 7P 8P 1P 2P 3P 4P 5L 6L 7L 8L 9L 10L 11L 12L 9P 10P 11P 12P 0 1, 2, 5 : 3, 4, 6 1, 2, 5 : 3, 4, 6 1L 2L 6P 5P 3L 4L 5L 3P 4P 1P 2P 6L 7P 8P 7L 8L 1:2 7:8 3:4 3:4 7:8 1:2 9, 10 : 11, 1 1L 6P 2L 8P imp 7P 3L 5P 4L 4P 5L 3P 7L imp 8L 2P 6L 1P 9L 10L 11P 9P 10P 11l 12L 12P 0 9:10 12:1 9:10 9L 11P 10L 12L 0 12P 10P 11L 9P Soluzione del gioco delle monete

  20. Breve storia dei calcolatori • Primi strumenti di calcolo meccanici • Abaco • 1600 • Pascal (somma e sottrazione) • Leibniz (moltiplicazione e divisione) • 1800 • Babbage (quadrato e stampa) • Babbage (macchina analitica) • Ada Augusta Lovelace (prima programmatrice) • Schede perforate utilizzate nel 1890 (inizio di IBM)

  21. 1944 • Mark I (primo calcolatore elettromeccanico) • 1946 • ENIAC • 1949 • EDSAC (macchina di tipo Von Neumann) • Anni successivi • Stessa architettura ma tecnologia più avanzata • 1960 • Internet (fine anni sessanta per esigenze militari, si chiamava Arpanet) • 1989 • www (word wide web: enorme enciclopedia)

  22. Hardware Pezzi fisici tangibili che supportano l’elaborazione (chip di silicio, fili elettrici, tastiera, dischi, stampanti….) Software I componenti hardware sono inutili se non ricevono precise istruzioni. Un programma è una serie di istruzioni che l’hardware esegue in sequenza.

  23. Componenti hardware principali • Dispositivi di input • Ad es.: mouse, tastiera • Dispositivi di output • Ad es.: monitor, stampante • Insieme in uno stesso contenitore • Processore (CPU) • Central Processing Unit • Interpreta e esegue le istruzioni • Memoria Organizzazione hardware standard Memoria Dispositivi di input Processore (CPU) Dispositivi di output

  24. Due Tipi di Memoria • Principale • area di lavoro • mantiene temporaneamente programmi e dati (mentre il programma è in esecuzione) • Ausiliaria • permanente • salva programmi e risultati • Esempi: floppy & hard disk, CD, nastri

  25. Organizzazione della Memoria Principale • Bit = una cifra binaria • valori: 0 o 1 • Byte = 8 bit • La memoria principale è una lista di locazioni numerate ciascuna di un byte • Il numero di byte utilizzato per memorizzare un dato varia con il tipo di dato

  26. Radice Directory File Directory File Directory Directory File File Directory Directory File File Organizzazione della Memoria Ausiliaria

  27. Programma Input Output Programma • Insieme di istruzioni che il calcolatore deve eseguire Calcolatore

  28. Tipi di Programmi • Sistema Operativo • Programma supervisore • DOS, Windows, MacOS, UNIX, Linux • Applicazioni esistenti • word-processor/editor • web browser • compilatori o assembler • Applicazioni create dall’utente

  29. Informazione Esistono due formati per memorizzare l’informazione: ANALOGICO DIGITALE L’informazione analogica è continua La tecnologia digitale spezza e cresce proporzionalmente alla l’informazione in tanti pezzi sorgente di informazione che rappresenta come numeri Es: termometro di mercurio, segnali Es: compact disc elettrici

  30. I computer moderni sono digitali: Ogni tipo di informazione è spezzato in blocchi. Ogni blocco è rappresentato da un numero e l’informazione è memorizzata sotto forma di sequenza di numeri. Il computer digitale memorizza l’informazione sotto forma di numeri binari (base 2). La singola cifra binaria si chiama bit (binary digit). La base del sistema indica quante cifre si hanno a disposizione e il valore posizionale di ogni cifra in un numero.

  31. Sistemi posizionali Il sistema di numerazione decimale è basato sull’alfabeto decimale {0,1,2,3,4,5,6,7,8,9} ed ogni numero è rappresentato come sequenza di simboli di tale alfabeto. Ad ogni simbolo è associato un peso a seconda della posizione. Es: 2863=2x103 +8x102+6x101+3x100

  32. In generale i sistemi numerici posizionali in base b2 rappresentano ogni numero con m cifre in base b: N=cm-1…….c0 Dove i ci denotano elementi di un insieme di b simboli che corrispondono ai primi b numeri naturali 0…..b-1. Vale N=∑cibi Es:11002=1x23+1x22+0x21+0x20

  33. Come comunicare • Linguaggio macchina: • sequenze di 0 ed 1 • rigoroso • essenziale • Linguaggio assembler: • simbolico • semplice traduzione aggiuntiva • Linguaggio naturale: • linguaggio preferito dall’essere umano • ambiguo, ridondante, non preciso • Linguaggio di programmazione ad alto livello

  34. Storia Moderna • PASCAL (1970) • Programming in Logic (1971) • C (1974) • ADA(1980)

  35. Storia Contemporanea • C++ (1985) • Java (1994)

  36. Tipi di programmazione • Funzionale • Logica • Procedurale • Orientata agli oggetti

  37. macchina traduttore programma Codice in l. macchina macchina Codice in l. macchina dati risultati Traduttori

  38. Compilatori ed interpreti • Compilatore • programma che traduce un programma in linguaggio ad alto livello in un programma in linguaggio più semplice che il calcolatore può eseguire (più o meno) direttamente. • Interprete • programma che traduce ed esegue una dopo l’altra le istruzioni che compongono il programma sorgente

  39. L’approccio di Java • Sia compilato che interpretato • Codice intermedio: “Byte Code” • codice a basso livello portabile • simile al codice assembler ma indipendente dall’hardware • invisibile ai programmatori Java • L’interprete traduce dal byte code in un programma nel linguaggio macchina della macchina specifica

  40. Programmi precedentemente compilati Dati in input Compilatore Java Programma in Byte-Code Interprete Esecuzione Output del Programma Java L’ambiente Java Programma Java

  41. Cosa è Java • Linguaggio di programmazione familiare • Simile a C e C++ • Linguaggio di programmazione orientato a oggetti • Facile da modificare e altamente riutilizzabile • Linguaggio robusto • Restrizioni per evitare che le applicazioni generino errori • Linguaggio ad alte prestazioni • Strumenti per la gestione di più processi • Linguaggio portabile • Applicazioni eseguibili su Windows, Linux o MacOS • Linguaggio semplice • Pochi strumenti base e molte librerie

  42. compilatore Windows codice eseguibile Windows codice sorgente compilatore Linux codice eseguibile Linux compilatore MacOS codice eseguibile MacOS Compilatori tradizionali

  43. compilatore Windows interprete bytecode Windows codice sorgente compilatore Linux interprete bytecode Linux Java bytecode compilatore MacOS interprete bytecode MacOS Compilatore Java

  44. Programmazione • Concetti base: • dati • istruzioni • Dati: • variabili • tipi • Istruzioni: • istruzioni base • strutture di controllo • sotto-programmi

  45. Variabili e tipi • Variabile: • locazione di memoria a cui è dato un nome con cui chiamarla ed utilizzarla • programmatore usa il nome senza necessariamente sapere che esso faccia riferimento ad una locazione di memoria • Tipo: • ogni variabile ha un tipo che indica che genere di dati la variabile può contenere • una variabile può contenere dati di tipo intero (ad es., 15 o 2038), oppure dati di tipo carattere (ad es., ‘a’ o ‘£’) oppure dati di tipo stringa (ad es., “java” o “pascal”)

  46. Istruzioni base • Assegnazioni ed espressioni: • comandi per leggere e scrivere dati in una variabile e per fare calcoli • esempio: interest = amount * 0.07; • Input/Output: • comandi per ricevere dati dall’utente o da un file su disco e comandi per inviare dati nell’altra direzione

  47. Strutture di controllo • Un programma è una sequenza di istruzioni • Il calcolatore esegue le istruzioni nell’ordine in cui esse appaiono, una dopo l’altra • molto limitato • Le strutture di controllo sono istruzioni speciali che consentono di modificare il normale flusso di istruzioni • Due tipi base di strutture di controllo • cicli • permettono di ripetere una sequenza di istruzioni • diramazioni • permettono di decidere tra due o più diverse alternative di proseguimento

  48. Sotto-programmi • I programmi sono spesso abbastanza complessi da dover essere scomposti in “pezzi” più maneggevoli • Un sotto-programma consiste di istruzioni per svolgere un certo compito raggruppate insieme in un’unità a cui è dato un nome • il nome può essere usato come sostituto dell’intero insieme di istruzioni • Esempio • uno dei compiti del programma consiste nel disegnare un rettangolo sullo schermo • scrivere le necessarie istruzioni e raggrupparle in un sotto-programma di nome drawRect • ogni volta che il programma deve disegnare un rettangolo, lo può fare con una semplice istruzione: drawRect(); • Vantaggi: • risparmio di scrittura, organizzazione, riutilizzo

More Related