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 { esegui le istruzioni contenute in questo blocco } 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