LESSICO E SINTASSI DEL PASCAL

Documenti analoghi
INTRODUZIONE AL LINGUAGGIO DI PROGRAMMAZIONE PASCAL. Per iniziare lo studio del linguaggio di programmazione pascal, consideriamo il seguente esempio.

Come ragiona il computer. Problemi e algoritmi

Risoluzione di un problema

Introduzione alla programmazione

CAPITOLO 3 - ALGORITMI E CODIFICA

UD 3.2b: Programmazione in Pascal (1)

Informatica (A-K) 5. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Introduzione alla programmazione Esercizi risolti

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Fondamenti di Informatica

Caratteristiche generali del linguaggio Visual Basic

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Formalismi per la descrizione di algoritmi

Corso sul linguaggio C

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Parte 1: tipi primitivi e istruzioni C

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi

3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi

Le basi del linguaggio Java

PREPARAZIONE PER SECONDA PROVA IN ITINERE Esercizio 1 SULLA MODELLAZIONE DEI DATI

INTRODUZIONE ALLA PROGRAMMAZIONE

Programmazione con il linguaggio LibreOffice Basic

Diagrammi di flusso (Flow Chart)

IL PRIMO PROGRAMMA IN C

L AMBIENTE CODE BLOCKS E L IO

Linguaggio C: introduzione

Unità B1 Programmazione base

Flow-chart. Introduzione agli algoritmi e ai diagrammi a blocchi.

Le basi del linguaggio Java

Linguaggi, Traduttori e le Basi della Programmazione

Introduzione agli Algoritmi

Transcript:

LESSICO E SINTASSI DEL PASCAL Il linguaggio di programmazione Pascal è potente e semplice nello stesso tempo; ciò ne giustifica la scelta, inoltre i nuovi compilatori del linguaggio pascal permettono di rilevare eventuali errori sia in fase di compilazione che in fase di esecuzione del programma. Tale linguaggio, come del resto tutti i linguaggi di programmazione, è costituito da istruzioni (le istruzioni sono le frasi del linguaggio) il cui teso è formato da simboli quali: - parole chiave o riservate - segni di punteggiatura - operatori aritmetici e logici - stringhe - identificatori (nomi assegnati dal programmatore) Per programmare è necessario conoscere il lessico e la sintassi del linguaggio. La sintassi SINTASSI costituisce insieme delle regole per formare una istruzione o frase del linguaggio mentre i simboli che vengono adottati costituiscono il LESSICO. LESSICO ELEMENTI BASE Gli elementi base che costituiscono l alfabeto del Pascal sono: - i caratteri dell alfabeto (tutte le lettere minuscole e maiuscole) - le cifre del sistema decimale (i numeri da 0 a 9) - i caratteri di sottolineatura - i caratteri speciali, divisi in operatori: i segni aritmetici, il segno uguale e le parentesi angolari nelle varie combinazioni e cioè + - * / = < > <= >= <> punteggiatura: cioè ; :., # $ [ ] ( ) := { } - parole chiave o riservate; quali: AND CONST ELSE FORWARD MOD OR RECORD TO WHILE ARRAY DIV END FUNCTION NIL PACKED REPEAT TYPE WITH DO FILE IF NOT PROCEDUR E SET UNTIL CASE DOWNTO FOR IN OF PROGRAM THEN VAR Un identificatore invece è una parola che è assegnata dal programmatore per rappresentare un determinato oggetto del programma quale una variabile, una costante, il nome del programma o una determinata procedura. SINTASSI Questa può essere descritta in due modi: i grafi sintattici e la notazione BNF. Entrambi i modi fa uso di regole e simboli propri. 1 modo: Grafi sintattici in questo caso la sintassi è rappresentata con dei diagrammi di flusso evidenziando le relazioni esistenti fra i i vari costrutti del linguaggio.

nodo contenente le parole chiave nodo contenente i simboli terminali es. cifre, le lettere dell alfabeto,.. nodo contenente i simboli non terminali cioè una determinata funzione biforcazione le frecce indicano i percorsi Ecco alcune semplici composizioni: A Equivale a: ottenere A A Equivale a: possibilità di ripetere A un certo numero di volte A Equivale a: ottenere A oppure B B Regole da seguire nell interpretazione di un grafo-sintattico: si entra da sinistra; eseguire la scelta del percorso in corrispondenza della biforcazione, il simbolo terminale che si incontra lo si inserisce nella frase in formazione, prima di proseguire, interpretare bene il simbolo non terminale che si incontra, la frase completa la si ottiene alla fine del percorso. Esempi : Rappresentare i grafi sintattici che permettono di generare 1. una cifra del sistema decimate. 2. una costante numerica intera con segno positivo o negativo oppure senza segno. 3. una sequenza formata da una generica lettera e da una generica cifra con un punto alla fine del percorso.

