DAL DIAGRAMMA AL CODICE Un diagramma di flusso

  • Slides: 73
Download presentation
DAL DIAGRAMMA AL CODICE

DAL DIAGRAMMA AL CODICE

Un diagramma di flusso Appare, come un insieme di blocchi di forme diverse che

Un diagramma di flusso Appare, come un insieme di blocchi di forme diverse che contengono le istruzioni da eseguire, collegati fra loro da linee orientate che specificano la sequenza in cui i blocchi devono essere eseguiti

Un diagramma di flusso – Esistono 4 tipi di blocchi. Istruzioni di inizio fine

Un diagramma di flusso – Esistono 4 tipi di blocchi. Istruzioni di inizio fine Operazioni di lettura (input) o scrittura(output) Operazioni o assegnazioni Strutture di controllo

Istruzioni di inizio e fine

Istruzioni di inizio e fine

Operazioni di lettura (input) o scrittura(output)

Operazioni di lettura (input) o scrittura(output)

Operazioni o assegnazioni calcola A+5

Operazioni o assegnazioni calcola A+5

Strutture di controllo Selezione o alternativa IF Iterazione o ripetizione while, do. . while,

Strutture di controllo Selezione o alternativa IF Iterazione o ripetizione while, do. . while, FOR

Programma = algoritmo + dati La struttura del programma consiste in: -Una parte in

Programma = algoritmo + dati La struttura del programma consiste in: -Una parte in cui si dichiarano tutte le variabili del programma e il loro tipo; -Una parte contenente le istruzioni che descrivono l’algoritmo risolutivo utilizzato.

Istruzioni Le istruzioni si suddividono in: Istruzioni di Input (lettura) Istruzioni di Output (scrittura)

Istruzioni Le istruzioni si suddividono in: Istruzioni di Input (lettura) Istruzioni di Output (scrittura) Istruzioni di Assegnazione Istruzioni di controllo

Istruzioni di assegnazione spesso compaiono espressioni, cioè formule o regole di calcolo che specificano

