Il 0% ha trovato utile questo documento (0 voti)
11 visualizzazioni13 pagine

PASCAL

Il documento fornisce una guida all'apprendimento della programmazione in Pascal, evidenziando la creazione di programmi e l'uso del software TURBO. Viene spiegata la sintassi di base, le fasi della programmazione (input, elaborazione, output) e vengono presentati vari esempi di programmi di difficoltà crescente. Inoltre, il documento include informazioni sulle regole di sintassi e sugli operatori booleani utilizzati nel linguaggio.

Caricato da

monacoantonellax
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
11 visualizzazioni13 pagine

PASCAL

Il documento fornisce una guida all'apprendimento della programmazione in Pascal, evidenziando la creazione di programmi e l'uso del software TURBO. Viene spiegata la sintassi di base, le fasi della programmazione (input, elaborazione, output) e vengono presentati vari esempi di programmi di difficoltà crescente. Inoltre, il documento include informazioni sulle regole di sintassi e sugli operatori booleani utilizzati nel linguaggio.

Caricato da

monacoantonellax
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

IMPARARE A PROGRAMMARE CON IL LINGUAGGIO

PASCAL

a cura del Prof. Sampognaro Giuseppe.


Creare propri programmi nel computer è stato sempre il desiderio non
solo degli esperti di Informatica, ma anche delle persone che non
hanno alta dimestichezza con il Personal Computer.

Un programma abbastanza semplice che ci aiuta allo scopo è il


Linguaggio PASCAL 3 che, pur abbastanza vecchio di datazione, è
quello più vicino a noi per le regole di sintassi.

Inizialmente dovete uscire dal presente sito e creare una directory nel
vostro disco fisso che può essere chiamato PASCAL. Collegati quindi al
presente sito dovete scaricare nella directory creata il presente
documento e tutti quei file presenti e sottolineati nel presente
documento (TURBO,SOMMA etc.).

Prima di operare con TURBO conviene dare una occhiata ad un


programma di massima facilità che è SOMMA. Serve per sommare due
numeri. Leggere sotto le regole di sintassi in esso presenti.

Si prosegue analizzando tutti gli altri programmi. Se poi si desidera


programmare o analizzare in modo approfondito un programma con
estensione .pas aprire il programma TURBO.

PROGRAMMA BASE: TURBO : Cliccando su di esso e quindi


su Apri si presenta un foglio nero e dopo qualche istante compare la
presentazione del programma. Alla domanda Include errore messages
rispondere con N . Compare ora la finestra operativa. Premere ora A e,
dopo "New directory:", digitare il percorso e il nome della directory
creata prima nel vostro disco fisso, cioè C:\PASCAL ; quindi :

 Per digitare (editare o guardare) un programma premere E e


digitare il file
 Per correggere (compilare) un programma premere C e digitare il
file
 Per fare eseguire un programma (dopo averlo corretto) premere
R e digitare il file

 Per salvare un programma premere S e digitare il file

 Per elencare i presenti nella directory digitare *.* o *.pas (se


volete i file di pascal)

 Per uscire da TURBO premere Q

 Per salvare un programma appena editato, compilato ed eseguito


in estensione COM (subito eseguibile) digitare, di seguito, O H C Q
C ; Infine, cliccando con tasto destro, entrare nel programma, fare
click su proprietà, poi su programma e togliere la spunta su
"chiudi all'uscita".

 Per uscire dall'edit di un programma e tornare a TURBO premere


contemporeaneamente CTRL K D(Con rapidità e risolutezza) e
(INVIO oppure X).

-----------------------------------------------------------------------------------------------
IL CICLO NELLA PROGRAMMAZIONE
In ogni programmazione vi sono tre fasi:

1. INPUT: Introduzione dei Dati. Avviene generalmente con write e


readln.
2. ELABORAZIONE: Elaborando un calcolo si ha calcolo:= ........

3. OUTPUT: Estrazione(Stampa) dei risultati. Interviene


