3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

I Linguaggi di programmazione
Informatica Generale Marzia Buscemi
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
Linguaggi algoritmici
Evoluzione dei linguaggi di programmazione
ALGORITMI Un algoritmo (detto anche procedura, prescrizione, processo, routine, metodo) è un insieme di regole (dette anche direttive o istruzioni) che,
Algoritmi e Programmazione
Informatica Generale Susanna Pelagatti
3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Il Problema dellordinamento.
Fondamenti di Informatica CDL in Ingegneria Meccanica - A.A CDL in Ingegneria Meccanica - A.A Tipi di dati Ing. Simona Colucci.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture di controllo Ing.
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Tipi di dati Ing. Simona Colucci.
8. Problemi ricorrenti: ordinamento e ricerca Ing. Simona Colucci
Fondamenti di Informatica CDL in Ingegneria Gestionale (B)- A.A CDL in Ingegneria Gestionale (B)- A.A Programmazione Ricorsiva.
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Strutture di controllo Ing. Simona Colucci.
Fondamenti di Informatica
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Informatica Problema Algoritmo Programma
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione ll
Introduzione alla programmazione lll
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Il Linguaggio Macchina
Codifica di algoritmi linguaggio macchina vs programmazione strutturata Lab Programmazione - turno /2006.
Unità Didattica 2 I Linguaggi di Programmazione
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica
Espressioni condizionali
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Fondamenti di informatica Linguaggio C Main Program: Architettura di un PC Diagrammi di flusso Linguaggio C.
Da Problema a Programmazione
2000 Prentice Hall, Inc. All rights reserved. Capitolo 3 (Deitel) Lo sviluppo di programmi strutturati Indice degli argomenti Introduzione 3.2 -
Algoritmi e Programmazione strutturata
INFORMATICA MATTEO CRISTANI.
PROGRAMMAZIONE: linguaggi
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
CODIFICA Da flow-chart a C++.
Lezione 6 Strutture di controllo Il condizionale
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
CONCETTI DI BASE 1.0 FONDAMENTI 1.1 HARDWARE 1.2 SOFTWARE 1.3 RETI
ECDL Patente europea del computer
Unità centrale di processo
ALGORITMI Un algoritmo (detto anche procedura, prescrizione, processo, routine, metodo) è un insieme di regole (dette anche direttive o istruzioni) che,
Corso JAVA Lezione n° 03 Istituto Statale di Istruzione Superiore “F. Enriques”
R 255 G 211 B 8 R 255 G 175 B 0 R 127 G 16 B 162 R 163 G 166 B 173 R 104 G 113 B 122 R 234 G 234 B 234 R 175 G 0 B 51 R 0 G 0 B 0 R 255 G 255 B 255 Supporting.
Rappresentazione degli algoritmi
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
Architettura di un calcolatore e linguaggio macchina.
L’esecuzione dei programmi
Concetti Fondamentali sulla Programmazione
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Realizzazione software
Il software Claudia Raibulet
Diagrammi a blocchi.
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
Programmazione dei Calcolatori Elettronici
3. Programmazione strutturata 3. Programmazione strutturata (testo di riferimento: Bellini-Guidi) Informatica - CDL in Ingegneria Industriale- A.A
Programmazione strutturata
Transcript della presentazione:

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi) Ing. Simona Colucci Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Interpretabile ed eseguibile da un calcolatore Linguaggi di programmazione Un programma è un algoritmo espresso in un linguaggio formale, detto linguaggio di programmazione: Interpretabile ed eseguibile da un calcolatore Non ambiguo perchè governato da regole grammaticali precise Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Linguaggi di programmazione Classificazione: linguaggi di basso livello (linguaggi macchina e linguaggi assembler): dipendono dalla struttura fisica del tipo di computer per cui sono stati progettati linguaggi di alto livello: più vicini alla forma mentis dell’uomo, ma da tradurre in codice di basso livello per l’interpretazione da parte dell’elaboratore(come il C) Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

