Informatica 22/03/2012. Operatori matematici + - * / div mod Div: divisione tra interi, ottieni un...

Post on 01-May-2015

221 views 0 download

Transcript of Informatica 22/03/2012. Operatori matematici + - * / div mod Div: divisione tra interi, ottieni un...

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); {restituisce il quadrato di x}

• A:=sqrt(x); {restituisce la radice quadrata di x}

• A:=round(x); {restituisce l’arrotondamento di x}

• A:=trunc(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 entrambi• Or o l’uno o l’altro o entrambi• Xor o l’uno o l’altro• Not il contrario (non)

• Esempio.• Not (a=b) a diverso da b• Not (a<b) a>b

Istruzioni di i/o

• Input readln(); leggi read();

• Output writeln(); scrivi write();

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 valutainizio

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 0 1 2 3 4 5 6 7 8 9

e u r o c a m b i o

7, 2 0 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

condizione

istruzionicondizione

istruzioni

Ripetizione finchèRepeat Until (cond)

Ripetizione mentreWhile (cond) doBegin

end

Esce se vera

Esce se falsa

Falso

Vero

Falso

Vero

Controllo dopo

Controllo prima

Ripetizione postcondizionale

Pseudolinguaggio

• Esegui – Istruzione 1– …..– Istruzione n

• Fino a che (condizione)

Pascal

• Repeat – 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

Repeat Writeln(‘inserisci mese’); Readln(mese)Until (mese<13) and (mese>0);

Readln;End.

Mese>0Mese<13

Esce se vera

Falso

Vero

Controllo dopo

inizio

fine

o: mese?

i: mese

Indovina la carta

Carta=M?

Falso

Vero

inizio

fine

Chiedi carta

Leggi carta

Indovinato in i tentativi

M=random(10)

i=i+1

Program indovinacarta; { uso del contatore}

Var n,m,i: integer;

Begini:=0; {inizializzazione del contatore}Randomize;m:=1+random(9); {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 !!!'); {controllo del contatore}Readln;End.

Player A inserisce un numero, Player B lo deve indovinare !

N >0N <11

Falso

Vero

inizio

fine

Player Achiedi N 1..10

Leggi N

M = N

Player Bchiedi M 1..10

Leggi M

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 : '); {ciclo di controllo} Readln(n) {dell’input}Until (n<11) and (n>0);

Clrscr; { pulisce lo schermo}Writeln; {riga vuota}

Repeat Write('Giocatore B, indovina il numero : '); {ciclo di verifica dell’input} Readln(m)Until (m=n);

Writeln;Writeln(‘ Hai indovinato !!!!!!!!!!!!!!!!! '); {uscita dai cicli }Readln;End.

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;

BeginRepeat 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 : '); {ciclo di verifica dell’input} Readln(m)Until (m=n);

Writeln; Writeln(' Hai indovinato in ',i,' tentativi '); {uscita dai cicli }Readln;End.

Esercizio

• Fate una variante del gioco : si indovina il mese dell’anno in cui si è nati!

Program indovina2; { uso del contatore}uses crt; { gestisce lo schermo}

Var n,m,i: integer;

Begini:=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.

Media dell’età

i=0

inizio

fine

Chiedi età

Leggi età

Età media = Tot

Tot=Tot+età; i=i-1

Quante persone?

Leggi p

Tot=0; i=p

Tot=Tot/p

Program mediaeta; Var p,i: integer; tot,eta:real;

BeginWriteln(‘ 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+etaUntil (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.