La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore 16.00-18.00, Dipartimento di Informatica, stanza 306-PS o per posta.

Presentazioni simili


Presentazione sul tema: "1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore 16.00-18.00, Dipartimento di Informatica, stanza 306-PS o per posta."— Transcript della presentazione:

1 1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta elettronica Pagina web del corso: (sommario delle lezioni in fondo alla pagina)

2 2 Argomenti trattati la scorsa lezione Cosè un programma Comè organizzata la memoria nel calcolatore (memoria centrale e memoria di massa) Linguaggi di programmazione Linguaggio macchina Linguaggio assembler Linguaggi ad alto livello Variabili, costanti e tipi di dato

3 3 Cosa tratteremo in questa lezione Le strutture di controllo sequenza di istruzioni selezione (if.. then.. else..) iterazione (while.. do, repeat.. while, for.. to.. do) Come si rappresentano gli algoritmi: pseudocodice diagramma di flusso Le strutture dati array

4 4 Istruzioni elementari Operazioni aritmetiche di base: somma (a+b), sottrazione (a-b), confronto (a=b oppure a==b) Operazioni di I/O: leggere da tastiera (read a), scrivere sullo schermo (write a) Operazioni di assegnamento (a := b+c oppure a=b+c)

5 5 Strutture di controllo 1 Strutture di controllo: sono comuni a tutti i tipi di linguaggi di programmazione definiscono lordine in cui eseguire le istruzioni di un programma si dividono in tre tipi fondamentali: sequenza di istruzioni selezione (if) ripetizione (for, while, repeat)

6 6 Strutture di controllo 2 Sequenza: se S 1, S 2,..., S k sono istruzioni, allora una sequenza è: S 1; S 2;... S k; Le istruzioni sono eseguite in successione ordinata. Esempi: culinario: mettere farina, poi aggiungere uova,.... linguaggio C: { x = y + 2; z = x*4; }

7 7 Strutture di controllo 3 Selezione: se E è vera allora S 1 altrimenti S 2 Indica la scelta tra due possibilità. Se in un caso si vogliono eseguire istruzioni in più si elimina il ramo altrimenti Esempi: se avete burro scioglietelo e poi versatelo, altrimenti versate direttamente lolio. if (a>0) a=a-1; else b=a;

8 8 Strutture di controllo 4 Ciclo condizionato (for): Esegui (S 1, S 2,..., S k ) N volte Il ciclo (loop) viene eseguito n volte. Esempi: Prendere un uovo e separare il tuorlo dallalbume. Ripetere loperazione con altre 10 uova. linguaggio C: for (i=1; i <=100; i++) {... } assegna a i il valore 1 ripete il ciclo finché vale questa condizione ad ogni ciclo incrementa di 1 il valore di i

9 9 Strutture di controllo 5 Ciclo condizionato (while): Finché E, esegui (S 1, S 2,..., S k) Il ciclo (loop) viene eseguito per tutto il tempo in cui vale E. Esempi: Finché non si è sciolto il burro, tenere il tegame sul fuoco linguaggio C: i= 1; while (i <=100) {... i++; }

10 10 Algoritmi e programmi Algoritmo Codifica in un linguaggio di programmazione (C, Java, etc) Programma Compilatore Input : programma Output : rappresentazione comprensibile alla macchina Eseguibile

11 11 Algoritmi 1 Algoritmo: sequenza di azioni non ambigue che da un dato input produce un output dato un problema, descrive teoricamente la sequenza di istruzioni che devono essere eseguite per risolvere il problema viene scritto in un certo linguaggio di programmazione (implementazione) Il flusso di istruzioni di un algoritmo e regolate dalle stutture di controllo. può essere rappresentato mediante pseucodice o diagrammi di flusso le informazioni sono organizzate in modo logico, tramite le strutture di dati

