Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
appunti3s:programmi_imperativi [2019/07/28 10:46]
profpro
appunti3s:programmi_imperativi [2019/07/28 11:30]
profpro elimitata e spostata in programmazione imperativa
Line 2: Line 2:
 [[appunti3s:​programmazione imperativa]] [[appunti3s:​programmazione imperativa]]
  
->> Pagina da cancellare 
- 
-====== Imperativo e Dichiarativo ====== 
-Un linguaggio di programmazione di tipo //​imperativo//​ esprime dei comandi che devono essere eseguiti. Facendo un paragone con il linguaggio umano, si comporta come come il modo imperativo (es: mangia, dormi, cammina) 
- 
-Un linguaggio di programmazione di tipo //​dichiarativo//​ esprime dei comandi, specificando cosa fare, senza specificare come farlo. ​ 
- 
-====== Funzione main() ====== 
-Per esercizio spiegare a parole cosa viene svolto da ogni programma.... 
- 
-<file cpp 01.cpp> ​ 
-// questo programma è stato scritto da Fabio 
-// contiene il codice indispensabile anche 
-// quando il programma non effettua nessuna operazione 
- 
-int main () 
-{ 
-  return 0; 
-} 
-</​file>​ 
- 
-Il programma contiene sempre una funzione chiamata //main()//, che significa "​funzione principale"​. 
- 
-Quando viene eseguito un programma, il sistema operativo manda in esecuzione questa funzione e che si conclude con il comando //return 0//. L'​istruzione return //​restituisce//​ al sistema operativo, come se fosse il risultato della funzione, il valore "​zero"​. Il valore zero (in informatica vuol dire anche "​falso"​) significa che la funzione //main()// è stata eseguita senza produrre nessun tipo di errore. In caso di errore poteva essere restituito un altro numero... 
-===== Note sul codice ===== 
- 
-  * Il fatto che la funzione //main()//, alla fine, restituisca al sistema operativo un valore intero, **deve** essere indicato con //int// davanti al nome //main()//. 
-  * Le istruzioni in C++ devono essere terminate con un //punto e virgola// (;). 
-  * Ogni blocco di codice che rappresenta un'//​unità//​ è racchiuso tra //parentesi graffe//: { } 
-  * Le righe che iniziano con due slash (/) sono considerate commenti (una spiegazione per aiutare il lettore). 
- 
-====== Parole chiave ====== 
-Molte delle parole scritte in un programma sono parole della lingua inglese ma hanno un significato speciale per il computer. Se per errore si sbaglia una sola lettera su una sola parola, il programma può diventare //​completamente//​ incomprensibile. 
- 
-Per esercizio **trovare gli errori** in questi programmi. 
- 
-<file cpp 01error.cpp> ​ 
-// questo programma è stato scritto da Fabio 
-// il programma non effettua nessuna operazione 
-// il programma contiene degli errori da trovare... 
-int main() 
-{ 
-  retrun 0; 
-} 
-</​file>​ 
-<file cpp 02error.cpp> ​ 
-// questo programma è stato scritto da Fabio 
-// il programma non effettua nessuna operazione 
-// il programma contiene degli errori da trovare... 
-int main 
-{ 
-  return 0; 
-} 
-</​file>​ 
- 
- 
-====== Variabili ====== 
-<file cpp 02.cpp> ​ 
-// questo programma è stato scritto da Fabio 
- 
-int main () 
-{ 
-  int somma; // variabile locale (della funzione main) 
-  somma = 11+2; // il programma modifica il contenuto della memoria ma non e' visibile nessun effetto... 
-  return 0; 
-} 
-</​file>​ 
- 
-Le variabili sono delle zone di memoria (paragonabili a dei contenitori) dove viene memorizzato un valore numerico. ​ 
-  * Una variabile che si trova dentro il codice di una funzione è chiamata "​variabile locale",​ e può essere usata solo dentro questa funzione. 
-  * Ogni variabile ha un nome identificatore che la distingue: nella stessa funzione //non// ci possono essere due variabili con lo stesso nome. 
-  * Ogni variabile ha un //tipo di dato// e quindi occupa una certa quantità di memoria. 
-  * Su ogni tipo di dato si possono eseguire solo alcuni tipi di operazioni. 
-====== Tipo di dato ====== 
- 
-Il valore contenuto in una variabile può essere modificato, ma deve essere sempre dello stesso tipo. 
-Ad esempio, tipo intero (-3, 44, ...), tipo carattere alfanumerico ('​z',​ '?',​ ...), ecc. 
-  * Ogni tipo di dato (intero, carattere, ecc.) richiede una quantità di memoria diversa dall'​altro. Ad esempio, per una variabile che contiene un numero intero (800) può essere necessario riservare 1 Byte, mentre, per una variabile che contiene un numero in virgola mobile (5.077e-3), può essere necessario riservare 4 Byte. La dimensione di questi tipi di dati in memoria dipende anche dal sistema operativo e dal tipo di CPU che utilizza il computer. Esempio: cpu a 32 bit, cpu a 64 bit 
-  * Ogni tipo di dato offre la possibilità di effettuare un certo tipo di operazioni invece di altre: il tipo carattere non può essere sommato come il tipo intero. ​ 
-  * Una variabile può essere di un solo tipo, quindi il linguaggio è detto //​fortemente tipizzato//​. 
-  * Esiste la possibilità di traferire un valore di un certo tipo, in una variabile di un tipo diverso (detto [[appunti3s:​casting]]) ma ci sono delle regole rigidissime da rispettare... 
-  * Esistono linguaggi detti //​debolmente tipizzati// dove il tipo di dato si può cambiare più facilmente. 
- 
-In C++ esistono tipi primitivi (built in), come //int//, //bool//, //char//, //float//, //double//, ma il programmatore può creare anche nuovi tipi di dati.  
-Inoltre la libreria standard fornisce nuovi tipi di dati come //string//, //​complex//,​ //​vector//,​... 
- 
-vedere [[appunti3s:​operazioni su int]] 
-===== Assegnazioni ===== 
-L'​assegnazione effettua la memorizzazione di un valore all'​interno di una variabile. 
-<​code>​x = 44;</​code>​ 
-Il valore si trova a destra del segno di //uguale//, la variabile di destinazione si trova a sinistra dell'​uguale. Al posto di un valore numerico costante (come 44) ci può essere anche un'//​espressione//​ mista di variabili, operatori e numeri. L'​ordine di esecuzione prevede che prima venga valutata l'​espressione a destra (44+y*2) e poi assegnata alla variabile a sinistra (x). 
-<​code>​x = 44+y*2; ​   // da destra a sinistra</​code>​ 
-Infatti spesso l'​assegnazione viene rappresentata nei libri anche con una freccia 
-<​code>​x ← 44</​code>​ 
-Si può assegnare una variabile su se stessa: ​ 
-<​code>​x = x;</​code>​ 
-Una assegnazione su una variabile può modificare se stessa (attenzione! eseguire l'​espressione da destra a sinistra) 
-<​code>​x = x+1;</​code>​ 
-===== Inizializzazioni ===== 
-Al momento della definizione di una variabile, viene riservata della memoria, ma cosa contiene quella memoria? Se il programmatore lo prevede, può inizializzare una variabile al momento della sua definizione 
-<​code>​int somma = 80;</​code>​ 
- 
-Nel caso in cui l'area di memoria rimanesse non inizializzata,​ nessuno può prevedere cosa ci sarà... 
-(di solito ci può essere un numero strano, dovuto alla presenza di un vecchio numero che non è stato cancellato) 
- 
-===== Input e output ===== 
-vedere [[appunti3s:​cin_cout]] e [[appunti3s:​direttive]] 
- 
-Quando si inserisce un testo la lettura si interrompe al primo spazio bianco, oppure alla prima tabulazione o al primo "​invio"​... 
- 
-<file cpp 03.cpp> ​ 
-// questo programma è stato scritto da Fabio 
- 
-#include <​iostream>​ 
-// che cosa contiene il file iostream? 
- 
-int main () 
-{ 
-  int somma; 
-  somma = 11+2; 
-  std::cout << somma << std::endl; 
-  return 0; 
-} 
-</​file>​ 
- 
-<file cpp 04.cpp> ​ 
-// questo programma è stato scritto da Fabio 
-#include <​iostream>​ 
-int main () 
-{ 
-  int divisione; ​ 
-  //​operazione di divisione tra numeri interi 
-  divisione = 11/2; 
-  std::cout << divisione << std::endl; 
-  return 0; 
-} 
-</​file>​ 
-===== Virgola mobile ===== 
-vedere [[appunti3s:​errori_di_conversione]] 
-<file cpp 05.cpp> ​ 
-// questo programma è stato scritto da Fabio 
-#include <​iostream>​ 
-int main () 
-{ 
-  float divisione; ​ 
-  //​operazione di divisione tra numeri approssimati in virgola mobile 
-  divisione = 11.0/2.0; 
-  std::cout << divisione << std::endl; 
-  return 0; 
-} 
-</​file>​ 
- 
-<file cpp 06.cpp> ​ 
-// questo programma è stato scritto da Fabio 
-// visualizza solo un semplice testo (sempre lo stesso) 
-#include <​iostream>​ 
- 
-int main () 
-{ 
-  std::cout << "Ciao a tutti!"​ << std::endl; 
-  return 0; 
-} 
-</​file>​ 
- 
-<file cpp 07.cpp> ​ 
-// questo programma è stato scritto da Fabio 
-// chiede un dato dalla tastiera e lo visualizza (sempre diverso) 
- 
-#include <​string>​ 
-#include <​iostream>​ 
- 
-int main () 
-{ 
-  std::cout << "Per favore scrivi il tuo nome: "; 
-  std::string mioNome; 
-  std::cin >> mioNome; 
-  std::cout << "Ciao a tutti, tranne che a " << mioNome << std::endl; 
-  return 0; 
-} 
-</​file>​ 
- 
- 
-<file cpp 08.cpp> ​ 
-// questo programma è stato scritto da Fabio 
-// visualizza anche i simboli in codifica UTF-8 
- 
-#include <​string>​ 
-#include <​iostream>​ 
- 
-int main () 
-{ 
-  std::cout << "Per favore scrivi un numero intero: "; 
-  int mioNumero; 
-  std::cin >> mioNumero; 
-  std::cout << "Tu hai in tasca " << mioNumero << "​\u20AC?"​ << std::endl; 
-  return 0; 
-} 
-</​file>​ 
- 
-<file cpp 08errato.cpp> ​ 
-// questo programma è stato scritto da Fabio 
-// contiene degli errori che devono essere trovati 
- 
-#include <​string>​ 
- 
-int main () 
-{ 
-  int mioNumero; 
-  std::cout << "Per favore scrivi un numero intero: "; 
-  std::cin >> mioNumero; 
-  std::cout << "Tu hai in tasca " << mioNumero << "​\u20AC?​ << endl; 
-  return 0; 
-} 
-</​file>​ 
- 
-<file cpp 09.cpp> ​ 
-// questo programma è stato scritto da Fabio 
-// per calcolare la propria eta' 
- 
-#include <​iostream>​ 
-#include <​string>​ 
- 
-int main () 
-{ 
-  std::string mioNome; 
-  std::cout << "Per favore scrivi il nome: "; 
-  std::cin >> mioNome; 
- 
-  int mioAnnoNascita;​ 
-  std::cout << "Per favore scrivi l'anno di nascita: "; 
-  std::cin >> mioAnnoNascita;​ 
- 
-  std::cout << mioNome << ", quest'​anno compie " ​ 
-            << 2012-mioAnnoNascita << " anni." << std::endl; 
-  return 0; 
-} 
-</​file>​ 
- 
-<file cpp 10.cpp> ​ 
-// questo programma è stato scritto da Fabio 
-// a volte è necessario creare dei valori costanti che 
-// il programmatore può modificare in un solo punto del codice 
- 
-#include <​iostream>​ 
-#include <​string>​ 
- 
-int main () 
-{ 
-  int const annoAttuale=2012;​ //regola: tutto cio` che e` a sinistra di ``const''​ diventa costante 
- 
-  std::string mioNome; 
-  std::cout << "Per favore scrivi il nome: "; 
-  std::cin >> mioNome; 
- 
-  int mioAnnoNascita;​ 
-  std::cout << "Per favore scrivi l'anno di nascita: "; 
-  std::cin >> mioAnnoNascita;​ 
- 
-  std::cout << mioNome << ", quest'​anno compie " ​ 
-            << annoAttuale-mioAnnoNascita << " anni." << std::endl; 
-  return 0; 
-} 
-</​file>​ 
- 
-====== Stile di indentazione ====== 
-L'​indentazione è una convenzione che aggiunge degli //spazi bianchi// davanti alle righe di un programma per facilitarne la lettura. Questi spazi bianchi davanti alle istruzioni non hanno nessun significato speciale (eccetto in Python), e quindi ogni persona potrebbe usarli in modo diverso. Lo stile di indentazione modifica anche la posizione delle parentesi graffe dei blocchi di codice. 
- 
-esempio: http://​en.wikipedia.org/​wiki/​Indent_style#​Horstmann_style 
- 
-Lo stile da usare è abbastanza libero, ma va usato coerentemente. 
-====== verifica ====== 
-  - Cosa significa main()? 
-  - Cosa significa return? 
-  - Cosa significano le parentesi graffe? 
-  - Cosa significa il termine assegnazione?​ 
-  - Fare un esempio di indentazione 
-  - Quali sono i tipi primitivi semplici del linguaggio C++? 
  
  • appunti3s/programmi_imperativi.txt
  • Last modified: 2019/07/28 11:30
  • by profpro