Strutture di controllo 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 schemi: 1.Sequenza 2.Alternativa o Selezione 3.Iterazione Risultato 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 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. E’ spesso indicata col termine blocco. La sequenza Sequenza Diagramma a blocchi Esempio Problema: Calcolare l’area di un rettangolo, essendo note la base e l’altezza. I dati iniziali sono: il valore della base, il valore dell’altezza. Inoltre conosciamo la relazione che permette di calcolare l’area del rettangolo. La procedura (parte esecutiva) può essere schematizzata nel modo seguente: LEGGI i valori dell’altezza e della base (l’esecutore deve acquisire i dati dall’esterno); CALCOLA L’AREA; SCRIVI il risultato (l’esecutore deve mandare il risultato in output). INIZIO O “Inserire base e altezza” base altezza I I area-->base*altezza area FINE O Esercizi Rappresenta con il diagramma a blocchi gli algoritmi che risolvono i seguenti problemi: 1. Noti i cateti determinare l’area e il perimetro di un triangolo rettangolo; 2. Noti il voto dell’orale, quello di laboratorio e quello dello scritto, visualizzare il voto medio; 3. Un noleggio di automobili applica le seguenti tariffe: 75 euro di spesa fissa più 0.5 euro per ogni km percorso. Calcolare la spesa del noleggio. 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 tre tipi di alternative: a una via a due vie multipla Alternativa a una via Diagramma a blocchi vero Istruzione condizione falso Alternativa a due vie Diagramma a blocchi vero Istruzione 1 condizione falso Istruzione 2 Esempio Dati due numeri in input visualizzare il massimo tra i due. Tabella delle variabili Nome Descrizione Primo Primo numero Tipo Utilizz o numerico Input Secondo Secondo numero numerico Massim o Massimo tra X e Y Input numerico Output/ Lavoro INIZIO Diagramma a blocchi “Inserisci i due numeri” i Primo Secondo vero o i falso Primo > Secondo Massimo = Primo Massimo = Secondo Massimo FINE o Esercizi: Dati due numeri visualizzare il minimo tra i due. Dato il nome e l’età di una persona , stampare il nome e la scritta MAGGIORENNE se la persona è maggiorenne, MINORENNE altrimenti. Dati il nome e il sesso (F o M) di una persona, si visualizzi il messaggio “Egregio Signore” o “Gentilissima signora” a seconda che si tratti di un uomo o di una donna. Strutture di ripetizione I costrutti di ripetizione detti anche cicli o di iterazione, 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 Enumerativa: ripetizione di un’azione per un numero di volte fissato all’inizio dell’esecuzione dell’istruzione “ripeti tot volte” Sono equivalenti ma appropriati in situazioni diverse! Ripetizione condizionale 1. Ripetizione precondizionale Controllo la condizione; in base al suo valore di verità l’esecutore stabilisce se eseguire il blocco oppure continuare con l’esecuzione della prima istruzione successiva al ciclo Precondizionale Se la condizione è inizialmente falsa, il blocco di istruzioni non viene mai eseguito. Quindi un blocco con una ripetizione precondizionale può: 1. essere eseguito più volte 2. non essere mai eseguito Attenzione: Il corpo di un blocco con una ripetizione precondizionale deve alla fine rendere falsa la condizione perchè il ciclo si fermi, altrimenti si va avanti all’infinito (loop) Ripetizione precondizionale Codice in Visual Basic: Do While Condizione Istruzioni Loop F Che equivale a: 1. Valuta la condizione 2. Se il valore è vero torna al passo 1 3. Se il valore è falso esci dal ciclo Condizione V istruzioni Ripetizione condizionale 2. Ripetizione postcondizionale L’esecutore esegue il blocco di istruzioni, poi controlla la condizione; in base al suo valore di verità l’esecutore decide se eseguire ancora il blocco oppure continuare l’esecuzione della prima azione successiva. Ripetizione postcondizionale Codice in Visual Basic Do istruzioni Loop Until condizione istruzioni Che equivale a: 1. 2. 3. 4. Esegui le istruzioni Valuta la condizione Se il valore è falso si torna al passo 1 Se il valore è vero si esce dal ciclo condizione F V Postcondizionale 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 enumerativa 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 Codice in Visual Basic: For Contatore = min to max step 1 istruzioni Next Contatore For Contatore = min to max step 1 Che equivale a: 1. Inizializza il Contatore al valore min; 2. Se Contatore > massimo esci, altrimenti vai alla 3 3. Esegui istruzioni 4. Incrementa Contatore di 1 (step) 5. vai alla 2 istruzioni