12 12 Algoritmi 2 Ci sono due modi di rappresentare gli algoritmi. Lo pseudocodice: assomiglia (pseudo) alla sintassi (codice) usata nei linguaggi di programmazione il flusso di istruzioni è rappresentato con precisione le istruzioni sono definite informalmente I diagrammi di flusso: sono grafici che permettono di esprimere un algoritmo in modo preciso ed intuitivo si costruiscono a partire da blocchi base che rappresentano le operazioni elementari ed i costrutti di controllo i blocchi base sono collegati tramite freccie

13 13 Algoritmi: pseudocodice 1 Lo pseudocodice sfrutta le parole chiave e lindentazione. Esempio informale: tipi di dato in input: latte, uova,... tipi di dato in output: torta inizio preparazione metti farina in una casseruola; aggiungi lo zucchero; se zucchero non basta vai a comprarlo;... finché il composto non si è amalgamato, rimescola; fine preparazione

14 14 Algorimi: pseudocodice 2 Parole chiave (possono essere in italiano, in inglese, etc.) e indentazione: Inizio e fine programma: begin, end ; I/O: read (per leggere linput), write, return, print (per scrivere loutput), Sequenza: successione di istruzioni con la stessa indentazione Selezione: if.. then.. else.. Iterazione: while.. do, repeat.. until, for.. to.. do

15 15 Algoritmi: pseudocodice 3 Esempio 2: var d: int begin read x, y; d := x – y; if d>0 then return x; else return y; end Esempio 1: 1. leggi i numeri x e y 2.assegna a d il valore x – y 3. se d è maggiore di zero allora scrivi x altrimenti scrivi y più discorsivo più formale

16 16 Algoritmi: diagrammi di flusso Sono grafici che permettono di esprimere un algoritmo in modo preciso ed intuitivo Si costruiscono a partire da blocchi base che rappresentano le operazioni elementari ed i costrutti di controllo I blocchi base sono collegati tramite freccie blocco di istruzioni sequenziali operazioni di I/O condizione Es. if C then I else L C I inizio progr. fine progr. yes no begin L end sottoprogramma

17 17 Esempi Scrivere gli algoritmi in pseudocodice e diagramma di flusso per risolvere i seguenti problemi: 1. Dati x e y, scrivere un algoritmo che calcoli il massimo tra x e y (usando solo sottrazione e assegnamenti) 2. Calcolare il massimo tra 3 numeri 3. Calcolare il massimo tra N numeri 4. Scrivere un algoritmo che calcola il prodotto di due interi x e y (usando solo somma e assegnamenti)

18 18 Il maggiore fra 2 numeri interi x, y Algoritmo max 1. Leggi i valori di x e y dallesterno 2. Calcola la differenza d fra x e y (d=x-y) 3. Se d è maggiore di 0 vai al passo 5 altrimenti prosegui in sequenza 4. Stampa il massimo è … seguito dal valore di y e vai a 6 5. Stampa il massimo è … seguito dal valore di x 6. Termina lesecuzione

19 19 Diagramma di flusso di max d > 0 ? Inizio Fine Leggi x e y Si No d = x - y Scrivi max è x Scrivi max è y Passo 1 Passo 2 Passo 3 Passo 4 Passo 5 Passo 6

20 20 Il maggiore fra 3 numeri interi Possiamo sfruttare lalgoritmo max come sottoalgoritmo Algoritmo max_3 1. Leggi i valori di x, y, z dallesterno 2. Valuta se x> y usando lalgoritmo max 3. In caso affermativo vai al passo 5 4. Trova il massimo fra y e z (con max) e termina 5. Trova il massimo fra x e z (con max) e termina

21 21 Il massimo fra N numeri interi Possiamo ancora sfruttare lalgoritmo max come sottoalgoritmo! Idea … trovare prima il maggiore fra i primi due numeri, poi confrontare il risultato con il terzo, poi con il quarto etc … In pratica, possiamo usare la struttura di controllo iterativa while…do per effettuare le operazioni di max su tutti i numeri in ingresso

