appunti3s:tre_strutture
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
appunti3s:tre_strutture [2018/04/25 07:55] – external edit 127.0.0.1 | appunti3s:tre_strutture [2020/06/08 22:20] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | > torna indietro > [[appunti3s: | ||
+ | |||
+ | ===== Introduzione ===== | ||
+ | Quando si affronta la programmazione si devono indicare al computer delle istruzioni da eseguire. | ||
+ | Se il computer potesse comprendere il linguaggio naturale, sarebbe facile chiedere: | ||
+ | * di eseguire un' | ||
+ | * di eseguire un' | ||
+ | * di eseguire una // | ||
+ | |||
+ | Si tratta di istruzioni per noi molto semplici da comprendere, | ||
+ | Ognuna delle precedenti istruzioni è un esempio di: una condizione, un' | ||
+ | |||
+ | =====Teorema Böhm-Jacopini===== | ||
+ | Questo teorema afferma che qualsiasi // | ||
+ | |||
+ | Gli esempi appena visti erano proprio di queste strutture. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | I programmi che seguono sono stati realizzati senza usare altre funzioni oltre al main() per mettere in evidenza solo le tre strutture: | ||
+ | |||
+ | =====Struttura sequenziale===== | ||
+ | Un programma può eseguire una lista sequenziale di istruzioni | ||
+ | {{ : | ||
+ | * //Esempio che calcola l'area di un cerchio// | ||
+ | * chiedere in input un valore per il raggio | ||
+ | * calcola l'area di un cerchio | ||
+ | * visualizzare in output l'area | ||
+ | <file cpp 31.cpp> | ||
+ | // Questo programma è stato scritto da Fabio | ||
+ | |||
+ | #include < | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | std::cout << " | ||
+ | float raggio; | ||
+ | std::cin >> raggio; | ||
+ | float area = raggio*raggio*3.14; | ||
+ | std::cout << " | ||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | =====Struttura condizionale===== | ||
+ | Un programma può eseguire istruzioni diverse in base al verificarsi di una condizione{{ : | ||
+ | * //Esempio che visualizza la maggiore età// | ||
+ | * chiedere in input il valore dell' | ||
+ | * calcolare l'età attuale | ||
+ | * se età < 18 | ||
+ | * allora visualizzare in output: sei minorenne | ||
+ | * altrimenti visualizzare in output: sei maggiorenne | ||
+ | |||
+ | <file cpp 32.cpp> | ||
+ | // Questo programma è stato scritto da Fabio | ||
+ | |||
+ | #include < | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | int const annoAttuale=2012; | ||
+ | std::cout << "Per favore scrivi l'anno di nascita: "; | ||
+ | int mioAnnoNascita; | ||
+ | std::cin >> mioAnnoNascita; | ||
+ | | ||
+ | if ( annoAttuale-mioAnnoNascita < 18 ) | ||
+ | std::cout << " | ||
+ | else | ||
+ | std::cout << " | ||
+ | | ||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Che differenza c'è tra questi due esempi? Perché vengono compilati senza errore? | ||
+ | * < | ||
+ | * < | ||
+ | ====Struttura condizionale annidata==== | ||
+ | vedere [[appunti3s: | ||
+ | * //Esempio che visualizza il minimo di tre numeri// | ||
+ | * chiedere in input 3 valori numerici interi (primo, | ||
+ | * se primo < secondo | ||
+ | * allora se primo < terzo | ||
+ | * allora visualizzare in output: primo | ||
+ | * altrimenti visualizzare in output: terzo | ||
+ | * altrimenti se secondo < terzo | ||
+ | * allora visualizzare in output: secondo | ||
+ | * altrimenti visualizzare in output: terzo | ||
+ | <file cpp 33.cpp> | ||
+ | // Questo programma è stato scritto da Fabio | ||
+ | // visualizza il minimo di tre numeri | ||
+ | |||
+ | #include < | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | int primo, | ||
+ | |||
+ | std::cout << "Per favore scrivi tre numeri interi separandoli con ' | ||
+ | std::cin >> primo >> secondo >> terzo ; | ||
+ | | ||
+ | if ( primo < secondo ) | ||
+ | if ( primo < terzo) | ||
+ | std::cout << " | ||
+ | else | ||
+ | std::cout << " | ||
+ | else | ||
+ | if ( secondo < terzo ) | ||
+ | std::cout << " | ||
+ | else | ||
+ | std::cout << " | ||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <file cpp 34.cpp> | ||
+ | // Questo programma è stato scritto da Fabio | ||
+ | // visualizza il minimo di tre numeri | ||
+ | // utilizzando gli operatori logici in alternativa alle condizioni annidate | ||
+ | #include < | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | int primo, | ||
+ | |||
+ | std::cout << "Per favore scrivi tre numeri interi separandoli con ' | ||
+ | std::cin >> primo >> secondo >> terzo ; | ||
+ | | ||
+ | if ( primo < secondo && primo < terzo ) | ||
+ | | ||
+ | if ( secondo < primo && secondo < terzo ) | ||
+ | | ||
+ | |||
+ | // caso superfluo... | ||
+ | if ( terzo < secondo && terzp < primo ) | ||
+ | | ||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Esercizi: | ||
+ | |||
+ | - esercizio: chiedere due numeri e visualizzarli in ordine inverso | ||
+ | - esercizio: chiedere due numeri, senza un ordine, visualizzare uno dei tre messaggi: sono ordinati, sono disordinati, | ||
+ | =====Struttura iterativa===== | ||
+ | La struttura iterativa può essere studiata come composta da diversi elementi (che possono anche coincidere tra loro): | ||
+ | * un' | ||
+ | * un' | ||
+ | * la condizione su un' | ||
+ | * un' | ||
+ | A seconda della posizione occupata dalla condizione di uscita all' | ||
+ | * precondizionale | ||
+ | * postcondizionale | ||
+ | ====Struttura iterativa precondizionale==== | ||
+ | // | ||
+ | * //Esempio che visualizza la tabellina del 3// | ||
+ | * ripetere la seguente operazione per numero che va da 1 a 10 | ||
+ | * visualizzare in output il risultato dell' | ||
+ | La struttura iterativa in C++ si può realizzare in due modi di scrivere diversi, tra loro equivalenti: | ||
+ | <file cpp 35.cpp> | ||
+ | // Questo programma è stato scritto da Fabio | ||
+ | // iterazione realizzata con for | ||
+ | #include < | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | int numero; | ||
+ | std::cout << " | ||
+ | std::cin >> numero ; | ||
+ | for ( int i=1; i<=10; i++) | ||
+ | std::cout << numero*i << ' ' ; | ||
+ | std::cout << std::endl; | ||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <file cpp 36.cpp> | ||
+ | // Questo programma è stato scritto da Fabio | ||
+ | // iterazione realizzata con while | ||
+ | #include < | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | int numero; | ||
+ | std::cout << " | ||
+ | std::cin >> numero ; | ||
+ | int i=1; | ||
+ | while ( i<=10 ) | ||
+ | { | ||
+ | std::cout << numero*i << ' ' ; | ||
+ | i++; | ||
+ | } | ||
+ | std::cout << std::endl; | ||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | * to do: esempio con totalizzatore che somma la tabellina del 3 | ||
+ | * to do: esempio di struttura postcondinsionale // | ||
+ | ====Struttura iterativa annidata==== | ||
+ | |||
+ | <file cpp 37.cpp> | ||
+ | // Questo programma è stato scritto da Fabio | ||
+ | |||
+ | #include < | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | |||
+ | for ( int i=1; i<=10; i++) | ||
+ | { | ||
+ | for ( int j=1; j<=10; j++) | ||
+ | std::cout << j*i << ' ' ; | ||
+ | std::cout << std::endl; | ||
+ | } | ||
+ | std::cout << std::endl; | ||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | ====struttura iterativa all' | ||
+ | |||
+ | ====struttura condizionale all' | ||
appunti3s/tre_strutture.txt · Last modified: 2020/06/08 22:20 by 127.0.0.1