350 likes | 476 Views
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)
E N D
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) Constnomecostante = 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. > < = >= <= <> Maggiore Minore Uguale Maggiore o uguale Minore o uguale Diverso Matematica. > < = ≥ ≤ ≠
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 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.
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
condizione istruzioni istruzioni condizione Confronto tre le strutture di ripetizione Controllo dopo Esce se falsa Falso Vero Falso Vero Esce se vera Controllo prima • Ripetizione mentre • While (cond) do • Begin • end • Ripetizione finchè • Repeat • Until(cond)
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. inizio Controllo dopo o: mese? i: mese Falso Vero Mese>0 Mese<13 Esce se vera fine
Indovina la carta inizio M=random(10) Chiedi carta Leggi carta i=i+1 Falso Vero Carta=M ? Indovinato in i tentativi fine
Program indovinacarta; { uso del contatore} Var n,m,i: integer; Begin i:=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 ! inizio Player B chiedi M 1..10 Player A chiedi N 1..10 Leggi N Leggi M Falso Vero M = N N >0 N <11 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 : '); {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 giocatore2.
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 : '); {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; 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.
inizio Media dell’età 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
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.