Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoGregorio Piazza Modificato 7 anni fa
1
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Il linguaggio PASCAL Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
2
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Introduzione Il Pascal prende il suo nome dal matematico francese Blaise Pascal che fu il primo ad ideare una macchina calcolatrice: la Pascalina. Questo linguaggio, però fu messo a punto nel 1960 da Niklaus Wirth, docente all' università di Zurigo. Una volta avviato il TurboPascal si presenterà un' interfaccia a menu abbastanza intuitiva. Compariranno vari menu, ma quelli principali sono tre: File, Edit, Program. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
3
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Introduzione Il primo (FILE) è formato da New, per crere un nuovo documento di lavoro; Open, per aprire lavori già salvati; Save, registra un lavoro che abbiamo già creato, Save As… assegna un nome al programma da salvare. N.b. l’estensione del file viene inserita in automatico dal programma (PP). Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
4
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Introduzione Nel menu (Program) il comando Compile, compila il programma (lo trasforma in linguaggio macchina), mentre il comando Run ci permette di eseguirlo. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
5
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Struttura Un programma scritto in TP consta in tre sezioni principali: sezione intestazione, sezione dichiarazioni e sezione esecutiva. Nella prima sezione si inserisce il nome del programma, nella seconda sezione vengono digitate le variabili e la loro tipologia, ed infine viene scritto il programma vero e proprio. Esistono delle parole, dette riservate, a cui non può essere dato il valore di variabile, esse infatti rappresentano dei comandi che il TP può eseguire. Esempio: una variabile non può chiamarsi PROGRAM, BEGIN, END, WRITE, ecc. in quanto sono parole riservate del linguaggio Pascal. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
6
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Esempio Ora cominceremo con l' abbozzo di un programmino semplice semplice: sommare due numeri. Apriamo l’editor del Pascal (trovare il programma nella cartella chiamata WFP; aprite la relativa applicazione e digitiamo le seguenti istruzioni (programma per calcolare la somma tra due numeri). Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
7
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Esempio Al termine lo salviamo dal comando FILE SAVE AS… col nome SOMMA Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
8
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Esempio Compiliamo il nostro programma dal menu PROGRAM COMPILE Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
9
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Esempio Ed infine lanciamo l nostro programma PROGRAM RUN Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
10
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - i Comandi Nella parte dichiarativa abbiamo comunicato all'elaboratore che n è una variabile (VAR) che nel corso dell'esecuzione potrà avere soltanto un valore INTEGER, cioè di numero intero positivo o negativo. Esaminando successivamente il listato vedremo che la parte esecutiva è introdotta da BEGIN ( = inizio). Poi troviamo una nuova parola riservata, READLN ( abbreviazione Read Line = leggi riga). Essa serve a leggere i dati di input. La sua sintassi è molto semplice: READLN (nome variabile da leggere). Inoltre l'istruzione READLN non seguito da alcun parametro, crea un ciclo di attesa che dura finché non viene premuto Invio. E' consigliata alla fine di un listato, prima dell'END, poiché "congela" lo schermo quando dobbiamo leggere il risultato dell' elaborazione. Ad esempio, se eseguissimo il programma precedente senza READLN finale non potremmo esaminare i risultati della nostra operazione, perché il programma si arresterebbe troppo in fretta. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
11
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - i Comandi Un’altra fondamentale istruzione è WRITELN (abbreviazione Write Line = scrivi riga); essa serve a visualizzare i dati di output sullo schermo. La sua sintassi è: WRITELN ('Stringa di testo'), se consideriamo l'esempio sopra vedremo che il testo tra apici (') verrà visualizzato sullo schermo; nel caso in cui WRITELN venga usato senza parametri l'elaboratore lascerà una riga vuota durante l'elaborazione. Un ulteriore esempio sull'uso di WRITELN: WRITELN (a) In questo caso verrà visualizzato sullo schermo il valore assunto in quel momento dalla variabile a. Dunque, se a vale 3, allora sullo schermo uscirà il numero 3. E' possibile anche combinare stringhe e variabili, mettendo una virgola tra il secondo apice e la variabile: Writeln ('Io sono ', A); Infine, alla fine del programma, troviamo END seguito da un punto. Esso indica la fine del flusso delle istruzioni e il conseguente arresto del programma. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
12
Pascal - Tipi di dati Nome tipo Intervallo consentito
Come già visto in precedenza, nel settore dichiarativo di un programma bisogna definire il tipo di variabili che intendiamo utilizzare nel corso del programma stesso. Esistono vari tipi di variabili, e sono raggruppate in questo breve specchietto. Nome tipo Intervallo consentito VARIABILI NUMERICHE BYTE 0 / 255 WORD 0 / INTEGER / REAL / 1535 VARIABILI ALFANUMERICHE STRING (X) X Caratteri alfanumerici (per variabili lunghe) CHAR (X) X Caratteri alfanumerici Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
13
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Esempio Altro esempio: calcolare il triplo di un numero dato. PROGRAM doppio; (* Sezione dell' intestazione * ) VAR n: INTEGER; { Sezione delle dichiarazioni } begin ( * Corpo del programma *) Writeln ('Questo programma calcola il triplo di un numero dato'); Writeln; Writeln ('Introduci un numero intero'); Readln (n); n := n * 3; Writeln ('Il triplo è: ' , n); writeln; Writeln (‘Premi enter per finire'); readln; end. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
14
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Appendice Di seguito troverete dei comandi che potrebbero tornare utili in qualche programmino. 1) TEXTCOLOR (n)= colora il testo che segue di un colore definito da n che è un numero da 0 a 15. I numeri maggiori di quindici producono un effetto lampeggiante. 2) TEXTBACKGROUND (n)= colora lo sfondo d un colore definito da n. Sintassi simile a TEXTCOLOR. 3) SQRT(x) = Calcola la radice quadrata di x; 4) DELAY(n) = Crea un ciclo di attesa lungo n ( miliisecondi) I segni di operazione in TP, sono i seguenti: '+' = ADDIZIONE '-' = SOTTRAZIONE '*' = MOLTIPLICAZIONE '/' = DIVISIONE MOD = RESTO DELLA DIVISIONE ( MOD può essere usato soltanto se i numeri da dividere sono di tipo INTEGER ) Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
15
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Appendice Inoltre per indicare il rapporto fra due cifre ci serviamo dei seguenti simboli matematici: '<‘ = MINORE '>‘ = MAGGIORE '=' = UGUALE '=>‘ = MAGGIORE O UGUALE '<=‘ = MINORE O UGUALE '<>' = DIVERSO DA ... Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
16
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Esercizi uses crt; { utilizziamo la libreria (crt) per gestire il monitor} uses crt va definito dopo il nome del programma es: PROGRAM COLORE; uses crt; textbackground (numero); {dove il numero (tra 1 e 7) indica il colore dello sfondo prescelto - n.b. prima di clrscr} clrscr; {puliamo il video, dopo aver definito la libreria (crt)} textcolor (numero); {dove il numero (tra 1 e 15) indica il colore del testo prescelto} Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
17
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Esercizi program colourexample; uses crt; { utilizziamo la libreria (crt) per gestire il monitor} var a, b : integer; begin writeln ('inserire il colore per lo sfondo'); readln (b); textbackground (b); {colore sfondo prescelto con 'b‘ - n.b. prima di clrscr} clrscr; {puliamo il video, dopo aver definito la libreria (crt)} writeln ('inserire il colore preferito da 1 a 15'); readln (a); textcolor (a); {colore del testo prescelto con 'a'} writeln (‘numero del colore del testo prescelto: ‘ , a); repeat until keypressed; {al premere di un tasto si ritorna al presente listato} end. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
18
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Esercizi program scelta; uses crt; var lunghezza : integer; testo : string; begin clrscr; writeln; {inseriamo una riga vuota} writeln; writeln ('Programma per calcolare la lunghezza di un testo'); writeln ('Inserisci testo'); readln (testo); lunghezza:= length(testo); {il comando length restituisce il numero di caratteri} writeln ('La lunghezza del testo è: '); textcolor (3); writeln (lunghezza); textcolor (11); writeln (‘Cognome e Nome 2012'); {digitare il vostro cognome, nome ed anno scolastico} writeln ('Premi enter per uscire'); repeat until keypressed; end. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
19
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Esercizi program QUADRATO; uses CRT; VAR L : INTEGER; A, P : REAL; BEGIN CLRSCR; WRITELN; TEXTCOLOR (YELLOW); WRITELN ('PROGRAMMA PER CALCOLARE AREA E IL PERIMETRO DI UN QUADRATO'); TEXTCOLOR (RED); WRITELN ('INSERIRE IL LATO DEL QUADRATO'); READLN (L); {INSERIAMO IL LATO DEL QUADRATO} P := L * 4; {CALCOLIAMO IL PERIMETRO: LATO PER 4} A := SQR(L); {CALCOLIAMO L'AREA} TEXTCOLOR(2); WRITELN ('PERIMETRO CALCOLATO: ' , P:6:2); WRITELN ('AREA CALCOLATA: ' , A:7:2); repeat until keypressed; END. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
20
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Pascal - Esercizi program dati_anagrafici; var nome, cognome, eta, comune, via: string; {n.b. le variabili non accettano l’apostrofo} begin Writeln ('Questo programma visualizza i tuoi dati anagrafici'); writeln; writeln ('Inserisci il tuo nome'); readln (nome); writeln ('Inserisci il tuo cognome'); readln (cognome); writeln ('Inserisci la tua età’); readln (eta); writeln ('Inserisci il tuo comune’); readln(comune); writeln ('Inserisci il tuo indirizzo'); readln(via); writeln ('Il tuo nome è: ‘ , nome); writeln ('Il tuo cognome è: ‘ , cognome); writeln ('Hai , eta , ' anni'); writeln ('Vivi nel comune di; ‘ , comune, ' e abiti in ‘ , via); Writeln ('Premi enter per uscire'); readln; end. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
21
Pascal - la selezione semplice (condizione)
Se consideriamo un numero naturale qualsiasi e ci domandiamo se esso è pari, la risposta potrà avere solo due alternative: Si oppure No. In Tp c'è la possibilità di eseguire una scelta tra due condizioni con il seguente comando: IF THEN ELSE che tradotto fa più o meno: SE ALLORA ALTRIMENTI Ad esempio. Costruiamo un programma che calcoli l'area di un rettangolo SE E SOLO SE l'area stessa è minore di un numero n (per esempio 20) e maggiore di un numero m (per esempio 10); Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
22
Pascal - la selezione semplice (condizione - parte 1)
PROGRAM area_rettangolo; USES CRT; VAR BASE, ALTEZZA, AREA : INTEGER; BEGIN AREA := 0; {AZZERIAMO LA VARIABILE DI ARRIVO (AREA)} CLRSCR; (*Pulisce lo schermo*) WRITELN (‘IL SEGUENTE PROGRAMMA CALCOLA L’’AREA DEL RETTANGOLO’); WRITELN (' Inserisci base'); READLN (BASE); WRITELN ('Inserisci l’’altezza'); READLN (ALTEZZA); AREA := BASE * ALTEZZA; Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
23
Pascal - la selezione semplice (condizione - parte 2)
IF (AREA > 10) AND (AREA < 20) THEN (* AND , insieme a OR sono gli operatori booleani più usati in TP. Si basano sulle tabelle di verità – Per AND: V+V = V; V+F = F; F+V = F; F+F = F Per OR: V+V = V; V+F = V; F+V = V; F+F = F *) BEGIN WRITELN ('Area maggiore di 20 oppure minore di 10.'); END ( * END prima dell' ELSE senza punto e virgola(;) * ) ELSE BEGIN WRITELN (' AREA DEL RETTANGOLO = ', AREA); END; repeat until keypressed; END. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
24
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Creare un algoritmo che calcoli il totale di una fattura. In Input abbiamo: PU: Prezzo Unitario della merce; Q: Quantità della stessa; ALIQUOTA: aliquota dell’I.V.A. ; Dopo aver determinato l’imponibile (prezzo unitario * quantità), bisogna calcolare l’I.V.A. che è data dall’imponibile per l’aliquota diviso 100.! Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
25
Pascal - Esercizi (parte 1)
program FATTURA; {Il presente algoritmo calcola la fattura} uses crt; var PU, Q, ALIQUOTA, IVA, IMPONIBILE, TOTALE : real; begin clrscr; textcolor(13); writeln ('Questo programma calcola il costo della fattura '); writeln; textcolor(yellow); writeln (‘ Inserisci il prezzo unitario della merce '); readln (PU); writeln (‘ Inserisci la quantità della merce '); readln (Q); writeln (‘ Inserisci l’’aliquota dell’I.V.A. '); readln (ALIQUOTA); Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
26
Pascal - Esercizi (parte 2)
IMPONIBILE := 0; IVA := 0; TOTALE := 0; {azzeriamo le variabili di arrivo} IMPONIBILE:= PU * Q; {calcoliamo l’imponibile} IVA:= (IMPONIBILE * ALIQUOTA) / 100; {calcoliamo l’IVA} TOTALE:= IMPONIBILE + IVA; {calcoliamo il totale della fattura} writeln; writeln ('Il costo complessivo della fattura è: ‘ , TOTALE:6:3); { totale:6:3 = sei cifre intere e tre decimali } writeln (‘Cognome e nome del programmatore'); writeln ('Premi enter per uscire'); repeat until keypressed; end. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
27
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Creare un algoritmo che calcoli il noleggio di un mezzo di trasporto comprensivo di IVA. In Input abbiamo: KMP: KiloMetri Percorsi; LPT: Limite Prima Tariffa; QF: Quota Fissa; CPT: Costo Prima Tariffa; CST: Costo Seconda Tariffa. Se i chilometri percorsi non superano i limiti imposti dalla prima tariffa (Falso) il costo complessivo (CC) è calcolato moltiplicando il costo della prima tariffa per i chilometri percorsi con l’aggiunta della quota fissa altrimenti (Vero) bisogna aggiungere al costo pieno (costo prima tariffa * limite prima tariffa) la differenza dei chilometri che rientrano nella seconda tariffa. Infine calcolare l’IVA, supponendo l’aliquota al 21%, ed aggiungerla all’imponibile! Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
28
Pascal - Esercizi (parte 1)
program noleggio; uses crt; var qf,lpt,cpt,cst,al,kmp:integer; iva,cc:real; begin clrscr; Terxtcolor(12); writeln ('Questo programma calcola il costo del noleggio'); writeln; writeln (‘ Inserisci i Km percorsi'); readln (kmp); writeln (‘ Inserisci il limite dei Km per la prima tariffa'); readln (lpt); writeln (‘ Inserisci la quota fissa'); readln (qf); writeln (‘ Inserisci il costo della prima tariffa'); readln (cpt); writeln (‘ Inserisci il costo della seconda tariffa'); readln (cst); Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
29
Pascal - Esercizi (parte 2)
cc := 0; iva := 0; al := 21; {azzeriamo le variabili di arrivo} if kmp > lpt {condizione: km percorsi > limite prima tariffa?} then cc : = cpt * lpt cst * (kmp - lpt) {vero il costo è dato dal costo della prima tariffa per il limite della stessa più il costo della seconda tariffa per la differenza tra i km percorsi ed il limite dei Km imposti dalla prima tariffa} else begin cc:= cpt * kmp; {falso aggiungiamo al costo la quota fissa 1ª tariffa} cc := cc + qf; end; {è stato inserito il comando begin perché sono previste due istruzioni} iva := (cc * al) / 100; {calcoliamo l’IVA} cc := cc + iva; {aggiungiamo l’IVA all’imponibile} writeln; writeln ('Il costo complessivo del noleggio è: ‘ , cc:6:3); {6 cifre intere e 3 decimali} writeln (‘Cognome e nome del programmatore'); {volendo colorare col comando textcolor ( )} writeln ('Premi enter per uscire'); repeat until keypressed; end. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
30
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Creare un algoritmo che risolva il Teorema di Pitagora. In Input abbiamo: C1: Cateto 1; C2: Cateto 2; Calcolarne l’Ipotenusa come stabilito dal suddetto Teorema. Il quadrato costruito sull’ipotenusa è pari alla somma dei quadrati costruiti sui cateti, Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
31
Pascal - Esercizio: Teorema di Pitagora (1)
program PITAGORA; uses CRT; VAR C1, C2, I, QC1, QC2, QI : REAL; BEGIN CLRSCR; I:=0; QI:=0; QC1:=0; QC2:=0; WRITELN; TEXTCOLOR (RED); WRITELN ('PROGRAMMA DIMOSTRAZIONE TEOREMA DI PITAGORA'); TEXTCOLOR (YELLOW); WRITELN ('INSERIRE IL PRIMO CATETO DEL TRIANGOLO'); READLN (C1); {INSERIAMO IL 1* CATETO DEL TRIANGOLO} TEXTCOLOR (GREEN); WRITELN ('INSERIRE IL 2° CATETO DEL TRIANGOLO'); READLN (C2); {INSERIAMO IL 2° CATETO DEL TRIANGOLO} Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
32
Pascal - Esercizio: Teorema di Pitagora (1)
{CALCOLIAMO IL QUADRATO DEI DUE CATETI} QC1 := SQR(C1); QC2 := SQR(C2); {L'AREA DELL'IPOTENUSA E’ DATA DALLA SOMMA DEI QUADRATI DEI CATETI} QI := QC1 + QC2; {RADICE PER DETERMINARE L'IPOTTENUSA} I := SQRT(QI); TEXTCOLOR(2); WRITELN ('IPOTENUSA CALCOLATA: ' , I : 6 : 2); repeat until keypressed; END. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
33
Pascal - la selezione multipla (CASE)
Se domandiamo ad una persona quali sono i piatti che preferisce essa sceglierà fra un' ampia gamma di pietanze fino a scegliere quella che soddisfi i suoi gusti. Infatti, al contrario di prima, la selezione multipla ci fornisce illimitate possibilità di risposta. Il comando che in TP ci permette di operare un selezione multipla è il seguente: CASE n of ( * Se n è stata dichiarata INTEGER * ) valore 1: BEGIN istruzione1; istruzione... END; CASE n of ( * Se n è stata dichiarata CHAR * ) valore x: istruzione...; ELSE BEGIN istruzione 1; istruzione2; istruzione...; END; END; Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
34
Pascal - la selezione multipla (CASE)
Nonostante la sua sintassi sembra complessa in realtà, questa struttura, è di facilissima comprensione. Innanzitutto dobbiamo decidere se dichiarare la variabile n come tipo INTEGER oppure CHAR. Se n è CHAR dovremo usare una lettera seguita dai due punti(:) e dal rispettivo sottoprogramma delimitato da BEGIN e END; se invece n è INTEGER dovremo usare un numero naturale al posto di n e mettere dopo i due punti(:) il solito sottoprogramma delimitato da BEGIN e END. Proviamo ora con un esempio: un programma che generi un numero a caso tra 1 e 10 e lo comunichi all'operatore solo se esso è uguale a 7, 9 o 3. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
35
Pascal - la selezione multipla (CASE)
PROGRAM numeri_casuali; {si usa underscore (_) per unire i nomi} VAR numero: INTEGER; BEGIN CLRSCR; RANDOMIZE; (* Inizializza, il generatore di numeri casuali * ) numero:=RANDOM(10); (*Questo comando (randomize) permette all'elaboratore di generare un numero a caso compreso tra 0 e il numero indicato in parentesi. Il massimo consentito è 255 * ) CASE numero OF 7: BEGIN WRITELN (' Il numero è ', numero); END; 9: BEGIN 3:BEGIN ELSE BEGIN WRITELN (' Il numero uscito è diverso da 3, 7 e 9’); END. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
36
Pascal - definire le label
Per spostarci all’interno del listato dobbiamo definire delle label Prima del comando var dobbiamo indicare quante ne serviranno all’interno del listato Label numero1, numero2, numero3, ecc… All’interno delle istruzioni (dopo il begin) definiamo i punti di partenza delle label numero1: istruzioni …. numero2: istruzioni …. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
37
Pascal - Esercizi (parte 1)
program abbonamento_autobus; uses crt; label 10, 20, 30; {le label ci permettono di spostarci all’interno del listato} var b, tipo, p, m : integer; tot, s, t : real; begin clrscr; tot:=0; s:=0; t:=200; b:=50; s:=40; p:=30; m:=80; {avvaloriamo le variabili} writeln ('Questo programma serve per calcolare il costo dello abbonamento dell’autobus'); writeln; 10:clrscr; Writeln ('Costo Abbonamento 200 Euro al mese - scegli il tipo:'); writeln (' per i bambini, sconto 50%'); {volendo colorare col comando textcolor ( )} writeln (' per gli studenti, sconto 40%'); writeln (' per i pensionati, sconto 30%'); writeln (' per i militari, sconto 80%'); writeln (' nessuno sconto'); writeln (' per uscire'); readln (tipo); Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
38
Pascal - Esercizi (parte 2)
if (tipo >= 0) and (tipo <= 5) then goto 20 else goto 10; {se tipo non compreso tra 1 e 5 ritorna label 10} 20:clrscr; if tipo = 0 then goto 30 else {se tipo = 0, si esce dall’algoritmo, label 30} begin case tipo of 1:begin {se tipo = 1, bambini: sconto del 50%, b=50} s := (t * b) / 100; end; 2:begin {se tipo = 2, studenti: sconto del 40%, s=40} s := (t * s) / 100; 3:begin {se tipo = 3, pensionati: sconto del 30%, p=30} s := (s * p) / 100; 4:begin {se tipo = 4, militari: sconto dell’80%, m=80} s := (t * m) / 100; 5:begin {se tipo = 5, non si applicano sconti} s := 0 writeln; tot := t - s; writeln ('Il costo dello abbonamento è: ', tot:5:2,' Euro '); {5 cifre intere e 2 decimali} 30:writeln (‘Cognome, nome e anno scolastico'); writeln ('Premi enter per uscire'); readln; end. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
39
Pascal - le strutture iterative
Il termine iterare deriva dal latino e significa "ripetere". Questa struttura (che è presente in tutti i linguaggi di programmazione, non solo in Pascal, agisce su una operazione che deve essere ripetuta più volte. Ne esistono vari tipi: Iterazione enumerativa FOR primo valore TO ultimo valore; Iterazione per falso REPEAT ISTRUZIONE UNTIL CONDIZIONE; Iterazione per vero WHILE CONDIZIONE DO BEGIN ISTRUZIONE END. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
40
Pascal - Struttura iterativa Enumerativa
Iterazione enumerativa - Come dice la parola stessa esegue un operazione n volte. In Pascal è indicata dal comando: FOR a=: numero iniziale TO numero finale DO (*Niente punto e virgola *) istruzione 1; istruzione ...; END; è possibile anche procedere a ritroso, contando alla rovescia da un numero n fino ad arrivare ad un numero t: FOR a:=n DOWNTO t DO Ecco un semplice esempio: PROGRAM POTENZA; VAR A,B,C,i: INTEGER; BEGIN WRITELN ('INSERISCI UN NUMERO'); READLN (A); WRITELN ('ISERISCI LA POTENZA'); READLN (B); C:=1; (* Avvaloriamo la variabile C con 1*) FOR i:= 1 TO B DO BEGIN C:=C*A; END; WRITELN ('RISULTATO: ', C); READLN; END. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
41
Pascal - Struttura iterativa per Falso
Ripete le istruzioni racchiuse tra REPEAT e UNTIL finché la condizione espressa da UNTIL non si verifica (iterazione per falso) REPEAT istruzione 1; istruzione 2; istruzione ...; UNTIL condizione; Ecco un semplice esempio: PROGRAM ripetizione; VAR a,b:INTEGER; BEGIN REPEAT WRITELN (‘ Inserisci un numero minore di 30 e maggiore di 10 '); READLN (a); UNTIL (a<30) AND (a>10); READLN; END. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
42
Pascal - Struttura iterativa per Vero
Iterazione per vero - Esegue le informazioni racchiuse tra WHILE DO e l'END; (il punto e virgola indica che l'END è parziale) finché la condizione presa in esame non sia falsa WHILE a=3 DO istruzione 1; istruzione 2; istruzione...; END; Questo semplice esempio spiega come il blocco di istruzioni presente tra WHILE DO e END; venga ripetuto finché si rispetti la condizione a=3. Nel caso in cui il valore di a fosse stato diverso da 3, infatti, il blocco di istruzioni non sarebbe stato mai eseguito. PROGRAM ripetizione; VAR a, b, c: INTEGER; BEGIN WHILE a = 3 DO BEGIN WRITELN (‘ Inserisci un numero, se diverso da 3 fine '); READLN (b); c := c + b; END; WRITELN (‘SOMMA DEI VALORI: ’, c); READLN; END. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
43
Pascal - Esercizi - FOR ... TO ...
program calcola_tabellina; uses crt; var tabellina, i, n, z : integer; begin clrscr; WRITELN; writeln ('Stampa a video una tabellina scelta da te'); writeln; writeln ('Programma per stampare a video una qualsiasi tabellina scelta da te'); writeln ('Inserisci il numero di cui vuoi sviluppata la sua tabellina'); readln (tabellina); i := 0; for i := 1 to 10 do n := n + 1; z := tabellina * n; writeln (z); end; writeln ('Premi enter per uscire'); readln; end. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
44
Pascal - Esercizi - FOR ... TO ...
program media_voti; uses crt; var voto, a, nvolte, i : integer; tot, media : real; begin clrscr; writeln ('Questo programma calcola la media dei tuoi voti'); writeln; writeln (‘Quanti sono i voti da cui ricavare la media?'); readln (nvolte); a := 0; tot := 0; media := 0; for i := 1 to nvolte do a := a + 1; writeln ('Inserisci il voto: ‘ , a); readln(voto); tot := tot + voto; end; media:= tot / nvolte; writeln ('La tua media è: ‘ , media:2:2); writeln; writeln (‘Cognome e nome del programmatore'); writeln ('Premi enter per chiudere il programma'); readln; end. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
45
Pascal - Esercizi (parte 1) - REPEAT
PROGRAM OPERAIO; USES CRT; VAR ENTERM, EXITM, ENTERP, EXITP, TOTORELAV, TOTML, PAGAO, PAGAG, ORELAVM, MINLAVM, ORELAVP, MINLAVP : REAL; VAR NOME : STRING[20]; BEGIN CLRSCR; PAGAO := 0; PAGAG := 0; WRITELN ('INSERISCI PAGA ORARIA'); READLN (PAGAO); REPEAT WRITELN ('INSERISCI NOME OPERAIO'); READLN (NOME); WRITELN ('INSERISCI ORARIO ENTRATA MATTINA'); READLN (ENTERM); WRITELN ('INSERISCI ORARIO USCITA MATTINA'); READLN (EXITM); WRITELN ('INSERISCI ORARIO ENTRATA POMERIGGIO'); READLN (ENTERP); WRITELN ('INSERISCI ORARIO USCITA POMERIGGIO'); READLN (EXITP); Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
46
Pascal - Esercizi (parte 2) - REPEAT
ORELAVM := EXITM - ENTERM; MINLAVM := ORELAVM * 60; ORELAVP := EXITP - ENTERP; MINLAVP := ORELAVP * 60; TOTORELAV := ORELAVM + ORELAVP; TOTML := MINLAVM + MINLAVP; PAGAG := PAGAO * TOTORELAV; WRITELN('INSERISCI PAGA ORARIO'); READLN(PAGAO); UNTIL PAGAO = 0; WRITELN ('TOTALE ORE LAVORATE: ', TOTORELAV:5:2); WRITELN ('TOTALE MINUTI LAVORATI SONO: ', TOTML:5:2); WRITELN ('LA PAGA GIORNALIERA DELL'OPERAIO: ', PAGAG:5:3); READLN; END. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
47
Pascal - Esercizi (parte 1) - WHILE
PROGRAM OPERAIO; USES CRT; VAR ENTERM, EXITM, ENTERP, EXITP, TOTORELAV, TOTML, PAGAO, PAGAG, ORELAVM, MINLAVM, ORELAVP, MINLAVP : REAL; VAR NOME : STRING[20]; BEGIN CLRSCR; PAGAO := 0; PAGAG := 0; WRITELN ('INSERISCI PAGA ORARIA'); READLN (PAGAO); WHILE PAGAO <> O DO BEGIN WRITELN ('INSERISCI NOME OPERAIO'); READLN (NOME); WRITELN ('INSERISCI ORARIO ENTRATA MATTINA'); READLN (ENTERM); WRITELN ('INSERISCI ORARIO USCITA MATTINA'); READLN (EXITM); WRITELN ('INSERISCI ORARIO ENTRATA POMERIGGIO'); READLN (ENTERP); WRITELN ('INSERISCI ORARIO USCITA POMERIGGIO'); READLN (EXITP); Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
48
Pascal - Esercizi (parte 2) - WHILE
ORELAVM := EXITM - ENTERM; MINLAVM := ORELAVM * 60; ORELAVP := EXITP - ENTERP; MINLAVP := ORELAVP * 60; TOTORELAV := ORELAVM + ORELAVP; TOTML := MINLAVM + MINLAVP; PAGAG := PAGAO * TOTORELAV; WRITELN('INSERISCI PAGA ORARIO'); READLN(PAGAO); END; WRITELN ('TOTALE ORE LAVORATE: ', TOTORELAV:5:2); WRITELN ('TOTALE MINUTI LAVORATI SONO: ', TOTML:5:2); WRITELN ('LA PAGA GIORNALIERA DELL'OPERAIO: ', PAGAG:5:3); READLN; END. Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
49
Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Il linguaggio PASCAL fine Pascal - Prof. Grisolia Guglielmo - I.T.C.G.T. Castrolibero
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.