generalmente writeln(' ').

------------------------------------------------------------------------------------------------------------
PROGRAMMI DI BASSA DIFFICOLTA'
Cliccando sui programmi(con estensione .pas) si può
analizzare la loro editazione; Per la loro
esecuzione,invece, cliccare su TURBO e seguire le
indicazioni. Tali programmi possono poi essere
trasformati con estensione .com e, quindi,subito
eseguibili (Vedi sopra per il procedimento). Una
buona parte dei seguenti programmi si trova
eseguibile nel sito [Link]
SOMMA (Esegue la somma di 2 Numeri): Regole sintassi:
Titolo = Program sommadiduenumeri -tutto unito; Var = elenco delle
variabili e loro tipo; Begin = Inizio programma; write(' ') = scrivi sulla
stessa riga; writeln(' ') = scrivi e vai alla riga successiva; readln( ) =leggi
e vai alla riga successiva; End. = termina il programma; ATTENZIONE:
Dopo aver digitato una riga mettere sempre il ; tranne che per Var ,
Begin , End.
CALCOLO1 (Calcola il valore di una espressione
letterale): Regole sintassi (diverse dal programma SOMMA): clrscr :
pulisce lo schermo; Espressione:= 3*(x+1) [ELABORAZIONE]; Il calcolo
avviene sostituendo il valore dato della x nella espressione. Se x=2 si ha
Espressione:= 3*(2+1)=3*3=9.
CALCOLO2 (Calcola i valori di una espressione
letterale per i valori della x che vanno da -5 a 5 nella
funzione f=5*z-3):Differisce dal programma CALCOLO1 per la
presenza del ciclo FOR.....TO....DO (Per x che va da ....a.... esegui) e per
l'elaborazione Funzione:=5*z-3.
CALCOLO3 (Presenta la serie di Numeri Naturali da 2
a 11): Differisce da CALCOLO2 per l'assenza della funzione, ma con la
presenza del comando succ(I) che calcola in automatico il successivo di
un numero.
CAR_ARR (Stampa 10 valori casuali presi da 1 a 50):
NUOVE REGOLE SINTASSI: randomize (valori casuali); random(50)
(sceglie tra i primi 50 numeri naturali).
CAR_CAR (Stampa le lettere dell'alfabeto in
maiuscolo):NB) NUOVE REGOLE SINTASSI:array[65..90] of char : sono
in ASCII Decimale le lettere maiuscole dell'alfabeto.
CAR_NOMI (Dopo aver inserito un numero di città, le
scrive nell'ordine di inserimento):NUOVE REGOLE SINTASSI:
const NumMax=20 (Massimo 20 città); var V:array[1..20]of string[10] -
>10 max lunghezza città.
CARATT (Stampa i caratteri presenti in ASCII
decimale da 33 a 40):
CERCHIO(Calcola la lunghezza della circonferenza e
l'area del cerchio dato il raggio):NUOVE REGOLE SINTASSI:
writeln('Vuoi continuare ? SI=1 NO=0'); (significa che se si vuole rifare
l'esecuzione si deve premere 1 altrimenti se si sceglie 0 si esce dal
programma); repeat....until Risposta=0 (Significa che il programma
sarà ripetuto finchè la risposta risulta 0=NO);
CONFRONT(Controlla se un numero è maggiore di un
secondo);NUOVE REGOLE SINTASSI: controllo:boolean; Ciclo
IF...THEN...ELSE (Se.....allora....altrimenti).
DADI(Presenta la somma dei risultati dei lanci di 2
dadi);
DOPPIO(Trova il doppio di un numero dato);
FUNZABS(Presenta il valore assoluto di un
numero);NUOVE REGOLE SINTASSI: abs(A) risulta Valore Assoluto di
A.
IMPORTO(Dato Prezzo Unitario, Tasso di sconto,
Quantità minima per sconto e quantità da comprare,
restituisce l'importo totale);
NUMPARI1(Stabilisce se un numero è pari o dispari
con procedura booleana).
-----------------------------------------------------------------------------------
------------------------

PROGRAMMI DI MEDIA DIFFICOLTA'


ALIMENTI(Test di 20 Domande su Educazione
Alimentare);REGOLE DI SINTASSI PRESENTI: var .....:string(100)
[introduci una frase di lunghezza max.100 caratteri]; IF...THEN..ELSE
GEOGRAFI (Test di 20 Domande su Geografia
Italiana);
INFORMA1(Test di 20 Domande sui Primi Elementi di
Informatica)
ITALIAN2(Test sui Detti Celebri e Parole Inglesi nella
Lingua Italiana)
SCHEMA20(Test di 20 Domande vuoto)
TEST20(Test di 20 Domande sul Saper Ascoltare)
ATTUALE(Test di 20 domande su Attualità)
CARATTER(Test sul Proprio Carattere); REGOLE DI SINTASSI
PRESENTI: writeln; if..then
CONCORSO(Test Concorso Scuola Magistrale)
CONVERS1(Conversione di un numero da base 10 a
base b);REGOLE DI SINTASSI PRESENTI: repeat..until; for..to..do;
while..do
CONVERS2(Conversione di un numero da base b a
base 10); REGOLE DI SINTASSI PRESENTI: Come Convers1
CRAMER(Risolve un sistema lineare a due incognite);
REGOLE DI SINTASSI PRESENTI: if...then...else
DISEQ_G2(Risolve Disequazioni di secondo grado);
REGOLE DI SINTASSI PRESENTI: repeat..until; if...then...else
DISEQGR1(Risolve Disequazioni di primo grado);
REGOLE DI SINTASSI PRESENTI: come diseq_g2
DIVISORI(Trova i Divisori di un numero); REGOLE DI
SINTASSI PRESENTI: repeat...until ; q:=trunc(sqrt(N)) dove trunc tronca
il numero di cifre decimali, sqrt significa radice quadrata; while..do
EQ_GRAD1(Risolve una Equazione di primo grado);
REGOLE DI SINTASSI PRESENTI: const Titolo (stabilisce un Titolo al
programma); if...then...else;
EQ_GRAD2(Risolve una Equazione di secondo grado);
REGOLE DI SINTASSI PRESENTI: if..then..else
EQUAZGR1(Risolve una Equazione di primo grado);
REGOLE DI SINTASSI PRESENTI: while..do; if..then..
MATEMATI(Test di 20 domande su Aritmetica e
Algebra); REGOLE DI SINTASSI PRESENTI: vedi Alimenti
MCM(Calcola il minimo comune multiplo tra due
numeri);REGOLE DI SINTASSI PRESENTI: while...do; if..then..else
POLINOMI(Calcola valore polinomio per x=h); REGOLE
DI SINTASSI PRESENTI: array[o..k] of real (un insieme di k termini reali);
for...to...do
STORIA(Test di 20 domande su Storia
Contemporanea); REGOLE DI SINTASSI PRESENTI: vedi alimenti
-----------------------------------------------------------------------------------
----------------------
PROGRAMMI DI ALTA DIFFICOLTA'
DISEQ_G2(Risolve Disequazione di secondo grado);
REGOLE DI SINTASSI PRESENTI: repeat..until; if..then..else
ALFAMAIU(Scrive le lettere dell'Alfabeto in
Maiuscolo); REGOLE DI SINTASSI PRESENTI: procedure ; for...to...do
ARRAYCAS(Carica un certo numero di valori casuali);
REGOLE DI SINTASSI PRESENTI: procedure; for..to..do; if..then..else;
randomize
FORMULA(Risolve Triangolo con formule dirette e
inverse); REGOLE DI SINTASSI PRESENTI: procedure
INTUITO(Test che misura il Quoziente Intellettivo);
REGOLE DI SINTASSI PRESENTI: vedi Alimenti
-----------------------------------------------------------------------------------
---------------------
SPIEGAZIONE REGOLE DI SINTASSI
-----------------------------------------------------------
FASI DELLA PROGRAMMAZIONE
 La prima fase risulta l'ALGORITMO che è una sequenza di
istruzioni scritte nella lingua in uso (italiano). per il Programma
SOMMA esso risulta il seguente:

Inizio; Dammi il primo numero=a; Dammi il secondo numero=b; Esegui


la somma tra i due numeri dati: x=a+b ; Stampa il risultato; Fine.

 La seconda fase è il DIAGRAMMA A BLOCCHI chiamato anche


FLOW CHART che è una sequenza di figure geometriche che
corrispondono alle fasi del programma : Generalmente si usa
l'ellisse per INIZIO e FINE; si usa il parallelogramma per l'INPUT
(introduzione dati) e l'OUTPUT (estrazione dati); si usa il
rettangolo per la ELABORAZIONE; si usa il rombo per la SCELTA
(if..then..else oppure repeat..until oppure while...do).
 La terza fase è la CODIFICA o EDIT del programma che sviluppa
l'Algoritmo con termini specifici e riconosciuti dalla macchina.

----------------------------------------------------------------------------------------------------
REGOLA DI INIZIO PROGRAMMA (Program) e IMPORTANZA DEL ; A FINE
RIGO
Program Sommadiduenumeri;
Var
a,b:integer;
x:integer;
Begin <----------EDIT (CODIFICA) DEL PROGRAMMA [Link]
writeln(' PROGRAMMA SOMMA DI DUE NUMERI ');
write('Il primo addendo risulta ');
readln(a);
write('Il secondo addendo risulta ');
readln(b);
x:=a+b;
writeln('La somma dei due numeri risulta ',x)
End.
Analizzando il programma SOMMA vediamo che ogni programma inizia
con la digitazione della parola Program seguito dal titolo del file. Esso
risulta tutto unito oppure unito con _ . Potevamo quindi scrivere a
posto di Sommadiduenumeri la frase Somma_di_due_numeri .
ATTENZIONE: Tale scritta non compare durante la esecuzione del
programma. Compare invece la scritta PROGRAMMA SOMMA DI DUE
NUMERI . Vedere a proposito dopo il significato di writeln.
Ogni riga deve terminare con ; . Sono esenti da questa regola le righe
contenenti begin , var ,if...then...else , for...to...do , repeat...until , e la
penultima riga ; Nell'ultima riga vi deve sempre essere end.
----------------------------------------------------------------------------------------------------------
VAR :
E' una parola seguita dalle variabili che intervengono nel programma
seguiti dal : e dal tipo di variabili che, generalmente, possono essere
integer (numeri interi), real (numeri reali), char (caratteri), string
(frasi), string50 (frasi non più lunghe di 50 caratteri), boolean (vero o
falso)
CONST :
E' la presentazione di una costante presente nel programma (es.
pi=3,14;
CENNI SUGLI OPERATORI BOOLEANI E LE ESPRESSIONI RELAZIONALI:
Sono Operatori Booleani i termini AND , OR e NOT; Sono Espressioni
Relazionali < (minore), > (maggiore), <= (minore uguale), >= (maggiore
uguale), = (uguale), <> (diverso) . Se introduciamo a=56 e b=34 allora
alla scritta a<b il computer risponderà false, mentre ad a>b risponderà
true (vero). Ancora se a=5 , b=30 , e c=40 alla scritta (a<b)and(b<c) il
computer risponderà true (vero). Per maggiori approfondimenti si
rimanda allo studio della LOGICA.
--------------------------------------------------------------------------------------------------------------
BEGIN....END
Dopo la parte dichiarativa la codifica continua con begin (inizio) . Dopo
begin vi sono alcune istruzioni (di INPUT - Elaborazione - OUTPUT e
quindi la codifica del programma termina con end. I termini
begin....end; si possono anche usare in codifiche di sottoprogrammi
presenti nel programma in presenza di while...do (vedi dopo)
--------------------------------------------------------------------------------------------------------------
-----------
WRITE,WRITELN, READ,READLN
Nella fase di INPUT (Introduzione dei dati) si utilizzano insieme i
termini inglesi WRITE (scrivi e leggi nello stesso rigo), READLN (Leggi e
vai al rigo successivo) -->vedi sopra la codifica del programma
SOMMA; Invece per far stampare 'qualcosa' al computer si utilizza
WRITELN('qualcosa'); e lo stesso si usa nell'OUTPUT che non è altro la
stampa dei risultati. Quindi i significati delle suddette quattro parole
sono: WRITE : scrivi (stampa) e resta nella stessa riga; WRITELN :
scrivi(stampa) e vai alla riga successiva; READ : Leggi e resta nella
stessa riga; READLN : Leggi e vai alla riga successiva.
--------------------------------------------------------------------------------------------------------------
-----------
INPUT, ELABORAZIONE, OUTPUT
INPUT è la fase della CODIFICA di introduzione dei dati :Si utilizzano i
termini WRITE e READLN; ELABORAZIONE è la parte della codifica dove
si elaborano i dati. Nel programma SOMMA essa è data da
x:=a+b;
OUTPUT è la fase della codifica dove si
estraggono(stampano) i risultati : Si utilizza generalmente il termine
WRITELN.
--------------------------------------------------------------------------------------------------------------
--------------
IF...THEN...ELSE
E' un ciclo iterativo molto usato anche nella lingua italiana
(SE...ALLORA...ALTRIMENTI); Lo si utilizza nella codifica per la scelta tra
due [Link] esempio si può scrivere IF a>b THEN writeln('a
risulta maggiore di b') ELSE writeln('a risulta minore di b'); Un esempio
di applicazione si trova nella seguente codifica del programma
CONFRONT:
Program Confront;
(*Dati due numeri, riconoscere se il primo risulta maggiore del secondo*)
Var
numero1,numero2:integer;
controllo:boolean;
Begin
ClrScr;
writeln('Dati due numeri interi, riconoscere se il primorisulta maggiore ',
'del secondo');
writeln;
write('Scrivi il primo numero: ');readln(numero1);
write('scrivi il secondo numero: ');readln(numero2);
controllo:=numero1>numero2;
write(numero1,' risulta maggiore di ',numero2,'? ');
if controllo=True
then writeln('si')
else writeln('no');
writeln;
write('Premere Return per terminare');
readln
End.
--------------------------------------------------------------------------------------------------------------
------------------
FOR....TO....DO
Anche questo ciclo iterativo lo troviamo nella Lingua Italiana (PER x
che va da 5 A 12 ESEGUI). Lo si utilizza per creare un insieme di risultati
quando la variabile assume un insieme di valori consecutivi. Capire il
significato di esso analizzando la seguente codifica del programma
CALCOLO2:
program Calcolo2;
var X,F:integer;
function Funzione(Z:integer):integer;
begin
Funzione:=5*Z-3;
end;
begin (*main program*)
ClrScr;
for X:=-5 to 5 do
begin
F:=Funzione(X);
writeln('x=',X,'---->F(',X,')=',F);
end;
readln;
end.

--------------------------------------------------------------------------------------------------------------
---------------
REPEAT.....UNTIL
E' un ciclo iterativo usato anche nella Lingua Italiana (RIPETI un dato
argomento FINCHE'). Una applicazione relativa si trova nel
programma del quale segue la codifica:
program Divisori;
var N,Q,K,D,R: integer;
Risposta:integer;
begin
repeat
ClrScr;
write('introduci un intero positivo:');
readln(N);
Q:=trunc(sqrt(N));
K:=1;
writeln('***DIVISORI DI',N:5,'***');
while K <= N do
begin
D:=N div K;
R:=N mod K;
if R=0 then
writeln(K:20,D:20);
K:=K+1;
end;
writeln('vuoi continuare?SI=1,NO=0');
readln(Risposta);
until(Risposta=0);
end.
--------------------------------------------------------------------------------------------------------------
--------------------------
WHILE....DO
Anche questo è un ciclo iterativo presente nella lingua italiana
(FINCHE' x<5 ESEGUI). Un esempio è presente nel programma DIVISORI
la cui codifica è stata presentata nel paragrafo precedente.
--------------------------------------------------------------------------------------------------------------
--------------------------
PROCEDURE
Risultano essere dei sottoprogrammi presenti entro il programma
principale e che si comportano da indipendenti ai quali si collega il
programma principale per la sua esecuzione. Un esempio di procedura
è presente nel programma FORMULE del quale si presenta la
seguente codifica:
program FormulaTriangolo;
(*utilizza la formula: Area=(Base*Altezza)/2*)
var Area, Base, Altezza:real;
Scelta:byte;
procedure AreaTriangolo;
begin
writeln('introduci le misure di Base e Altezza:');
readln(Base,Altezza);
Area:=(Base*Altezza)/2;
writeln('AREA TRIANGOLO=',AREA:0:2);
end;
procedure BaseTriangolo;
begin
writeln('introduci Area e misura della Altezza:');
readln(Area,Altezza);
Base:=(Area*2)/Altezza;
writeln('MISURA BASE TRIANGOLO=',Base:0:1);
end;
procedure AltezzaTriangolo;
begin
writeln('introduci Area e misura della Base:');
readln(Area, Base);
Altezza:=(Area*2)/Base;
writeln('MISURA ALTEZZA TRIANGOLO=',Altezza:0:1);
end;
begin (*main program*)
ClrScr;
writeln('SCELTA DEL MENU');
writeln('Premi:1 per Area ** 2 per Base ** 3 per Altezza');
readln(Scelta);
case Scelta of
1: AreaTriangolo; (*chiamata della procedura AreaTriangolo*)
2: BaseTriangolo;
3: AltezzaTriangolo;
end; (*fine case*)
readln;
end.

----------------------------------------------------------------------------------------------------------------------------
--------------
writeln('VUOI CONTINUARE ? SI=1 NO=0 ')
Si utilizza questa scelta quando si desidera rieseguire un determinato
programma. Se si preme 1 il programma viene rieseguito; premendo 0
si esce dal programma. Un esempio è presente nel programma
CERCHIO del quale si presenta la relativa codifica:
program Cerchio;
var Raggio,Lunghezza,Area:real;
Risposta:integer;
begin
repeat
ClrScr;
write('immetti la misura del raggio:');
readln(Raggio);
Lunghezza:=2*PI*Raggio;
Area:=PI*sqr(Raggio);
writeln('lunghezza circonferenza:',Lunghezza:4:1);
writeln('area cerchio:',Area:6:2);
writeln('Premi INVIO');
readln;
writeln('vuoi continuare? SI=1 NO=0');
readln(Risposta)
until Risposta=0;
end.

--------------------------------------------------------------------------------------------------------------
-------------------------
SIGNIFICATO DI PAROLE PRESENTI NELLE CODIFICHE:
trunc(a) =Scrive la parte intera di un numero decimale;
pred(a) =Scrive il numero precedente di a;
succ(a) =Scrive il numero successivo di a;
abs(a) = Restituisce il valore assoluto di a;
sqrt(a) = Calcola la radice quadrata di a;
randomize = E' una procedura per i numeri casuali;
random(a) = Restituisce numeri casuali minori di a;
sqr(a) =Calcola il quadrato di a;
a mod b =Trova il resto della divisione tra a e b;
a div b = Trova il quoziente della divisione tra a e b;
clrscr =Pulisce lo schermo e porta il cursore in alto a sinistra;
array[1...10] of char = Chiede un insieme di 10 caratteri;
string(30) = Chiede una frase lunga non oltre 30 caratteri;
array[1...15] of string(20) = Chiede un insieme di 15 frasi di lunghezza
non superiore a 20 caratteri;

Potrebbero piacerti anche