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; 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: WriteLn(OUTPUT) ReadLn(INPUT) ASSEGNAZIONE: Variabile1 := Costante Variabile2 Espressione 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 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=0 b) 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: b a) a=5; b=0 b) 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 istruzione1 ELSE istruzione2; A un ramo solo (SE…ALLORA) IF <condizione> THEN istruzione1;
IF con istruzione composta (più di una istruzione) IF <condizione> THEN BEGIN istruzione1; istruzione2; END ELSE BEGIN istruzione3; istruzione4; END;
CICLO FOR (Ripetizione di una o più istruzioni per N volte) FOR i:= 1 TO N DO istruzione; 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,…..N Esempi: FOR i:= 1 TO 100 DO … FOR i:=1 TO N DO… 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 numeri Contare 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 LENGTH es. 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)