Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 1
Struttura di un programma
Un programma è tipicamente strutturato nel seguente modo:
Intestazione
Sezione dichiarativa Corpo del programma
Intestazione: identificativo del programma Sezione dichiarativa: riporta tutte le informazioni , nomi di variabili e tipi, che saranno usate nel programma
Corpo del programma: sequenza delle istruzioni formanti il programma
…. regole lessicali e sintattiche
un insieme di parole chiavi, regole per costruire nuovi nomi, regole per costruire le frasi
• frasi per indicare tipi e nomi delle informazioni (variabili)
• frasi per poter assegnare/modificare valori alle variabili – operazioni di ingresso
– calcolo ed assegnazione
• frasi per operazioni di uscita
• frasi per la definizione istruzioni
… un ipotetico linguaggio di programmazione generico e generale ...
… Linguaggio generico di Definizione dei Programmi (LDP)...
Un Linguaggio per la Definizione di Programmi
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 3
Struttura di un programma
… con riferimento ad un generico LDP ...
Program <nome programma>;
// sezione dichiarativa
<nome tipo> <lista nomi_variabili>
begin
<corpo del programma>
end.
In grassetto le parole/simboli chiavi (lessico) del linguaggio Tra < … > ciò che definisce il programmatore
// indicano un commento: una frase non eseguibile per l’elaboratore ma utile al programmatore
Tipi definiti dal linguaggio LDP
i tipi atomici (primitivi)
INTERO INT
REALE FLOAT
CARATTERE CHAR
LOGICO BOOL
Nomi delle variabili
devono iniziare con un carattere alfabetico, possono avere una lunghezza qualsiasi, non possono contenere il carattere <spazio>, non possono contenere i simboli degli operatori aritmetici
Non possono essere uguali a parole chiavi del linguaggio
deve essere indicato il nome ed il tipo di ogni variabile (dichiarazione della variabile) <nome tipo> <lista variabili>;
Es.
FLOAT area_quadrato, lato_quadrato;
INT n.ro_studenti, ore_lezioni;
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 5
• istruzioni di ingresso
• istruzioni di uscita
• istruzioni di calcolo ed assegnazione
in quasi tutti i linguaggi alle istruzioni di ingresso ed uscita corrisponde una azione elaborativa realizzata attraverso predefinite unità di programma
Istruzioni Semplici
Permettono di assegnare (definire) il valore di una o più informazioni (variabili) attraverso una unità di ingresso
prevedono:
• specificazione dell’unità di ingresso coinvolta
• indicazione degli attributi delle informazioni (nomi di variabili) cui assegnare il valore letto dalla unità di ingersso
• definizione del formato dei dati in ingresso, ovvero loro rappresentazione in base al tipo
nella loro forma più semplice:
• unità di ingresso non indicata e considerata quella standard (“default”)
(tipicamente la tastiera)
• formato dei dati non indicato ed individuato per “default”
(tipicamente il formato dei dati coincide con la rappresentazione prevista per le costanti del tipo di dato … )
Istruzioni di ingresso (input)
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 7
Hanno un formato del tipo:
read ([<unità ingresso>], [<formato>] <variabile>, …, [<formato>] <variabile>);
le […] indicano un qualcosa di opzionale
se [<unità ingresso>] non è indicata si assume l’unità di default (la tastiera) [<formato>] indica il formato secondo cui il valore è rappresentato (in base al tipo)
<variabile> indica il nome della variabile cui assegnare il valore letto da unità ingresso
Istruzioni di ingresso (input)
%f <==> formato per numero reale
%d <==> formato per numero intero
Es:
read (“%f” base_triangolo, “%f” altezza_triangolo);
read (“%d” numero_pagine, “%f” prezzo_libro);
… quando è incontrata l’istruzione read, l’esecuzione del programma si interrompe fin quando non sono immessi i valori dei dati di input
Istruzioni di ingresso (input)
Es:
read (“%d” base_triangolo);
_ L’utente digita 35
35
Il valore 35 è assegnato alla variabile specificata ... base_triangolo = 35
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 9
permettono di trasferire i valori definiti da espressioni (variabili, costanti) sui supporti di una unità di uscita (schermo del video, foglio stampante etc.)
prevedono:
• individuazione dell’unità di uscita coinvolta
• indicazione delle espressioni (informazioni) coinvolte
• definizione del formato dei dati in uscita nella loro forma più semplice:
• l’unità di uscita è individuata per “default”
(tipicamente il video)
• il formato è individuato per “default”
(tipicamente il formato dei dati coincide con la rappresentazione prevista per le costanti del tipo delle espressioni)
Istruzioni di uscita (output)
Hanno un formato del tipo:
write ([<unità uscita>], [<formato>] <espressione>, ... , [<formato>] <espressione>);
se [<unità uscita >] non è indicata si assume l’unità di default
<espressione> può essere: una variabile, una costante, una espressione
Istruzioni di uscita (output)
%c <==> formato per carattere
Es:
write (“%f” area_quadrato, “%f” lato_quadrato);
write (“%d” numero_pagine, “%f” prezzo_libro);
write (“%d” numero_pagine*300, “%f” prezzo+IVA, “%d” 900, “%c” ‘B’);
… l’esecuzione dell’istruzione write, ha come effetto quello di visualizzare sull’unità di output indicata i valori di <espressione>
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 11
Istruzioni di output (output)
Es:
write (“%d” numero_pagine, “%f” prezzo_libro);
Se numero_pagine = 35 e prezzo_libro = 27, 80
35 27.80
read ([<unità ingresso>], [<formato>] <variabile>, …, [<formato>] <variabile>);
Istruzioni di ingresso/uscita (input/output)
read (“%f” area_quadrato, “%f” lato_quadrato);
read (“%d” numero_pagine, “%f” prezzo_libro);
… all’istruzione read, l’esecuzione del programma si interrompe fin quando non sono immessi i valori dei dati di input …
write ([<unità uscita>], [<formato>] <espressione>, ... , [<formato>] <espressione>);
write (“%f” area_quadrato, “%f” lato_quadrato);
write (“%d” numero_pagine, “%f” prezzo_libro);
write (“%d” numero_pagine*300, “%f” prezzo+IVA, “%d” 900, “%c” ‘B’, “CIAO”);
... se numero_pagine = 20 prezzo = 1000,00 IVA = 220,00 ... sullo schermo viene visualizzato:
6000 1220,00 900 B CIAO
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 13
permettono di calcolare il valore di una espressione ed assegnarlo ad una informazione informazione ed espressione devono essere dello stesso tipo
l’istruzione richiede:
• indicazione del nome della variabile che deve ricevere il valore
• operatore di assegnazione (=)
• definizione della espressione che calcola il valore da assegnare alla variabile Hanno la forma:
<nome variabile> = <espressione>;
<espressione> può essere: una variabile, una costante, una espressione Esempio:
x = w + a * (y + 2);
y = 3;
Istruzioni di Calcolo ed Assegnazione
Un primo programma di esempio
Dato un numero intero in input, calcolare e visualizzarne il doppio Definizione della specifica del programma
Calcolare il doppio di un valore di un numero di tipo intero letto in input e visualizzare il risultato di tale calcolo
Definizione dei dati del problema:
I: un numero intero Pi: nessuna
U: doppio del valore in input
Pu: nessuna
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 15
Un primo programma di esempio
Nome variabile Descrizione Tipo
Doppio valore doppio di quello di input Intero Tabella delle informazioni di ingresso
Tabella delle informazioni di uscita
Nome variabile Descrizione Tipo
numero numero di cui calcolare il doppio Intero
Un primo programma di esempio Descrizione dell’ algoritmo :
• Leggi il valore di numero
• Calcola Doppio = numero * 2;
• visualizza il valore di Doppio.
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 17
Un primo programma di esempio
Program primo;
// legge in input il valore di una variabile di tipo intero e ne visualizza il suo doppio
INT numero, Doppio;
begin
read (“%d” numero);
Doppio = numero * 2;
write (“Numero = “, “%d” numero, “doppio= “, “%d” Doppio);
end.
intestazione commento
Dichiarazioni variabili
Operazione input
Operazione output Dato un numero intero, visualizzarne il doppio
Operazione assegnazione e calcolo
Un primo programma di esempio
Program primo;
// legge in input il valore di una variabile di tipo intero e ne visualizza il suo doppio
INT numero, Doppio;
begin
read (“%d” numero);
Doppio = numero * 2;
write (“Numero = “, “%d” numero,
“doppio= “, “ %d” Doppio);
end.
l’utente digita 4 numero= 4
4
Numero = 4 doppio = 8 Cosa accadrà quando sarà eseguito … dal punto di vista dell’utente
… però all’inizio l’utente può non sapere cosa fare …
Doppio= 8
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 19
Un primo programma di esempio
Program primo;
// legge in input il valore di una variabile di tipo intero e ne visualizza il suo doppio
INT numero, Doppio;
begin
write (“Immetti numero intero:”);
read (“%d” numero);
Doppio = numero * 2;
write (“Numero = “, “%d” numero,
“doppio= “, “%d” Doppio);
end.
l’utente digita 4 numero= 4
4
Numero = 4 doppio = 8
… un miglioramento …
Immetti numero intero:
Doppio= 8
Esempio
Definizione della specifica del programma
Calcolare il volume, in dm
3, di un parallelepipedo di cui è nota la lunghezza dei lati
Definizione dei dati del problema:
I: I lati del parallelepipedo
Pi: I lati devono avere lunghezze maggiori di zero U: Volume del parallelepipedo
Pu: il volume è maggiore di zero
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 21
Esempio
Nome variabile Descrizione Tipo
Volume Volume del parallelepipedo Reale Tabella delle informazioni di ingresso
Tabella delle informazioni di uscita
Nome variabile Descrizione Tipo
LBase Lunghezza base parallelepipedo Reale ABase Altezza base parallelepipedo Reale H Altezza del parallelepipedo Reale
Esempio
Nome variabile Descrizione Tipo
Area_Base area di base del parallelepipedo Reale Tabella delle informazioni di algoritmo
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 23
Esempio
Definizione dell’ algoritmo:
• Leggi il valore in dm da assegnare a Lbase
• Leggi il valore in dm da assegnare a Abase
• Leggi il valore in dm da assegnare a H
• Calcola Area_Base = LBase * ABase;
• calcola Volume = Area_Base * H;
• visualizza il valore di Volume.
... Senza considerare la verifica delle precondizioni ...
Il programma di esempio
Program volume_parallelepipedo;
FLOAT LBase, ABase, H, Volume, Area_Base;
begin
write (“immetti valore della lunghezza di base (in dm)”);
read (“%f” LBase);
write (“immetti valore della altezza di base (in dm)”);
read (“%f” ABase);
write (“immetti valore della altezza del parallelepipedo (in dm)”);
read (“%f” H);
Area_Base = LBase* ABase;
Volume=Area_Base*H;
write (“Volume= “, “%f” Volume);
end.
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 25
Esempio Problema:
Calcolare quanti ettolitri di vino può contenere un tino di forma cilindrica, di cui si conoscono il diametro e la altezza.
Esempio
Definizione della specifica del programma
Calcolare il volume, in dm
3, di un cilindro di cui è nota l’altezza ed il diametro della base. Dividere per 100 il volume per avere la capacità in ettolitri del tino
Definizione dei dati del problema:
I: Diametro della base, altezza
Pi: Diametro ed altezza devono avere lunghezze maggiori di zero
U: Capacità del tino in ettolitri
Pu: la capacità è maggiore di zero
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 27
Esempio
Nome variabile Descrizione Tipo
Capacità Capacità del tino (ettolitri) Reale Tabella delle informazioni di ingresso
Tabella delle informazioni di uscita
Nome variabile Descrizione Tipo
Diametro Lunghezza diametro base cilindro Reale Altezza Altezza cilindro Reale
Tabella delle informazioni di Algoritmo
Nome variabile Descrizione Tipo
Volume Volume cilindro Reale
Area_Base area di base del cilindro Reale
Esempio
Precondizioni informazioni di ingresso (Diametro > 0) , (Altezza > 0) Postcondizioni informazioni di uscita:
Capacità > 0 Modello della soluzione:
Volume = Area_Base * Altezza Capacità = Volume/100
con Area_Base = (Diametro/2)2 * 3,14
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 29
Esempio Definizione dell’algoritmo :
• Leggi il valore in dm da assegnare a Diametro;
• Leggi il valore in dm da assegnare ad Altezza;
• verifica che Diametro ed Altezza maggiori di 0, altrimenti ripetere la lettura di tali valori;
• Calcola Area_Base = (Diametro/2)
2* 3,14;
• Calcola Volume = Area_Base * Altezza;
• Calcola Capacità = Volume/100;
• visualizza il valore di Capacità.
Il programma di esempio
Program capacita_tino;
FLOAT Diametro, Volume, Area_Base, Altezza, Capacita;
begin
write (“immetti valore della lunghezza del diametro (in dm)”);
read (“%f” Diametro);
write (“immetti valore della altezza del cilindro (in dm)”);
read (“%f” Altezza);
Area_Base = (Diametro/2)2 * 3,14;
Volume=Area_Base*Altezza;
Capacita = Volume/100;
write (“Capacità tino ettolitri “, “%f” Capacita);
end.
... Senza, per ora, considerare la verifica delle precondizioni ...
Elementi di Informatica
Prof. G. A. Di Lucca - Univ. del Sannio 31
Il programma di esempio del calcolo del volume di un parallelepipedo in C
#include<stdio.h>
main ( )
{ // calcola il volume di un parallelepipedo float LBase, ABase, H, Area_Base, Volume;
printf ("immetti valore della lunghezza di base \n");
scanf ("%f" , &LBase);
printf("immetti valore altezza di base \n");
scanf("%f" , &ABase);
printf("immetti valore altezza parallelepipedo\n");
scanf("%f" , &H);
Area_Base = LBase* ABase;
Volume=Area_Base*H;
printf ("Volume= %f \n",Volume);
}
... E volendo considerare la verifica delle precondizioni ??
... Senza considerare la verifica delle precondizioni ...
Programma Esempio: volume parallelepipedo
... considerando anche le precondizioni
Descrizione del metodo di elaborazione:
• sono letti i valori, in dm, dei lati LBase, ABase, H;
• Si verifica che LBase, ABase ed H siano tutti maggiori di 0 per poter continuare con le istruzioni successive, altrimenti si ripete la lettura di tali valori;
• Si calcola l’area di base: Area_Base = LBase * ABase;
• Si calcola il Volume = Area_Base * H;
• Si visualizza il valore del Volume calcolato.
... necessità di altri tipi di istruzioni per poter verificare condizioni ed eventi che determinano differenti possibili sequenze di esecuzioni ...