22 22 Determinare il massimo fra N numeri interi Algoritmo max_N 1. Leggi il valore di N dallesterno 2. Leggi i primi due numeri 3. Trova il maggiore m fra i primi due numeri (con max ) 4. Finchè (hai esaminato meno di N numeri) a. Leggi un nuovo numero x b. Trova il maggiore fra m e x usando lalgoritmo max c. Assegna il valore del maggiore a m 5. Stampa il massimo è… ed il valore di m e termina

23 23 Ancora numeri da esaminare ? Inizio Fine Leggi i primi due numeri x1 e x2 e memorizzali nelle variabili a e b SiNo Leggi il nuovo numero in a Scrivi max è m m = max(a,b) m = max(a,m) Diagramma di flusso per il problema del massimo di N numeri Supponiamo N fissato

24 24 Inizio Leggi i primi due numeri x1 e x2 e memorizzali nelle variabili a e b m = max(a,b) DF per il problema del massimo di N numeri (versione più formale) Leggi N I = 2 I < N ? Fine Si No Leggi il nuovo numero in a Scrivi max è m m = max(a,m) I = I + 1 Supponiamo N almeno 2

25 25 Prodotto di due interi positivi x e y Algoritmo prod 1. Leggi i valori di x e y dallesterno 2. Assegna a p il valore di 0. (p=0) 3. Se y è uguale a 0 vai al passo 5 4. Assegna a p il valore p+x (p=p+x) 5. Decrementa y di 1 (y=y-1) e vai al passo 3 6. Stampa il prodotto di x per y è … seguito dal valore di p 7. Termina lesecuzione

26 26 Strutture dati Tutti i linguaggi ad alto livello per la programmazione permettono di definire due tipi di aggregati di variabili (o strutture dati) array : tabelline di valori tutti dello stesso tipo record : gruppi di variabili di tipo diverso Le strutture dati seguono criteri logici e non fisici. I compilatori traducono le istruzioni che manipolano strutture dati in istruzioni che operano su locazioni di memoria.

27 27 Array Possiamo definire una sequenza lunga N es Array di 4 valori interi (a una sola dimensione) Array 3x4 di 12 valori interi (a due dimensioni) Possiamo definire una tabella a due dimensioni, ad esempio per memorizzare le vendite di un prodotto in un trimestre dellanno Prod 1 Prod 2 Prod 3 I IIIII IV

28 28 Array 2 Come si specifica la struttura di un array? E come si usano le singole variabili nella struttura? La struttura si specifica con il tipo e lampiezza di ogni dimensione es : int X[4] int T[3][4] Prod 1 Prod 2 Prod 3 I IIIII IV Nomi delle tabelle

29 29 Array 3 Uso di una singola variabile : Si specificano le coordinate della variabile desiderata Ogni elemento di ogni dimensione è identificato da un valore da 1 a N (o da 0 a N-1, dipende dal linguaggio) Prod 1 Prod 2 Prod 3 I IIIII IV X[1] T[1][0] Noi generalmente seguiremo la convenzione del linguaggio C di partire da posizione valore

30 30 Esempi Dato un array A di interi di lunghezza N e un valore (chiave) k, scrivere un algoritmo Calc_Posiz_k (A,N) che dà in output lindice i tale che A[i]=k. Es.: Suggerimento: provare prima usando for poi usando while. Confrontare le soluzioni Calc_Posiz_9(A,4) dà in output i=1 A

31 31 Esercizio proposto Dato un array A di lunghezza N, scrivere un algoritmo palindromo_N che restituisce in output True se A è palindromo, False altrimenti. N.B. Una sequenza di numeri (o caratteri) è palindroma se, letta al rovescio, rimane identica. Es.: A=011110, A=anna.


Scaricare ppt "1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore 16.00-18.00, Dipartimento di Informatica, stanza 306-PS o per posta."

Presentazioni simili


Annunci Google