• Non ci sono risultati.

Un linguaggio per la definizione di Programmi

N/A
N/A
Protected

Academic year: 2021

Condividi "Un linguaggio per la definizione di Programmi"

Copied!
15
0
0

Testo completo

(1)

1

Deve consentire:

• frasi per indicare tipi e nomi delle informazioni (variabili)

• frasi per poter assegnare/modificare valori alle variabili operazioni di ingresso

calcolo ed assegnazione

• frasi per operazioni di uscita

• frasi per la definizione istruzioni

…. regole lessicali e sintattiche

un insieme di parole chiavi, regole per costruire nuovi nomi, regole per costruire le frasi

… un linguaggio generico e generale ...

… PDL Programming Design Language ...

Un linguaggio per la definizione di Programmi

2

Tipi definiti dal linguaggio

i tipi atomici

INTERO INT

REALE FLOAT

CARATTERE CHAR

LOGICO BOOL

Nomi delle variabili

devono iniziare con un carattere alfabetico possono avere una lunghezza qualsiasi non possono contenere il carattere <spazio>

deve essere indicato il tipo di ogni variabile (dichiarazione delle variabili)

<nome tipo> <lista variabili>;

Es.

FLOAT area_quadrato, lato_quadrato;

INT n.ro_studenti, ore_lezioni;

(2)

3

• istruzioni di ingresso

• istruzioni di uscita

• istruzioni di calcolo ed assegnazione

in quasi tutti i linguaggi alle istruzioni di ingresso ed uscita corrisponde una azione elaborativa realizzata attraverso predefinite unità di programma

Istruzioni Semplici

4

Permettono di assegnare (definire) il valore di una o più informazioni (variabili) attraverso una unità di ingresso

prevedono:

• definizione dell’unità di ingresso coinvolta

• indicazione delle informazioni (variabili) cui assegnare il valore

• definizione del formato dei dati in ingresso

nella loro forma più semplice:

• l’unità di ingresso è individuata per “default”

(tipicamente la tastiera)

• il formato è individuato per “default”

(tipicamente il formato dei dati coincide con la rappresentazione prevista per le costanti del tipo … )

Istruzioni di ingresso (input)

(3)

5

Hanno un formato del tipo:

read ([<unità ingresso>], [<formato>] <variabile>, …, [<formato>] <variabile>);

Es:

read (“%f” area_quadrato, “%f” lato_quadrato);

read (“%d” numero_pagine, “%f” prezzo_libro);

Istruzioni di ingresso (input)

6

permettono di trasferire i valori definiti da espressioni (variabili, costanti) sui supporti di una unità di uscita (schermo del video, foglio stampante etc.)

prevedono:

• individuazione dell’unità di uscita coinvolta

• indicazione delle espressioni (informazioni) coinvolte

• definizione del formato dei dati in uscita nella loro forma più semplice:

• l’unità di uscita è individuata per “default”

(tipicamente il video)

• il formato è individuato per “default”

(tipicamente il formato dei dati coincide con la rappresentazione prevista per le costanti del tipo delle espressioni)

Istruzioni di uscita (output)

(4)

7

Hanno un formato del tipo:

write ([<unità uscita>], [<formato>] <espressione>, ... , [<formato>] <espressione>);

<espressione> può essere: una variabile, una costante, una espressione

Es:

write (“%f” area_quadrato, “%f” lato_quadrato);

write (“%d” numero_pagine, “%f” prezzo_libro);

write (“%d” numero_pagine*300, “%f” prezzo+IVA, “%d” 900, “%c” ‘B’);

Istruzioni di uscita (output)

8

permettono di calcolare il valore di una espressione ed assegnarlo ad una informazione

informazione ed espressione devono essere dello stesso tipo l’istruzione richiede:

• indicazione del nome della variabile che deve ricevere il valore

• operatore di assegnazione (=)

• definizione della espressione Hanno la forma:

<nome variabile> = <espressione>;

<espressione> può essere: una variabile, una costante, una espressione Esempio:

x = w + a * (y + 2);

y = 3;

Istruzioni di Calcolo ed Assegnazione

(5)

9

Un semplice programma esempio

Program area_rettangolo;

// questo programma calcola l’area di un rettangolo

FLOAT base, altezza, area;

begin

write (“immetti base”);

read (“%f” base);

write (“immetti altezza “);

read (“%f” altezza);

area = base * altezza;

write (“Area= ”, “%f” area);

end.

commento

Dichiarazioni variabili

Operazioni input

Operazioni output

Calcolo e assegnazione intestazione

… ma se base o altezza =< 0 ?

10

Strutture di controllo

