La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Strutture di controllo

Presentazioni simili


Presentazione sul tema: "Strutture di controllo"— Transcript della presentazione:

1 Strutture di controllo
Diagrammi di flusso Programmazione strutturata Iterazioni parliamo delle strutture di controllo 07/12/2018 S. Masetta - Itis Torricelli (ME)

2 S. Masetta - Itis Torricelli (ME)
Diagrammi di flusso Per la descrizione degli algoritmi si utilizzano particolari rappresentazioni grafiche denominate diagrammi di flusso, schemi a blocchi o flowchart Questa descrizione costituisce un efficace strumento per la descrizione degli algoritmi, più valido di una esposizione di tipo discorsivo (troppo generica e ambigua) Qualsiasi algoritmo può essere decomposto in poche funzioni elementari Trasferimento dati Blocco operativo Blocco decisionale Inizio o fine Simbolo di connessione 07/12/2018 S. Masetta - Itis Torricelli (ME)

3 S. Masetta - Itis Torricelli (ME)
Diagrammi di flusso Inizio Fine 07/12/2018 S. Masetta - Itis Torricelli (ME)

4 Programmazione strutturata
La programmazione strutturata è una tecnica di programmazione che ha lo scopo di semplificare la struttura di un algoritmo disciplinando l'organizzazione di uno schema a blocchi In particolare prevede l'uso di un numero limitato di strutture di controllo fondamentali Struttura di controllo: flowchart parziale da assumere come modello di computazione, con un ingresso ed una uscita La programmazione strutturata vincola quindi l'utilizzo delle strutture di controllo, ma offre i seguenti vantaggi: rende possibile una progettazione di tipo Top-Down permette la definizione di algoritmi più leggibili, essendo più facile individuare i moduli corrispondenti alle varie parti di cui si compone l'algoritmo test, correzione e manutenzione del programma sono perciò più semplici 07/12/2018 S. Masetta - Itis Torricelli (ME)

5 Programmazione strutturata
Si assumono come strutture di controllo fondamentali: A Sequenza B Vero Falso p Selezione binaria A B Vero p While do (ripeti mentre) A 07/12/2018 S. Masetta - Itis Torricelli (ME)

6 Istruzioni per il controllo di flusso
Forniscono al programmatore il meccanismo per decidere se e come eseguire blocchi di istruzioni condizionatamente a meccanismo decisionali definiti all’interno della applicazione Istruzioni per il controllo di flusso Istruzione Descrizione if Esegue o no un blocco di codice a seconda del valore restituito da una espressione booleana if-else Esegue permette di selezionare tra due blocchi di codice quello da eseguire a seconda del valore restituito da una espressione booleana switch Utile in tutti quei casi in cui sia necessario decidere tra opzioni multiple prese in base al controllo di una sola variabile for Esegue ripetutamente un blocco di codice while Esegue ripetutamente un blocco di codice controllando il valore di una espressione booleana do-while 07/12/2018 S. Masetta - Itis Torricelli (ME)

7 somma l’inverso del cubo di i ad s Incrementa il contatore
Sequenza Flowchart della struttura sequenza Due azioni eseguite in ordine somma l’inverso del cubo di i ad s { s += 1.0 / (i*i*i); i++; } Incrementa il contatore 07/12/2018 S. Masetta - Itis Torricelli (ME)