2 modo: Notazione BNF in questo caso la sintassi è definita mediante dei simboli ed alcune regole. I simboli vanno interpretati. simbolo ::= Interpretazione del simbolo è definito come può essere definito come può essere costituito da può essere rappresentato da OR logico oppure { } Il contenuto che compare nelle parentesi graffe può essere ripetuto zero volte o più volte Il contenuto che compare nelle parentesi angolari rappresenta un elemento < > non terminale, cioè il nome di una variabile che deve essere definita. Esempi - interpretare le seguenti notazioni BNF: 1. <cifra> ::= 0 I 1 I 2 I 3 I I 8 I 9 2. <numero intero> ::= <cifra> I {<cifra>} Esempio 3. Rappresentare in notazione BNF una costante che possa essere definita come un numero intero preceduto dal segno positivo o negativo oppure senza segno.

INGRESSO E USCITA DA UN TERMINALE Ogni programma richiede di comunicare con l ambiente esterno. Ciò viene effettuato con le procedure WRITE e READ Procedura WRITE Tale procedura permette di visualizzare ogni tipo di dato sul terminale. Il numero dei parametri o dati può essere 0 e ogni parametro è separato dalla virgola. La procedura è la seguente: WRITE(dato, dato, ) oppure: WRITELN(dato, dato, ) La 1^ procedura (WRITE) visualizza i dati, presenti nella sua lista, nella posizione corrente del cursore e lasciando il cursore stesso nella posizione corrispondente all ultimo dato visualizzato. Con la 2^ procedura (WRITELN), una volta effettuata la visualizzazione dei dati, come visto con la 1^ procedura, sposta automaticamente il cursore all inizio della riga successiva. La procedura WRITELN senza dati produce una riga vuota. WRITE(dato); WRITELN; equivale a scrivere WRITELN(dato); È possibile specificare la larghezza del campo di uscita (output) per un qualunque tipo di dato; a tale scopo si specifica accanto alla variabile (dato) da rappresentare, separato dai due punti (:) un numero n che rappresenta la larghezza del campo. Se il dato (cioè la stringa ) occupa un numero di spazi < di n allora alla sinistra del dato vengono inseriti un numero di spazi vuoti corrispondenti alla differenza n dato. Quindi: indicando con m il numero dei caratteri della stringa possiamo dire che Se m<n la stringa viene spostata sullo schermo di un numero di spazi vuoti corrispondenti ad n m ; Se m>n la stringa verrà rappresentata sullo schermo in un campo minimo di m posizi

WRITE(ciao:12) In tal caso abbiamo: m = 4, n = 12, n-m = 8 Quindi la parola ciao scritta sullo schermo lasciando dal bordo six 8 spazi vuoti; pertanto si avrà: ciao i trattini di sottolineatura indicano gli spazi lasciati vuoti a sx. Se la stringa deve rappresentare un numero (variabile tipo REAL), il valore della variabile viene rappresentato in notazione esponenziale in un campo minimo di otto posizioni e precisamente: - una posizione per il segno, - una per il punto decimale, - due per le cifre immediatamente seguente e precedente il punto, - una per la lettera E, - tre per l esponente con il segno questo se n 8. Se n > 8 il valore della variabile viene rappresentato in notazione esponenziale in un campo n posizioni con un max di 17. WRITE(12.34:n) Se n 8 il numero 12.34 verrà così rappresentato: _1.2E+01 Se n =10 avremo: _1.234E+01 Se n >10, esempio n =12 avremo: _1.23400E+01 WRITE(24.126:7) WRITE(24.126:11)

Procedura READ Tale procedura permette di inviare i dati ad un programma, cioè di inserirli da tastiera. La procedura è la seguente: READ(variabile1 variabile2, ); oppure: READLN(variabile1 variabile2, ); la procedura READ(A, B,C); legge i valori che le variabili A, B e C devono assumere dall input. Quando il programmatore utilizza l input da tastiera, ogni chiamata alla procedura READ termina quando è stato inserito da input un numero di dati pari a quello richiesto dall istruzione READ stessa. Se il numero di dati è > di quello dei parametri richiesti dall istruzione READ, i dati in eccesso vengono persi. I dati possono essere introdotti 1. su più righe separati da < CR>; opp. 2. su un unica riga separati da uno spazio; o ancora 3. da una combinazione delle precedenti. Pertanto, ritornando all es. precedente, per la procedura READ(A, B,C); le variabili A, B e C si possono introdurre da tastiera in uno dei seguenti modi: 1.modo A <CR> B <CR> C <CR> 2.modo A_B_C <CR> 3.modo A_B <CR> C <CR> i trattini fra le lettere indicano sempre gli spazi lasciati vuoti. La procedura READLN(A, B,C); posiziona il cursore all inizio della riga successiva dopo aver effettuato la lettura dei dati. L istruzione READLN; cioè senza parametri, fa ignorare al programma ciò che resta della linea corrente in input. Quindi l istruzione READLN(A, B,C); equivale a READ(A, B,C); READLN

