Lezione 6 Strutture di controllo Il condizionale JavaScript Lezione 6 Strutture di controllo Il condizionale
Le strutture di controllo Quando risolviamo un problema mediante un algoritmo, dobbiamo combinare le varie istruzioni utilizzando delle particolari strutture. Ad esempio, l'algoritmo per determinare i divisori di numero intero n : "Divido ripetutamente il numero n per tutti i numeri x che assumono i valori da 1 fino al numero n stesso. Se il resto di tali divisioni è 0 allora faccio scrivere x ." Si osserva quindi che questo algoritmo ripete delle istruzioni (dividi n per 1, 2, 3, … , n ) ed esegue delle istruzioni se è vera una certa condizione (se il resto della divisione è 0 allora …).
Le tre strutture di controllo della programmazione Per scrivere programmi che risolvono problemi significativi occorre organizzare le istruzioni in tre strutture: la sequenza: le istruzioni vengono eseguite tutte nella sequenza in cui sono state scritte, dalla prima all'ultima. il condizionale (decision making): permette di eseguire o meno delle istruzioni a seconda che sia soddisfatta o meno una certa condizione (booleana il ciclo (loop): permette di eseguire una porzione di codice più volte, fino a che una condizione risulta soddisfatta. Ogni passaggio attraverso il ciclo è detto iterazione.
Perché solo tre strutture? E' stato dimostrato il seguente teorema fondamentale: "Ogni algoritmo può essere espresso con le sole tre strutture di controllo fondamentali: sequenza di istruzioni, selezione e iterazione" (teorema di Jacopini - Bohm, 1966) Sulla base di questo teorema, ogni programma che codifica un algoritmo (anche il più complesso), è formato da istruzioni aggregate secondo le tre strutture di controllo di base.
La sequenza di istruzioni La sequenza di istruzioni è una struttura nella quale le istruzioni vengono eseguite tutte una sola volta nell'ordine in cui sono state scritte. La figura mostra graficamente (diagramma di flusso) la situazione. Avendo a disposizione solo questa struttura non è possibile scrivere programmi che risolvano problemi significativi. Infatti gli algoritmi, anche quelli più semplici, richiedono quasi sempre anche di scegliere quali istruzioni eseguire e/o di eseguirle più volte.
La sequenza di istruzioni Tutti gli script considerati fino ad ora contengono solo la sequenza di istruzioni. Esempio: lo script chiede due numeri, li moltiplica e scrive il risultato. Tutte le 5 istruzioni vengono eseguite in successione. <script> x=prompt("Introduci il primo numero x","") y=prompt("Introduci il secondo numero y","") z=x*y; output = x + " * " + y + " = " + z; alert(output); </script>
Struttura condizionale La struttura condizionale permette al programma di scegliere se eseguire una istruzione (o un blocco di istruzioni) oppure un'altra istruzione (oppure un altro blocco di istruzioni). La struttura condizionale quindi traduce la situazione Se è vera una certa condizione allora esegui queste istruzioni [altrimenti esegui queste altre istruzioni] La struttura condizionale dà due possibilità: senza o con altrimenti.
Struttura condizionale senza altrimenti se è vera questa condizione esegui queste istruzioni e poi prosegui con le istruzioni successive Lo schema a blocchi è quello della figura
Struttura condizionale con altrimenti se è vera questa condizione esegui queste istruzioni altrimenti (cioè: se la condizione è falsa) esegui queste altre istruzioni e poi prosegui con le istruzioni successive Lo schema a blocchi è quello della figura
Struttura condizionale in JavaScript La sintassi del costrutto condizionale in JavaScript è la seguente: if (condizione) { esegui le istruzioni contenute in questo blocco } else { Note condizione è un'istruzione che ha un valore booleano e deve essere messa tra parentesi tonde L'istruzione else può anche non esserci. Le parentesi graffe vengono usate se le istruzioni da eseguire sono più di una; se il programma deve eseguire una sola istruzione, le parentesi graffe possono essere omesse
Esempio L’esempio scrive il maggiore di due numeri oppure che i due numeri sono uguali <SCRIPT> x=prompt("Introduci il primo numero x",""); y=prompt("Introduci il secondo numero y",""); x=x*1; // li trasforma in numeri y=y*1; if (x>y) alert("il primo numero è il maggiore"); if (x<y) alert("il secondo numero è il maggiore"); if (x == y) alert("i due numeri sono uguali"); </SCRIPT>
Esercitazioni Il link apre un documento di word nel quale sono presenti alcuni script con la struttura di selezione Gli script vanno provati e compresi, aiutandosi con le spiegazioni e con i commenti messi tra le istruzioni Esercitazioni conversioni di tipo