codice operativo dell’istruzione operando 00000010 000000000011100 Linguaggio Macchina Linguaggio formale che il computer è in grado di interpretare ed eseguire senza mediazioni Programmi, codice oggetto, rappresentati da una sequenza di cifre binarie che codificano le istruzioni e i dati su cui lavora la CPU istruzioni fortemente correlate all’architettura del calcolatore, perché corrispondenti ad operazioni direttamente eseguibili dall’hardware esempio di istruzione ad un solo operando : codice operativo dell’istruzione operando 00000010 000000000011100 Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Linguaggio Macchina: Esempio di programma Istruzioni Le istruzioni fanno uso del registro della CPU chiamato A nel capitolo 2 (detto anche accumulatore) Codice mnemonico(istruzioni in assembler: cfr. diapositive successive) Codice operativo Operando Codice mnemonico 00000010 000000011011100 LOAD 220 00000110 000000011111100 SUM 252 00000100 MEM 220 Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Linguaggio Macchina: Esempio di programma La prima istruzione(00000010) legge il valore nella cella di memoria specificata dall’operando(220 in decimale) e lo carica in A Stato della macchina dopo la prima istruzione Memoria CPU indirizzo …. 220 contenuto 6 Accumulatore(A) Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Linguaggio Macchina: Esempio di programma La seconda istruzione calcola la somma del contenuto di A e del valore contenuto nella cella di memoria specificata dall’operando (252 in decimale) e la scrive in A Stato della macchina dopo la seconda istruzione Memoria CPU indirizzo …. 220 252 contenuto 6 31 Accumulatore(A) 37 Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Linguaggio Macchina: Esempio di programma La terza istruzione memorizza il contenuto di A nella cella di memoria specificata dall’operando, la stessa da cui era stato caricato il primo addendo Stato della macchina dopo la terza istruzione Memoria CPU indirizzo …. 220 252 contenuto 37 31 Accumulatore(A) Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Linguaggio assembler Le singole istruzioni binarie sono rappresentate con un codice mnemonico LOAD 220 SUM 252 MEM 220 Traduzione in linguaggio macchina ad opera di programmi detti assemblatori, forniti dai costruttori Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Usati per i microprogrammi: Microlinguaggi Usati per i microprogrammi: corrispondono ad ogni istruzione del linguaggio macchina costituiti da insiemi di microistruzioni: sequenze di bit che costituiscono i segnali di controllo per pilotare i componenti del processore ed eseguire le istruzioni cablate dal costruttore nelle unità di controllo(fisicamente delle memorie) della CPU per eseguire le operazioni corrispondenti alle istruzioni del linguaggio macchina Obbediscono alla necessità di mediazione tra linguaggio macchina e macchina: lo stesso processore può essere programmato per finalità diverse Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Più simili al linguaggio naturale dei linguaggi macchina o assembler Linguaggi di alto livello Più simili al linguaggio naturale dei linguaggi macchina o assembler Utilizzano simboli matematici e parole tipiche delle lingue naturali(inglese) Usati per scrivere le istruzioni che compongono il codice sorgente appositi software, detti compilatori, provvedono a tradurre il codice sorgente nell’equivalente codice eseguibile dalla macchina Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Esempio di codifica: somma precedente in linguaggio C a =6; Linguaggi di alto livello Esempio di codifica: somma precedente in linguaggio C a =6; b =31; a =a+b; a e b non sono registri o locazioni di memoria ma variabili identificate da: Nome(possibilità di usare nomi simbolici del contenuto, per facilitare la leggibilità del programma) Insieme di valori che può assumere Vantaggi Programma portabile su ogni macchina con compilatore per il linguaggio in cui è scritto il programma Gestione indirizzi di memoria totalmente delegata al calcolatore Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Algoritmi come sequenze di stati Esempio: determina il Massimo Comune Divisore (MCD) a. prendi i due numeri b. calcola il resto della divisione intera del num. più grande per il più piccolo c. sostituisci il numero più grande con il resto della divisione d. finché tale resto è diverso da zero torna all’istruzione b e. il numero più grande (quello non nullo) è il MCD cercato Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Algoritmi come sequenze di stati Flusso di esecuzione dell’algoritmo MCD con i numeri 924 e 120 passo 1 924 e 120 passo 2 84 è il resto della divisione intera di 924 per 120 passo 3 120 e 84 passo 4 il resto è diverso da zero, torna all’istruzione b passo 5 36 è il resto della divisione intera di 120 per 84 passo 6 84 e 36 passo 7 il resto è diverso da zero, torna all’istruzione b passo 8 12 è il resto della divisione intera di 84 per 36 passo 9 36 e 12 passo 10 il resto è diverso da zero, torna all’istruzione b passo 11 0 è il resto della divisione intera di 36 per 12 passo 12 12 e 0 passo 13 il resto è uguale a zero, prosegui con l’istruzione successiva passo 14 12 è il MCD Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Algoritmi come sequenze di stati Sequenza di stati nel flusso dell’algoritmo per il calcolo del MCD(924,120) Istruzioni all’interno dei cerchi Passi in esecuzione dell’istruzione all’esterno del relativo cerchio Passaggio da un’istruzione all’altra tramite archi L’esecuzione di un passo determina uno stato: fotografia della situazione attuale Il susseguirsi dei passi di esecuzione determina una sequenza di stati Il flusso è sequenziale ed ordinato perché l’algoritmo segue le regole della programmazione strutturata Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Programmazione non strutturata Esempio: Algoritmo equivalente per il calcolo del Massimo Comune Divisore (MCD) a. prendi i due numeri b. calcola il resto della divisione intera del num. più grande per il più piccolo c. Se il resto è uguale a zero vai all’istruzione f d. sostituisci il numero più grande con il resto della divisione e. vai all’istruzione b f. il numero più piccolo è il MCD cercato Salto incondizionato Salto condizionato Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Programmazione non strutturata Flusso di esecuzione dell’algoritmo MCD con i numeri 924 e 120 passo 1 924 e 120 passo 2 84 è il resto della divisione intera di 924 per 120 passo 3 il resto è diverso da zero(prosegui in sequenza) passo 4 120 e 84 passo 5 vai all’istruzione b passo 6 36 è il resto della divisione intera di 120 per 84 Passo 7 il resto è diverso da zero(prosegui in sequenza) Passo 8 84 e 36 passo 9 vai all’istruzione b passo 10 12 è il resto della divisione intera di 84 per 36 Passo 11 il resto è diverso da zero(prosegui in sequenza) passo 12 36 e 12 passo 13 vai all’istruzione b passo 14 0 è il resto della divisione intera di 36 per 12 passo 13 il resto è uguale a zero, vai all’istruzione f passo 14 12 è il MCD Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Programmazione non strutturata 5,9,13 e Sequenza di stati nel flusso dell’algoritmo per il calcolo del MCD(924,120) d 4,8,12 a b c 3,7,11,15 1 2,6,10,14 f 16 Si parte dal nodo iniziale e poi si passa ai nodi successivi selezionando il cammino in base allo stato che si viene a creare dopo l’esecuzione delle operazioni specificate nel nodo L’arco e-b corrisponde ad un salto incondizionato (goto) L’uso dei goto : porta a sequenze non lineari di stati, molto contorte, note come programmi a “spaghetti”, specie per programmi complessi ha un numero di istruzioni minori e riusa parti di programma tramite salti porta a programmi difficili da correggere manutenere ed estendere Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Programmi strutturati L’obiettivo della programmazione strutturata è di rendere un flusso ordinato il passaggio tra le istruzioni dall’inizio alla fine dei programmi Realizzazione: Condizione ideale: sequenza lineare di operazioni, senza alternative possibili(limite: potenza algoritmi ridotta) Condizione reale: regole coerenti con il pensiero naturale che portano ad effetti equivalenti all’esecuzione sequenziale di operazioni Costrutti consentiti (strutture di controllo del flusso): Sequenza: fai questo Selezione tramite strutture di controllo decisionali: se è verificata una condizione fai questo altrimenti fai quello Ripetizioni cicliche tramite strutture di controllo iterative: finché è verificata una condizione fai questo Costrutti non consentiti: Salto incondizionato (goto): ancora nella sintassi solo per compatibilità verso il basso(era necessario nel linguaggio macchina e assembler) Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Programmi strutturati TEOREMA DI BOHM-JACOPINI: tutti i programmi possono essere scritti con l’utilizzo delle sole strutture di controllo: sequenza, selezione e iterazione (senza l’uso del salto goto) Corrado Böhm e Giuseppe Jacopini hanno dimostrato che la potenza di calcolo dei programmi strutturati(più chiari, più facili da scrivere e da modificare e più probabilisticamente esenti da errori) non è inferiore a quella dei programmi che usano il goto Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Operazioni: - fai questo - fai quello Esempio: a = 5; a = a+b; Sequenza : flow-chart Operazioni: - fai questo - fai quello Esempio: a = 5; a = a+b; Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Selezione : flow-chart Operazioni: se è verificata una condizione fai questo se è verificata una condizione fai questo altrimenti fai quello Sintassi: if(espressione) istruzione Esempio: prendi numero; resto = numero % 2; if(resto==0) scrivi "è pari"; if(espressione) istruzione1 else istruzione2 if(resto==0) scrivi "è pari" else scrivi "è dispari"; Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Iterazione : flow-chart Operazioni: finchè è verificata una condizione fai questo esegui fai questo finchè è verificata una condizione Sintassi: while(espressione) istruzione; Esempio: i=0; while(i<101) i=i+1; do istruzione while(espressione); do i=i+1; while(i<100); Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Programmi strutturati: flow-chart Si apre con un cerchio e finisce con un cerchio: tutti i canali partono dal primo cerchio e terminano nell’ultimo(un solo inizio ed una sola fine) Composto da più strutture di controllo del tipo sequenza selezione o iterazione I cerchi sono i connettori tra le strutture di controllo: altri punti di attacco non consentiti Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Più strutture formano un blocco d’istruzioni: insieme d’istruzioni con una sola entrata, da dove inizia sempre l’elaborazione, e una sola uscita, dove termina sempre l’elaborazione del blocco(nessuna uscita laterale con istruzioni di salto) Scatola nera per eseguire un compito: non possono essere utilizzate delle sottoparti Sintassi: {blocco} I blocchi possono contenersi l’un l’altro ma mai intersecarsi blocco Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Programmazione strutturata: esempi Calcolo della somma algebrica tra due numeri relativi utilizzando le operazioni di somma e differenza tra numeri senza segno Calcolo della media Calcolo dei valori massimo e minimo Visualizzazione di caratteri letti da tastiera Calcolo di una potenza Visualizzazione di un quadrato Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

