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

Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Embed Size (px)

Citation preview

Page 1: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Fondamenti di InformaticaFondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

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

Ing. Simona Colucci

Page 2: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

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

Linguaggi di programmazioneLinguaggi di programmazione

Page 3: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Linguaggi di programmazioneLinguaggi 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)

Page 4: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Linguaggio MacchinaLinguaggio 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

Page 5: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

• 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)

Linguaggio Macchina: Linguaggio Macchina: Esempio di programmaEsempio di programma

Codice operativo Operando Codice mnemonico

00000010 000000011011100 LOAD 220

00000110 000000011111100 SUM 252

00000100 000000011011100 MEM 220

Page 6: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

• 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

Linguaggio Macchina: Linguaggio Macchina: Esempio di programmaEsempio di programma

Memoria CPU

indirizzo

….

220

….

….

contenuto

….

6

….

….

Accumulatore(A)

6

Page 7: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

• 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

Linguaggio Macchina: Linguaggio Macchina: Esempio di programmaEsempio di programma

Memoria CPU

indirizzo

….

220

….

252

contenuto

….

6

….

31

Accumulatore(A)

37

Page 8: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

• 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

Linguaggio Macchina: Linguaggio Macchina: Esempio di programmaEsempio di programma

Memoria CPU

indirizzo

….

220

….

252

contenuto

….

37

….

31

Accumulatore(A)

37

Page 9: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Linguaggio assemblerLinguaggio assembler

• Le singole istruzioni binarie sono rappresentate con un codice mnemonico

LOAD 220SUM 252MEM 220

• Traduzione in linguaggio macchina ad opera di programmi detti assemblatori, forniti dai costruttori

Page 10: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

MicrolinguaggiMicrolinguaggi

• 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

Page 11: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Linguaggi di alto livelloLinguaggi 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

Page 12: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Linguaggi di alto livelloLinguaggi 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

Page 13: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Algoritmi come sequenze di statiAlgoritmi come sequenze di stati

Esempio: determina il Massimo Comune Divisore (MCD)

a. prendi i due numerib. calcola il resto della divisione intera del num. più

grande per il più piccoloc. sostituisci il numero più grande con il resto della

divisioned. finché tale resto è diverso da zero torna

all’istruzione be. il numero più grande (quello non nullo) è il MCD

cercato

Page 14: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Algoritmi come sequenze di statiAlgoritmi come sequenze di stati

Flusso di esecuzione dell’algoritmo MCD con i numeri 924 e 120

passo 1 924 e 120passo 2 84 è il resto della divisione intera di 924 per 120passo 3 120 e 84passo 4 il resto è diverso da zero, torna all’istruzione bpasso 5 36 è il resto della divisione intera di 120 per 84passo 6 84 e 36passo 7 il resto è diverso da zero, torna all’istruzione bpasso 8 12 è il resto della divisione intera di 84 per 36passo 9 36 e 12passo 10 il resto è diverso da zero, torna all’istruzione bpasso 11 0 è il resto della divisione intera di 36 per 12passo 12 12 e 0passo 13 il resto è uguale a zero, prosegui con l’istruzione successivapasso 14 12 è il MCD

Page 15: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

• 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

Sequenza di stati nel flusso

dell’algoritmo per il calcolo del

MCD(924,120)

Algoritmi come sequenze di statiAlgoritmi come sequenze di stati

Page 16: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Programmazione non strutturataProgrammazione non strutturata

Esempio: Algoritmo equivalente per il calcolo del Massimo Comune Divisore (MCD)

a. prendi i due numerib. calcola il resto della divisione intera del num. più

grande per il più piccoloc. Se il resto è uguale a zero vai all’istruzione fd. sostituisci il numero più grande con il resto della

divisionee. vai all’istruzione bf. il numero più piccolo è il MCD cercato

Salto incondizionato

Salto condizionato

Page 17: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Programmazione non strutturataProgrammazione non strutturata

Flusso di esecuzione dell’algoritmo MCD con i numeri 924 e 120

passo 1 924 e 120passo 2 84 è il resto della divisione intera di 924 per 120passo 3 il resto è diverso da zero(prosegui in sequenza)passo 4 120 e 84passo 5 vai all’istruzione bpasso 6 36 è il resto della divisione intera di 120 per 84Passo 7 il resto è diverso da zero(prosegui in sequenza)Passo 8 84 e 36passo 9 vai all’istruzione bpasso 10 12 è il resto della divisione intera di 84 per 36Passo 11 il resto è diverso da zero(prosegui in sequenza)passo 12 36 e 12passo 13 vai all’istruzione bpasso 14 0 è il resto della divisione intera di 36 per 12passo 13 il resto è uguale a zero, vai all’istruzione fpasso 14 12 è il MCD

