IL PROGRAMMA E LE VARIABILI - Hoepli · vere un dato in una variabile prende il nome di...

8
12 • Programmiamo in Pascal Modulo A Struttura di un programma Pascal Il linguaggio Pascal richiede precise regole di scrittura, sia per quanto riguarda il program- ma, sia per quanto attiene alle singole istruzioni che lo compongono (regole sintattiche). È quindi importante capire come è organizzata la struttura di un programma. program esempio01bis; uses crt; var nome:string; begin clrscr; nome:='Paperino'; writeln('Ciao '); writeln('Sono il primo programma Pascal'); writeln('Scritto da ',nome); end. Tale struttura, come possiamo vedere in figura, si compone di tre parti fondamentali. 1) L’intestazione, che è composta da due parole: program esempio02; dove program è una parola riservata del linguaggio, che indica l’inizio del programma ed è seguita dal nome del programma scelto dal programmatore. 10 9 8 7 6 5 4 3 2 1 0 UNITÀ DIDATTICA 2 IL PROGRAMMA E LE VARIABILI IN QUESTA UNITÀ IMPAREREMO... come memorizzare i dati nelle variabili come effettuare operazioni su di esse

Transcript of IL PROGRAMMA E LE VARIABILI - Hoepli · vere un dato in una variabile prende il nome di...

Page 1: IL PROGRAMMA E LE VARIABILI - Hoepli · vere un dato in una variabile prende il nome di assegnazione e viene scritta nel formato che segue (ha cioè la seguente sintassi): numero1:=23;

12

• Programmiamo in PascalModulo A

■ Struttura di un programma Pascal Il linguaggio Pascal richiede precise regole di scrittura, sia per quanto riguarda il program-ma, sia per quanto attiene alle singole istruzioni che lo compongono (regole sintattiche). È quindi importante capire come è organizzata la struttura di un programma.

program esempio01bis;uses crt;varnome:string;

beginclrscr;nome:='Paperino';writeln('Ciao ');writeln('Sono il primo programma Pascal');writeln('Scritto da ',nome);

end.

Tale struttura, come possiamo vedere in figura, si compone di tre parti fondamentali.

1) L’intestazione, che è composta da due parole: program esempio02; dove programè una parola riservata del linguaggio, che indica l’inizio del programma ed è seguita dalnome del programma scelto dal programmatore.

10

9

8

7

6

5

4

3

2

1

0

UNITÀ DIDATTICA 2

IL PROGRAMMA E LE VARIABILI

IN QUESTA UNITÀ IMPAREREMO...

• come memorizzare i dati nelle variabili • come effettuare operazioni su di esse

Page 2: IL PROGRAMMA E LE VARIABILI - Hoepli · vere un dato in una variabile prende il nome di assegnazione e viene scritta nel formato che segue (ha cioè la seguente sintassi): numero1:=23;

2) La parte dichiarativa, che può essere composta da più righe.Nella prima riga viene indicato, nel caso in cui il programma utilizzi al suo internocomandi contenuti in librerie aggiuntive, il nome di tali librerie, mediante la parola riser-vata uses (crt è la libreria che contiene i comandi per la gestione dello schermo, comead esempio clrscr, abbreviazione di clear screen, “pulisci lo schermo”).Segue quindi la dichiarazione delle variabili che saranno utilizzate nel programma,(vedi paragrafo successivo), definite con la parola riservata var.

3) La terza parte, racchiusa tra begin e end, che è il corpo del programma, dove vengo-no elencate una per una le istruzioni che devono essere eseguite, una per ogni riga, chedevono terminare con ; (punto e virgola).

■ Che cos’è una variabile? Una variabile è un’area della memoria del calcolatore (collocata nella memoria RAM)destinata a contenere un particolare dato; viene distinta dalle altre aree per mezzo di unnome (identificatore) che il programmatore stabilisce in modo univoco.

Per poter utilizzare una variabile bisogna effettuare due operazioni:1) definirne il nome (l’identificatore);2) definirne la natura (il tipo).

Solo successivamente è possibile usarla, cioè assegnarle un valore, leggerlo e modificarlo.

Il Pascal richiede che le variabili siano tutte dichiarate in una apposita sezione, all’iniziodel programma, che prende il nome di var.

Definiamo ad esempio tre variabili destinate a contenere numeri interi:

var // sezione dichiarativa

