I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni

Documenti analoghi
Istruzioni selettive: IF THEN

Corso di Fondamenti di Informatica Classi di istruzioni 2

Istruzioni per il controllo di ciclo - ciclo a condizione generica

Costrutti condizionali e iterativi

Strutture di controllo e cicli

Costrutti condizionali e iterativi

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi

Linguaggio C++ 5. Strutture cicliche

Risoluzione di un problema

Lab 04 Programmazione Strutturata"

Istruzioni condizionali di diramazione in Fortran 90

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

Esempi comparati while, do...while

Informatica (A-K) 5. Algoritmi e pseudocodifica

Istruzioni di controllo

prof. P. Mancarella Dip.to Informatica INFORMATICA 1 a.a. 07/08 pag. 170

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

FORTRAN: LE STRUTTURE DI CONTROLLO

Istruzioni semplici e strutturate

Ing. Lorenzo Vismara

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p.

Dichiarazione di variabili

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

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Introduzione alla programmazione

Appelli degli anni precedenti Domande di teoria

Rappresentazione degli algoritmi

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Reti di Calcolatori

Università degli Studi di Ferrara

C espressioni condizionali

Problema: stampa degli interi compresi tra n e m

Esempio: somma di due numeri

Iterazione indeterminata

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Caratteristiche di un calcolatore elettronico

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

