Sintassi e semantica delle istruzioni strutturate in Java
|
|
- Alfredo Olivieri
- 5 anni fa
- Visualizzazioni
Transcript
1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 14 Sintassi e semantica delle istruzioni strutturate in Java Carla Limongelli Aprile
2 Contenuti Classificazione delle istruzioni in Java Introduzione alle istruzioni di controllo Istruzione di selezione if-else Blocco (istruzione composta) Istruzioni ripetitive Istruzione while Istruzione for Istruzione do-while 2
3 Prerequisiti Questo capitolo presuppone la conoscenza degli argomenti già trattati nelle precedenti lezioni di questo corso e del corso di Laboratorio di Informatica con particolare riferimento a: Sintassi e semantica dei linguaggi Predicati 3
4 Una classificazione delle principali istruzioni di Java istruzione o dichiarazione dichiarazione variabile locale istruzione istruzione semplice istruzione strutturata istruzione espressione istruzione return istruzione break istruzione continue istruzione vuota blocco istruzione condizionale istruzione ripetitiva istruzione assegnazione istruzione invocazione di metodo istruzione di incremento o decremento istruzione creazione di oggetto istruzione if istruzione if-else istruzione while istruzione for istruzione do-while 4
5 Istruzioni strutturate o di controllo Ogni istruzione strutturata, pur essendo composta da più istruzioni, viene considerata sintatticamente una singola istruzione questo consente la composizione delle istruzioni Semantica delle istruzioni strutturate è definita con riferimento alle sue componenti istruzioni e condizioni 5
6 Introduzione alla programmazione strutturata I linguaggi di programmazione, oltre alle istruzioni semplici, definiscono delle istruzioni strutturate o di controllo permettono di controllare il flusso di esecuzione di altre istruzioni Teorema di Iacopini Böhm Qualunque algoritmo può essere implementato utilizzando tre sole istruzioni: sequenza selezione iterazione 6
7 Istruzione di selezione Seleziona una determinata sequenza di istruzioni da eseguire sulla base di una condizione se (il pneumatico è sgonfio) allora se (è bucato) allora sostituiscilo altrimenti gonfialo In Java: istruzione if-else 7
8 Istruzione if-else: sintassi if ( <condizione> ) <istruzione-parte-if> [ else <istruzione-parte-else> ] Dove <condizione> <istruzione-parte-if> ::= <espressione-booleana> ::= <istruzione> <istruzione-parte-else> ::= <istruzione> <istruzione> ::= <istruzione-semplice> <istruzione-strutturata> 8
9 Istruzione if-else: semantica... valuta il valore v espressione della condizione il valore v espressione può essere true (la condizione si è verificata, è vera) oppure false (la condizione non si è verificata, è falsa) se il valore v espressione vale true, allora esegui l istruzione parte-if se invece il valore v espressione vale false, allora esegui l istruzione parte-else 9
10 ... semantica La semantica dell istruzione if-else può essere descritta graficamente mediante il seguente diagramma di flusso true condizione false parte if parte else istruzione if-else 10
11 Esempio... calcola il minore tra due numeri interi a e b... int minore; // il minore tra a e b if (a < b) minore = a; else minore = b; condizione istruzione che deve essere eseguita se la condizione è vera istruzione che deve essere eseguita se la condizione è falsa 11
12 Sequenza Spesso, al verificarsi di una condizione bisogna eseguire una sequenza di istruzioni (e non una singola istruzione), altrimenti bisogna eseguire un altra sequenza di istruzioni... calcola il minore e il maggiore tra a e b... if (a > b) minore = b; maggiore = a; else minore = a; maggiore = b; Come algoritmo e corretto, ma come porzione di codice Java no! 12
13 Blocco (istruzione composta) un blocco è un istruzione strutturata; è una sequenza di istruzioni (semplici o strutturate) che devono essere eseguite una dopo l altra. 13
14 Blocco: sintassi <blocco> ::= { {<istruzione>}* } <istruzione> ::= <istruzione-semplice> <istruzione-strutturata> 14
15 Uso di blocchi... calcola il minore e il maggiore tra a e b... if (a > b) { minore = b; maggiore = a; } else { minore = a; maggiore = b; } Ora la porzione di codice implementa correttamente l algoritmo 15
16 Blocco: semantica valuta le istruzioni che compongono il blocco, una alla volta e in sequenza, nell ordine in cui sono scritte istruzione 1 istruzione 2 istruzione n blocco 16
17 Esercizio Che cosa stampa il seguente frammento di codice quando ad n viene assegnato il valore 0? quando ad n viene assegnato il valore 1? int n; n =... ; if (n==0) { System.out.println("n vale zero"); n++; } else { System.out.println("n è diverso da zero"); n--; }; 17
18 Esempio Data l età di una persona, visualizza il tipo di persona if (età<10) System.out.println("bambino"); else if (età<18) System.out.println("ragazzo"); else if (età<30) System.out.println("giovane"); else // età >= 30 System.out.println("adulto"); 18
19 Il problema dell else mancante A volte è utile avere una istruzione condizionale nella parte else di un altra istruzione condizionale è meno utile e può essere fonte di errori usare una istruzione condizionale nella parte if di un altra istruzione condizionale... verifica se x è a sinistra/destra dell intervallo [a,b]... if (x>=a) // if-1 if (x>b) // if-2 System.out.println("destra"); else System.out.println("sinistra"); è sbagliato visualizza destra se x si trova a destra di b visualizza sinistra se x si trova tra a e b non visualizza niente se x si trova a sinistra di a 19
20 Il problema dell else mancante Sintatticamente, una parte else appartiene all ultima istruzione condizionale incontrata... verifica se x è a sinistra/destra dell intervallo [a,b]... if (x>=a) else if (x>b) System.out.println("destra"); System.out.println("sinistra"); La soluzione corretta? { usare un blocco } 20
21 Errori comuni Un errore comune nell uso dell istruzione composta dimenticare di usarla Attenzione all istruzione vuota composta semplicemente da un punto e virgola... se numero vale zero incrementa zeri... if (numero==0); zeri++; zeri viene incrementata sempre 21
22 Errori comuni Scrivere le condizioni in una cascata di if-else senza tenere in considerazione il fallimento delle condizioni precedenti /* calcola il maggiore tra a, b e c */ if (a>b && a>c) maggiore = a; else if (b>a && b>c) maggiore = b; else if (c>a && c>b) maggiore = c; /* maggiore è il maggiore tra a, b e c (???) */ che succede se a, b e c sono uguali? 22
23 Istruzioni ripetitive istruzioni di controllo che permettono di eseguire una istruzione in modo ripetuto ciascuna istruzione ripetitiva è composta almeno da una istruzione che deve essere eseguita ripetutamente (il corpo dell istruzione ripetitiva) una condizione che permette di determinare se il corpo dell istruzione ripetitiva deve essere ancora eseguito Istruzione ripetitiva while Istruzione ripetitiva for Istruzione ripetitiva do-while 23
24 Istruzione ripetitiva while Calcolare il quoziente q della divisione intera tra due numeri interi positivi a e b dati senza usare l operatore / per sottrazioni ripetute quante volte posso sottrarre b da a devo continuare fintanto che a è maggiore di zero ma non è minore di b... calcola il quoziente di a diviso b... int q; // il quoziente di a diviso b /* conta quante volte si puo sottrarre b da a */ q = 0; while (a>=b) { a = a-b; q = q+1; }... il quoziente è q... 24
25 Istruzione while: sintassi while ( <espressione> ) condizione <istruzione> corpo <espressione> ::= <espressione-booleana> <istruzione> ::= <istruzione-semplice> <istruzione-strutturata> 25
26 Istruzione while: semantica La semantica dell istruzione while è la seguente: Esegui ripetutamente e in sequenza i seguenti passi valuta la condizione del while se la condizione è vera, esegui il corpo del while se la condizione è falsa, smetti di eseguire questi passi l esecuzione dell istruzione while è cioè considerata terminata 26
27 semantica condizione true false corpo istruzione while 27
28 Osservazioni in una esecuzione di una istruzione while il corpo del while può venire eseguito diverse volte è possibile che il corpo del while non venga mai eseguito l esecuzione dell istruzione while potrebbe non terminare se il corpo del while viene eseguito N volte la condizione del while viene valutata N+1 volte le prime N volte risulta verificata l N+1-esima volta risulta falsa 28
29 Esercizi Si consideri il seguente frammento di codice su cui, purtroppo, è caduto del caffè se si assume che l esecuzione dell istruzione while termina normalmente, è possibile dire che cosa viene stampato? perché? int n, k; n = 19; k = 3; while (n!=7) { n += k; n++; n /= k; } System.out.println(n); 29
30 Istruzione ripetitiva for Calcola il fattoriale f di un numero naturale n dato assegna a f il valore 1 per ogni valore i compreso tra 1 e n, moltiplica f per i... calcola il fattoriale f di n... int f; // il fattoriale di n int i; // per iterare tra 1 e n /* calcola il fattoriale di n */ f = 1; /* moltiplica f per ogni numero intero i * compreso tra 1 e n */ for (i=1; i<=n; i++) f = f*i;... il fattoriale di n è f... 30
31 Istruzione for: sintassi for ( <inizializzazione> ; < espressione > ; <aggiornamento> ) <istruzione> corpo <inizializzazione> ::= <istruzione-assegnazione> <istruzione-invocazione-metodo> <espressione> ::= <espressione-booleana> <aggiornamento> ::= <istruzione-incremento> <istruzione-decremento> <istruzione-invocazione-metodo> <istruzione> ::= <istruzione-semplice> <istruzione-strutturata> 31
32 Istruzione for: semantica Esegui l inizializzazione del for Esegui ripetutamente e in sequenza i seguenti passi valuta la condizione del for se la condizione è vera esegui il corpo del for esegui l aggiornamento del for se invece la condizione è falsa, smetti di eseguire questi passi ovvero, l esecuzione dell istruzione for è terminata 32
33 semantica inizializzazione condizione true false corpo aggiornamento Semantica istruzione for 33
34 Osservazioni in una esecuzione di una istruzione for l inizializzazione viene eseguita esattamente una volta ciascuna esecuzione del corpo è preceduta da una valutazione positiva della condizione e seguita da una esecuzione dell aggiornamento è possibile che il corpo del for non venga mai eseguito, venga eseguito uno o più volte, venga eseguito all infinito se il corpo del for viene eseguito N volte l inizializzazione viene eseguita esattamente una volta la condizione del for viene valutata N+1 volte l aggiornamento viene eseguito N volte 34
35 Uso tipico del for L istruzione for si usa quando un istruzione deve essere iterata un fissato numero di volte Ad esempio for (i=1; i<=n; i++) f = f*i; 35
36 Esercizi 14.4 Calcola la somma dei primi N numeri interi dispari in almeno tre diversi modi 14.5 Quali valori vengono stampati dal seguente frammento di codice? Quali porzioni di codice si comprendono senza farne una traccia? int a, b; for (a=0; a<10; a++) { System.out.print(a + " "); a = a*a; } /* quanto vale ora a? */ for (b=0; a>0; System.out.println(a + " ")) a = a/3-1; 36
37 Istruzione ripetitiva do-while Nella scansione di una sequenza di caratteri letti dalla tastiera bisogna leggere e ignorare gli spazi bianchi iniziali leggere anche il primo carattere non spazio ad esempio indicando gli spazi come # se la sequenza è ##abc il primo carattere non spazio è la a... legge una sequenza di caratteri fino al primo carattere non spazio... char car; // un carattere letto dalla tastiera /* leggi e ignora gli spazi bianchi iniziali */ do { car = Lettore.in.leggiChar(); } while (car==' ');... il primo carattere non spazio è car... 37
38 Istruzione do-while: sintassi do <istruzione> while ( <espressione> ) corpo condizione <espressione> ::= <espressione-booleana> <istruzione> ::= <istruzione-semplice> <istruzione-strutturata> 38
39 Istruzione do-while: semantica Esegui ripetutamente e in sequenza i seguenti passi esegui il corpo del do-while valuta la condizione del do-while se la condizione è vera, continua a eseguire questa sequenza di passi se invece la condizione è falsa, smetti di eseguire questi passi ovvero, l esecuzione dell istruzione do-while è terminata 39
40 semantica corpo true condizione false istruzione do-while 40
41 Osservazioni Osservazioni in una esecuzione di una istruzione do-while il corpo del do-while viene eseguito almeno una volta se il corpo del do-while viene eseguito N volte la condizione del do-while viene valutata N volte è possibile che la condizione del do-while non possa venire valutata se il corpo non è mai stato eseguito Che succede se la sequenza in ingresso è ##abc? abc? 41
42 Confronto tra istruzioni ripetitive Le istruzioni for e while sono semanticamente equivalenti Una istruzione for può essere espressa in termini di una while e viceversa f = 1; for (i=1; i<=n; i++) f = f*i; diventa f = 1; i = 1; while ( i<=n ) { f = f*i; i++; } 42
43 Uso dell istruzione ripetitiva for L istruzione for viene in genere utilizzata per eseguire ripetutamente una istruzione mentre una variabile assume valori in una sequenza prefissata in cui i valori della sequenza sono noti a priori (ovvero, già immediatamente prima di iniziare a eseguire l istruzione ripetitiva) 43
44 Uso dell istruzione ripetitiva while L istruzione while viene solitamente utilizzata per eseguire ripetutamente una istruzione un numero imprecisato di volte (ma non necessariamente almeno una volta) per imprecisato si intende imprecisato a priori, ovvero non determinabile in modo elementare già immediatamente prima di iniziare a eseguire l istruzione ripetitiva 44
45 Uso dell istruzione ripetitiva do-while L istruzione do-while viene solitamente utilizzata per eseguire ripetutamente una istruzione almeno una volta e un numero imprecisato di volte 45
46 Esempio Calcola il numero di cifre nella rappresentazione decimale di un numero naturale n dato bisogna contare quante volte è possibile dividere n per dieci (divisione intera) fino ad ottenere zero ad esempio, 13023/ /10 130/10 13/10 1/ è formato da cinque cifre come caso particolare, 0/ è formato da una cifra Descrizione informale inizialmente il numero di cifre c vale zero dividi n per dieci e incrementa c fino a quando n non vale zero 46
47 Esempio Schema della soluzione... calcola il numero di cifre di n... int c; // numero di cifre di n /* conta il numero di volte c * che puoi dividere n per dieci */ c = 0; /* dividi ripetutamente n per dieci * finché non diventa zero */ finché n non diventa zero { n = n/10; c++; }... il numero di cifre è c... 47
48 Esercizo: alto-basso Scrivere una applicazione AltoBasso che realizza il gioco indovina che numero ho pensato, descritto come segue inizialmente, l applicazione sceglie un numero casuale intero compreso tra 1 e 100, e poi chiede all utente di indovinare il numero scelto dopo ciascun tentativo, l applicazione deve segnalare se la risposta data dall utente è giusta, oppure è maggiore (alto!) oppure è minore (basso!) rispetto al numero scelto l applicazione deve continuare a chiedere numeri all utente fino a che questi non abbia dato la risposta corretta, oppure abbia scelto di rinunciare ad indovinare (digitando il numero 0) se l utente indovina il numero scelto, l applicazione deve congratularsi con l utente, visualizzando anche il numero di tentativi fatti dall utente 48
49 alto-basso Ad esempio, se il numero scelto dal calcolatore fosse 31, l interazione tra applicazione e utente potrebbe essere la seguente Ho pensato un numero intero compreso tra 1 e 100. Indovina che numero ho pensato: è troppo alto. Indovina che numero ho pensato: è troppo basso. Indovina che numero ho pensato: è troppo alto. Indovina che numero ho pensato: 31 Bravo! Hai indovinato facendo 4 tentativi! 49
50 Errori comuni Ciclo infinito Per ciclo infinito si intende l esecuzione di una istruzione ripetitiva che non termina sono possibili due casi Errore di uno le variabili controllate nella condizione dell istruzione ripetitiva non vengono modificate o vengono modificate male è sbagliata la condizione dell istruzione ripetitiva il corpo di una istruzione ripetitiva viene eseguito una volta di più o una volta di meno 50
51 Mancata modifica della variabile di controllo Visualizza sullo schermo i numeri naturali minori di n i = 0; while (i<n) { System.out.print(i + " "); // manca l'incremento di i } while (i<n) System.out.print(i + " "); i++; // non appartiene al corpo del while soluzione: bisogna definire un blocco while (i<n); { System.out.print(i + " "); i++; } c è l istruzione vuota 51
52 Errore nella condizione dell istruzione ripetitiva Visualizza sullo schermo i numeri naturali dispari minori di n i = 1; while (i!=n) { System.out.print(i + " "); i = i+2; } in teoria, non termina se n è pari oppure è minore di zero nelle condizioni delle istruzioni ripetitive si consiglia di usare gli operatori di uguaglianza == e!= solo con molta attenzione è preferibile usare gli altri operatori relazionali i = 1; while (i<n) { System.out.print(i + " "); i = i+2; } 52
53 Errore di uno Un errore di uno si verifica se il corpo dell istruzione ripetitiva viene eseguito una volta di più o una volta di meno del necessario tipicamente avviene per la prima o l ultima ripetizione ad esempio, nei seguenti frammenti di codice il corpo dell istruzione ripetitiva dovrebbe essere eseguito 10 volte for (i=1; i<10; i++) {... // sbagliato, i varia tra 1 e 9 } for (i=0; i<=10; i++) {... // sbagliato, i varia tra 0 e 10 } for (i=0; i<10; i++) {... // ok, i varia tra 0 e 9 } for (i=1; i<=10; i++) {... // ok, i varia tra 1 e 10 } 53
54 Errore di uno Errori di questo tipo possono causare errori logici... calcola le occorrenze di car in s... occ = 0; for (i=1; i<s.length(); i++) if (s.charat(i)==car) occ++;... il numero di occorrenze di car in s è occ... Oppure errori di semantica dinamica... calcola le occorrenze di car in s... occ = 0; for (i=0; i<=s.length(); i++) if (s.charat(i)==car) occ++;... il numero di occorrenze di car in s è occ... 54
55 Interruzione forzata: istruzioni non strutturate Java fornisce alcune istruzioni che permettono di forzare la terminazione dell esecuzione di una istruzione ripetitiva oppure una esecuzione del suo corpo istruzioni break, continue L istruzione break, scritta nel corpo di una istruzione ripetitiva, quando viene eseguita causa la terminazione dell esecuzione dell istruzione ripetitiva che la contiene L istruzione continue, scritta nel corpo di una istruzione ripetitiva, quando viene eseguita causa la terminazione dell esecuzione del corpo dell istruzione ripetitiva che la contiene 55
56 Uso delle istruzioni break e continue L uso delle istruzioni break e continue può essere sempre evitato introducendo delle opportune istruzioni condizionali e/o modificando la struttura dell istruzione ripetitiva Per questo motivo, viene adottata la convenzione di non utilizzare le istruzioni break e continue 56
57 Cosa abbiamo imparato Sintassi e semantica delle istruzioni Condizionali (if-else) Blocco Sintassi e semantica delle istruzioni ripetitive while, for, do-while Ogni istruzione può contenere nel suo corpo ogni altra istruzione Esistenza di istruzioni che possono terminare in modo anomalo l esecuzione di un ciclo 57
58 Riferimenti al libro di testo Per lo studio di questi argomenti si fa riferimento al libro di testo, e in particolare al Capitoli 13 e 14 58
Istruzioni Condizionali
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 10 Istruzioni Condizionali Carla Limongelli Novembre 2011 http://www.dia.uniroma3.it/~java/fondinf/ Istruzioni condizionali 1 Contenuti
DettagliIstruzioni Condizionali
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 6 Istruzioni Condizionali Carla Limongelli Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Istruzioni condizionali
DettagliUniversità degli studi Roma Tre. linguaggio Java. A cura di A. Orlandini. Linguaggi: Sintassi e Semantica - Il. Il linguaggio Java
Università degli studi Roma Tre Linguaggi: Sintassi e Semantica Il A cura di A. Orlandini 1 Obiettivi Distinguere la sintassi dalla semantica di un linguaggio Conoscere le convenzioni del meta-linguaggio
DettagliCapitolo 16 Iterazione
Capitolo 16 Accesso a sequenze I problemi esaminati in questo capitolo hanno lo scopo di accedere ed elaborare delle sequenze sequenze immesse dall utente lette dalla tastiera di lunghezza nota con un
DettagliIterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E07. C. Limongelli Novembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E07 Iterazione C. Limongelli Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Iterazione 1 Contenuti Si vogliono formalizzare
DettagliIterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E06. C. Limongelli Dicembre 2011
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E06 C. Limongelli Dicembre 2011 1 Contenuti q Si vogliono formalizzare diverse tecniche per la risoluzione di problemi di: Accumulazione
DettagliIng. Lorenzo Vismara
Ing. Lorenzo Vismara ! "# #!$#%&# '(!)&!*)&#*$# +!, +$-.(( #!((%&#, #!& %&) /$#01&! 0#( 3452 $ 6#( 1 2 &## #!7 #89): #;##( 1? )#&)< $9): #@82 #)AA)#&#&$( #7)& @B && ##@A&#C 7 $C#&7 @B A&#)@#7&#
DettagliPROGRAMMAZIONE STRUTTURATA
PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:
DettagliStrutture di Controllo
Strutture di Controllo Istruzioni condizionali e cicli http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Introduzione Fino ad ora, il nostro
DettagliCorso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 18. Iterazione. Maggio Iterazione
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 18 Maggio 2010 1 Contenuti Si vogliono formalizzare diverse tecniche per la risoluzione di problemi di: Accumulazione Conteggio Verifica
DettagliEsempi di programmi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E01. A. Miola Settembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E01 Esempi di programmi A. Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di programmi - 1 1 Contenuti
DettagliCorso di Laurea Ingegneria Elementi di Informatica. Iterazione. C. Limongelli. Iterazione
Corso di Laurea Ingegneria Elementi di Informatica C. Limongelli 1 Contenuti Si vogliono formalizzare diverse tecniche per la risoluzione di problemi di: Accumulazione Conteggio Verifica esistenziale Verifica
DettagliDall analisi alla codifica (1)
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 09 Dall analisi alla codifica (1) Aprile 2010 Dall'analisi alla codifica (1) 1 Contenuti... Problemi e algoritmi comprensione del problema
DettagliIstruzioni di Controllo in C. Emilio Di Giacomo
Istruzioni di Controllo in C Emilio Di Giacomo Limite delle istruzioni viste L insieme delle istruzioni che abbiamo visto fino ad ora consiste per lo più di: dichiarazioni e assegnazioni di variabili espressioni
DettagliIterazione (introduzione)
Fondamenti di informatica Oggetti e Java (introduzione) Capitolo 17 (estratto) ottobre 2015 1 Contenuti Accesso a sequenze Accumulazione Conteggio Altre aggregazioni Verifica esistenziale Verifica universale
DettagliIstruzioni di ripetizione in Java 1
in Java Corso di laurea in Informatica Le istruzioni di ripetizione consentono di eseguire molte volte la stessa Si chiamano anche cicli Come le istruzioni condizionali, i cicli sono controllati da espressioni
DettagliUnità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso
Unità Didattica 2 Linguaggio C Espressioni, Operatori e Strutture linguistiche per il controllo del flusso 1 Espressioni e assegnazioni Le espressioni sono definite dalla grammatica: espressione = variabile
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 3: Istruzioni ed operatori booleani. Vittorio Scarano Corso di Laurea in Informatica Università di Salerno Soluzioni agli esercizi Istruzioni (statement) semplici e di controllo
DettagliPaolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09
Linguaggi procedurali Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali, Paolo Bison, FI08, 2008-09-29 p.1 Linguaggi procedurali classe
DettagliIstruzioni di controllo. Walter Didimo
Istruzioni di controllo Walter Didimo Limite delle istruzioni viste L insieme delle istruzioni che abbiamo visto fino ad ora consiste per lo più di: dichiarazioni e assegnazioni di variabili invocazione
Dettagliosservazione: 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
Esempio: Leggere due interi positivi e calcolarne il massimo comun divisore. MCD(12, 8) = 4 MCD(12, 6) = 6 MCD(12, 7) = 1 Sfruttando direttamente la definizione di MCD osservazione: 1 MCD(m,n) min(m,n)
DettagliRappresentazione degli algoritmi
Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti
DettagliPaolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova
Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice, Paolo Bison, FI06, 2007-01-10 p.1 Pseudo codice linguaggio testuale mix di linguaggio naturale ed elementi
DettagliIstruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliProgrammazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario La ricorsione Metodi ricorsivi Esercizi proposti 16/01/2013 2 La ricorsione In Java ogni metodo può chiamare anche se stesso,
DettagliIterazione determinata e indeterminata
Iterazione determinata e indeterminata Le istruzioni iterative permettono di ripetere determinate azioni più volte: un numero di volte fissato = iterazione determinata, Esempio: fai un giro del parco di
DettagliLe strutture di controllo in C++
Le strutture di controllo in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi di Napoli
DettagliLezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione
Lezione 5 e 6 - Concetto di blocco - Controllo del flusso di un programma - Costrutti per la scelta if e switch - Costrutti while e for - Operatori in C Fabio Scotti (2004-2009) Laboratorio di programmazione
DettagliDott. R. Gori, Dott. A. Rama INFORMATICA 242AA a.a. 2011/12 pag. 1. Le istruzioni iterative permettono di ripetere determinate azioni più volte:
Leggere 5 interi, calcolarne la somma e stamparli. Variante non accettabile: 5 variabili, 5 istruzioni di lettura, 5... int i1, i2, i3, i4, i5; scanf("%d", &i1):... scanf("%d", &i5); printf("%d", i1 +
DettagliCast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double
Il cast Cast implicito Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto Per esempio: byte short int long float double int x = 10; float f; f = x; Il valore di
DettagliLinguaggio C++ 5. Strutture cicliche
2009-2010 Ingegneria Aerospaziale Prof. A. Palomba - Elementi di Informatica (E-Z) Linguaggio C++ 5 Strutture cicliche Linguaggio C++ 5 1 Strutture cicliche Utilizzate per ripetere un certo numero di volte
DettagliProgrammazione C Massimo Callisto De Donato
Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE
DettagliIstruzioni iterative. Istruzioni iterative
Istruzioni iterative Esempio: Leggere 5 interi, calcolarne la somma e stamparli. Variante non accettabile: 5 variabili, 5 istruzioni di lettura, 5... int i1, i2, i3, i4, i5; scanf("%d", &i1):... scanf("%d",
DettagliLinguaggio C Strutture di controllo
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C Strutture di controllo 2001 Pier Luca Montessoro - Davide
DettagliErrori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente
DettagliCorso di Informatica
Corso di Informatica Modulo T1 2-Iterazione 1 Prerequisiti Salto condizionato Salto incondizionato Espressione logica 2 1 Introduzione In alcuni casi si presenta la necessità di eseguire un ciclo, ossia
DettagliIntroduzione al Linguaggio C
Introduzione al Linguaggio C Controllo di Flusso Daniele Pighin March 2009 Daniele Pighin Introduzione al Linguaggio C 1/19 Outline Introduzione Branching: if Il ciclo while Il ciclo for break e continue
DettagliLe strutture di controllo
INFORMATICA B Ingegneria Elettrica Le strutture di controllo Selezione un esempio introduttivo Si disegni il diagramma di flusso di un algoritmo che chiede all utente un valore intero e visualizza il suo
DettagliRisoluzione di un problema
Algoritmi Risoluzione di un problema Descrizione di un problema! Individuazione di un ALGORITMO! Metodo risolutivo (progetto) Introduzione 2 Algoritmo Sequenza finita di mosse che risolve in un tempo finito
DettagliIL COSTRUTTO ITERAZIONE
IL COSTRUTTO ITERAZIONE Il costrutto iterazione Consente di ripetere una operazione elementare o un blocco di operazioni. Tipologie di iterazione Iterazione definita Iterazione condizionata Tipologie di
DettagliISTRUZIONI ISTRUZIONI SEMPLICI
ISTRUZIONI istruzioni azioni modifica permanente dello stato interno strutture di controllo ::= ::= ::=
DettagliAnalisi strutturata 1
Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata
DettagliProblemi, algoritmi e oggetti
Fondamenti di informatica Oggetti e Java Luca Cabibbo Capitolo 5 Marzo 2007 1 Fondamenti di informatica: Oggetti e Jav Contenuti... Problemi e algoritmi comprensione del problema identificazione di un
DettagliIstruzioni iterative (o cicliche)
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Istruzioni iterative (o cicliche) Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria
DettagliSTRUTTURE DI CONTROLLO DEL C++
STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto
DettagliPer gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.
Fondamenti di Informatica - A. Fantechi Raccolta di esercizi Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.
DettagliFor e do. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E04 Esempi di algoritmi e programmi C. Limongelli - A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi
DettagliCostrutti iterativi. Utilizzo dei costrutti iterativi
Costrutti iterativi Utilizzo dei costrutti iterativi Costrutti iterativi (1/3) I costrutti iterativi permettono di eseguire ripetutamente del codice Il linguaggio Java mette a disposizione tre costrutti
DettagliPROGRAMMAZIONE: Le strutture di controllo
PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l
DettagliLaboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
Dettagliosservazione: 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
Esempio: Leggere due interi positivi e calcolarne il massimo comun divisore. MCD(12, 8) = 4 MCD(12, 6) = 6 MCD(12, 7) = 1 Sfruttando direttamente la definizione di MCD osservazione: 1 MCD(m,n) min(m,n)
DettagliStrutture di controllo
Dipartimento di Ingegneria dell'informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria ivile e Ambientale MATLAB: le strutture di controllo If, while, for, do until
DettagliCostrutti di iterazione
Costrutti di iterazione Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2017 2018 Iterazione Data un espressione logica e un blocco di attività
DettagliMatlab. Istruzioni condizionali, cicli for e cicli while.
Matlab. Istruzioni condizionali, cicli for e cicli while. Alvise Sommariva Università degli Studi di Padova Dipartimento di Matematica 17 marzo 2016 Alvise Sommariva Introduzione 1/ 18 Introduzione Il
DettagliLab 04 Programmazione Strutturata"
Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 04 Programmazione Strutturata" Lab04 1 Valutazione in cortocircuito (1)" In C, le espressioni booleane sono valutate
DettagliIntroduzione alla programmazione
Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste
DettagliLinguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»
Linguaggio Testuale E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Delle volte viene chiamato metalinguaggio, e l algoritmo scritto tramite
Dettagliprof. P. Mancarella Dip.to Informatica INFORMATICA 1 a.a. 07/08 pag. 170
Istruzioni condizionali Esempio: Dati tre valori che rappresentano le lunghezze dei lati di un triangolo, stabilire se si tratti di un triangolo equilatero, isoscele o scaleno. Algoritmo: determina tipo
DettagliLinguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
DettagliFor e do. Parte 4. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliCostrutti di Programmazione Strutturata. Informatica 1 / 22
Costrutti di Programmazione Strutturata Informatica 1 / 22 Costrutti di Base Ricordi? Un algoritmo è detto strutturato se usa solo Sequenze di istruzioni Selezioni (se predicato allora fai istruzioni altrimenti
DettagliIntroduzione agli Algoritmi
Introduzione agli Algoritmi Informatica Sara Zuppiroli A.A. 2012-2013 Informatica () Introduzione agli Algoritmi A.A. 2012-2013 1 / 25 Risoluzione dei problemi Dalla descrizione del problema all individuazione
DettagliISTRUZIONI. Le strutture di controllo permettono di aggregare istruzioni semplici in istruzioni più complesse.
ISTRUZIONI Le istruzioni esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno del programma o del mondo circostante. Le strutture di controllo permettono di
DettagliInformatica 2 modulo C Massimo Callisto De Donato
Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Informatica 2 modulo C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE
DettagliDiagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto
Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra
DettagliDall analisi alla codifica (2)
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 09 Dall analisi alla codifica (2) Dall analisi alla codifica (2) 1 Contenuti Problemi di ingresso e uscita - esercizi Lunghezza di una
DettagliINFORMATICA. Strutture condizionali
INFORMATICA Strutture condizionali Strutture condizionali Sono le istruzioni che rappresentano il ben noto costrutto IF THEN ELSE della programmazione strutturata. In C, come peraltro in tutti gli altri
DettagliProgrammazione in Java (I modulo)
Programmazione in Java (I modulo) Lezione 7 Iterazioni nei programmi:definite e indefinite Tre costrutti: While Do...While For Esempi Istruzioni di iterazione Le istruzioni iterative permettono di ripetere
DettagliINFORMATICA. Strutture iterative
INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale
DettagliCORSO DI PROGRAMMAZIONE
ISTITUTO TECNICO INDUSTRIALE G. M. ANGIOY SASSARI CORSO DI PROGRAMMAZIONE INTRODUZIONE ALLE ISTRUZIONI ITERATIVE DISPENSA 03.01 03-01_Iterazioni_[ver_15] Questa dispensa è rilasciata sotto la licenza Creative
DettagliLinguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin
Linguaggio C strutture di controllo: strutture iterative Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Strutture iterative
DettagliCompitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A
Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare
DettagliEsempi comparati while, do...while
Esempi comparati while, do...while Algoritmo. - inizializza Somma a zero - finchè la risposta è "continuazione" - visualizza messaggio - acquisisci un numero I - aggiungi I a Somma - domanda se continuare
Dettagli<istruzione> ::= <istruzione-semplice> <istruzione> ::= <istruzione-di-controllo> <istruzione-semplice> ::= <espressione> ;
ISTRUZIONI Le istruzioni esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno del programma o del mondo circostante. Le strutture di controllo permettono di
Dettagli<istruzione> ::= <istruzione-semplice> <istruzione> ::= <istruzione-di-controllo> <istruzione-semplice> ::= <espressione> ;
ISTRUZIONI Le istruzioni esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno del programma o del mondo circostante. Le strutture di controllo permettono di
DettagliSviluppo di programmi
Sviluppo di programmi FASE 1: Dare un nome al problema partendo dall analisi del problema FASE 2: Scrivere la specifica funzionale FASE 3: Scrittura dell algoritmo FASE 3.1: Introduzione delle variabili
DettagliIterazione indeterminata
Iterazione indeterminata In alcuni casi il numero di iterazioni da effettuare non è noto prima di iniziare il ciclo, perché dipende dal verificarsi di una condizione. Esempio: Leggere una sequenza di interi
DettagliLaboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2014/2015
Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.it AA 2014/2015 Ambiente di test Cercare PHP online per avere un interprete PHP Assegnamento
DettagliJava SE 7. Strutture di programmazione (2)
Java SE 7 Strutture di programmazione (2) diegozabot@yahoo.it ursula.castaldo@gmail.com Casting (1) E' l'operazione che realizza la conversione di tipo tra oggetti e tra tipi primitivi. E' un'operazione
DettagliAssegnazione di una variabile
Assegnazione di una variabile Per scrivere un valore dentro una variabile si usa l operatore di assegnazione, che è rappresentato dal simbolo =. Quindi, se scrivo int a; a = 12; assegno alla variabile
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Strutture di Controllo Parte 2 Istruzioni Condizionali G. Mecca M. Samela Università della Basilicata Istruzioni Condizionali >> Sommario Sommario Introduzione
DettagliLe basi del linguaggio Java
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del
DettagliIL COSTRUTTO ITERAZIONE 2
IL COSTRUTTO ITERAZIONE 2 Il costrutto iterativo e la potenza di calcolo Il costrutto iterativo (detto anche ciclo) viene utilizzato quando un istruzione (o un gruppo di istruzioni) deve essere eseguita
DettagliI cicli. Iterazioni Calcolo della media Istruzioni break e continue
I cicli Iterazioni Calcolo della media Istruzioni break e continue Ciclo while p Vero A while() ; Falso Esegue una istruzione mentre una condizione è verificata Programmazione
DettagliLaboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2015/2016
Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.it AA 2015/2016 Ambiente di test PHP online per avere un interprete PHP Php Online PHP Tester
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 3 Analisi dettagliata di un programma /* commento */ Possono estendersi su più linee apparire in qualsiasi parte del programma. Alternativamente
DettagliCome scrivere bene codice? (1 di 1)
DIAGRMMI DI FLUSSO Come scrivere bene codice? (1 di 1) Prima di iniziare a scrivere un programma: Acquisire profonda comprensione del problema; Progettare un approccio per la risoluzione del problema.
DettagliSTRUTTURE DI CONTROLLO IN C. Docente: Giorgio Giacinto AA 2009/2010
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
DettagliCorrettezza (prima parte)
Fondamenti di informatica Oggetti e Java (prima parte) Capitolo 16 ottobre 2015 1 Contenuti Introduzione alla correttezza dei programmi specifica di un programma correttezza di un programma verifica di
DettagliFondamenti di Informatica A. A. 2018/19
Fondamenti di Informatica Prof. Marco Lombardi A. A. 2018/19 AlgoBuild: Strutture Iterative e Selettive OUTLINE Blocco condizionale (Struttura selettiva IF - IF/ELSE) Esempi Cicli a condizione iniziale
DettagliIstruzioni di controllo: SEQUENZA
Istruzioni di controllo: SEQUENZA Negli esempi visti in precedenza gli algoritmi sono stati descritti come sequenze di passi elementari del tipo Passo 1. azione 1 Passo 2. azione 2... Abbiamo utilizzato
DettagliIstruzioni di selezione in Java 1
Ordine di esecuzione Istruzioni di selezione in Java Corso di laurea in Comunicazione digitale Nei metodi l ordine di esecuzione delle istruzioni è sequenziale se non specificato altrimenti Alcune istruzioni
DettagliUn esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);
Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i
Dettagli