8 S. Masetta - Itis Torricelli (ME)
Ciclo while Vero while(<espressione-booleana> <istruzione>; p A Esegue una istruzione mentre una condizione è verificata 07/12/2018 S. Masetta - Itis Torricelli (ME)

9 S. Masetta - Itis Torricelli (ME)
Ciclo while public class CicloWhile { public static void main(String[] args) { int i=1; float s=0.0F; while(i<1000) { /* il blocco puo' non essere mai eseguito */ s += 1.0 / (i*i*i); i++; } System.out.println("La somma e' " + s); La somma e' 07/12/2018 S. Masetta - Itis Torricelli (ME)

10 S. Masetta - Itis Torricelli (ME)
Ciclo do-while A do <istruzione> while(<espressione-booleana>; p Vero Falso Esegue una istruzione finché una condizione diventa falsa 07/12/2018 S. Masetta - Itis Torricelli (ME)

11 S. Masetta - Itis Torricelli (ME)
Ciclo do-while public class CicloDo { public static void main(String[] args) { int i=1; float s=0.0F; do { /* il blocco viene eseguito sempre almeno una volta */ s += 1.0 / (i*i*i); i++; } while(i<1000); System.out.println("La somma e' " + s); } La somma e' 07/12/2018 S. Masetta - Itis Torricelli (ME)

12 S. Masetta - Itis Torricelli (ME)
Ciclo do-while public class CicloDo2 { public static void main(String[] args) { int i=1; float s=0.0F; do s += 1.0 / (i*i*i); while(++i<1000); System.out.println("La somma e' " + s); } La somma e' 07/12/2018 S. Masetta - Itis Torricelli (ME)

13 S. Masetta - Itis Torricelli (ME)
Ciclo for inizializzazione Istr. di fine ciclo for(<espr>; <espr-booleana>; <espr>) <istruzione>; Vero p A Implementa una struttura while con la possibilità di inizializzare dei valori 07/12/2018 S. Masetta - Itis Torricelli (ME)

14 S. Masetta - Itis Torricelli (ME)
Ciclo for public class CicloFor { public static void main(String[] args) { float s; for(int i=1, s=0; i<1000; i++) s += 1.0 / (i*i*i); System.out.println("La somma e' " + s); } La somma e' 07/12/2018 S. Masetta - Itis Torricelli (ME)

15 S. Masetta - Itis Torricelli (ME)
Ciclo for public class CicloFor2 { public static void main(String[] args) { float s; for(int i=1, s=0; i<1000; i++) s += 1 / (i*i*i); System.out.println("La somma e' " + s); } Attenzione ai problemi con la divisione La somma e' 1.0 07/12/2018 S. Masetta - Itis Torricelli (ME)

16 S. Masetta - Itis Torricelli (ME)
Ciclo for public class CicloFor3 { public static void main(String[] args) { float s; for(int i=999, s=0F; i>0; i--) s += 1.0 / (i*i*i); System.out.println("La somma e' " + s); } Attenzione il risultato dipende dall’ordine delle operazioni La somma e' 07/12/2018 S. Masetta - Itis Torricelli (ME)

17 La selezione binaria if
È usata per scegliere fra due alternative Psuedocodice Se il voto è maggiore di 18 allora l’esame è superato if ( voto >= 18 ) System.out.println( “Superato" ); Vero Falso voto>=18 Esempio di flowchart della struttura if if è una struttura con un solo punto di uscita stampa 07/12/2018 S. Masetta - Itis Torricelli (ME)

18 La selezione binaria if/else
Strutture di selezione if Esegui una singola operazione se la condizione è vera if/else Esegui operazioni diverse quando la condizione è vera o quando è falsa Psuedocodice Se il voto è maggiore o uguale di 18 Stampa “Esame superato” altrimenti Stampa “Esame non superato” Si notino le convenzioni di spaziatura/indentazione 07/12/2018 S. Masetta - Itis Torricelli (ME)

19 La selezione binaria if/else
Codice Java: if ( voto >= 18 ) System.out.println("Esame superato" ); else System.out.println( "Esame non superato" ); falso vero voto >= 18 Stampa “Esame non superato” Stampa “Esame superato” 07/12/2018 S. Masetta - Itis Torricelli (ME)

20 La selezione binaria if/else
Operatore di selezione ternario (?:) Richiede tre argomenti condizione ? valore se vero : valore se falso Lo pseudocodice può essere scritto: System.out.println( voto >= 18 ? “Esame superato” : “Esame non superato” ); 07/12/2018 S. Masetta - Itis Torricelli (ME)

21 La selezione binaria if/else
Strutture annidate if ( voto >= 30 ) System.out.println( "A" ); else if ( voto >= 27 ) System.out.println( "B" ); else if ( voto >= 24 ) System.out.println( "C" ); else if ( voto >= 18 ) System.out.println( "D" ); else System.out.println( "F" ); la parte else viene eseguita quando la condizione if condition non è soddisfatta Se la condizione è soddisfatta, il resto dell’istruzione viene saltato 07/12/2018 S. Masetta - Itis Torricelli (ME)

22 La selezione binaria if/else
Un modo alternativo di scrivere istruzioni annidate Si evita una eccessiva indentazione In genere si preferisce questa convenzione if ( voto >= 30 ) System.out.println( "A" ); else if (voto >= 27 ) System.out.println( "B" ); else if (voto >= 24 ) System.out.println( "C" ); else if (voto >= 18 ) System.out.println( "D" ); else System.out.println( "F" ); Dal punto di vista dell’esecuzione non cambia nulla 07/12/2018 S. Masetta - Itis Torricelli (ME)

23 La selezione binaria if/else
Nota bene Java associa l’else con l’if precedente a meno di parentesi graffe {} Il problema di più if pendenti if ( x > 5 ) if ( y > 5 ) System.out.println( "x e y sono > 5" ); else System.out.println( "x è <= 5" ); Non viene eseguito come sembrerebbe, viene interpretato come if ( x > 5 ) if ( y > 5 ) System.out.println( "x e y sono > 5" ); else System.out.println( "x è <= 5" ); If x <= 5, nulla viene stampato 07/12/2018 S. Masetta - Itis Torricelli (ME)

24 La selezione binaria if/else
Si usino le parentesi per forzare la corretta interpretazione if ( x > 5 ) { if ( y > 5 ) System.out.println( "x e y sono > 5" ); } else System.out.println( "x è <= 5" ); Istruzioni composte Un insieme di istruzioni tra parentesi graffe Può sostituire una qualunque istruzione singola: if si aspetta una unica istruzione nel suo corpo Per utilizzare più istruzioni occorre racchiuderle tra parentesi 07/12/2018 S. Masetta - Itis Torricelli (ME)

25 Ciclo controllato da un contatore
Media dei voti: Descrizione del problema: Una classe di 10 studenti affronta un quiz. I risultati sono interi fra 0 e 100. Calcolare la media complessiva. È una iterazione controllata da un contatore Il ciclo viene ripetuto finché un contatore non raggiunge un determinato valore Il numero di iterazioni è noto: si usa un contatore 07/12/2018 S. Masetta - Itis Torricelli (ME)

26 Ciclo controllato da un contatore
Descrizione a parole: azzera total (somma parziale - accumulatore) azzera il contatore dei numeri già introdotti (gradeCounter) leggi un dato somma il dato a total incrementa il contatore se il numero di dati letti (contatore) è minore di 10 torna a 4, altrimenti continua stampa la media Inizio I = 0 S = 0 I contatore S accumulatore I = I + 1 Vero Falso I<10 Lettura dato Di Stampa media S = S + Di Fine 07/12/2018 S. Masetta - Itis Torricelli (ME)

27 Grade averaging application
Average1.java // Programma di calcolo della media controllato da un contatore public class Average1 { public static void main( String args[] ) { int total, // sum of grades gradeCounter, // number of grades entered gradeValue, // grade value average; // average of all grades // Initialization Phase total = 0; // clear total gradeCounter = 1; // prepare to loop // Processing Phase while ( gradeCounter <= 10 ) { // loop 10 times // prompt for input and read grade from user gradeValue = MyUtility.readInt("Enter grade: "); // add gradeValue to total total = total + gradeValue; // add 1 to gradeCounter gradeCounter = gradeCounter + 1; } // Termination Phase average = total / 10; // perform integer division // display average of exam grades System.out.println("Class average is " + average); Enter grade: 100 Enter grade: 88 Enter grade: 93 Enter grade: 55 Enter grade: 68 Enter grade: 77 Enter grade: 83 Enter grade: 95 Enter grade: 73 Enter grade: 62 Class average is 79 Grade averaging application 07/12/2018 S. Masetta - Itis Torricelli (ME)

28 S. Masetta - Itis Torricelli (ME)
Average1.java Linea 3: inizia la classe Average1 Linea 5: inizia il metodo main Dichiarazione delle variabili Sono dichiarate nel metodo main – sono cioè variabili locali Possono essere usate solo all’interno del metodo che le dichiara Le variabili devono sempre essere dichiarate prima dell’uso Inizializzazione delle variabili Le variabili devono sempre essere inizializzate prima dell’uso, in caso contrario il compilatore rileva un errore int total, // sum of grades gradeCounter, // number of grades entered gradeValue, // grade value average; // average of all grades total = 0; // clear total gradeCounter = 1; // prepare to loop 07/12/2018 S. Masetta - Itis Torricelli (ME)

29 S. Masetta - Itis Torricelli (ME)
Average1.java while loop Corrisponde allo pseudocodice leggi un dato Aggiorna total Incrementa gradeCounter il ciclo termina quando la condizione diventa falsa Calcula la media Display average while ( gradeCounter <= 10 ) { // loop 10 times gradeValue = MyUtility.readInt("Enter grade: " ); total = total + gradeValue; gradeCounter = gradeCounter + 1; average = total / 10; // perform integer division System.out.println("Class average is " + average); 07/12/2018 S. Masetta - Itis Torricelli (ME)

30 Iterazione controllata da sentinella
Generalizzazione del problema Scrivere un programma per un numero arbitrario di studenti Se il numero degli studenti è sconosciuto come fare?? Soluzione uso della sentinella: Un valore che indica “la fine dei dati” Il ciclo termina quando viene immesso il valore sentinella Deve essere un valore non legale Per esempio –1 in questo caso Molti programmi possono essere divisi in tre fasi: Introduzione dei dati Elaborazione dei dati Presentazione dei dati 07/12/2018 S. Masetta - Itis Torricelli (ME)

31 Grade averaging application
Average2.java // Calcolo media con iterazione controllata da valore sentinella import java.text.DecimalFormat; public class Average2 { public static void main( String args[] ) { int gradeCounter, // number of grades entered gradeValue, // grade value total; // sum of grades double average; // average of all grades // Initialization phase total = 0; // clear total gradeCounter = 0; // prepare to loop // Processing phase // prompt for input and read grade from user gradeValue = MyUtility.readInt("Enter Grade, -1 to Quit: " ); while ( gradeValue != -1 ) { // add gradeValue to total total = total + gradeValue; // add 1 to gradeCounter gradeCounter = gradeCounter + 1; gradeValue = MyUtility.readInt("Enter Grade, -1 to Quit:" ); } Grade averaging application 07/12/2018 S. Masetta - Itis Torricelli (ME)

32 S. Masetta - Itis Torricelli (ME)
Average2.java // Termination phase if ( gradeCounter != 0 ) { average = (double) total / gradeCounter; // display average of exam grades System.out.println( "Class average is " + average ); } else System.out.println("No grades were entered"); Enter Grade, -1 to Quit:97 Enter Grade, -1 to Quit:88 Enter Grade, -1 to Quit:72 Enter Grade, -1 to Quit:-1 Class average is 85.67 07/12/2018 S. Masetta - Itis Torricelli (ME)

33 Iterazione controllata da sentinella
La maggior parte del codice è uguale al precedento Vediamo le differenze double average; // average of all grades La variabile è diventata di tipo double Così da memorizzare numeri decimali Introduco il primo dato fuori dal ciclo Il valore introdotto deve essere verificato prima dell’uso gradeValue = MyUtility.readInt("Enter Grade, -1 to Quit: " ); while ( gradeValue != -1 ) { // add gradeValue to total total = total + gradeValue; // add 1 to gradeCounter gradeCounter = gradeCounter + 1; // prompt for input and read grade from user gradeValue = MyUtility.readInt("Enter Grade, -1 to Quit:" ); } 07/12/2018 S. Masetta - Itis Torricelli (ME)

34 Iterazione controllata da sentinella
if ( gradeCounter != 0 ) { average = (double) total / gradeCounter; // display average of exam grades System.out.println( "Class average is " + average ); } else System.out.println("No grades were entered"); total è forzato a double perciò anche gradeCounter prima di eseguire la divisione viene promosso a double l’operatore cast(<tipo>) forza la conversione di tipo (double) crea una copia di tipo double del valore intero in total Le operazioni aritmetiche sono eseguite sempre tra valori dello stesso tipo In caso di necessità si esegue una promozione automatica verso il tipo che garantisce la maggiore precisione 07/12/2018 S. Masetta - Itis Torricelli (ME)

35 Strutture di controllo annidate
Descrizione del problema Si ha una lista di risultati (1 = superato, 2 = fallito) per 10 studenti. Scrivere un programma che analizza I risultati. Se più di 8 studenti hanno superato l’esame, stampa "Raise Tuition". sequenza A while-do B include una selezione binaria B Vero p Falso C 07/12/2018 S. Masetta - Itis Torricelli (ME)

36 S. Masetta - Itis Torricelli (ME)
Analysis.java // Analysis of examination results. public class Analysis { public static void main( String args[] ) { // initializing variables in declarations int passes = 0, // number of passes failures = 0, // number of failures student = 1; // student counter // process 10 students; counter-controlled loop while ( student <= 10 ) { int result = MyUtility.readInt( "Enter result (1=pass,2=fail)" ); if ( result == 1 ) { passes++; } else { failures++; } student++; // termination phase System.out.println("Passed: " + passes + "\nFailed: " + failures); if( passes > 8 ) System.out.println("Raise Tuition"); Incrementa il contatore appropriato secondo l’input immesso 07/12/2018 S. Masetta - Itis Torricelli (ME)

37 S. Masetta - Itis Torricelli (ME)
Analysis2.java // Analysis of examination results. public class Analysis2 { final static String PROMPT = "Enter result (1=pass,2=fail)"; public static void main( String args[] ) { // initializing variables in declarations int passes = 0, failures = 0; for (int student = 1; student <= 10; student++) { if ( MyUtility.readInt(PROMPT) == 1 ) passes++; else failures++; } // termination phase System.out.println( "Passed: " + passes + "\nFailed: " + failures); if( passes > 8 ) System.out.println("Raise Tuition"); Si definisce una stringa costante (cioè non modificabile) che potrà essere utilizzata, per convenzione in genere si usano solo lettere maiuscole La variabile di controllo student è utilizzata solo all’interno del ciclo perciò può essere definita in questa posizione, anche il suo incremento è spostato nell’istruzione for stessa Ho sostituito l’istruzione while con l’istruzione for Uso direttamente il risultato di readInt per il confronto 07/12/2018 S. Masetta - Itis Torricelli (ME)

38 S. Masetta - Itis Torricelli (ME)
/* il programma decodifica il codice di un mese */ import java.io.*; public class Mese { public static void main(String[] args) { int mese = MyUtility.readInt("Quale mese vuoi stampare?"); if(mese == 1) { System.out.println("Il mese e' gennaio"); } else if (mese == 2) { System.out.println("Il mese e' febbraio"); } else if (mese == 3) { System.out.println("Il mese e' marzo"); } else if (mese == 4) { System.out.println("Il mese e' aprile"); } else if (mese == 5) { System.out.println("Il mese e' maggio"); } else if (mese == 6) { System.out.println("Il mese e' giugno"); . . . } else if (mese == 12) { System.out.println("Il mese e' dicembre"); } else { System.out.println("Codice non corretto"); } Quale mese vuoi stampare?7 Il mese e' luglio 07/12/2018 S. Masetta - Itis Torricelli (ME)

39 S. Masetta - Itis Torricelli (ME)
L’istruzione switch L’istruzione switch fornisce un altro modo per decidere quale istruzione successiva deve essere eseguita. E’ un costrutto di selezione multipla. L’istruzione switch valuta un’espressione e poi confronta il risultato con una serie di valori possibili. Ogni caso contiene un valore e una lista di istruzioni da eseguire. Il flusso del controllo viene trasferito alle istruzioni associate al valore corrispondente. switch ( expression ) { case value1 : statement-list1 case value2 : statement-list2 case value3 : statement-list3 case ... } Se expression corrisponde a value2, allora il controllo passa qui 07/12/2018 S. Masetta - Itis Torricelli (ME)

40 S. Masetta - Itis Torricelli (ME)
L’istruzione switch Spesso l’istruzione break viene usata come ultima istruzione del blocco da eseguire. L’istruzione break interrompe la sequenza di istruzioni e riporta il controllo all’istruzione successiva all’istruzione switch. Se non si usa l’istruzione break, il controllo continua con il case successivo. Talvolta può essere utile non utilizzare il break, ma in generale si vuole eseguire solo il blocco associato al case selezionato. 07/12/2018 S. Masetta - Itis Torricelli (ME)

41 S. Masetta - Itis Torricelli (ME)
L’istruzione switch L’istruzione switch può avere anche un blocco opzionale detto default. Il blocco default non ha valori associati e si usa quando l’espressione non assume alcuno dei valori previsti nei blocchi case. default è una parola riservata. Il blocco default può essere posto in qualunque posizione, ma di solito è l’ultimo blocco. Se non c’è il blocco default e non c’è un blocco case corrispondente al valore dell’espressione, il controllo viene portato all’istruzione successiva all’istruzione switch. 07/12/2018 S. Masetta - Itis Torricelli (ME)

42 S. Masetta - Itis Torricelli (ME)
L’istruzione switch L’espressione di un’istruzione switch deve assumere valore intero (variabile int o char); non può essere un valore reale. La condizione booleana che viene implicitamente valutata è l’uguaglianza. Non si posssono effettuare verifiche relazionali (>, <, >=, <=, !=). 07/12/2018 S. Masetta - Itis Torricelli (ME)

43 S. Masetta - Itis Torricelli (ME)
Istruzione switch true false . case a case a action(s) break case b case b action(s) case z case z action(s) default action(s) 07/12/2018 S. Masetta - Itis Torricelli (ME)

44 S. Masetta - Itis Torricelli (ME)
/* il programma decodifica il codice di un mese */ import java.io.*; public class Mese { public static void main(String[] args) { int mese = MyUtility.readInt("Quale mese vuoi stampare?"); switch(mese) { case 1: System.out.println("Il mese e' gennaio"); break; case 2: System.out.println("Il mese e' febbraio"); break; case 3: System.out.println("Il mese e' marzo"); break; case 4: System.out.println("Il mese e' aprile"); break; case 11: System.out.println("Il mese e' novemvre"); break; case 12: System.out.println("Il mese e' dicembre"); break; default: System.out.println("Codice non corretto"); } Quale mese vuoi stampare?7 Il mese e' luglio Quale mese vuoi stampare?0 Codice non corretto 07/12/2018 S. Masetta - Itis Torricelli (ME)

45 S. Masetta - Itis Torricelli (ME)
/* il programma decodifica il codice di un mese */ import java.io.*; public class Mese { public static void main(String[] args) { int mese = MyUtility.readInt("Quale mese vuoi stampare?"); switch(mese) { case 1: System.out.println("Il mese e' gennaio"); case 2: System.out.println("Il mese e' febbraio"); case 3: System.out.println("Il mese e' marzo"); case 4: System.out.println("Il mese e' aprile"); case 11: System.out.println("Il mese e' novembre"); case 12: System.out.println("Il mese e' dicembre"); default: System.out.println("Codice non corretto"); } Quale mese vuoi stampare?7 Il mese e' luglio Il mese e' agosto Il mese e' settembre Il mese e' ottobre Il mese e' novembre Il mese e' dicembre Codice non corretto 07/12/2018 S. Masetta - Itis Torricelli (ME)

46 S. Masetta - Itis Torricelli (ME)
Esecuzione Mese E:\Java\source\Mese> java Mese Quale mese vuoi stampare?marzo Exception in thread "main" java.lang.NumberFormatException: marzo at java.lang.Integer.parseInt(Integer.java:414) at java.lang.Integer.parseInt(Integer.java:463) at MyUtility.readInt(Mese.java:116) at Mese.main(Mese.java:8) E:\Java\source\Mese> 07/12/2018 S. Masetta - Itis Torricelli (ME)

47 S. Masetta - Itis Torricelli (ME)
Istruzione break break Forza l’uscita immediata dalle istruzioni while, for, do/while o switch Il programma prosegue con a prima istruzione dopo la struttura corrente Usi più comuni di break Uscita da un ciclo Saltare il resto della istruzione switch 07/12/2018 S. Masetta - Itis Torricelli (ME)

48 S. Masetta - Itis Torricelli (ME)
Istruzione continue continue Salta il resto del corpo delle istruzioni while, for o do/while Si continua con l’iterazione successiva del ciclo Istruzioni while e do/while Il test di ciclo viene valutato immediatamente dopo l’istruzione continue Istruzione for Viene eseguita l’istruzione di fine ciclo e poi eseguito il test 07/12/2018 S. Masetta - Itis Torricelli (ME)

49 S. Masetta - Itis Torricelli (ME)
W1 A A(); while(!p) { B(); } A p vero p vero falso falso B while(true) { A(); if(p) break; B(); } B A 07/12/2018 S. Masetta - Itis Torricelli (ME)

50 S. Masetta - Itis Torricelli (ME)
W2 A p vero while(true) { A(); if(p) break; B(); if(q) break; C(); } falso B vero q falso C 07/12/2018 S. Masetta - Itis Torricelli (ME)


Scaricare ppt "Strutture di controllo"

Presentazioni simili


Annunci Google