do { printf("inserisci due numeri reali:"); scanf("%f %f", &a, &b);

do { printf("inserisci due numeri reali:"); scanf("%f %f", &a, &b); while(b!=0 && a/b<0);

Corso di PHP. Prerequisiti. 3 - Le strutture di controllo. Istruzioni semplici Controllo del flusso di programma

Istruzioni Condizionali

STRUTTURE DI CONTROLLO DEL C++

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»

Rappresentazione degli algoritmi

Fondamenti di Informatica

Iterazione A. Ferrari

<istruzione> ::= <istruzione-semplice> <istruzione> ::= <istruzione-di-controllo> <istruzione-semplice> ::= <espressione> ;

Sviluppo di programmi

del Linguaggio C Istruzioni di iterazione

Prof. Pagani Corrado LINGUAGGIO C: SELEZIONE E CICLI

<istruzione> ::= <istruzione-semplice> <istruzione> ::= <istruzione-di-controllo> <istruzione-semplice> ::= <espressione> ;

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

ISTRUZIONI. Le strutture di controllo permettono di aggregare istruzioni semplici in istruzioni più complesse.

Tela (Teaching Language)

Dott. R. Gori, Dott. A. Rama INFORMATICA 242AA a.a. 2011/12 pag. 1. Le istruzioni iterative permettono di ripetere determinate azioni più volte:

Programmazione Procedurale in Linguaggio C++

Formalismi per la descrizione di algoritmi

Javascript: il browser

Laboratorio di Informatica I

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Fondamenti di Informatica T-1 Modulo 2

Javascript: il browser

Diagrammi di flusso: forme

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

Istruzioni iterative. Istruzioni iterative

STRUTTURE DI CONTROLLO IN C. Docente: Giorgio Giacinto AA 2009/2010

Corso di Fondamenti di Informatica Università degli Studi di Cassino

ISTRUZIONI ISTRUZIONI

Fondamenti di Informatica T1. Lab 03 Istruzioni. Lab03 1

Strutture di Controllo

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2015/2016

Esercitazioni di Elementi di Informatica

Espressioni booleane. Esempio: temperatura <= 0 velocita > velocita max

Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2014/2015

Matlab. Istruzioni condizionali, cicli for e cicli while.

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

Programmazione C Massimo Callisto De Donato

Qualsiasi programma in C++ segue lo schema:

Programmazione A.A Fondamenti di programmazione. ( Lezione IX ) Notazione Lineare Strutturata. Prof. Giovanni Gallo Dr.

Istruzioni Condizionali

Programmazione in Java (I modulo)

Java SE 7. Strutture di programmazione (2)

Istruzioni di controllo: SEQUENZA

Programmazione Procedurale in Linguaggio C++

Lezione 7: La Formalizzazione degli Algoritmi - Strutture di Controllo e Selettive La Programmazione Strutturata (3 p) Giovedì 21 Ottobre 2010

print((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript

Introduzione alla programmazione Esercizi risolti

Iterazione determinata e indeterminata

Espressioni semplici e condizionali

Esercizio 1" input tre numeri interi e stampi a video la loro somma e la media. n Realizzare un programma che legga da. Lab03 2

Verifica parte IIB. Rif. Ghezzi et al

PASCAL LA SELEZIONE: IF TRATTO DA CAMAGNI-NIKOLASSY, CORSO DI INFORMATICA, VOL. 1, HOEPLI. Informatica

Transcript:

Classi di istruzioni In maniera simile a quanto fatto per i dati, un linguaggio mette a disposizione dei costrutti per realizzare la parte esecutiva dell algoritmo. Questa consiste di: Leggi i valori di X e di Y X > Y? si assegnazioni di valori a variabili (in base a calcolo o da I/O) selezione di azioni alternative in base alla valutazione di una condizione esecuzione ciclica di una o più azioni Sostituisci X con Y Sostituisci Y con R no Scambia X con Y Dividi X per Y e ottieni il resto R no R = 0? I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni si Termina. Il MCD è Y

Le classi di istruzioni in Fortran Istruzioni seriali Istruzione di calcolo e assegnazione Istruzioni di I/O Istruzioni per il controllo di flusso Istruzioni selettive IF IF ELSE IF ELSE IF SELECT CASE Istruzioni per il controllo di ciclo Cicli a conteggio (DO) Cicli a condizione (DO IF EXIT,WHILE)

Istruzioni di calcolo e assegnazione L effetto è di aggiornare il valore di una variabile di un certo tipo con il valore ottenuto dalla valutazione di un espressione dello stesso tipo. Il formato è: variabile = espressione Esempio INTEGER :: a,b REAL :: x,y LOGICAL :: cond a = 4 x = 4. cond =.TRUE. b = 2*a+1 y = 2*b+x cond = x > y a = b x = x-2*x*y cond = (a>=0).and.(a<=9) a = a/2 cond = cond.and.(x==3.)

Istruzioni di Input/Output Con le istruzioni di input, il valore di una variabile viene modificato con il valore ottenuto grazie ad un operazione di lettura dall unità di ingresso (tastiera). Con le istruzioni di output, un espressione viene valutata ed il valore ottenuto viene presentato sull unità di uscita (monitor). Il formato è: Esempio INTEGER :: a REAL :: x READ(*,*) variabile WRITE(*,*) espressione READ(*,*) a WRITE(*,*) a READ(*,*) x WRITE(*,*) x READ(*,*) 4 errato! WRITE(*,*) 4 READ(*,*) 7*a+5 errato! WRITE(*,*) 7*a+5 READ(*,*) WRITE(*,*)

Istruzioni selettive: IF THEN Sintassi IF (condizione) THEN istruzione_1 istruzione_2... istruzione_n END IF Esempio eseguite solo se condizione è TRUE Leggi i valori di X e di Y X < Y? si Scambia X con Y no INTEGER :: x,y,appo READ(*,*) x,y IF (x < y) THEN! scambia x e y appo=x x=y y=appo END IF

Istruzioni selettive: IF logico Sintassi IF (condizione) istruzione Esempio INTEGER :: x READ(*,*) x IF (x < 0) x=0

Istruzioni selettive: IF...THEN...ELSE Sintassi IF (condizione) THEN istruzione_1 eseguite solo se condizione è TRUE istruzione_2 ELSE istruzione_3 eseguite solo se condizione è FALSE istruzione_4 END IF Esempio Qual è il massimo tra x e y? si max = y Leggi i valori di x e di y x < y? no max = x REAL :: x,y,max READ(*,*) x,y IF (x < y) THEN max=y ELSE max=x END IF

Istruzioni selettive: IF...THEN...ELSE IF ELSE Sintassi IF (condizione_1) THEN blocco_1 ELSE IF (condizione_2) THEN blocco_2 ELSE IF (condizione_3) THEN blocco_3 ELSE blocco_4 END IF eseguito solo se condizione_1 è TRUE eseguito solo se condizione_1 è FALSE e condizione_2 è TRUE eseguito solo se condizione_1 è FALSE, condizione_2 è FALSE e condizione_3 è TRUE eseguito solo se condizione_1 è FALSE, condizione_2 è FALSE e condizione_3 è FALSE

Esempio INTEGER :: voto READ(*,*) voto IF (voto < 18) THEN WRITE(*,*) Ritorna ELSE IF (voto < 24) WRITE(*,*) Si puo dare di piu ELSE IF (voto < 27) WRITE(*,*) Non c e male ELSE IF (voto < 30) WRITE(*,*) C e mancato poco ELSE IF (voto == 30) WRITE(*,*) Finalmente ci siamo ELSE WRITE(*,*) WOW! END IF

Problema Dati tre numeri reali x, y e z, stabilire se sono le lunghezze dei lati di un triangolo e, in caso affermativo, stabilire che tipo di triangolo sia (equilatero, isoscele o scaleno)

Istruzioni selettive: SELECT CASE Sintassi CASE SELECT (espressione) CASE (selettore_1) blocco_1 CASE (selettore_2) blocco_2 CASE (selettore_3) blocco_3 CASE DEFAULT blocco_4 espressione è di tipo intero il selettore puo indicare diverse condizioni: END SELECT min: TRUE se espressione min min:max :max val TRUE se min espressione max TRUE se espressione max TRUE se espressione = val

Esempio INTEGER:: voto WRITE(*,*) "Voto ottenuto:" READ(*,*) voto SELECT CASE (voto) CASE(0:17) WRITE(*,*) "Ritorna" CASE(18:24) WRITE(*,*) "Si puo' dare di piu'" CASE(25:27) WRITE(*,*) "Non c e male" CASE(28:29) WRITE(*,*) "C e mancato poco" CASE(30) WRITE(*,*) "Finalmente ci siamo" CASE(31:) WRITE(*,*) "WOW!" CASE DEFAULT WRITE(*,*) "Voto non valido" END SELECT

Istruzioni per il controllo di ciclo - ciclo a conteggio Permette di ripetere l esecuzione di un blocco di istruzioni per un numero predefinito di volte. Sintassi DO var_ciclo=espr_1,espr_2,espr_3 istruzione_1 istruzione_2 var_ciclo è una variabile numerica... espr_1, espr_2 ed espr_3 sono espressioni istruzione_n numeriche dello stesso tipo di var_ciclo Esempio stampare i numeri interi pari da 0 a 10 INTEGER :: i DO i=0,10,2 WRITE(*,*) i

Note Il numero di iterazioni è valutato prima dell esecuzione del ciclo ed è uguale a MAX(INT((expr_2 - expr_1 + expr_3 )/ expr_3),0) La variabile di ciclo assume i valori compresi tra expr_1 ed expr_2 incrementandosi di expr_3 ad ogni iterazione. Se expr_3 è assente, viene assunto uguale a 1. Se il numero di iterazioni è <= 0, le istruzioni in ciclo non vengono mai eseguite. Il ciclo può realizzare anche conteggi decrescenti. In tal caso, expr_2 < expr_1 ed expr_3 < 0. Esempio! 6 iterazioni DO i=1,36,7...! 0 iterazioni DO i=6,5...! 4 iterazioni DO i=10,-3,-4...

Problema Stampare la tabellina di un valore dato in input. Stampare le tabelline dei valori compresi tra 1 e 10.

Istruzioni per il controllo di ciclo - ciclo a condizione generica Permette di ripetere l esecuzione di un blocco di istruzioni finchè non viene verificata una condizione logica. Sintassi DO istruzione_1... istruzione_k... IF(condizione) EXIT... istruzione_k+1... istruzione_n

Problema Leggere da input un insieme di numeri reali e calcolarne la media. Non si conosce in anticipo la quantità di valori da leggere, che comunque è limitata ad un massimo di 50; la lettura di un valore < 0 indica che l insieme da leggere è terminato. INTEGER :: cont REAL :: x, somma, media cont=0 somma=0. DO WRITE(*,*) Valore: READ(*,*) x! Condizione di uscita IF (x<0.) EXIT cont=cont+1 somma=somma+x IF (cont>=50) EXIT IF(cont>0) media=somma/cont

Note Con questo costrutto, la verifica della condizione di uscita dal ciclo può essere posta in un punto qualunque del blocco. Inoltre, non è detto che sia unica. Sono caratteristiche positive? Non è facile individuare nel ciclo le condizioni di uscita. Codice non facilmente comprensibile. A tempo di esecuzione non è desumibile per quale condizione il ciclo è terminato e quindi quali istruzioni sono state eseguite. Incertezza sul punto di uscita e sulla condizione di uscita dal ciclo Quindi... È meglio avere un unica condizione di uscita. È meglio avere una condizione di uscita all inizio o alla fine del costrutto.

Esempio: come ristrutturare un ciclo cont=0 somma=0. DO WRITE(*,*) "Valore: " READ(*,*) x! 1a Condizione di uscita IF (x<0.) EXIT cont=cont+1 somma=somma+x! 2a Condizione di uscita IF (cont>=50) EXIT cont=0 somma=0. WRITE(*,*) "Valore: " READ(*,*) x DO IF (x<0.).or.(cont>=10) EXIT cont=cont+1 somma=somma+x WRITE(*,*) "Valore: " READ(*,*) x

Istruzioni per il controllo di ciclo - ciclo WHILE Permette di ripetere l esecuzione di un blocco di istruzioni finchè viene verificata una condizione logica valutata all inizio del ciclo. Sintassi DO WHILE(condizione) istruzione_1 istruzione_2... istruzione_n E equivalente a: DO IF (.NOT. condizione) EXIT istruzione_1 istruzione_2... istruzione_n

Esempio di utilizzo del WHILE cont=0 somma=0. WRITE(*,*) "Valore: " READ(*,*) x DO IF (x<0.).or.(cont>=50) EXIT cont=cont+1 somma=somma+x WRITE(*,*) "Valore: " READ(*,*) x cont=0 somma=0. WRITE(*,*) "Valore: " READ(*,*) x DO WHILE ((x>=0.).and.(cont<50)) cont=cont+1 somma=somma+x WRITE(*,*) "Valore: " READ(*,*) x

Problema 1 Leggere da input un insieme di numeri reali >= 0 e determinare il valore massimo. Non si conosce in anticipo la quantità di valori da leggere; la lettura di un valore < 0 indica che l insieme da leggere è terminato. Problema 2 Nelle stesse ipotesi del problema 1, determinare il valore minimo dell insieme dei valori letti.

Un programma da realizzare utilizzando un ciclo a condizione Leggi i valori di X e di Y X > Y? si no Scambia X con Y Sostituisci X con Y Sostituisci Y con R Dividi X per Y e ottieni il resto R no R = 0? si Termina. Il MCD è Y