Progetto di cicli (1) Iterazione. Progetto di cicli (2) Scrivere cicli in un programma. I loop pattern che abbiamo visto. Progetto di cicli (3)
|
|
- Achille Pandolfi
- 6 anni fa
- Visualizzazioni
Transcript
1 4 Progetto di cicli (1) Iterazione La costruzione dei cicli. Strutture tipiche. Ciclo for Il concetto di cortocircuito Gli statement break e continue Strategia: raffinamento di soluzioni approssimate. Cosa fare con problemi che non si adattano a un pattern? Esempio: costruire un metodo privato di una classe che dati due interi x e y calcola x y Passo1: Procedimento informale: come calcolarlo a mano? Risposta: moltiplicazione ripetuta: x y = 1 * x * x * x *... * x (y volte) Di conseguenza: start with 1 multiply by x repeatedly until y multiplications have been performed last result is answer Il resto dell approccio consiste nel trasformare questa intuizione in codice 2 5 Scrivere cicli in un programma Due approcci validi (1) Utilizzare un loop pattern (2) Abilità di costruire un ciclo quando nessun pattern è disponibile Sono necessari entrambi gli approcci: (1) non re-inventare ciò che già l acqua calda (2) potrebbero non esserci patterns disponibili necessità di costruire nuovi patterns Progetto di cicli (2) Passo 2: scelta e definizione delle variabili: Necessità di mantenere traccia di: Il valore dell ultima moltiplicazione Numero di moltiplicazioni effettuate Dichiariamo due variabili int count, // count == # of mults result; // result == 1 * x * x *... * x // (count times) // result == x ** k 3 6 I loop pattern che abbiamo visto READ/PROCESS: try to read item while (read was successful) { process most recent item read try to read another item Passo 3: scheletro del codice Progetto di cicli (3) // count == # of mults while (condition) // result == 1 * x * x *... * x (count times) Passo 4: Cosa vogliamo che succeda dopo la fine del while? Per rispondere a questa domanda cruciale è necessario pensare in termini dei valori delle variabili e delle operazioni di I/O
2 7 10 Progetto di cicli (4) Alla fine del ciclo deve essere count == y Questo deve essere garantito dalla condizione del while while (count!= y) // al termine del ciclo risulta count == y Progetto di cicli (7) Completamento del corpo del ciclo Intuizione della procedura informale: dovremmo effettuare una moltiplicazione ad ogni iterazione Per definizione count conta le moltiplicazioni quindi se incrementiamo count dobbiamo anche effettuare una moltiplicazione Per definizione result == x ** count Quindi se count è incrementato di 1, allora dobbiamo moltiplicare result per x Di conseguenza il corpo del ciclo sarà: result *= x; Bisogna inizializzare result a 1 prima del ciclo while Infatti essendo prima del ciclo count == 0, sarà result == x Progetto di cicli (5) Quando l esecuzione raggiunge l istruzione while, le variabili che appaiono nella sua condizione devono avere dei valori Prima del ciclo non ci sono state ancora moltiplicazioni, per cui count dovrebbe essere 0 y invece ha già un valore count = 0; // inizializzazione di count while (count!= y) Metodo completo count = 0; result = 1; while (count!= y) { result * = x; Progetto di cicli (6) Bisogna garantire la terminazione del ciclo Assicurarsi che la condizione del ciclo diventi falsa Intuitivamente, bisogna incrementare di 1 count nel corpo del ciclo count = 0; // inizializzazione di count while (count!= y) { rest of 9 Un altro esempio: la moltiplicazione (1) Supponiamo non sia disponibile un operatore per la moltiplicazione Costruiamo un metodo private che faccia questo private int multiply(int x, int y) { // y >= 0, restituisce x * y Passo 1: procedura informale Intuition: una moltiplicazione è un addizione ripetuta x * y = 0 + x + x x (y times) Quindi partiamo da 0 e aggiungiamo x finché non completiamo le y addizioni 12
3 Un altro esempio: la moltiplicazione (2) Passo 2: Scegliere e definire le variabili int count, // count == # of adds done result; // result == 0 + x + x x // (count times) // result == x * y Passo 3: Scheletro del codice while (condition ) { 13 Un altro esempio: la moltiplicazione (5) Passo 7: Completare il corpo del ciclo result è definito come 0 + x + x x (count times) incrementiamo count? Allora dobbiamo aggiungere x! Passo 8: Altra inizializzazione Inizialmente count è 0, quindi (per definizione) result deve essere 0 count = 0; result = 0; while ( count!= y ) { result += x; // altra inizializzazione // completa il corpo del ciclo 16 Un altro esempio: la moltiplicazione (3) Passo 4: Condizione del while termina quando result == x * y; ossia quando count == y Per garantire che al termine de ciclo sia count == y, la condizione del ciclo deve essere k!= y while ( count!= y ) { // al termine sarà count == y 14 private int multiply(int x, int y) { count = 0; result = 0; while ( count!= y ) { result += x; Metodo completo 17 Un altro esempio: la moltiplicazione (4) Passo 5: Inizializzazione Inizialmente non ci sono addizioni, per cui count deve essere 0 Passo 6: Garantire la terminazione Incrementare count garantisce che prima o poi count raggiungerà y count = 0; // inizializzazione while ( count!= y ) { rest of // garantisce la terminazione 15 Metodologia per il progetto di cicli Meglio eseguire i passi da 1 a 4 in ordine I passi da 5 a 8 possono essere eseguiti in qualsiasi ordine I passi 1 e 2 sono i PIU cruciali Forniscono la guida e la fase per i passi successivi Perché definire la condizione del ciclo prima del corpo del ciclo? Può essere definita dal nostro obiettivo Il suo effetto è più facilmente analizzabile 18
4 Un terzo esempio: stampa degli stipendi Dato il seguente input: informazioni che definiscono il dipendente 1 (name, wage rate) ore lavorate dal dipendente 1 informazioni che definiscono il dipendente 2 (name, wage rate) ore lavorate dal dipendente 2 Stampa lo stipendio di ogni dipendente Si assuma l esistenza di una classe Employee con i metodi: readin getname calcpay 19 Inizializzazione e completamento del Inizializzazione e garanzia di terminazione: emp = Employee.readIn(br); while (emp!=null) { rest of emp = Employee.readIn(br); Completamento del : emp = Employee.readIn(br); while (emp!=null) { hours =Integer.parseInt(br.readLine()); int pay = emp.calcpay(hours); System.out.println(pay); emp = Employee.readIn(br); Procedimento informale e variabili Procedimento informale: eseguire ripetutamente, finché ci sono dati da leggere, le seguenti istruzioni leggere i dati del dipendente leggere le ore lavorate calcolare lo stipendio risultante Stamparlo Definizione di variabili Employee emp; // refers to most recently read Employee object int hours; // the number of hours worked // by the most recently read employee Contatori: Altri schemi di cicli (1) int countsomething = 0; // # of somethings encountered so far while () { if (Something) countsomething++; Scheletro del codice e condizione del while while (condition) { // no more data to read Quale è la negazione di "no more data to read"??? Se la nostra lettura è della forma: emp = Employee.readIn(br); allora quando emp == null sappiamo che non ci sono più dati Quindi: while (emp!=null) { // no more data to read 21 Cicli a conteggio Altri schemi di cicli (2) int countsomething = 0; // # of somethings encountered so far while (countsomething!= desiredvalue) { if ( Something) countsomething++; 24
5 25 28 Altri schemi di cicli (3) Ciclo a conteggio incondizionato si contano tutti gli elementi considerati (incondizionatamente) int count = 0; // # of somethings encountered so far while (count!= desiredvalue) { Altri schemi di cicli (5) Oggetti con valori estremi: Dato un insieme di oggetti con una relazione d ordine, trovare l oggetto che è estremo (minimo o massimo) SomeType extreme; // extreme == reference to object that is most // extreme among set of objects encountered // so far OR is null if that set is empty while () { if (extreme == null current object is more extreme than extreme) extreme = current object Ciclo a conteggio incondizionato: un esempio Intestazione: Il primo dato rappresenta il numero di data items da elaborare int header, numread=0; read header while (numread!= header) { read data process data numread++; 26 Altri schemi di cicli (6) Estremi tra valori di dati primitivi: dato un insieme di valori, cercare il minimo o il massimo boolean foundextreme; // true iff extreme has been found SomeType extreme; // extreme == most extreme value seen so far // if foundextreme is true; otherwise its value is meaningless extreme = some arbitrary and meaningless value; foundextreme = false; while () { if (!foundextreme current value is more extreme than extreme) { extreme = current value foundextreme = true; 29 Altri schemi di cicli (4) Accumulatore: Data una operazione arbitraria (come add, multiply) Applicare l operazione ad un insieme di valori per ottenere il totale SomeType accumulator; // accumulator == application of OPERATION // to set of objects or values encountered so far while () { accumulator = apply OPERATION to both accumulator and next object or value 27 Estremi tra valori di dati primitivi: un esempio boolean foundextreme; int largest, x; Stampare l intero più grande foundextreme = false; largest = 0; String line = br.readline(); while (line!= null) { x = Integer.parseInt(line); if(!foundextreme x > largest) { largest = x; foundextreme = true; line = br.readline(); System.out.println( Largest integeris, largest); 30
6 int largest, x; largest = -1; Estremi in un sottoinsieme di valori di dati primitivi // -1 è un valore proibito se supponiamo che i // valori letti sono tutti non negativi String line = br.readline(); while (line!= null) { x = Integer.parseInt(line); if(x > largest) largest = x; line = br.readline(); System.out.println( Largest integer is, largest); 31 Intestazione: Il ciclo for: un esempio int lines; // == number of lines read & printed so far int header; // == number of lines available from input header = Integer.parseInt(br.readLine()); for ( lines=0; lines!= header; lines++) System.out.println(br.readLine()); Schema per i tipi di dati primitivi int largest, x; String line; largest = Integer.parseInt(br.readLine()); // primo intero // br contiene almeno una linea while (line!= null) { x = Integer.parseInt(line); if(x > largest) largest = x; line = br.readline(); System.out.println( Largest integer is, largest); Il ciclo for: flessibilità for (initialization; loop condition; increment) Si possono omettere ciascuna delle tre parti che compongono l intestazione del for BISOGNA mantenere i punti e virgola Le inizializzazioni possono essere assegnamenti multipli separati da virgole Gli incrementi possono essere incrementi multipli separati da virgole ESEMPIO // print table of powers of 2 for (i=0, powof2=1; i<10; i++, powof2*=2) System.out.println("2 to the + i + " is " + pow2); Il ciclo for Supporto esplicito per cicli a conteggio: for (initialization; loop condition; increment) Notare i separatori (punto e virgola) Inizializzazione: tipicamente un assegnamento singolo Equivalente a: initialization; while (loop condition) { increment; Valutazioni corto-circuito Le condizioni composte sono valutate da sinistra a destra La valutazione si interrompe quando il risultato è già noto Esempio: atbat!=0 && hits/atbat>0.300 Supponiamo atbat è zero: atbat!=0 è valutato a false A questo punto il risultato è noto: l intera condizione composta sarà false La valutazione si arresta: hits/atbat>0.300 non sarà valutata!
7 37 40 Valutazioni corto-circuito: altri esempi Se si tratta di un OR, allora se il primo operando è true, il secondo non viene valutato: person.age()>=17 person.accompaniedbyadult() Un altro esempio (dall esempio estremi tra oggetti ) if (longest==null s.length()>longest.length()) longest = s; L istruzione continue Singola keyword e un punto e virgola: continue; Termina l esecuzione corrente del corpo del ciclo e va immediatamente alla condizione di valutazione Esempio: for (i=0; i<100; i++) { if (i%2==1) continue; if (!verycomplicatedcondition(i)) continue; process i Vantaggio(?): riduce i livelli di nesting e le indentazioni L istruzione break Singola keyword e un punto e virgola: break; Termina l esecuzione di un ciclo immediatamente, esempio: int k=0; while (k!=5) { String s = infile.readline(); if (s==null) break; process s k++; // k==5 or s==null L istruzione continue: pericoli Consideriamo di voler leggere qualche stringa e elaborare solo quelle che soddisfano due condizioni: String s = keybd.readline(); while (s!=null) { if (!condition1(s)) continue; if (!condition2(s)) continue; process s s = keybd.readline(); Cosa è sbagliato? L istruzione break: semplicemente evitarla Il ciclo precedente può essere espresso come: int k=0; String s = infile.readline(); while (!(k==5 s==null)) { process s k++; s = infile.readline(); Con il break: La condizione di terminazione non è ovvia Il lettore deve costruire mentalmente una condizione di terminazione il OR Senza break: La condizione di terminazione è ovvia e si ottiene dalla condizione del while 39 Raffinamento di soluzioni imperfette Partire con la soluzione iniziale provvisoria, imperfetta o incompleta Migliorarla ripetutamente, finché non è sufficientemente buona Funziona con molti problemi di calcolo numerico! Richiede la capacità di: Costruire una soluzione iniziale provvisoria Prendere una soluzione provvisoria e migliorarla Determinare se una data soluzione provvisoria è sufficientemente buona 42
8 Raffinamento di soluzioni imperfette s = provisional solution while (! (s is good enough) ) s = improvement of s 43 Algoritmo di Newton: il codice Trovare la radice quadrata di x boolean iscloseenough(double x, double y, double precision) { return Math.abs(y*y-x) <= precision; // squareroot returns square root of x within the given precision private double squareroot(double x, double precision) { double y; y = x; while (!closeenough(x,y*y,precision)) y = (y+x/y)/2.0; return y; 46 Raffinamento di soluzioni imperfette... Condizione del while: determinare se la soluzione corrente è sufficientemente buona Inizializzazione: costruire una soluzione iniziale provvisoria Garantire la terminazione Migliorare la soluzione corrente Emittente Radiofonica (rivisitazione) WOLD è rimasto talmente soddisfatto della sua esperienza con un sistema computerizzato che ha deciso di automatizzare il suo programma pomeridiano la cui trovata consiste nel trasmettere segmenti senza pubblicità. Prima della trasmissione il DJ crea un file contenente le canzoni che desidera trasmettere durante un determinato segmento. Questo file è tratto dal file di libreria delle canzoni in cui i dati contengono anche la durata delle canzoni. L applicazione consiste nel chiedere al DJ di specificare la durata del segmento senza pubblicità. In seguito viene letta la lista delle canzoni e viene prodotto lo stampato e viene prodotto lo stampato della sequenza di canzoni in modo tale che la loro durata non sia inferiore al segmento Esempio: Algoritmo di Newton Trovare la radice quadrata di x: start with any number, g while (! (g 2 is close enough to x) ) g = average of g and x/g Idea di base: se g è più piccolo della radice quadrata allora x/g è più grande fai la media dei due Il punto importante: facendo questo ripetutamente si converge alla radice quadrata di x Emittente Radiofonica (rivisitazione) Viene chiesto al DJ di inserire una pubblicità almeno ogni N minuti. In altre parole, il segmento a una durata massima che NON si può superare.
Lavorare con più oggetti
Lavorare con più oggetti Lavorare con piu oggetti Iterazioni. Ciclo while 2 Processare più oggetti (1) Supponiamo di voler leggere e calcolare lo stipendio di più di un impiegato Al momento sappiamo come
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
DettagliEsercitazioni di Fondamenti Informatica - Modulo A 1
Esercitazioni di Fondamenti Informatica - Modulo A 1 Da MSDN: The while statement executes a statement or a block of statements until a specified expression evaluates to false while ( expression ) statement
DettagliCostrutti per il controllo del flusso di esecuzione
Costrutti per il controllo del flusso di esecuzione Fondamenti di informatica L-B Laboratorio Alessandro Falchi afalchi@deis.unibo.it Operatori (1) PRECEDENZA ASSOCIATIVITÀ OPERATORE TIPO/I DEGLI OPERANDI
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
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
DettagliCapitolo 3 Sviluppo di Programmi Strutturati
Capitolo 3 Sviluppo di Programmi Strutturati Introduzione Strutture di controllo If Selection Statement If Else Selection Statement While Repetition Statement Ripetizione Counter-Controlled Uso di una
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",
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
DettagliCorso di Laboratorio di Sistemi Operativi
Corso di Laboratorio di Sistemi Operativi Lezione 4 Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu Approfondimento su make http://http://capone.mtsu.edu/csdept/facilitiesandresources/make.htm
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
Dettagliprint((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript
Funzioni Funzioni predefinite della libreria matematica Funzioni disponibili: Math.sqrt(x) radice quadrata Math.log(x) logaritmo naturale in base e di x Math.abs(x) valore assoluto di x Math.ceil(x) arrotonda
DettagliCalcolare x n = x x x (n volte)
Calcolare x n = x x x (n volte) Abbiamo bisogno di: una variabile ris in cui ad ogni iterazione del ciclo si ha un risultato parziale, e che dopo l ultima iterazione contiene il risultato finale; una variabile
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
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
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliLaboratorio Progettazione Web Il linguaggio PHP Lezione 6. Andrea Marchetti IIT-CNR 2011/2012
Laboratorio Progettazione Web Il linguaggio PHP Lezione 6 Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012 Assegnamento L assegnamento ad una variabile è il classico variabile = valore;
DettagliCorso di Fondamenti di Programmazione canale E-O ... Un esempio per iniziare. printf) Altri cenni su printf() Esercizi 8. (printf(
Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Il controllo del programma in C DD Cap. 3, pp.91-130 Un esempio per iniziare /* calcolo di 8!*/ #define C 8 int i=1; int fatt=1; while
DettagliEsercitazione 3. Espressioni booleane I comandi if-else e while
Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if
DettagliEsercizi vari. Alberto Montresor. 19 Agosto, 2014
Esercizi vari Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle rispettive soluzioni
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à
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
DettagliVerifica parte IIB. Grafo di controllo. Criteri di selezione per test strutturali (white box) Test. Rif. Ghezzi et al
Verifica parte IIB Rif. Ghezzi et al. 6.3.4.1 Test In piccolo White box Black box Condizioni di confine Problema dell' Oracolo In grande Test di modulo Test di integrazione Test di Sistema Test di Accettazione
DettagliCorso di Fondamenti di Informatica Classi di istruzioni 2
Corso di Informatica Classi di istruzioni 2 Anno Accademico 2010/2011 Francesco Tortorella Strutture di controllo Caratteristica essenziale degli algoritmi è la possibilità di decidere le operazioni da
DettagliTipi di dato strutturati: Array
Tipi di dato strutturati: Array I dati visti finora sono: numeri (interi o razionali), booleani le stringhe (sequenze di caratteri) ma i dati manipolati nelle applicazioni reali sono spesso complessi (o
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
Dettagli6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliVARIABILI, ASSEGNAZIONE, DECISIONI
LEZIONE-TSQL-03 PROGRAMMAZIONE (VER02) PAG. 1 / 6 LEZIONE-TSQL-03 PROGRAMMAZIONE (VER02) T-SQL PROGRAMMAZIONE PARTE TERZA VARIABILI, ASSEGNAZIONE, DECISIONI Tratto da Gregory A. Larsen, http://www.databasejournal.com/features/mssql/article.php/3087431/t-sql-programming-part-1---defining-variables-and-if-logic.htm
DettagliI S T I T U T O T E C N I C O I N D U S T R I A L E S T A T A L E
I S T I T U T O T E C N I C O I N D U S T R I A L E S T A T A L E G u g l i e l m o M a r c o n i V e r o n a Dipartimento di Progetto didattico disciplinare per le classi terze della articolazione Anno
DettagliUniversità di Roma Tor Vergata L6-1. iterazione: struttura di controllo per ripetere più volte uno stesso comando
Università di Roma Tor Vergata L6-1 iterazione: struttura di controllo per ripetere più volte uno stesso comando comandi iterativi C++: while, do-while, for while: sintassi while (espressione) comando;
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
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
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)
DettagliCorso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione
Corso: Fondamenti di Informatica (Gruppo 2) a.a. 2017-18 Corsi di laurea: Ing. Settore Informazione Questionario a Risposte Multiple per auto-valutazione del Lab05 Domanda n. 1 Argomento: Iterazioni, array
DettagliBasi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi
Basi della programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Il concetto di variabile Uso delle variabili Dichiarazione Assegnamento Visualizzazione
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
DettagliFondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
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
DettagliA.A. 2006/2007 Laurea di Ingegneria Informatica. Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio
A.A. 2006/2007 Laurea di Ingegneria Informatica Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio Obbiettivi Acquisire familiarità con la nozione di oggetto Apprendere le proprietà
DettagliPROGRAMMAZIONE STRUTTURATA
PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:
DettagliCOMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI
COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.200.2005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Confronto di algoritmi Uno stesso problema può essere risolto in modi diversi,
DettagliLezione 6 programmazione in Java
Lezione 6 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Le costanti I vettori Cos è un vettore Come si usa I vari tipi di vettori Esempi
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
DettagliProgrammazione con il linguaggio LibreOffice Basic
Programmazione con il linguaggio LibreOffice Basic L ambiente di programmazione Il software LibreOffice possiede un ambiente di programmazione in linguaggio Basic, che consente di creare procedure software
DettagliExcel & VBA. Excel e Visual Basic for Application
Excel & VBA Excel e Visual Basic for Application Automazione Excel con VBA incorpora la tecnologia dell automazione (OLE automation) Excel dialoga con VBA attraverso un insieme di comandi detto libreria
DettagliCapitolo 5 - Funzioni
Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente
DettagliCosa si intende con stato
Il concetto di stato Cosa si intende con stato I una particolare configurazione delle informazioni di una macchina, che in qualche modo memorizza le condizioni in cui si trova, e che cambia nel tempo passando
DettagliISTRUZIONI DI ITERAZIONE
CHAPTER 6 CICLI 1 ISTRUZIONI DI ITERAZIONE Le istruzioni di iterazione sono usate per realizzare I cicli. Un ciclo è una istruzione il cui compito è di eseguire ripetutamente qualche altra istruzione (il
DettagliTipi di dato primitivi
Tipi di dato primitivi (oltre int) Tipi di dato primitivi int (già trattati) Valori logici (ricordati) Valori reali Valori carattere Informatica - A.A. 2009/2010 - Tipi di dato 2 1 Valori logici (il caso
DettagliLaboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013
Laboratorio Progettazione Web Le funzioni in PHP Angelica Lo Duca IIT-CNR angelica.loduca@iit.cnr.it 2012/2013 Funzioni Una funzione è una sequenza di istruzioni che implementano una specifica funzionalità
DettagliCorso di Algoritmi e Strutture Dati con Laboratorio. The JCF(continua): L interfaccia Map
Corso di Algoritmi e Strutture Dati con Laboratorio The JCF(continua): L interfaccia Map Unamappaè unaraccolta (oggetto che contiene elementi: es: array, oggetto di tipo Collection) in cui ogni elemento
DettagliLe etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j
L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):
DettagliAlgoritmi e basi del C Struttura di un programma
Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 17 Marzo 2015 Compitini Compitini di INFO: 24 Aprile 2015 4.15pm @ C.G.1 (Ed. 9) 21
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Le classi di istruzioni in C++ 1 Le classi di istruzioni in C++ SEQUENZIALI Statement semplice Statement composto CONDIZIONALI if < expr.> else switch case
Dettagli2. Algoritmi e Programmi
12 2. Algoritmi e Programmi Dato un problema, per arrivare ad un programma che lo risolva dobbiamo: individuare di cosa dispongo: gli input; definire cosa voglio ottenere: gli output; trovare un metodo
DettagliProgrammazione a blocchi. Algobuild Prof. Sergio Roselli
Programmazione a blocchi Algobuild Prof. Sergio Roselli Blocchi base Inizio programma I Fine programma F Input IN A Output Esecuzione OUT A A = 5 + 1 L interprete Algobuild Algobuildpermette di trascrivere
DettagliLE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve
LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione
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
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[]
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
DettagliIstruzioni di Controllo. Emilio Di Giacomo e Walter Didimo
Istruzioni di Controllo Emilio Di Giacomo e 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
DettagliLe Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Le Strutture di controllo Del Linguaggio C Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni STRUTTURE DI CONTROLLO PRIMITIVE SEQUENZA SELEZIONE (o scelta logica) ITERAZIONE NON PRIMITIVE
DettagliAlgoritmi e Strutture di Dati (3 a Ed.) String matching. Alan Bertossi, Alberto Montresor
Algoritmi e Strutture di Dati (3 a Ed.) String matching Alan Bertossi, Alberto Montresor STRING MATCHING. Date una stringa P di m caratteri (pattern) e una stringa T di n caratteri, con m n, trovare un
DettagliLa principale modalità di calcolo è l applicazione di funzioni
1 La principale modalità di calcolo è l applicazione di funzioni Nei linguaggi funzionali puri non esistono strutture di controllo predefinite per la realizzazione di cicli quali for, while, repeat Un
DettagliRichiami di Fondamenti di Informatica - 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 2 Richiami di Fondamenti di Informatica - 1 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Richiami di FdI-1
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
DettagliConfronti, equals. Operatori Relazionali, confronti Confronti fra Oggetti, ridefinizione di equals. Laboratorio di Programmazione - Luca Tesei
Confronti, equals Operatori Relazionali, confronti Confronti fra Oggetti, ridefinizione di equals 1 Operatori relazionali All interno delle parentesi tonde della condizione dell if è possibile, come abbiamo
DettagliProgrammazione in Java (I modulo)
Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto
DettagliIl linguaggio Python
Il linguaggio Python Capitolo 2 Variabili, Espressioni e Comandi Prof. Mauro Gaspari: gaspari@cs.unibo.it Il Linguaggio Python Python e' un linguaggio imperativo con alcune caratteristiche funzionali.
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
DettagliStringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
DettagliIterazioni. L istruzione while. while (condition) istruzione
Iterazioni L istruzione while while (condition) istruzione Ripete l esecuzione di istruzione fino a che la condizione resta vera while (balance < targetbalance) year++; double interest = balance * rate
DettagliStringhe. Prof. Lorenzo Porcelli
Stringhe Prof. Lorenzo Porcelli definizione Una stringa è un vettore di caratteri terminato dal carattere nullo \0. Il carattere nullo finale permette di determinare la lunghezza della stringa. char vet[32];
DettagliQualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
Dettagli3 Costrutti while, for e switch
Questa dispensa propone esercizi sulla scrittura di algoritmi, in linguaggio C, utili alla comprensione dei costrutti while, for e switch. I costrutti per costruire cicli in C sono il while, la variante
DettagliLaboratorio di Informatica
Laboratorio di Informatica Seconda lezione a Python Dottore Paolo Parisen Toldin - parisent@cs.unibo.it Dottoressa Sara Zuppiroli - sara.zuppiroli@unibo.it L'importanza di capire Perché non dobbiamo dichiarare
DettagliELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli
ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del
DettagliStrutture di controllo iterative
Capitolo 4 Strutture di controllo iterative ANDREA GINI Le strutture di controllo iterative permettono di impostare la ripetizione di un insieme di istruzioni per un determinato numero di volte. In Java
DettagliLABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO III Indice
LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 18.III.2015 VINCENZO MARRA Indice Parte 1. L algoritmo euclideo 3 Esercizio 1 3 L algoritmo euclideo
DettagliLaboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014
Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014 Damiano Macedonio Esercizio 1 Scrivere una funzione che riceve in ingresso un puntatore ad un array di interi e modifica tale array
DettagliInformatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica
Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,
DettagliAlgoritmi e soluzione di problemi
Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)
DettagliInformatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi
Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive
DettagliStatements: blocchi di istruzioni
Statements: blocchi di istruzioni Andrea Passerini passerini@disi.unitn.it Informatica Statements Descrizione Uno statement è un blocco di istruzioni semplici consistono di una singola riga. I tipi visti
Dettagli#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliIntroduzione all uso delle funzioni in C++
Introduzione all uso delle funzioni in C++ Roberto Basili University of Rome Tor Vergata, Department of Computer Science, Systems and Production, 00133 Roma (Italy), basili@info.uniroma2.it January 24,
DettagliAppunti di informatica. Lezione 10 anno accademico Mario Verdicchio
Appunti di informatica Lezione 10 anno accademico 2016-2017 Mario Verdicchio Esercizio Scrivere un programma che, data una sequenza di 10 interi (scelta dall utente), la ordini in ordine crescente Soluzione
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
DettagliFunzioni e moduli. Andrea Passerini Informatica. funzioni e moduli
Funzioni e moduli Andrea Passerini passerini@disi.unitn.it Informatica Funzioni nella programmazione Descrizione Una funzione è una sequenza di istruzioni cui viene dato un nome Questo permette di riutilizzare
DettagliMuoversi all interno di un Vector. Vector e Enumeration. Enumeration. Collezioni di oggetti: Vector. La classe Object. Aggiungere oggetti a un Vector
Muoversi all interno di un Vector 4 Vector e Enumeration Attraversare la collezione di oggetti e visitare (elaborare) ciascun elemento E un processo ripetitivo e quindi viene usata una struttura di ciclo
DettagliC espressioni condizionali
C espressioni condizionali Esiste un particolare operatore, detto operatore condizionale, che rappresenta un istruzione if else. estremamente compattata?: Supponiamo di voler inserire nella variabile intera
DettagliIL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input
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
DettagliProgrammazione in Python. Moreno Marzolla
Programmazione in Python Moreno Marzolla http://www.moreno.marzolla.name/ Copyright 2011, Moreno Marzolla (http://www.moreno.marzolla.name/teaching/labinf2011/) This work is licensed under the Creative
DettagliSomma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi
Somma di numeri floating point Algoritmi di moltiplicazione e divisione per numeri interi Standard IEEE754 " Standard IEEE754: Singola precisione (32 bit) si riescono a rappresentare numeri 2.0 10 2-38
DettagliStrutture di controllo iterative
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione Problema Scrivere un programma che acquisisca da standard input un intero
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
DettagliLaboratorio di Python (con Linux)
Indeterminata,,,... Università di Bologna 14, 16 marzo 2012 Sommario 1 2 3 4 5 Modularità Quando si deve fare un programma complicato è meglio suddividerlo in più parti. Per ridurre la complessità (più
Dettagli10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate
LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 10 STRUTTURE DI CONTROLLO REPEAT E WHILE Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II
Dettagli