Post on 01-May-2015
transcript
PROGRAMMAREIN PASCAL
(le basi)
LS. Tron 2006/07
3TC(ottobre/novembre 2006)
Struttura di un programma Pascal
• PROGRAM nome;
• VAR nome_variabile:TIPO;
• BEGIN
• istruzione;
• istruzione;
• END.
Variabili
• Tipi: alfanumerici (STRING)
• numerici (INTEGER o REAL)
• Operatori aritmetici (per i numerici)
• +, - * (per tutti)
• / per REAL
• DIV per INTEGER (e MOD per il RESTO)
ISTRUZIONI
• OPERATIVE:1. WriteLn(OUTPUT)2. ReadLn(INPUT)3. ASSEGNAZIONE:
Variabile1 := CostanteVariabile2Espressione
NB E’ la Variabile1 che ASSUME il valore assegnato
Le condizioni
• Sono enunciati che possono essere VERI o FALSI
• Possono assumere la forma(Se) <variabile> operatore logico <costante>|<variabile>|<espressione>
• Operatore logico: =, < >, >, >=, <, <=es. A >5 B<=C ….
Le condizioni (Composte)
• Si tratta di due o più condizioni concatenate tramite gli operatori AND, OR
• Valgono le TABELLE di VERITA’:
C1 C2 AND OR
V V V V
V F F V
F V F V
F F F F
Test Olimpiadi informatica 2006
• Quale dei seguenti valori di a e b produce il valore vero per la condizione:(a>0) AND ((b<0) OR (b>1))
• Risposte:a) a=5; b=0b) a=5; b=2;c) a=-1; b=5;d) a=1; b=1
Test Olimpiadi informatica 2006
• Quale dei seguenti valori di a e b produce il valore vero per la condizione:(a>0) AND ((b<0) OR (b>1))
• Soluzione: ba) a=5; b=0b) a=5; b=2;c) a=-1; b=5;d) a=1; b=1
ISTRUZIONI DI CONTROLLO
• A due rami(SE … ALLORA….ALTRIMENTI)IF <condizione>
THEN istruzione1ELSE istruzione2;
• A un ramo solo (SE…ALLORA)IF <condizione>
THEN istruzione1;
IF con istruzione composta (più di una istruzione)
• IF <condizione>THEN
BEGINistruzione1;istruzione2;
ENDELSE
BEGINistruzione3;istruzione4;
END;
CICLO FOR (Ripetizione di una o più istruzioni per N volte)
• FOR i:= 1 TO N DO
istruzione;
• FOR i:= 1 TO N DO
BEGIN
istruzione1;istruzione2;
END;
CONTATORI (“automatici”)• I (nel ciclo FOR) è una variabile di tipo contatore;
parte dal valore iniziale (di solito 1, ma può essere anche una variabile) e viene incrementata automaticamente (di solito con passo 1) fino a raggiungere via via il valore finale N: 1,2,3,4,…..NEsempi:
1. FOR i:= 1 TO 100 DO …2. FOR i:=1 TO N DO…3. FOR i:=K TO N DO ….
Esercizi• Es. 1
Visualizzare i numeri interi da 1 a 100• Es. 2 • Visualizzare i numeri interi compresi tra 200 e 300• Es. 3
Visualizzare i numeri pari compresi tra 1 e 100• Es. 4
Visualizzare i numeri dispari compresi tra 200 e 300
CONTATORI
• In altri e numerosi casi è necessario utilizzare una variabile di tipo contatore, ma bisogna inizializzarla a 0 da programma
e poi incrementarle manualmente di 1(ad es. quando si verifica una certa condizione)
es. Conta_si := Conta_si + 1;
Esercizi
• Far inserire all’utente 10 numeriContare i numeri pari inseriti (dire quanti sono)
• Chiedere ai componenti di una classe se sono fumatori o meno.Visualizzare il numero totale dei fumatori e la percentuale sul totale della classe
NUMERI RANDOM
• RANDOMIZE (“rimescola l’urna”)
• X:=RANDOM(N)+1;NB: la funzione RANDOM(N) genera un numero casuale compreso tra 0 e N-1.
Aggiungendo 1 si ottiene un numero compreso tra 1 e N
Esercizi
• Simulare il lancio di un dado
• Simulare il lancio di un dado per 10 volte e contare quante volte è uscito il numero 3.
• Generare 10 numeri compresi tra 1 e 100 e contare i numeri dispari
• Estrarre due persone da interrogare all’interno della classe 3TC
I cicli con condizione
• REPEAT
……
UNTIL <condizione>;
• WHILE <condizione> DO …….;
Esercizio
• Generare i primi 50 numeri naturali:
- Con un ciclo FOR
- Con un ciclo REPEAT … UNTIL
- Con un ciclo WHILE …DO
Esercizio
• Far generare al computer un numero random tra 1 e 100;
• Farlo indovinare all’utente, che verrà guidato da una serie di “avvertimenti” (es. “no, il numero è più alto/basso”), comunicando infine anche il numero di tentativi effettuati prima di indovinarlo
Le stringhe(da fare: non ci saranno nel compito)
• Var nome:STRING; n:INTEGER;
• E’ possibile stabilirne la lunghezza tramite la funzione LENGTHes. n:=LENGTH(nome)se nome contiene ‘Ugo”, n conterrà 3
• Le stringhe sono in realtà ARRAY of CHAR, per cui è possibile isolarne un singolo carattere nome[2], nell’esempio precedente conterrà ‘g’; è anche possibile usare una variabile: nome[i], ad es. all’interno di un ciclo FOR
Estrarre caratteri e formare parole casuali
• CHR ….
• Indovinare codici segreti …
Esercizi
• Data in input una stringa, dire
- di quanti caratteri è composta;
- Dire quante vocali/consonanti contiene;
- Visualizzarla al contrario(es. casa asac)