Transcription

ISTITUTO TECNICO INDUSTRIALEG. M. ANGIOYSASSARICORSO DI PROGRAMMAZIONEISTRUZIONI DI SELEZIONE NIDIFICATEDISPENSA 02.0202-02 Annidare Decisioni [ver 15]Questa dispensa è rilasciata sotto la licenza Creative Common CC BY-NC-SA. Chiunque può copiare, distribuire, modificare,creare opere derivate dall'originale, ma non a scopi commerciali, a condizione che venga riconosciuta la paternità buitelestesselicenzedell'originale.Versione del:Revisione numero:07/11/201515Prof. Andrea ZocchedduDipartimento di InformaticaDIPARTIMENTOINFORMATICA E TELECOMUNICAZIONIImmagine di copertina da: utch-Education-System

DISPENSA 02-02 ANNIDARE DECISIONI [VER 15]PAG.2ISTRUZIONI DECISIONALI NIDIFICATEANNIDARE ISTRUZIONI CONDIZIONALIISTRUZIONE SEQUENZA (BLOCCO)PROGETTO GUIDATOprepara un form1 simile alla figuraassocia al pulsante button1 il seguente gestore di evento:int num Convert.ToInt16(textBox1.Text);if ( num 10 ){Top Top 10;Left Left 10;Text Text "x";BackColor Color.FromArgb(num, 1, 1);}associa al pulsante button2 il seguente gestore di evento:int num Convert.ToInt16(textBox1.Text);if ( num 10 ){//blocco thenbutton1.Top button1.Top 10;button1.Left button1.Left 10;button1.Text button1.Text "x";button1.BackColor Color.FromArgb(num, 1, 1);}else{//blocco elsebutton2.Top button2.Top 10;button2.Left button2.Left 10;button2.Text button2.Text "x";button2.BackColor Color.FromArgb(1, num, 1);}prova a eseguire il progettoISTRUZIONE SEQUENZA (BLOCCO)Abbiamo visto in precedenza che i gestori di evento hanno un corpo, racchiuso tra parentesi graffe. E,osservando il programma, possiamo notare che ci sono numerose parentesi graffe aperte e chiuse. Ognicoppia di parentesi (che c# propone incolonnate correttamente) corrisponde a un elemento diprogrammazione che nella terminologia C si chiama «blocco».L’istruzione sequenza è un caso particolare di blocco (vedremo altri casi leggermente differenti) checonsente di raggruppare molte altre istruzioni.Quando occorre mettere insieme delle istruzioni, perché formino un gruppo unitario, si può ricorrere alblocco.Nell’esempio introduttivo abbiamo usato dei blocchi sia nel ramo then che nel ramo else dell’istruzione if;in verità è possibile usare un blocco anche in altre istruzioni. Nel caso dell’if sappiamo che ogni ramo (thenPROF. A. ZOCCHEDDUITI G. M. ANGIOY SS

DISPENSA 02-02 ANNIDARE DECISIONI [VER 15]PAG.3ed else) consente di utilizzare una sola istruzione; ma se occorre eseguire più di un’istruzione, è possibilesuperare l’ostacolo sfruttando il blocco.SINTASSI DEL BLOCCOBanalmente la sintassi del blocco è la seguente:{istruzione 1;istruzione 2;. . .istruzione K;}dove si possono inserire un numero finito K di istruzioni.Oltre alle istruzioni è possibile anche utilizzare delle dichiarazioni, come già illustrato nell’esempiointroduttivo, per cui la sintassi può assumere la forma:{dichiarazione A;istruzione 1;dichiarazione B;istruzione 2;. . .dichiarazione Z;istruzione K;}VITA DELLE VARIABILI LOCALICome già discusso in occasione dei gestori di evento, le variabili dichiarate in un blocco, iniziano ad esisterenel momento in cui si elabora la dichiarazione e continuano la loro esistenza fino ad incontrare la fine delblocco; quando l’elaborazione raggiunge la fine del blocco, la variabile è distrutta e la memoria occupata peressa, sarà liberata.Vediamo un esempio, con una variabile x che ha vita solo nel blocco, ma non può essere usata al di fuori delblocco stesso:int y 17;{int x 13;y x y; ;}//dopo la graffa chiusa, y esiste, ma x non esiste più!!!x 0; //solleva un errore!!!Un altro esempio analogo potrebbe essere:int esterna 100;if (esterna 10 ){int interna 17;esterna interna 13;}PROF. A. ZOCCHEDDU//blocco thenITI G. M. ANGIOY SS