Le istruzioni semplici permettono di specificare in un programma delle azioni elaborative semplici,costituenti un’unica sequenza di esecuzione possibile

Nella maggior parte dei casi, un algoritmo si compone di più e diverse sequenze di elaborazioni

In generale, un algoritmo descrive più sequenze possibili di azioni elaborative, ed in ogni esecuzione una sola di esse verrà realizzata.

(6)

11

Inizia telefonata;

Solleva la cornetta;

Se c’è il tono di della linea allora inizia

componi il numero;

se il numero chiamato è libero allora inizia

aspetta che qualcuno risponda;

se qualcuno risponde allora

continua a conversare finché non hai finito;

fine fine

riponi la cornetta sull’apparecchio;

Fine della telefonata.

Un esempio

12 Inizia telefonata

Solleva la cornetta;

NON c’è il tono di della linea riponi la cornetta sull’apparecchio.

Fine della telefonata

Inizia telefonata Solleva la cornetta;

C’è il tono di della linea inizia

componi il numero;

il numero chiamato NON è libero fine

riponi la cornetta sull’apparecchio.

Fine della telefonata

Inizia telefonata Solleva la cornetta;

c’è il tono di della linea inizia

componi il numero;

il numero chiamato è libero inizia

qualcuno risponde;

continua a conversare finché non hai finito;

fine fine

riponi la cornetta sull’apparecchio.

Fine della telefonata

… più sequenze dinamiche (esecuzioni) associate alla stessa sequenza statica ...

(7)

13

La sequenza eseguita dipende da eventi (condizioni) che si verificano durante l’esecuzione stessa:

... Presenza della linea … linea libera o occupata ...

Un algoritmo (ovvero un programma) è descritto con

una sequenza di frasi (ovvero istruzioni ), che è detta sequenza statica o lessicografica.

La sequenza lessicografica può contenere più sequenze dinamiche (esecuzioni)

Sequenze Statiche e Dinamiche

14

“costrutti sintattici” quali:

se...allora...altrimenti....

qualora...ma ...nel caso in cui...

ripeti ... fino a quando…

continua …. finché mentre... se ..però...

verificandosi...altrimenti....

nel primo caso...., nel secondo caso..., ... nell’ennesimo caso...

...…

indicano possibili condizioni (eventi) che danno origine alle diverse sequenze dinamiche

nei linguaggi di programmazione questi “costrutti sintattici”

vengono chiamati “strutture di controllo”

Sequenze Statiche e Dinamiche

(8)

15

Sequenza

struttura di controllo che racchiude istruzioni semplici o altre strutture di controllo che vanno eseguite nell’ordine in cui sono scritte

una sequenza può anche racchiudere una sola istruzione o una sola struttura di controllo

Selezione

una struttura di controllo per selezionare una fra due o più possibili

“sequenze” di istruzioni

Ciclo

struttura di controllo per ripetere l’esecuzione di una “sequenza” di istruzioni

Strutture di Controllo

16

Sequenza

Sequenza

begin S end;

tra begin e end sono inserite le istruzioni che devono essere eseguite

(9)

17

una prima struttura:

if (condizione) then

<sequenza>

endif

condizione è una espressione booleana (predicato)

<sequenza> è una sequenza di istruzioni semplici o strutturate

se condizione è vera esegui istruzioni in <sequenza>; in ogni caso continua eseguendo la prima istruzione successiva alla struttura di controllo

Selezione

18

la struttura introduce due possibili sequenze dinamiche (esecuzioni):

C = VERO, sequenza eseguita:

S0 - S1 - S2

C = FALSO, sequenza eseguita:

S0 - S2 S0

if (C) then S1 endif S2

…. struttura 1-in /1-out ….

S0

S1

S2 C

vero falso

(10)

19

Program area_rettangolo;

// questo programma calcola l’area di un rettangolo

FLOAT base, altezza, area;

begin

write (‘immetti base‘);

read (“%f” base);

write (‘immetti altezza ‘);

read (“%f” altezza);

if (base > 0 and altezza > 0) then area = base * altezza;

write (“Area= %f”, area);

endif end.

20

una seconda struttura:

if (condizione) then

<sequenza1>

else

<sequenza2>

endif

condizione è una espressione booleana (predicato)

<sequenza1> <sequenza2> sono sequenze di istruzioni semplici o strutturate

se condizione è vera esegui istruzioni in <sequenza1>;

altrimenti (cioè condizione è falsa) esegui <sequenza2>; in ogni caso continua eseguendo la prima istruzione successiva alla struttura di controllo

Selezione

(11)

21

la struttura introduce due possibili sequenze dinamiche (esecuzioni):

C = VERO, sequenza eseguita:

S0 - S1 - S3

