INTRODUZIONE ALLA PROGRAMMAZIONE Prof. Enrico Terrone A. S: 2008/09 Definizioni Programmare significa risolvere problemi col computer, cioè far risolvere problemi al computer attraverso un insieme di informazioni e una sequenza di istruzioni. La programmazione si compone di tre fasi: analisi / algoritmo / programma L analisi consiste nell individuare i dati e i risultati del problema che bisogna risolvere.
Definizioni L algoritmo è la serie di passaggi che permette di risolvere il problema trasformando i dati nei risultati. L algoritmo può essere espresso in una qualunque lingua naturale oppure in un formalismo apposito (p. es. i flow-chart). L algoritmo è una ricetta che spiega all esecutore come produrre i risultati a partire dai dati. L algoritmo ha sempre carattere generale: non risolve un singolo problema (p. es. quanto fa 1/3 + 2/5), ma una famiglia di problemi (p. es. come si sommano due frazioni). Definizioni Il programma è la traduzione dell algoritmo in un linguaggio comprensibile dal computer. I linguaggi comprensibili dal computer si chiamano linguaggi di programmazione. Il linguaggio di programmazione che useremo in questo corso si chiama C/C++. Il programma è scritto da un programmatore per un utente. In laboratorio lo studente interpreterà di solito entrambi i ruoli, ma bisogna sempre tener presente che si tratta di due figure ben distinte.
La forma del programma Lo schema generale di un programma è il seguente: 1) DEFINIZIONE DELLE INFORMAZIONI (impostazione del problema) 2) CARICAMENTO DEI DATI 3) ELABORAZIONE (risoluzione del problema, calcolo dei risultati) 4) COMUNICAZIONE DEI RISULTATI Il programma più semplice Il più semplice programma si riduce alla comunicazione di una frase, ed ha la forma: // Enrico Terrone, 12/9/2008, Programma Frase #include <iostream.h> using namespace std; int main () { cout << Hello World \n ; } system( PAUSE ); //istruzione finale di ogni programma
Il programma più semplice Il programma non ha variabili e l unica vera istruzione è cout << Hello World \n ;, che stampa sullo schermo la scritta Hello World seguita da un a capo. Il resto è una cornice che si ripeterà in ogni programma. Il testo che segue i caratteri // è un commento che serve solo a descrivere le istruzioni ma non ha effetti sull esecuzione del programma. È consigliato di usare sempre un commento a inizio programma in cui si scrive autore, data e titolo del programma. In generale le istruzioni di un programma C/C++ devono stare su una riga che termina con il punto e virgola; il programma è composto da una serie di istruzioni che vengono eseguite una dopo l altra, nell ordine che va dall alto verso il basso. Definizione delle informazioni La definizione delle informazioni richiede la creazione delle variabili, che sono gli spazi di memoria centrale dove le informazioni sono contenute. Possiamo pensare a una variabile come a una casella dentro la quale possiamo leggere e scrivere. Una variabile è caratterizzata dal suo nome (che è associato alla casella), dal suo tipo (quali dati possiamo scrivere nella casella; inizialmente useremo soltanto i tipi semplici: numeri e caratteri) e dal suo valore (quale dato è effettivamente scritto dentro la casella in un certo istante). 14 int numero
Definizione delle informazioni Per creare una variabile in C si usa un istruzione della forma: <tipo> nome; int x; // crea una variabile di nome x // e di tipo numero intero double num; // crea una variabile di nome num // e di tipo numero decimale char caratt; // crea una variabile di nome caratt // e di tipo carattere Il nome è a scelta dell utente, purché inizi con una lettera e contenga solo lettere, numeri e underscore (trattini bassi). I tipi invece sono predefiniti dal linguaggio. Il caricamento dei dati Per caricare i dati di un programma occorre innanzitutto definire le variabili che li possono contenere. Dopo di che ci sono tre possibilità: Lettura da tastiera; Estrazione casuale; Lettura da file. Consideriamo per adesso soltanto la modalità più semplice, che è la lettura da tastiera: per prima cosa occorre stampare sullo schermo (con l istruzione cout) una scritta che invita l utente a inserire il dato; a questa, fa seguito una seconda istruzione (cin) che legge il valore inserito da tastiera e lo salva nella variabile indicata sulla stessa riga.
Il caricamento dei dati // Enrico Terrone, 12/9/2008, Programma Quadrato #include <iostream.h> using namespace std; int main () { int l; cout << PROGRAMMA: QUADRATO ; cout << Inserisci il lato del quadrato: ; cin >> l; } Nota-1: come prima istruzione del programma, subito dopo la creazione delle variabili, è consigliato di scrivere sempre sullo schermo il titolo del programma in modo che l utente sappia che cosa sta usando. Nota-2: le frecce che seguono cin sono girate al contrario rispetto a quelle dopo cout: esse indicano infatti un movimento dei dati dalla tastiera (cin) alla variabile. L elaborazione L elaborazione è l insieme delle operazioni che permettono di passare dai dati ai risultati. L istruzione fondamentale per l elaborazione è l assegnazione che consiste nel calcolo di un espressione e nella scrittura del risultato dentro una variabile. La sua forma è questa: <variabile> = <espressione> Per espressione si intende una combinazione di valori, variabili, operatori (+, -, *, /, %) ed eventuali parentesi (solo le tonde!) conforme alle regole di calcolo.
L elaborazione // Enrico Terrone, 13/9/2008, Programma Rettangolo #include <iostream.h> using namespace std; int main () { int b, h, perim, area; cout << PROGRAMMA: RETTANGOLO ; cout << Inserisci la base del rettangolo: ; cin >> b; cout << Inserisci l altezza del rettangolo: ; cin >> h; area = b*h; perim = 2*b + 2*h; // la moltiplicazione in // informatica va sempre esplicitata } La comunicazione dei risultati Dopo che l elaborazione ha concluso il calcolo dei risultati, occorre che questi vengano comunicati all utente. I risultati possono essere comunicati su video o su file. Per ora noi vediamo solo la comunicazione dei risultati tramite video, per la quale si usa l istruzione cout, con le scritte descrittive fra virgolette e le variabili (contenenti il risultato) senza virgolette.
La comunicazione dei risultati int main () { int b, h, perim, area; cout << Inserisci la base del rettangolo: ; cin >> b; cout << Inserisci l altezza del rettangolo: ; cin >> h; area = b*h; perim = 2*b + 2*h; //nota: la moltiplicazione in // informatica va sempre esplicitata cout << L area e : << area << \n ; cout << Il perimetro e : << perim << \n ; } system ( PAUSE ); In laboratorio In laboratorio i programmi si scrivono usando quello che si chiama un ambiente di sviluppo, cioè un applicazione (noi useremo Dev C++) formata da tre strumenti fondamentali: 1) l editor (una specie di Word specifico per scrivere programmi); 2) il compilatore (che si può attivare dopo aver scritto e salvato il programma usando una voce di menu o un pulsante della barra degli strumenti); 3) il caricatore (loader) che permette di eseguire il programma dopo che la compilazione è andata a buon fine.
In laboratorio Se nel programma ci sono degli errori di scrittura, il compilatore si rifiuta di tradurre il programma in linguaggio macchina e indica gli errori; in tal caso, il programmatore deve ricorreggere gli errori usando queste indicazioni e poi provare a compilare nuovamente. Durante l esecuzione, il programmatore deve fingersi l utente e verificare che il programma funzioni come deve. Esercizi 1) Dato il raggio di un cerchio, calcolare circonferenza e area 2) Dati due numeri, calcolare la loro media 3) Dati tre numeri, calcolare la loro media 4) Dati a e b, risolvere l equazione a*x + b = 0 5) Scrivere un programma che funzioni da calcolatrice (prima solo con la somma, poi con le quattro operazioni intere, poi con il resto, poi con la divisione fra double).