numero1:integer; // definizione di una variabile

numero2:integer;totale:integer;

Per semplicità, analizziamo la variabile di una singola riga descrivendola nel dettaglio:

numero1 : integer ;

13

Il programma e le variabili • Unità 2

Non è obbligatorio incolonnare in modo particolare le istruzioni, in quanto gli spazibianchi davanti alle istruzioni stesse vengono ignorati dal compilatore: è comunqueuna buona abitudine scrivere programmi ordinati per favorire la leggibilità e la com-prensione del codice (indentazione).

identificatoreoperatore didefinizione

tipo di variabile

fineistruzione

Page 3: IL PROGRAMMA E LE VARIABILI - Hoepli · vere un dato in una variabile prende il nome di assegnazione e viene scritta nel formato che segue (ha cioè la seguente sintassi): numero1:=23;

dove:– numero1 è l’identificatore, cioè il nome del “contenitore”;– integer è la parola riservata che indica il tipo di variabile;– ; è il simbolo di fine istruzione. Il Pascal richiede che necessariamente ogni istruzione

termini con un punto e virgola.

AAsssseeggnnaazziioonnee ddii uunn vvaalloorreeA questo punto inseriamo un valore in ogni variabile: l’istruzione che ci permette di scri-vere un dato in una variabile prende il nome di assegnazione e viene scritta nel formatoche segue (ha cioè la seguente sintassi):

numero1:=23; // assegnazione di un valore a una variabile

L’istruzione viene letta nel seguente modo, da destra verso sinistra: “il numero 23 vieneassegnato alla variabile di nome numero1”.

Il simbolo := è chiamato operatore di assegnazione.

IInniizziiaalliizzzzaazziioonneeUn particolare tipo di assegnazione è l’inizializzazione, che consiste nell’assegnare il valo-re 0 alla variabile, e di solito viene eseguita subito dopo la sua definizione:

numero2:=0; // inizializzazione di una variabile

AAsssseeggnnaazziioonnee ddii uunnaa vvaarriiaabbiilleeA una variabile è anche possibile assegnare il valore che è presente in un’altra variabile:in questo caso, tale dato viene copiato e quindi, al termine dell’operazione, in entrambe levariabili sarà presente lo stesso valore:

numero2:=numero1; // assegnazione di una variabile a un’altra variabile

AAsssseeggnnaazziioonnee ddii uunn’’eesspprreessssiioonneeA una variabile inoltre è possibile assegnare il valore risultante dall’operazione tra due (opiù) numeri (o variabili), come nel successivo esempio:

numero1:=23-17;totale :=numero1+numero2;

14

• Programmiamo in PascalModulo A

Non si possono avere in memoria due aree con lo stesso nome, in quanto non sareb-bero distinguibili tra loro e quindi il calcolatore non saprebbe dove leggere o scrive-re il valore che si vuole memorizzare nella variabile.

Esistono diversi tipi di variabili, destinate a contenere tipologie differenti di dati. Quelle che utilizzerai sono le seguenti:– integer : valori numerici interi compresi tra –32768 e +32767;– real : valori numerici reali compresi tra 2.9 * 10-39… 1.7 * 1038;– char : un singolo carattere dell’alfabeto;– string : una parola o una frase lunga fino a 256 caratteri.

Page 4: IL PROGRAMMA E LE VARIABILI - Hoepli · vere un dato in una variabile prende il nome di assegnazione e viene scritta nel formato che segue (ha cioè la seguente sintassi): numero1:=23;

15

Il programma e le variabili • Unità 2

Calcolo dell’area di un rettangolo

Calcoliamo l’area di un rettangolo conoscendo i lati A e B. Il codice è il seguente:

program area;var

latoA:integer; // dichiarazione delle variabili

latoB:integer;area:integer;

begin // inizializzazione delle variabili

latoA:10;latoB:5;area:=latoA*latoB; // calcolo dell’area

end.

Mandandolo in esecuzione non compare nulla sullo schermo: è quindi necessario inserireuna istruzione di “comunicazione” con l’utente del risultato.Modifichiamo pertanto il codice inserendo la seguente istruzione dopo il calcolo dell’area, inposizione , dove la frase che vogliamo comunicare deve essere compresa tra ' '(apici):