Istruzioni di assegnazione spesso compaiono espressioni, cioè formule o regole di calcolo che specificano sempre un valore o risultato: • sconto=(valoreiniziale*10)/100 • prezzo. Finale=valoreiniziale-sconto • delta = b ^ 2 - 4 * a * c • x 1 = -b - sqrt(delta) / 2 * a ( #include <math. h> ) NB: sqrt(x) è una funzione predefinita che restituisce la radice quadra di x

Problematica sul controllo Le strutture di controllo permettono di definire il percorso (flusso) di

Problematica sul controllo Le strutture di controllo permettono di definire il percorso (flusso) di ogni istruzione all'interno di un programma; La programmazione strutturata propone tre strutture di controllo: Sequenza Selezione Iterazione

Teorema fondamentale TEOREMA (Böhm-Jacopini) : Dato un programma, ne esiste uno equivalente che utilizza

Teorema fondamentale TEOREMA (Böhm-Jacopini) : Dato un programma, ne esiste uno equivalente che utilizza esclusivamente le tre strutture di controllo fondamentali: sequenza, selezione e iterazione.

La sequenza è il più semplice dei tre costrutti fondamentali e viene utilizzato quando

La sequenza è il più semplice dei tre costrutti fondamentali e viene utilizzato quando le istruzioni devono essere eseguite ordinatamente, con lo stesso ordine con cui sono scritte, per cui l’istruzione successiva è quella in posizione successiva.

Selezione o alternativa La selezione o alternativa permette di effettuare una scelta fra due

Selezione o alternativa La selezione o alternativa permette di effettuare una scelta fra due possibili alternative. Per effettuare la scelta occorre valutare una condizione. Possiamo distinguere cinque tipi di alternative: a una via a due vie a cascata annidata Multipla

Alternativa a una via IF (condizione) istruzione; IF (condizione) {istruzione 1; istruzione 2; ecc.

Alternativa a una via IF (condizione) istruzione; IF (condizione) {istruzione 1; istruzione 2; ecc. }

Alternativa a due vie IF (condizione) istruzione 1; ELSE istruzione 2;

Alternativa a due vie IF (condizione) istruzione 1; ELSE istruzione 2;

Selezione in cascata IF (condizione 1) istruzione 1; ELSE istruzione 2; IF (condizione 2)

Selezione in cascata IF (condizione 1) istruzione 1; ELSE istruzione 2; IF (condizione 2) istruzione 4; ELSE istruzione 3;

Selezione annidata IF (condizione 1) IF (condizione 2) istruzione 1; ELSE istruzione 2; ELSE

Selezione annidata IF (condizione 1) IF (condizione 2) istruzione 1; ELSE istruzione 2; ELSE istruzione 3;

Selezione annidata 2 IF (condizione 1) istruzione 3; ELSE IF condizione 2 istruzione 1;

Selezione annidata 2 IF (condizione 1) istruzione 3; ELSE IF condizione 2 istruzione 1; ELSE istruzione 2;

Selezione multipla Switch (scelta){ CASE 1 istruzione 1; break; CASE 2 istruzione 2; break;

Selezione multipla Switch (scelta){ CASE 1 istruzione 1; break; CASE 2 istruzione 2; break; . . . default : } istruzione;

Problematica sul controllo Le strutture di controllo permettono di definire il percorso (flusso) di

Problematica sul controllo Le strutture di controllo permettono di definire il percorso (flusso) di ogni istruzione all'interno di un programma; La programmazione strutturata propone tre strutture di controllo: Sequenza Selezione Iterazione

Teorema fondamentale TEOREMA (Böhm-Jacopini) : Dato un programma, ne esiste uno equivalente che utilizza

Teorema fondamentale TEOREMA (Böhm-Jacopini) : Dato un programma, ne esiste uno equivalente che utilizza esclusivamente le tre strutture di controllo fondamentali: sequenza, selezione e iterazione.

Iterazione o Ripetizione I costrutti di iterazione detti anche di ripetizione o cicli, consentono

Iterazione o Ripetizione I costrutti di iterazione detti anche di ripetizione o cicli, consentono di eseguire molte volte la stessa istruzione fino al verificarsi di una condizione. Due tipi: Condizionale: la ripetizione viene decisa in base al risultato di un test, da effettuarsi ad ogni iterazione: ripeti Istruzione finchè succede una certa cosa; mentre succede una certa cosa esegui Istruzione; • Il test può essere fatto all’inizio o alla fine (controllo in testa o in coda) Enumerativa: ripetizione di un’azione per un numero di volte determinato all’inizio dell’esecuzione dell’istruzione Sono equivalenti ma appropriati in situazioni diverse !

Ripetizione controllo in coda do …while Do istruzione 1; istruzione 2; ecc. while (condizione);

Ripetizione controllo in coda do …while Do istruzione 1; istruzione 2; ecc. while (condizione); Che equivale a: 1 Si eseguono le istruzioni 2 Viene valuta la condizione se il valore è Vero si torna al passo 1 3 Se il valore è Falso si esce dal ciclo while vero falso

// ciclo do-while che stampa sullo schermo tutti i numeri pari tra 11 e

// ciclo do-while che stampa sullo schermo tutti i numeri pari tra 11 e 23 #include <iostream> using namespace std; int main() { int numero_corrente = 12; do {cout << numero_corrente << endl; numero_corrente = numero_corrente + 2; } while (numero_corrente < 23); }

Postcondizionale (controllo in coda) Con una ripetizione postcondizionale, se la condizione è inizialmente vera,

Postcondizionale (controllo in coda) Con una ripetizione postcondizionale, se la condizione è inizialmente vera, il blocco di istruzioni verrà comunque eseguita almeno una volta. Per essere sicuri che il ciclo termini, esso dovrà contenere qualche istruzione che modifichi il valore di verità dell’espressione.

Ripetizione precondizionale while (controllo in testa) while (condizione) {istruzione 1; istruzione 2; . .

Ripetizione precondizionale while (controllo in testa) while (condizione) {istruzione 1; istruzione 2; . . . } Che equivale a: 1 Valuta la condizione 2 Se il valore è VERO si esegue l’istruzione e si torna al passo 1 3 Se il valore è FALSO si esce dal ciclo while

 • // Programma che esegue il countdown da 10 a 0 • •

• // Programma che esegue il countdown da 10 a 0 • • • #include <iostream> using namespace std; int main () { int n = 10; while (n>=0) { cout << n << ", "; --n; } cout << "partenza! n"; }

 • // ciclo while che stampa sullo schermo tutti i numeri pari tra

• // ciclo while che stampa sullo schermo tutti i numeri pari tra 11 e 23 • • • #include <iostream> using namespace std; int main(){ int numero_corrente = 12; while (numero_corrente < 23) { cerr << numero_corrente << endl; numero_corrente = numero_corrente + 2; } }

Ripetizione enumerativa for (con contatore) In certi casi si conosce a priori il numero

Ripetizione enumerativa for (con contatore) In certi casi si conosce a priori il numero delle iterazioni che devono essere eseguite Esiste una struttura di ripetizione che funziona esattamente in questo modo: utilizza una variabile contatore che viene inizializzata ad un valore particolare e successivamente incrementata fino ad un valore massimo. Per ogni valore che il contatore assume viene ripetuta l’esecuzione di un blocco di istruzioni.

Ripetizione enumerativa for int i; for (i=1; i<=10; i++) Che equivale a: 1 Inizializza

Ripetizione enumerativa for int i; for (i=1; i<=10; i++) Che equivale a: 1 Inizializza il contatore al valore min; 2 Se condizione è FALSA esci, altrimenti incrementa il contatore 3 Esegui l’istruzione / le istruzioni

#include <iostream> using namespace std; int main(){ int i; for (i=1; i<=10; i++) //

#include <iostream> using namespace std; int main(){ int i; for (i=1; i<=10; i++) // for (i=0; i<10; i++) cout << i << endl; }

Fine

Fine

Selezione multipla: esempi • • Alcune istruzioni possibili possono essere: Case “lunedi” per indicare

Selezione multipla: esempi • • Alcune istruzioni possibili possono essere: Case “lunedi” per indicare un singolo valore Case 2, 4, 7 per indicare più valori Case 2 to 7 per indicare i valori compresi in un certo intervallo N. B: la variabile scelta può essere sia di tipo numerico che alfanumerico

Esempio sulla selezione multipla creare un’agenda settimanale INIZIO leggi giorno lun mar mesg “vai

Esempio sulla selezione multipla creare un’agenda settimanale INIZIO leggi giorno lun mar mesg “vai in 3 a” mesg “vai in 5 a” dom mer mesg “g. libero ” mesg “g. festivo” case else mesg “non hai digitato un giorno della settimana!” scrivi mesg FINE

Operatori di relazione < minore di <= minore o uguale di > maggiore di

Operatori di relazione < minore di <= minore o uguale di > maggiore di >= maggiore o uguale di <> = Diverso da Uguale a

Esercizio 1 : Calcolo del massimo tra due numeri • Codice: ' input x=CInt(txtx.

Esercizio 1 : Calcolo del massimo tra due numeri • Codice: ' input x=CInt(txtx. text) y=CInt(txty. text) 'blocco selezione a 2 vie if x>y then massimo=x else massimo=y end if 'output lblrisultato. caption=CStr(massimo)

Esercizio 2: nel seguente algoritmo dire per quali condizioni è eseguita l’istruzione c? e

Esercizio 2: nel seguente algoritmo dire per quali condizioni è eseguita l’istruzione c? e l’istruzione b? e l’istruzione a? falso vero condizione 1 Istruzione c falso Istruzione b condizione 2 vero Istruzione a

Esercizio 3: nel seguente algoritmo dire per quali condizioni è eseguita l’istruzione c? e

Esercizio 3: nel seguente algoritmo dire per quali condizioni è eseguita l’istruzione c? e l’istruzione b? e l’istruzione a? falso vero falso condizione 2 Istruzione d Istruzione c condizione 1 falso Istruzione b condizione 2 vero Istruzione a

Esercizio 4: il segmento di programma riportato sotto presenta delle istruzioni inutili: if a=0

Esercizio 4: il segmento di programma riportato sotto presenta delle istruzioni inutili: if a=0 then lblmessaggio. caption=“valore nullo” else if a<>0 then lblmessaggio. caption=“valore diverso da zero” end if scritta in questo modo che tipo di struttura è?

Esercizio 5: compare nella label lblmessaggio dopo l’esecuzione delle seguenti istruzioni: A=5 B=3 if

Esercizio 5: compare nella label lblmessaggio dopo l’esecuzione delle seguenti istruzioni: A=5 B=3 if A>B then C=A-B else C=B-A end if lblmessaggio. caption=C A=2 B=7 if A>B then C=A-B else C=B-A end if lblmessaggio. caption=C

Eserizio 6: • Su una certa somma di denaro viene applicata un imposta in

Eserizio 6: • Su una certa somma di denaro viene applicata un imposta in base al seguente schema: – Somma < 5000 imposta =5% – Somma compresa tra 5000 e 10000 imposta = 10% – Somma >10000 imposta =15% • Calcolare la somma finale

Eserizio 6: Diagramma a blocchi

Eserizio 6: Diagramma a blocchi

Eserizio 6: Codice ' input somma=CDbl(txtsomma. text) 'blocco selezione multipla Select case somma case

Eserizio 6: Codice ' input somma=CDbl(txtsomma. text) 'blocco selezione multipla Select case somma case 0 to 5000 somma=somma+(somma*5)/100 case 5000 to 10000 somma=somma+(somma*10)/100 case is >10000 somma=somma+(somma*15)/100 case else somma=0 End select 'output lblrisultato. caption=CStr(somma)

Esempi

Esempi

Esempio 1: Calcolo dell’area di un rettangolo Tabella delle variabili Nome Descrizione Tipo Utilizzo

Esempio 1: Calcolo dell’area di un rettangolo Tabella delle variabili Nome Descrizione Tipo Utilizzo base Base del rettangolo numerico Input numerico Output altezza Altezza del rettangolo area Area del rettangolo

Esempio 1: Calcolo dell’area di un rettangolo Interfaccia grafica Diagramma a blocchi

Esempio 1: Calcolo dell’area di un rettangolo Interfaccia grafica Diagramma a blocchi

Esempio 1: Calcolo dell’area di un rettangolo In Visual basic 'dichiarazione variabili dim base

Esempio 1: Calcolo dell’area di un rettangolo In Visual basic 'dichiarazione variabili dim base as integer dim altezza as integer dim area as double Private Sub btcalcola_Click() 'input con text box base=CInt(txtbase. text) altezza=CInt(txtaltezza. text) 'blocco istruzioni area=base*altezza 'output con label lblarea. caption= “Area = ” & CStr(area) End Sub Diagramma a blocchi

Esempio 2: Calcolo della media di tre numeri interi Tabella delle variabili Nome Descrizione

Esempio 2: Calcolo della media di tre numeri interi Tabella delle variabili Nome Descrizione Tipo Utilizzo a Primo numerico Input b Secondo numerico Input c Terzo numerico Input numerico Lavoro numerico Output somma Somma dei numeri a, b ec media Media dei numeri a, b e c

Esempio 2: Calcolo della media di tre numeri Interfaccia grafica Diagramma a blocchi

Esempio 2: Calcolo della media di tre numeri Interfaccia grafica Diagramma a blocchi

Esempio 2: Calcolo della media di tre numeri In Visual Basic 'dichiarazione variabili dim

Esempio 2: Calcolo della media di tre numeri In Visual Basic 'dichiarazione variabili dim a as integer dim b as integer dim c as integer dim somma as integer dim media as double Diagramma a blocchi Private Sub btcalcola_Click() 'input con text box a=CInt(txta. text) b=CInt(txtb. text) c=CInt(txtc. text) 'blocco istruzioni somma=a+b+c media=somma/3 'output con label lblmedia. caption= “Media = ” & CStr(media) End Sub

Esempio 3: Dato il nome e l’anno di nascita di una persona, calcolarne l’età

Esempio 3: Dato il nome e l’anno di nascita di una persona, calcolarne l’età Tabella delle variabili Nome nome a_nascita a-attuale età Descrizione Nome della persona Anno di nascita della persona Anno attuale Tipo Utilizzo alfanumerico Input Età della persona numerico Output

Esempio 3: Calcolo eta di una persona Interfaccia grafica Diagramma a blocchi

Esempio 3: Calcolo eta di una persona Interfaccia grafica Diagramma a blocchi

Esempio 3: Calcolo eta di una persona 'dichiarazione variabili dim nome as string dim

Esempio 3: Calcolo eta di una persona 'dichiarazione variabili dim nome as string dim anno_nascita as integer dim anno_attuale as integer dim eta as integer Private Sub btcalcola_Click() 'input con text box nome=txtnome. text anno_nascita=CInt(txtnascita. text) anno_attuale=CInt(txtattuale. text) 'blocco istruzioni eta=anno_attuale - anno_nascita 'output con label lbleta. caption= “Il sign ” & nome & “ ha ” & CStr(eta) End Sub Diagramma a blocchi

Esempio 4: Visualizzare i numeri da 1 a 10 • Tabella della variabili Nome

Esempio 4: Visualizzare i numeri da 1 a 10 • Tabella della variabili Nome n cont num Descrizione Numero di elementi da visualizzare Numero che conta gli elementi visualizzati (contatore) Numero da visualizzare Tipo numerico Utilizzo costante numerico Lavoro/ Output numerico Output

Esempio 4: Visualizzare i numeri da 1 a 10 • Diagrammi a blocchi (post,

Esempio 4: Visualizzare i numeri da 1 a 10 • Diagrammi a blocchi (post, pre, enumerativa)

Esempio 4: Visualizzare i numeri da 1 a 10 Diagramma a blocchi 'dichiarazione costanti

Esempio 4: Visualizzare i numeri da 1 a 10 Diagramma a blocchi 'dichiarazione costanti const n=10 'dichiarazione variabili dim num as integer Private Sub btvisualizza_Click() 'inizializzazione num=0 'blocco post condizionale Do 'istruzioni num=num+1 'output con label lblnum. caption= Cstr(num) Loop Until num=10 'uscita ciclo End Sub

Esempio 4: Visualizzare i numeri da 1 a 10 Diagramma a blocchi 'dichiarazione costanti

Esempio 4: Visualizzare i numeri da 1 a 10 Diagramma a blocchi 'dichiarazione costanti const n=10 'dichiarazione variabili dim num as integer Private Sub btvisualizza_Click() 'inizializzazione num=0 'blocco precondizionale Do while num <= n 'istruzioni num=num+1 'output con print num Loop 'uscita ciclo End Sub

Esempio 4: Visualizzare i numeri da 1 a 10 In Visual Basic Diagramma a

Esempio 4: Visualizzare i numeri da 1 a 10 In Visual Basic Diagramma a blocchi 'dichiarazione costanti const n=10 'dichiarazione variabili dim cont as integer Private Sub btvisualizza_Click() 'blocco enumerativa For cont=1 To n Step 1 'output con print cont Next cont 'uscita ciclo End Sub NB: step 1 e il “cont” del next possono essere omessi

Esercizi: Calcolo dell’area di un quadrato, dato il perimetro Calcolo del massimo tra due

Esercizi: Calcolo dell’area di un quadrato, dato il perimetro Calcolo del massimo tra due numeri Calcolo la somma tra due numeri Scrivere la somma dei primi n numeri interi

Esercizio 2: Calcolo dell’area di un quadrato dato il perimetro Tabella delle variabili Nome

Esercizio 2: Calcolo dell’area di un quadrato dato il perimetro Tabella delle variabili Nome perimetro Descrizione Perimetro del quadrato Tipo numerico Utilizzo Input lato Lato del quadrato numerico Lavoro area Area del quadrato numerico Output

Esercizio 2: Calcolo dell’area di un quadrato INIZIO Diagramma a blocchi leggi perimetro lato

Esercizio 2: Calcolo dell’area di un quadrato INIZIO Diagramma a blocchi leggi perimetro lato perimetro / 4 area lato * lato scrivi area FINE

Esercizio 3: Calcolo del massimo tra due numeri Tabella delle variabili Nome Descrizione X

Esercizio 3: Calcolo del massimo tra due numeri Tabella delle variabili Nome Descrizione X Primo numero Tipo numerico Utilizzo Input Y Secondo numerico Input massimo Massimo tra X e Y numerico Output

Esercizio 3: Calcolo del massimo tra due numeri INIZIO Diagramma a blocchi falso massimo

Esercizio 3: Calcolo del massimo tra due numeri INIZIO Diagramma a blocchi falso massimo leggi X, Y X < Y X vero massimo scrivi massimo FINE Y

Esercizio 1: Somma tra due numeri Tabella delle variabili Nome Descrizione X Primo addendo

Esercizio 1: Somma tra due numeri Tabella delle variabili Nome Descrizione X Primo addendo Tipo numerico Utilizzo Input Y Secondo addendo numerico Input somma Somma tra X e Y numerico Output

Esercizio 1: Somma tra due numeri INIZIO Diagramma a blocchi leggi numero X leggi

Esercizio 1: Somma tra due numeri INIZIO Diagramma a blocchi leggi numero X leggi numero Y somma X + Y scrivi somma FINE

Esercizio 4: Somma primi n numeri interi Tabella delle variabili: Nome n Descrizione Numero

Esercizio 4: Somma primi n numeri interi Tabella delle variabili: Nome n Descrizione Numero di elementi da sommare Tipo numerico Utilizzo Input conta Numero che conta gli elementi sommati (contatore) Somma dei numeri (accumulatore) numerico lavoro numerico Output somma

Esercizio 4: Diagramma a blocchi INIZIO leggi n somma 0 conta 1 falso conta

Esercizio 4: Diagramma a blocchi INIZIO leggi n somma 0 conta 1 falso conta <= n vero somma = somma+conta=conta+1 scrivi somma FINE

Input Text. Box • In Visul basic le istruzioni di input vengono effettuate tramite

Input Text. Box • In Visul basic le istruzioni di input vengono effettuate tramite alcuni oggetti: • TEXTBOX • COMBOBOX • INPUTBOX

Input in Visual Basic • Le istruzioni tipiche di input in visual basic sono:

Input in Visual Basic • Le istruzioni tipiche di input in visual basic sono: • variabile=txtnome. text • variabile=combo • variabile=Inputbox(“testo di input”)

output label • In Visul basic le istruzioni di output vengono effettuate tramite alcuni

output label • In Visul basic le istruzioni di output vengono effettuate tramite alcuni oggetti: • Label • Msg. Box • List. Box

Output in Visual Basic • Le istruzioni tipiche di output in visual basic sono:

Output in Visual Basic • Le istruzioni tipiche di output in visual basic sono: • lblnome. caption=“altro testo”& variabile & “altro testo” • Msg. Box(“messaggio da visualizzare”) • List. Box. Items. Add(nomi(i))

Convertire • Occorre ricordare che gli oggetti del visual basic utilizzati per gli input

Convertire • Occorre ricordare che gli oggetti del visual basic utilizzati per gli input lavorano con le stringhe e quindi occorre convertire da stringhe in valori numerici se si hanno delle variabili di tipo numerico. • Abbiamo alcune funzione predefinite per far questo: • Val(da stringa a integer) • Cstr(da integer a stringa)