DISPENSA 02-02 ANNIDARE DECISIONI [VER 15]else{esterna interna - 13;}PAG.4//blocco elsedove il ramo else della istruzione solleva un errore, poiché la variabile interna non esiste più!ANNIDARE IFPROGETTO GUIDATOprepara un form1 simile alla figuraassocia al pulsante button1 il seguente gestore di evento:int a Convert.ToInt16(textBox1.Text);int b Convert.ToInt16(textBox2.Text);if (a 10)if (b 10)Text "entrambe maggiori";elseText "solo a maggiore";elseText "b non lo so";associa al pulsante button2 il seguente gestore di evento:int a Convert.ToInt16(textBox1.Text);int b Convert.ToInt16(textBox2.Text);if (a b)if (b a)Text "a b";elseText "a b";elseText "a b";prova a eseguire il progettoRIFLESSIONI SUL PROGETTO GUIDATOSappiamo che l’istruzione if consente di scrivere un’altra sua istruzione all’interno, sia nel ramo then chenel ramo else. Tra le istruzioni che possiamo scegliere (oltre a assegnazione e blocco) c’è una ulterioreistruzione if. Quando si inserisce un’istruzione if dentro un’istruzione if, si parla di annidamento.Un annidamento appare quindi come per esempio:if (Condizione 1)if (Condizione 2)Istruzione A;dove l’istruzione A è eseguita solo se sono vere entrambe le condizioni 1 e 2.Come appare negli esempi, è possibile annidare if sia nei rami then che nei rami else ed è possibileaddirittura annidarne ulteriormente con tre o più livelli di annidamento.PROF. A. ZOCCHEDDUITI G. M. ANGIOY SS

DISPENSA 02-02 ANNIDARE DECISIONI [VER 15]PAG.5ESERCIZIESERCIZIESERCIZIO 1.CONFRONTI DI TRE VALORIprepara un form1 simile alla figurail pulsante massimo deve visualizzare nellaetichetta il massimo valore delle tre caselleil pulsante interno deve visualizzare nellaetichetta il valore intermedio delle tre caselleil pulsante minimo deve visualizzare nellaetichetta il minimo valore delle tre caselleESERCIZIO 2.CONDIZIONI MULTIPLEprepara un form1 simile alla figurail pulsante tutti deve colorare di rossol’etichetta se tutti i valori delle caselle sonouguali, altrimenti di verdeil pulsante nessuno deve colorare di nerol’etichetta se tutti i valori delle caselle sonodiversi, altrimenti di biancoil pulsante alcuni deve colorare di blul’etichetta se due soli valori delle caselle sonouguali, altrimenti di gialloESERCIZIO 3.GIOCO DEI DADISi desidera realizzare un gioco con le seguenti regole:il giocatore scrive una puntata nella casella e preme ilpulsante, che simula il lancio di tre dadi (a sei facce):se tutti i dadi sono identici, il giocatore vince il doppiodella posta; se almeno due dadi sono identici, sipareggia, se sono tutti diversi il giocatore perde la posta.nella etichetta in basso si riporta la situazione (positiva onegativa)PROF. A. ZOCCHEDDUITI G. M. ANGIOY SS

DISPENSA 02-02 ANNIDARE DECISIONI [VER 15]ESERCIZIO 4.PAG.6ALEA TRACTA ESTSi desidera realizzare un gioco con le seguentiregole:il giocatore scrive una puntata nella casella e premeil pulsante, che simula il lancio di tre dadi (a seifacce):se tutti i dadi sono pari si vince il valore della postase tutti i dadi sono dispari si vince il doppio dellapostaaltrimenti si perde la postanella casella in basso si riporta il capitale posseduto:se arriva a zero il gioco finisce.ESERCIZIO 5.PROGRAMMA COMMERCIALEPreparare un nuovo progetto per un programma diacquisto di fruttaIl prezzo delleacquistata:Arancedipendedallaquantità Fino a 50 Kg è di 1 euro / Kg Fino a 100 Kg è di 0,75 euro / Kg Oltre 100 Kg è di 0,55 euro / KgIl prezzo delle Mele dipende dalla quantità acquistata: Fino a 75 Kg è di 0,90 euro / Kg Fino a 150 Kg è di 0,70 euro / Kg Oltre 150 Kg è di 0,50 euro / KgIl prezzo delle Pere dipende dalla quantità acquistata: Fino a 100 Kg è di 1,50 euro / Kg Fino a 200 Kg è di 1,25 euro / Kg Oltre 200 Kg è di 1,05 euro / KgIl button1 calcola l’importo e lo visualizza nella label5PROF. A. ZOCCHEDDUITI G. M. ANGIOY SS