writeln('valore dell'area = ',area);

Compilando e mandando in esecuzione il programma otteniamo una segnalazione di errore,tipo Fatal Syntax Error: il compilatore confonde l’apostrofo con il simbolo di fine frase equindi riconosce solo la prima parte del messaggio, cioè fino a 'valore dell'.

A questa istruzione deve essere aggiunto un comando che “ferma” l’esecuzione del pro-gramma permettendo di vedere il risultato della elaborazione sullo schermo, altrimen-ti, una volta eseguita l’istruzione end, la finestra di colloquio con l’utente viene chiu-sa automaticamente.

Una istruzione adatta a questo scopo (che sarà descritta nella successiva unità didattica) è laseguente:

readln; // resta in attesa della digitazione del tasto Invio

Ora l’esecuzione è corretta e a video compare il seguente risultato:

9

9

9

8

7

6

5

4

3

2

1

0

Esempio 2

Per poter scrivere un apostrofo all’interno di una frase è necessario mettere undoppio apice, come nell’istruzione di seguito riportata:

writeln('valore dell''area = ',area);9

Page 5: IL PROGRAMMA E LE VARIABILI - Hoepli · vere un dato in una variabile prende il nome di assegnazione e viene scritta nel formato che segue (ha cioè la seguente sintassi): numero1:=23;

16

• Programmiamo in PascalModulo A

Apri il file esempio02 nella cartella MODULOA della cartella PASCALdel tuo disco C.

Modifica il programma in modo da ottenere il seguente output:

Confronta la tua soluzione con quella presente nel file esercizio04 nella car-tella MODULOA.

■ Scambiamo il contenuto di due variabili Tra le operazioni che vengono eseguite sulle variabili, una in particolare assume una certaimportanza: questa operazione, detta swap, consiste nell’effettuare lo scambio del conte-nuto tra due variabili.

Scambio del contenuto di due variabili

Date due variabili di nome variab1 e variab2, contenenti due valori numerici diversi,scriviamo un programma che esegue lo scambio dei numeri che tali variabili contengono.

Dobbiamo effettuare lo scambio del contenuto di due variabili. Ad esempio, avendo le due variabili variab1 e variab2 con una situazione come quel-la rappresentata in figura:

5 100

variab1 variab2si vuole ottenere:

100 5

variab1 variab2

spostando cioè il numero 100 al posto del numero 5.

Alla fine delle operazioni, la cella di memoria di nome variab1 conterrà il numero 100,mentre la cella di memoria variab2 dovrà contenere il numero 5.

La soluzione sembra immediata: si copia il contenuto della seconda variabile nella primae quindi si copia il contenuto della prima variabile nella seconda.

Per effettuare la copia eseguiamo due istruzioni di assegnazione:

variab1:=variab2;variab2:=variab1;

Esempio 3

Page 6: IL PROGRAMMA E LE VARIABILI - Hoepli · vere un dato in una variabile prende il nome di assegnazione e viene scritta nel formato che segue (ha cioè la seguente sintassi): numero1:=23;

Di fatto, compiendo tali operazioni, si verifica una situazione indesiderata: in entrambe levariabili, infatti, viene a trovarsi il valore 100, quindi il risultato è errato!Questo accade perché, dopo la prima istruzione, si ottiene la seguente situazione:

100 100

variab1 variab2

Il valore 100 è ora presente in entrambe le variabili: si è perso cioè irrimediabilmente ilvalore 5, che era contenuto nella prima variabile.

Possiamo risolvere il problema ricorrendo a un’analogia “idraulico-gastronomica”.Supponiamo di avere due bicchieri, uno colmo di acqua e uno colmo di vino, e di volernescambiare il contenuto: come procediamo? Non esiste di fatto soluzione, a meno di utilizzare un altro bicchiere in cui versare il con-tenuto di uno dei due per potervi travasare il contenuto dell’altro.

Questa è la strategia che verrà utilizzata anche per scambiare il contenuto delle variabili.

Introduciamo pertanto una terza variabile utilizzata temporaneamente (che prende ilnome di variabile temporanea) per effettuare un’operazione di salvataggio intermedio.

tempo:=variab1;variab1:=variab2;variab2:=tempo;

Il programma completo è il seguente:

program swap;varvariab1,variab2,tempo:integer; // dichiarazione variabili

beginvariab1:=5; // inizializzazione delle variabili

variab2:=100;writeln('la variabile variab1 contiene ',variab1);writeln('la variabile variab2 contiene ',variab2);tempo:=variab1; // scambio del contenuto

variab1:=variab2;variab2:=tempo;writeln('la variabile variab1 contiene ora ',variab1);writeln('la variabile variab2 contiene ora ',variab2);readln;

end.

17

Il programma e le variabili • Unità 2

Con il termine strategia si indica l’idea che porta alla soluzione di un problema e inbase alla quale vengono impostate ed eseguite le singole azioni necessarie per rag-giungere tale scopo.La strategia è il punto centrale del lavoro di programmazione, in quanto consente dirisolvere un problema e, di conseguenza, scrivere il programma.

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Page 7: IL PROGRAMMA E LE VARIABILI - Hoepli · vere un dato in una variabile prende il nome di assegnazione e viene scritta nel formato che segue (ha cioè la seguente sintassi): numero1:=23;

18

• Programmiamo in PascalModulo A

ABBIAMO IMPARATO CHE...

• Il programma Pascal è costituito da tre sezioni: – l’intestazione; – la sezione dichiarativa; – il corpo del programma.

• Nella sezione dichiarativa sono elencate le variabili che verranno utilizzate; il loro identifi-catore (scelto a piacere dal programmatore) è associato a una parola riservata che speci-fica il tipo di dato che sono destinate a contenere (numeri interi, reali ecc.)

• Assegnare un valore a una variabile significa scrivere in essa un valore: questa operazionepuò essere effettuata:– in modo diretto: variabile:=23;– in modo indiretto: variabile1:=variabile2;– mediante una espressione: variabile1:=variabile2+23.

• La soluzione di un problema richiede spesso l’individuazione della strategia risolutiva, cioè“dell’idea” che consente di arrivare alla scrittura dell’algoritmo.

Modifica il programma esempio03 per scambiare tra loro in modo circolare ilcontenuto di 3 variabili.

Confronta la tua soluzione con quella presente nel file esercizio05 nella car-tella MODULOA.

Page 8: IL PROGRAMMA E LE VARIABILI - Hoepli · vere un dato in una variabile prende il nome di assegnazione e viene scritta nel formato che segue (ha cioè la seguente sintassi): numero1:=23;

VERIFICHIAMO LE CONOSCENZEEsercizi a scelta multipla

1. Qual è il numero minimo di variabili tempo-ranee necessarie per scambiare due dati tradi loro?

una tredue dipende dal valore dei dati

2. Quale tra le seguenti assegnazioni è errata?

variab1:=10variab_1:=1010:=variab1variab1:=variab1+1

3. Quando è possibile sottrarre due variabili?

sempre solo se la prima variabile è di tipo integersolo se sono entrambe dello stesso tipo solo se sono entrambe numeriche

4. Qual è il contenuto delle due variabili?

variab1:=10; variab2:=3; variab1:=variab2;variab2:=variab1;

3 103 3 10 1010 3

5. Quali risultati dà questo codice?

variab1:=2; variab1:=variab1+10;

errore 102 12

6. Quale tra le seguenti istruzioni è errata?

variab1:=10

10:=variab1

variab1:=variab1-10

variab1:=10+variab2

7. Quali risultati dà questo codice?

variab1:=0; variab1:=variab1+1; variab1:=variab1+1;variab1:=variab1+1;

0 21 3

8. Qual è il contenuto di variab1?

variab1:='topo'; variab2:='lino';variab1:=variab1+variab2;

errore ‘topo’‘topolino’ ‘lino’db

ca

dbca

dcba

dbca

dcba

dcba

dcba

dbca

19

Il programma e le variabili • Unità 2

VERIFICHIAMO LE COMPETENZEProblemi

1. Data l’area di una circonferenza, calcolane il perimetro.

2. Avendo il saldo del conto corrente in euro, calcolalo in lire e in dollari (in base al valore odierno delcambio).

3. Dati i valori dell’ipotenusa e di un cateto di un triangolo rettangolo, calcola la lunghezza dell’altrocateto, il perimetro e l’area del triangolo.

4. Dati i valori del lato obliquo e dell’altezza di un triangolo isoscele, calcola il perimetro e l’area deltriangolo.

5. Dati 4 valori contenuti in altrettante variabili (nord-est-sud-ovest) effettua, utilizzando una sola varia-bile temporanea, lo scambio incrociato (nord-sud, est-ovest).