PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

23
PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

Transcript of PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

Page 1: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

PROGRAMMAREIN PASCAL

(le basi)

LS. Tron 2006/07

3TC(ottobre/novembre 2006)

Page 2: PROGRAMMARE IN 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.

Page 3: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

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)

Page 4: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

ISTRUZIONI

• OPERATIVE:1. WriteLn(OUTPUT)2. ReadLn(INPUT)3. ASSEGNAZIONE:

Variabile1 := CostanteVariabile2Espressione

NB E’ la Variabile1 che ASSUME il valore assegnato

Page 5: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

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 ….

Page 6: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

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

Page 7: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

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

Page 8: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

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

Page 9: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

ISTRUZIONI DI CONTROLLO

• A due rami(SE … ALLORA….ALTRIMENTI)IF <condizione>

THEN istruzione1ELSE istruzione2;

• A un ramo solo (SE…ALLORA)IF <condizione>

THEN istruzione1;

Page 10: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

IF con istruzione composta (più di una istruzione)

• IF <condizione>THEN

BEGINistruzione1;istruzione2;

ENDELSE

BEGINistruzione3;istruzione4;

END;

Page 11: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

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;

Page 12: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

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 ….

Page 13: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

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

Page 14: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

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;

Page 15: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

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

Page 16: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

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

Page 17: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

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

Page 18: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

I cicli con condizione

• REPEAT

……

UNTIL <condizione>;

• WHILE <condizione> DO …….;

Page 19: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

Esercizio

• Generare i primi 50 numeri naturali:

- Con un ciclo FOR

- Con un ciclo REPEAT … UNTIL

- Con un ciclo WHILE …DO

Page 20: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

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

Page 21: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

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

Page 22: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

Estrarre caratteri e formare parole casuali

• CHR ….

• Indovinare codici segreti …

Page 23: PROGRAMMARE IN PASCAL (le basi) LS. Tron 2006/07 3TC (ottobre/novembre 2006)

Esercizi

• Data in input una stringa, dire

- di quanti caratteri è composta;

- Dire quante vocali/consonanti contiene;

- Visualizzarla al contrario(es. casa asac)