Informatica 22/03/2012
Operatori matematici
+ - * / div mod
Div:
divisione tra interi, ottieni un
quoziente intero.
Mod: resto della divisione tra interi
Es.: 7 div 4 = 1
7 mod 4 = 3
Dichiarazione di costanti
(Nella sezione dichiarativa del programma)
Const nomecostante = valore;
Es.: Const
pi=3.14;
risposta=‘si’;
• Le costanti di tipo alfanumerico vanno
chiuse tra apici.
Dichiarazione di variabile
• VAR nomevariabile:tipo;
• Es.: VAR
a:integer;
b:real;
c:char;
nome:string;
cognome:string[30];
Tipi di variabile
• Char: il tipo char è un singolo carattere
alfanumerico.
• String: il tipo string è una serie di caratteri
alfanumerici di lunghezza qualunque tra 1
e 256 elementi.
• String[n]: è una serie di n caratteri
alfanumerici.
I commenti
• Nel programma Pascal potete inserire dei
commenti vostri, degli appunti per
chiarimento al programma.
• I commenti si scrivono tra parentesi graffe.
• Es.: Var eta:integer; {età della persona}
Funzioni matematiche
•
•
•
•
A:=sqr(x);
A:=sqrt(x);
A:=round(x);
A:=trunc(x);
{restituisce il quadrato di x}
{restituisce la radice quadrata di x}
{restituisce l’arrotondamento di x}
{restituisce il troncamento di x}
esempio:
• Sqr(5) = 52=25
• Sqrt(25) = √25 =5
• Round(3,7) = 4
• Trunc(3.7) = 3
Le parentesi
• Con le parentesi si stabilisce quali
operazioni si devono eseguire per prima.
•
•
•
•
•
5+6*2-7
= 5+12-7=10
(5+6)*(2-7)
= 11*(-5)=-55
(5+6)*2-7
= 11*2-7=22-7=15
Sqr(4-2)/(3*1) = 22/3 =4/3 = 1.333
Sqr[(4-2)/(3*1)] = [2/3]2 =4/9 = 0.444
Operatori logici
Informatica.
Matematica.
>
Maggiore
>
<
Minore
<
=
Uguale
=
>=
Maggiore o uguale
≥
<=
Minore o uguale
≤
<>
Diverso
≠
Operatori boleani
•
•
•
•
And
Or
Xor
Not
• Esempio.
• Not (a=b)
• Not (a<b)
entrambi
o l’uno o l’altro o entrambi
o l’uno o l’altro
il contrario (non)
a diverso da b
a>b
Istruzioni di i/o
• Input
readln();
read();
leggi
• Output
writeln();
write();
scrivi
Esempio
Writeln(‘area del cerchio ‘, r * r * 3.14);
Output formattati
• Si impone di quanti caratteri debba essere
l’output.
• Write(numero:n);
voglio solo n cifre
• Write(numero:n:m);
voglio solo n cifre di cui
m decimali
• Write(stringa:n);
voglio solo n caratteri
Program valuta
inizio
Chiedi euro,cambio
leggi euro,cambio
Dollari=euro/cambio
Scrivi dollari
fine
Program valuta;
Var euro,cambio:real;
{dati in input}
dollari:real;
{dati in output}
Begin
write('Inserisci l’’ importo in euro
: ');
readln(euro);
write('Quale e'' il cambio euro/dollaro ? ');
readln(cambio);
dollari:=euro/cambio;
writeln;
writeln('Euro':10, 'Cambio':10,'Dollari':10);
writeln(euro:10:2,cambio:10:3,dollari:10:2);
readln;
End.
Output formattati
0
1
2
3
4
5
6
7
8
9
e
u
r
o
7, 2
0
0
1
2
3
4
5
6
7
8
9
c
a
m b
i
o
1, 3
5
0
Cicli ripetitivi
• Sono strutture che servono a ripetere una
serie di comandi
• Per un certo numero di volte
• Controllato da una condizione
Cicli ripetitivi
• Il controllo della condizione si può mettere
alla fine delle istruzioni (controllo
postcondizionale)
• Oppure all’inizio (controllo
precondizionale)
Cicli ripetitivi
• Ripetizione con controllo finale (finchè)
• Repeat
– istruzione 1
– istruzione n
• Until (cond)
• Ripetizione con controllo iniziale (mentre)
• While (cond) do
• Begin
– Istruzione 1
– Istruzione n
• end
Confronto tre le strutture di
ripetizione
Controllo
dopo
Esce se
falsa
istruzioni
condizione
Vero
Falso
condizione
Esce se
vera
istruzioni
Controllo prima
Vero
Ripetizione finchè
Repeat
Until (cond)
Ripetizione mentre
While (cond) do
Begin
end
Falso
Ripetizione postcondizionale
Pseudolinguaggio
Pascal
• Esegui
• Repeat
– Istruzione 1
– …..
– Istruzione n
• Fino a che (condizione)
– Istruzione 1
– …..
– Istruzione n
• Until (condizione)
Ripetizione postcondizionale
esempio Pascal
Repeat
Write(inserisci mese);
Readln(mese)
Until (mese>0) and (mese<13);
Ripete la richiesta di un mese finché il numero inserito è tra 1 e 12.
Controlla cioè che non si sia inserito 400 perché in quel caso ripete la
richiesta.
Program mese;
Var mese: integer;
Begin
inizio
Controllo
dopo
o: mese?
Repeat
Writeln(‘inserisci mese’);
Readln(mese)
Until (mese<13) and (mese>0);
Readln;
End.
i: mese
Falso
Esce se
vera
Mese>0
Mese<13
Vero
fine
inizio
M=random(10)
Chiedi carta
Indovina la carta
Leggi carta
i=i+1
Falso
Carta=M
?
Vero
Indovinato in
i tentativi
fine
Program indovinacarta;
{ uso del contatore}
Var n,m,i: integer;
Begin
i:=0;
Randomize;
m:=1+random(9);
{inizializzazione del contatore}
{sceglie numero a caso tra 1 e 10}
Repeat
i:=i+1;
{incremento del contatore}
Write('Quale carta ho scelto tra 1 e 10 ? ');
Readln(n)
Until (m=n);
Writeln('Hai indovinato con ', i,' tentativi !!!');
Readln;
End.
{controllo del contatore}
Player A inserisce un numero,
Player B lo deve indovinare !
inizio
Player A
chiedi N 1..10
Player B
chiedi M 1..10
Leggi N
Leggi M
N >0
N <11
M=N
Falso
Vero
fine
Program indovina; {il giocatore A inserisce un numero, B lo indovina}
uses crt;
{ gestisce lo schermo}
Var n,m: integer;
Begin
Repeat
Write('Giocatore A, inserisci numero tra 1 a 10 : ');
Readln(n)
Until (n<11) and (n>0);
Clrscr;
Writeln;
{ciclo di controllo}
{dell’input}
{ pulisce lo schermo}
{riga vuota}
Repeat
Write('Giocatore B, indovina il numero : ');
Readln(m)
Until (m=n);
Writeln;
Writeln(‘ Hai indovinato !!!!!!!!!!!!!!!!! ');
Readln;
End.
{ciclo di verifica dell’input}
{uscita dai cicli }
Esercizio
• Aggiungete un contatore al precedente
esercizio con cui CONTARE il numero di
tentativi fatti dal giocatore 2.
Program indovina; {il giocatore A inserisce un numero, il giocatore B lo indovina}
uses crt;
{ gestisce lo schermo}
Var n,m,i: integer;
Begin
Repeat
Write('Giocatore A, inserisci numero tra 1 a 10 : '); {ciclo di controllo}
Readln(n)
{dell’input}
Until (n<11) and (n>0);
clrscr;
{ pulisce lo schermo}
Writeln;
{lascia una riga vuota a video}
i:=0;
Writeln('Giocatore B, indovina il numero '); writeln;
Repeat
i:=i+1;
Write(i, ' ^ tentativo : ');
Readln(m)
Until (m=n);
{ciclo di verifica dell’input}
Writeln; Writeln(' Hai indovinato in ',i,' tentativi ');
Readln;
End.
{uscita dai cicli }
Esercizio
• Fate una variante del gioco : si indovina il
mese dell’anno in cui si è nati!
Program indovina2;
uses crt;
{ uso del contatore}
{ gestisce lo schermo}
Var n,m,i: integer;
Begin
i:=0;
{inizializzazione del contatore}
Repeat
Write(‘ Inserisci un mese (numero tra 1 e 12 ) : ');
Readln(m)
Until (m<13) and (m>0);
clrscr;
{ pulisce lo schermo}
Writeln;
Repeat
i:=i+1;
{incremento del contatore}
Write(‘ Indovina un un mese (numero tra 1 e 12) : ');
Readln(n)
Until (m=n);
Writeln;
Writeln(‘ Hai indovinato con ', i, ' tentativi !!! '); {controllo del contatore}
Readln;
End.
Player A inserisce un numero.
Player B indovina il numero.
inizio
Quante persone?
Leggi p
Tot=0; i=p
Chiedi età
Leggi età
Tot=Tot+età; i=i-1
i=0
Tot=Tot/p
Età media = Tot
fine
Media dell’età
Program mediaeta;
Var p,i: integer;
tot,eta:real;
Begin
Writeln(‘ Calcolo dell'' eta'' media ');
Write(‘ Quante persone sono? ');
Readln(p);
tot:=0;
{azzeramento del totalizzatore}
i:=p;
{inizializzazione del contatore}
Repeat
Write( 'inserisci eta'' : ');
Readln(eta);
i:=i-1;
{decremento del contatore}
tot:=tot+eta
Until (i=0);
tot:=tot/p;
{calcolo della media}
Writeln(‘ L'' eta'' media delle ', p, ' persone e'' : ', tot:5:2);
Readln;
End.
Età media di n persone.
Scarica

Strutture ripetitive in Pascal