Page 18: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

• 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

Programmazione non strutturataProgrammazione non strutturata

Sequenza di stati nel flusso

dell’algoritmo per il calcolo del

MCD(924,120)

a b c

de

f

1 2,6,10,14

16

3,7,11,15

4,8,12

5,9,13

Page 19: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Programmi strutturatiProgrammi 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)

Page 20: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Programmi strutturatiProgrammi 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

Page 21: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Sequenza : flow-chart : flow-chart

• Operazioni:

- fai questo

- fai quello

• Esempio: a = 5;

a = a+b;

Page 22: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Selezione : flow-chart : 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 Esempio: prendi numero;

resto = numero % 2; if(resto==0) scrivi "è pari" else scrivi "è dispari";

Page 23: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Iterazione : flow-chart : 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);Esempio: i=0;

do i=i+1; while(i<100);

Page 24: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Programmi strutturati: flow-chartProgrammi 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

Page 25: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Blocco d’istruzioniBlocco d’istruzioni

• 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

Page 26: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

1. Calcolo della somma algebrica tra due numeri relativi utilizzando le operazioni di somma e differenza tra numeri senza segno

2. Calcolo della media3. Calcolo dei valori massimo e minimo4. Visualizzazione di caratteri letti da tastiera5. Calcolo di una potenza6. Visualizzazione di un quadrato

Programmazione strutturata: Programmazione strutturata: esempiesempi

Page 27: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Esempio 1Esempio 1

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|

falso

inizio

a, b concordi

s a+b

fine

|a| < |b|

s a-b

t a

a b

bt

vero

vero

falso

modulo di s e segno di a

a , b

Page 28: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Esempio 2Esempio 2

Problema: Acquisizione di 10 numeri interi e calcolo della media

Algoritmo:1. Azzerare la somma s2. Se non si sono

acquisiti tutti i numeri:2.1 Acquisire un numero

n2.2 Sommare n ad s e

tornare al passo 2

3. La media è s/104. Fine

inizio

s 0

i 0

i < 10

s s + n

i i + 1

m s/10

fine

vero

falso

m

n

Page 29: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Esempio 3Esempio 3

Problema: Acquisizione di 10 numeri interi; determinazione e visualizzazione del numero maggiore e minore

Algoritmo:1. Leggi il primo numero n2. Poni il massimo e il minimo

corrente(variabili max e min) pari a n

3. Finché i numeri inseriti sono meno di 103.1 Leggi un nuovo numero n3.2 Se n<min min=n

altrimenti se n>max max=n

4. Visualizza min e max5. Fine

inizio

max n min n i 1

i < 10

fine

n > max

min n

n< min

max n

vero

verofalso

vero

i i +1

falso

falso

min, max

n

n

Page 30: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Esempio 4Esempio 4

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:1. Leggi il primo numero n2. Finché n>0

2.1 Leggi c2.2 Visualizza c n volte 2.3 Visualizza “a capo”2.3 Leggi nuovo numero n

3. Fine

inizio

n > 0

i 1

blocco 2.2

fine

a capo

n

n

c

falso

veroInizio blocco 2.2

i<= n

c

i i+1

vero

falso

Fine blocco 2.2

connettore

Page 31: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Esempio 5Esempio 5

Problema: Calcolo e visualizzazione di una potenza(variabile pot), acquisiti la base x e l’esponente n

Algoritmo:1. Acquisisci x ed n(intero)2. Poni pot pari ad 13. Esegui per n volte

pot pot * x4. Visualizza pot5. Fine

inizio

x, n

pot 1

i 1

i<= n

i i+1

vero

falso

pot = pot * x

pot

fine

Page 32: Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009 CDL in Ingegneria Meccanica- A.A. 2008-2009 3. Programmazione strutturata 3. Programmazione

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica Fondamenti di Informatica CDL in Ingegneria Meccanica- A.A. 2008-2009CDL in Ingegneria Meccanica- A.A. 2008-2009

Esempio 6Esempio 6

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: 1. Leggi n2. 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ù

3. Esci

inizio

n

i 0

i< n

j 0

j < n

j < i

j =i

j j+1

*+

-

a capo

i i+1

fine

falso

vero

falso

verofalso

falso vero

vero