C = FALSO, sequenza eseguita:

S0 - S2 - S3 S0

if (C) then S1 else

S2 endif S3

…. struttura 1-in /1-out ….

S0

S2

S3

vero

C

falso

S1

22

Program area_rettangolo;

// questo programma calcola l’area di un rettangolo

FLOAT base, altezza, area;

begin

write (‘immetti base‘);

read (“%f” base);

write (‘immetti altezza ‘);

read (“%f” altezza);

if (base > 0 and altezza > 0) then begin

area = base * altezza;

write (“Area= ”, “%f” area);

end else

write (“Errore: base o altezza = <0”);

endif end.

(12)

23

Selezione a più vie:

Selezione

Struttura di scelta plurima che controlla se una espressione assume un valore all’interno di un certo insieme di costanti e si comporta di conseguenza

struttura SWITCH (Case)

24

S0

Sn

SU E

S2

S1 « S

default

c1 c2 cn

Selezione a più vie:

Selezione

(13)

25

switch (<espressione>) {

case c1:

S1;

break;

case c2:

S2;

break;

case cN:

Sn;

break;

default: Sdefault; break;

}

Selezione

Espressione di controllo

costanti

Istruzioni da eseguirsi se <espressione>

uguale a c1, c2, …., cN

Istruzione per uscire dallo Switch

Istruzioni da eseguirsi se <espressione>

diversa da c1, c2, ….

(è opzionale)

26

semantica

Valuta <espressione>

se ha valore c1 esegui S1; esci dalla struttura switch (break);

se ha valore c2 esegui S2; esci dalla struttura switch (break);

se ha valore cN esegui Sn; esci dalla struttura switch (break);

altrimenti (se il valore di espressione è diverso da c1 ,..., cN ) esegui Sdefault; esci dalla struttura switch (break);

…. (è opzionale)

N.B. :break provoca l’uscita immediata dallo switch

Selezione: switch

(14)

27

……

scanf("%d", &num);

switch (num) {

case 1: printf("*\n"); break;

case 2: printf("**\n"); break;

case 3: printf("***\n"); break;

default: printf("!\n"); break;

}

… …

Selezione: switch

Esempio: stampa da 1 a 3 stelle in base al numero (compreso tra 1 e 3) immesso , altrimenti un !

28

La struttura switch può essere sostituita con una serie di strutture if else if

Esempio:

#include <stdio.h>

main() {

// stampa se il carattere immesso è una cifra o una lettera minuscola o maiuscola

char c;

scanf(“%c”, & c);

switch ( c ) {

case '0' : case '1' : case ’2' : case ’3' : case ’4' : case ’5' : case ’6' : case ’7' : case ’8' : case '9' : printf( "Cifra \n”); break;

case 'a' : ...… : case 'z' : printf( " Lettera minuscola \n”); break;

case 'A' : ...… :case 'Z' : printf( " Lettera maiuscola \n" ); break;

default : printf( " Altro Carattere \n”);

} }

(15)

29

#include <stdio.h>

main() {

//stampa se il carattere immesso è una cifra o una lettera minuscola o maiuscola

char c;

scanf(“%c”, & c);

if ((c >= ‘0’) && (c <= ‘9’)) { printf( "Cifra \n”);

}

else if ((c >= ‘a’) && (c <= ‘z’)) {

printf( " Lettera minuscola \n”);

}

else if (c >= ‘A’ && c <= ‘Z’) {

printf( " Lettera maiuscola \n" );

}

else printf( " Altro Carattere \n”);

}

Soluzione con if else if

Riferimenti

Documenti correlati

1930 circa, Costigliole d’Asti (At), Santuario della Beata Vergine delle Grazie. Sul verso si legge «Stazione di Montegrosso, sullo spiazzale un’automobile tradotta con tanta

Da questa analisi critica del «nome del padre» e della sua figura so- ciale e del suo ruolo di architrave della psicologia del figlio; da questa

problemi o “focus” delle cure infermieristiche: sono stati individuati nella promozione della salute, nella gestione delle malattie croniche, nei problemi legati

I cinque ottavi contengono marmellata di fragole, gli altri di pesche2. Quanti sono i barattoli di marmellata

CERCHIA CIASCUNA ROSA DI CIASCUN MAZZO.. CERCHIA UN FRUTTO SPINOSO

Nei miei venti minuti, vorrei sottolineare questo punto: oltre alla teoria della trasformazione della materia in generale ed oltre al parallelismo delle immagini alchemiche con

(3 punti) Quali servizi offerti dalle reti di calcolatori consentono la condivisione di file e directory tra più utenti4. Descrivere gli aspetti salienti e le differenze fra i

Da cui il