DISPENSA 02-02 ANNIDARE DECISIONI [VER 15]ESERCIZIO 6.PAG.7GIOCO DELLE CARTESi desidera realizzare un gioco con le seguentiregole:Il giocatore scrive una puntata nella casella e premeil pulsante, che simula l’estrazione di tre carte (da 1a 10 con semi )Se le carte sono tutte dello stesso seme si pareggia(non si perde e non si vince)Se le carte sono tutte dello stesso valore si vince ildoppio della postaSe le carte sono tutte dello stesso valore e dellostesso seme si vince il quadruplo della postaNegli altri casi si perde la puntata (decrementare ilcapitale posseduto mostrato in basso)Nella etichetta in basso si riporta la situazione (se arriva a zero euro il gioco finisce‼!)Migliorare l’estetica del gioco nel seguente modo: Se la carta è di cuori o quadri allora il testo (ForeColor) delle caselle di testo diventa rosso; Se la carta è di picche o fiori allora il testo (ForeColor) delle caselle di testo diventa nero;ESERCIZIO 7.ACCOPPIA O T’ACCOPPASi desidera realizzare un gioco con le seguenti regole:Il giocatore inizia con 1000 euro e può fare clic su uno dei 9pulsanti per voltaOgni pulsante mostra una carta quando viene cliccatoAppena compaiono due carte identiche (valore e seme) sivincono 100 euro e compare un messaggio col capitale attualeSe le carte finiscono si perdono 10 euro e compare unmessaggio col capitale attualeIn ogni caso il gioco ricomincia con 9 pulsanti senza scritte fino aquando il giocatore smette oppure perde tutti i soldiESERCIZIO 8.SERRASi desidera realizzare la simulazione di unaserra automaticaL’utente preme il pulsante che genera tre valoricasualiLa temperatura deve essere compresa tra i -10e i 50 gradi CelsiusL’umidità deve essere compresa tra lo 0% e il100%La pressione deve essere compresa tra lo 500 e2000 barPROF. A. ZOCCHEDDUITI G. M. ANGIOY SS

DISPENSA 02-02 ANNIDARE DECISIONI [VER 15]PAG.8Ora si controlla la situazione:La temperatura è considerata normale quando è compresa tra i 18 e i 25 gradiL’umidità è considerata normale quando è compresa tra il 25% e il 75%La pressione è considerata normale quando è compresa tra 1000 e 1200La situazione si considera: NORMALEse tutti i tre parametri sono normalicolore VERDE ANORMALEse un parametro non è normalecolore GIALLO PERICOLOSA se un solo parametro è normalecolore ARANCIO DELETERIAcolore ROSSOse tutti i tre parametri sono NON normaliScrivere nella etichetta la dicitura della situazione con il colore correttoESERCIZIO 9.POKER SOLITARIOSi desidera realizzare un gioco con leseguenti regole:Il giocatore punta da 1 a 5 euro poi preme ilpulsante PLAYIl pulsante estrae 5 carte; e si usano lecombinazioni del pokerLa coppia non fa vincere né perdereLa doppia coppia fa vincere metà dellaposta divisa per difettoIl tris fa vincere la postaUna scala fa vincere fa vincere una volta emezzo la postaIl full fa vincere il doppio della postaIl colore fa vincere il triplo della postaIl poker fa vincere fa vincere il quadruplo della postaLa scala reale fa vincere fa vincere il decuplo della postaAltrimenti si perde la postaNella etichetta in basso si riporta la situazione (se arriva a zero euro il gioco finisce‼!)Migliorare il gioco nel seguente modo: Non possono mai uscire due carte identiche Usare le lettere A per l’Asso, K per il re, Q per la donna, J per il fante. Il carattere compare premendo Alt-Tastnum-3; analogamente per PROF. A. ZOCCHEDDUITI G. M. ANGIOY SS

DISPENSA 02-02 ANNIDARE DECISIONI [VER 15]PAG.9SOMMARIOANNIDARE ISTRUZIONI CONDIZIONALI . 2ISTRUZIONE SEQUENZA (BLOCCO) . 2Progetto guidato . 2Istruzione sequenza (blocco) . 2Sintassi del blocco . 3Vita delle variabili locali . 3ANNIDARE IF . 4Progetto guidato . 4Riflessioni sul progetto guidato . 4ESERCIZI . cizioEsercizioEsercizioEsercizioPROF. A. ZOCCHEDDU1.2.3.4.5.6.7.8.9.Confronti di tre valori . 5Condizioni multiple . 5Gioco dei dadi. 5Alea tracta est . 6Programma commerciale . 6Gioco delle carte . 7Accoppia o t’accoppa . 7Serra. 7Poker solitario . 8ITI G. M. ANGIOY SS

DISPENSA 02-02_ANNIDARE_DECISIONI_[VER_15] PAG. 5 PROF.A. ZOCCHEDDU ITI G. M. ANGIOY SS ES EERCI IZZI ESERCIZI ESERCIZIO 1.CONFRONTI DI TRE VALORI prepara un form1 simile alla figura il pulsante massimo deve visualizzare nella etichetta il massimo valore delle tre caselle il pulsante interno deve visualizzare nella etichetta il valore intermedio delle tre caselle