- acquisizione dei due numeri a,b - se a,b sono concordi |s|=|a|+|b| Esempio 1 falso inizio a, b concordi s a+b fine |a| < |b| s a-b t a a b bt vero modulo di s e segno di a a , b Problema: Calcolo della somma algebrica tra due numeri relativi utilizzando le operazioni di somma e differenza tra numeri senza segno Algoritmo: - acquisizione dei due numeri a,b - se a,b sono concordi |s|=|a|+|b| - se a,b sono discordi - se |a|<|b| si scambiano i valori di a e b - |s|=|a|-|b| - la somma ha il segno di a e modulo |s| Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Problema: Acquisizione di 10 numeri interi e calcolo della media Esempio 2 inizio s  0 i  0 i < 10 s  s + n i  i + 1 m  s/10 fine vero falso m n Problema: Acquisizione di 10 numeri interi e calcolo della media Algoritmo: Azzerare la somma s Se non si sono acquisiti tutti i numeri: 2.1 Acquisire un numero n 2.2 Sommare n ad s e tornare al passo 2 La media è s/10 Fine Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Poni il massimo e il minimo corrente(variabili max e min) pari a n Esempio 3 inizio max n min  n i  1 i < 10 fine n > max min  n n< min max n vero falso i  i +1 min, max n Problema: Acquisizione di 10 numeri interi; determinazione e visualizzazione del numero maggiore e minore Algoritmo: Leggi il primo numero n Poni il massimo e il minimo corrente(variabili max e min) pari a n Finché i numeri inseriti sono meno di 10 3.1 Leggi un nuovo numero n 3.2 Se n<min min=n altrimenti se n>max max=n Visualizza min e max Fine Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Esempio 4 inizio Problema: Scrivere un programma che consenta, acquisito un numero intero n, di acquisire un carattere c e visualizzarlo n volte sulla stessa riga finché n è maggiore di zero Algoritmo: Leggi il primo numero n Finché n>0 2.1 Leggi c 2.2 Visualizza c n volte 2.3 Visualizza “a capo” 2.3 Leggi nuovo numero n Fine connettore n n > 0 falso Inizio blocco 2.2 vero i  0 falso i< n c vero c blocco 2.2 i  i+1 a capo Fine blocco 2.2 n fine Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Acquisisci x ed n(intero) Poni pot pari ad 1 Esegui per n volte Esempio 5 inizio x, n pot  1 i  0 i< n i  i+1 vero falso pot = pot * x pot fine Problema: Calcolo e visualizzazione di una potenza(variabile pot), acquisiti la base x e l’esponente n Algoritmo: Acquisisci x ed n(intero) Poni pot pari ad 1 Esegui per n volte pot pot * x 4. Visualizza pot 5. Fine Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010

Finché le righe visualizzate sono meno di n (indice i scorre le righe) Esempio 6 inizio n i  0 Problema: acquisito un numero intero n, si visualizzi una figura quadrata di n*n con degli asterischi nella diagonale principale, dei segni meno al di sotto e dei segni più al di sopra della diagonale principale Algoritmo: Leggi n Finché le righe visualizzate sono meno di n (indice i scorre le righe) Finchè le colonne visualizzate sono meno di n(indice j scorre le colonne) se j>i visualizza il carattere meno se j=i visualizza il carattere asterisco se i<j visualizza il carattere più Esci falso i< n vero j  0 j < n falso vero falso j < i vero falso j =i vero - + * j  j+1 a capo i  i+1 Fondamenti di Informatica CDL in Ingegneria Meccanica (B)- A.A. 2009-2010 fine