STRUTTURA A BLOCCHI DEL PASCAL BLOCCO DI INTESTAZIONE BLOCCO DICHIARATIVO BLOCCO OPERATIVO PROGRAM LABEL CONST TYPE VAR PROCEDURE END FUNCTION IL BLOCCO DI INTESTAZIONE assegna il nome al programma. IL BLOCCO DICHIARATIVO IL BLOCCO OPERATIVO è formato da istruzioni non eseguibili che consentono di definire i dati. Contiene la descrizione degli oggetti (VARIABILI, COSTANTI, PROCEDURE, ) che verranno utilizzati nel corpo del programma. è costituito da istruzioni eseguibili che elaborano i dati descritti nel blocco dichiarativo. Tali istruzioni, separati dal punto e virgola (;) sono racchiuse tra le parole chiavi e END. Nella stesura di un programma si seguono regole simili a quelle utilizzate per la rappresentazione degli algoritmi. All interno del programma è possibile inserire dei commenti che servono per ricordare cosa esegue quel particolare segmento del programma. UTILIZZANDO I GRAFI SINTATTICI LA STRUTTURA DI UN PROGRAMMA PASCAL PUÒ ESSERE COME IN FIG.

Esempi: STAMPARE LA SCRITTA EINSTEIN ALL INIZIO DI UNA RIGA E POSIZIONARE IL CURSORE ALL INIZIO DELLA RIGA SUCCESSIVA: PROGRAM UNO; END. WRITELN( EINSTEIN ); READLN STAMPARE I VALORI DELLE VARIABILI A, B, C, D E I RISULTATI DELLA SOMMA A+B E CxD: DEL PRODOTTO PROGRAM DUE; USES CRT; VAR A,B:REAL; C,D:INTEGER; A:=3.5;B:=4.2;C:=9;D:=2; WRITELN( A =,A, ; B =,B); WRITELN( C =,C, ; D =,D); WRITELN( TOTALE DI A+B =,(A+B)); WRITELN( TOTALE DI CXD =,(CXD)); END. READLN CONVERTIRE LA TEMPERATURA IN GRADI FAHRENHEIT (VALORE INSERITO DA TASTIERA) A CELCIUS VALORE STAMPATO): PROGRAM TRE; USES CRT; VAR F,C:REAL; END. CLRSCR; WRITE( GRADI FAHRENHEIT F = ); READLN(F); C: = (5/9) X (F - 32); WRITELN( GRADI CELSIUS C =,C); READLN

DEFINIRE E RAPPRESENTARE UN ALGORITMO (FLOW-CHART) CHE CONSENTE DI ORDINARE TRE O PIÙ NUMERI IN SENSO CRESCENTE OPPURE IN SENSO DECRESCENTE. DEFINIRE E RAPPRESENTARE UN ALGORITMO (FLOW-CHART) CHE CONSENTE DI INDIVIDUARE IL MINORE OPPURE IL MAGGIORE FRA TRE O PIÙ NUMERI. DEFINIRE E RAPPRESENTARE UN ALGORITMO (FLOW-CHART) CHE CONSENTE DI DETERMINARE LA RESISTENZA EQUIVALENTE SERIE E PARALLELO FRA DUE O PIÙ RESISTENZE. DEFINIRE E RAPPRESENTARE UN ALGORITMO (FLOW-CHART) CHE CONSENTE DI CALCOLARE LA RETRIBUZIONE NETTA DI UN LAVORATORE CONOSCENDO LA RETRIBUZIONE ORARIA LORDA, IL NUMERO DI ORE LAVORATIVE E LE TRATTENUTE. _ SCRIVERE UN PROGRAMMA CHE CONSENTE DI STAMPARE IL GIUDIZIO (GRAVEMENTE INSUFFICIENTE; INSUFFICIENTE; DISCRETO; BUONO; OTTIMO) ASSOCIATO AI VOTI DA UNO A DIECI INTRODOTTI DA TASTIERA. SCRIVERE UN PROGRAMMA CHE CONSENTE DI DETERMINARE IL VALORE DELLA RESISTENZA EQUIVALENTE DI UN CIRCUITO COSTITUITO DA UNA RESISTENZA IN SERIE AD UN GRUPPO DI DUE O TRE O QUATTRO RESISTENZE IN PARALLELO FRA LORO A SECONDA DELLE POSIZIONI DI ALCUNI INTERRUTTORI. DISEGNARE UNO SCHEMA ELETTRICO. SCRIVERE UN PROGRAMMA CHE CONSENTE LA CONVERSIONE DI UN NUMERO DECIMALE IN BINARIO E VICEVERSA. SCRIVERE UN PROGRAMMA CHE CONSENTE DI DETERMINARE LA SOMMA DEI QUADRATI DI DUE O TRE NUMERI INTRODOTTI DA TASTIERA. _ SCRIVERE UN PROGRAMMA CHE CONSENTE DI DISEGNARE UN ARCO DI CIRCONFERENZA NOTO IL RAGGIO E IL CENTRO DELLE COORDINATE. _ SCRIVERE UN PROGRAMMA CHE CONSENTE DI DETERMINARE L AREA DI UN ANELLO RACCHIUSO DA DUE CIRCONFERENZE CONCENTRICHE, NOTO I RAGGI E LE COORDINATE DEL CENTRO.