AlgoBuild: Strutture iterative e selettivecesposito/materiale/lezioni/Lezione... · 2016. 10....
Transcript of AlgoBuild: Strutture iterative e selettivecesposito/materiale/lezioni/Lezione... · 2016. 10....
-
FondamentidiInformaticaAlgoBui ld : S trutture i terat ive e se lett ive
Prof. Chr i st ian Espos i toCorso d i Laurea in Ingegner ia Meccanica e Gest iona le (C lasse I )A .A . 2016/17
AlgoBuild:Struttureiterativeeselettive
-
AlgoBuild :StruttureiterativeeselettiveOUTLINE• Struttura selettiva• Esempi• StrutturaiterativaFOR(cicloacondizioneiniziale)• Esempi• StrutturaiterativaDO/WHILE(cicloacondizionefinale)• Esempi•Array
AlgoBuild:Struttureiterativeeselettive 02/85
-
DiagrammidiFlusso:BloccodiDecisioneBinaria(oCondizionale)• Possonoesserepresentiistruzionicondizionali,lacuiesecuzionedipendecioèdascelteeffettuateinbaseaidati
• Concettualmente,possiamoimmaginarecheilflussodiesecuzionesiramifichi• Inbaseadunacondizione vienedecisoseeseguireun’operazioneoppureun’altra
?
Diramazione(condizionale)
AlgoBuild:Struttureiterativeeselettive 03/85
-
StrutturediControllo:SelezioneSemplice
AlgoBuild:Struttureiterativeeselettive 04/85
-
StrutturediControllo:SelezioneaDueVie
AlgoBuild:Struttureiterativeeselettive 05/85
-
StrutturaSelettivaIF– Esempio•Definiamoundiagrammadiflussoche• PrendeininputlavariabileVOTO dapartedell’utente•Mostrainoutput«Superato!» se VOTOèmaggioreougualedi18• «NONSuperato»,altrimenti
AlgoBuild:Struttureiterativeeselettive 06/85
-
StrutturaSelettivaIF• IniziamodalprendereininputlavariabileVOTO
AlgoBuild:Struttureiterativeeselettive 07/85
-
StrutturaSelettivaIF
AlgoBuild:Struttureiterativeeselettive 08/85
-
StrutturaSelettivaIF
AlgoBuild:Struttureiterativeeselettive 09/85
-
StrutturaSelettivaIF
Civerràrichiestodiinserirel’espressione(condizionebooleana)chelastrutturaselettiva
IFdevesoddisfare.Taleespressionepuòassumereunvalorebooleano:vero(T)ofalso(F)
AlgoBuild:Struttureiterativeeselettive 10/85
-
StrutturaSelettivaIF
AlgoBuild:Struttureiterativeeselettive 11/85
-
StrutturaSelettivaIF
Flussodiesecuzioneselacondizioneèfalsa
AlgoBuild:Struttureiterativeeselettive 12/85
-
StrutturaSelettivaIF
Flussodiesecuzioneselacondizioneèvera
AlgoBuild:Struttureiterativeeselettive 13/85
-
StrutturaSelettivaIF
PSEUDO-CODICE
PROGmainINVOTOIFVOTO>=18OUT"Superato!"
ELSE//ifVOTO>=18OUT"NONSuperato"
ENDIF//VOTO>=18ENDPROG//main
AlgoBuild:Struttureiterativeeselettive 14/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaSelettivaIF– DEMO
15/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaSelettivaIF– DEMO
16/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaSelettivaIF– DEMO
17/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaSelettivaIF– DEMO
VariabileVOTOpresaininputdall’istruzioneprecedente18/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaSelettivaIF– DEMO
Condizionevera
19/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaSelettivaIF– DEMO
20/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaSelettivaIF– DEMO
CosasarebbeaccadutoseavessiusatoVOTO=16?
21/85
-
StrutturaSelettivaIF(Annidata)• Nelleistruzionidelblocco“Vero”odelblocco“Falso”(else),èpossibileinserirealtriblocchidiscelta
• Intalcasosidicechelasecondasceltarisultaannidata all’internodellaprima
C1
A1 B
C2
A2 A3
A4
V
V
F
F
AlgoBuild:Struttureiterativeeselettive 22/85
-
StrutturaSelettivaIF(Annidata)• C1Vero,C2Vero• Istruzionieseguite:A1,A2,A4
C1
A1 B
C2
A2 A3
A4
V
V
F
F
AlgoBuild:Struttureiterativeeselettive 23/85
-
StrutturaSelettivaIF(Annidata)• C1Vero,C2Falso• Istruzionieseguite:A1,A3,A4
C1
A1 B
C2
A2 A3
A4
V
V
F
F
AlgoBuild:Struttureiterativeeselettive 24/85
-
StrutturaSelettivaIF(Annidata)• C1Falso• Istruzionieseguite:B
C1
A1 B
C2
A2 A3
A4
V
V
F
F
AlgoBuild:Struttureiterativeeselettive 25/85
-
StrutturaSelettivaIF(Annidata)• L’interobloccodisceltapiùinterno(dallacondizionefinoalricongiungimento)deveesserecompletamentecontenutoall’internodiunodeiramidelbloccopiùesterno
C1
A1 B
C2
A2 A3
A4
V
V
F
F
AlgoBuild:Struttureiterativeeselettive 26/85
-
StrutturaSelettivaIF(Annidata):Esempio1• L’esitodell’esamediunostudentepuòassumereunadelleseguentiquattrovalutazioni• Sufficiente: seilvotoècompresotra18e21• Buono: seilvotoècompresotra22e25• Ottimo: seilvotoècompresotra26e28• Eccellente: seilvotoè29o30
• Unvotoè valido seècompresotra0e30
AlgoBuild:Struttureiterativeeselettive 27/85
-
StrutturaSelettivaIF(Annidata):Esempio1
Controllocheilvotosiavalido
AlgoBuild:Struttureiterativeeselettive 28/85
-
StrutturaSelettivaIF(Annidata):Esempio1
Seilvotoèminoredi18,l’esamenonèsuperato
AlgoBuild:Struttureiterativeeselettive 29/85
-
StrutturaSelettivaIF(Annidata):Esempio1
AlgoBuild:Struttureiterativeeselettive 30/85
-
StrutturaSelettivaIF(Annidata):Esempio1
IFannidato
AlgoBuild:Struttureiterativeeselettive 31/85
-
AlgoBuild:Struttureiterativeeselettive
IFannidato
10/85
-
AlgoBuild:Struttureiterativeeselettive
IFannidato
-
AlgoBuild:Struttureiterativeeselettive
IFannidato
-
Esempio:Risoluzionediequazionidiprimogrado• 𝑎𝑥 + 𝑏 = 0• Lasoluzione è:• 𝑥 =– 𝑏/𝑎• Solose𝑎 ≠ 0• 𝑥 = 𝑖𝑛𝑑𝑒𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑡𝑜(𝑖𝑛𝑓𝑖𝑛𝑖𝑡𝑒𝑠𝑜𝑙𝑢𝑧𝑖𝑜𝑛𝑖)• Se𝑎 = 0𝑒𝑏 = 0
• 𝑥 = 𝑖𝑚𝑝𝑜𝑠𝑠𝑖𝑏𝑖𝑙𝑒(𝑛𝑒𝑠𝑠𝑢𝑛𝑎𝑠𝑜𝑙𝑢𝑧𝑖𝑜𝑛𝑒)• Se𝑎 = 0𝑒b ≠ 0
AlgoBuild:Struttureiterativeeselettive 35/85
-
AlgoBuild:Struttureiterativeeselettive 36/85
-
AlgoBuild:Struttureiterativeeselettive 37/85
-
AlgoBuild:Struttureiterativeeselettive 38/85
-
IFannidato
IFannidato
AlgoBuild:Struttureiterativeeselettive 39/85
-
AlgoBuild:Struttureiterativeeselettive 40/85
-
StrutturediControllo:CicloaCondizioneIniziale
AlgoBuild:Struttureiterativeeselettive 41/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaFOR– Esempio1• Definiamo un diagramma di flusso che• Prende in input le seguenti due variabili• X• Y• Memorizza e (mostra in output) una variabile• R = XY• N.B. Il calcolo di XY deve essere eseguito con ilmetodo moltiplicativo• X × X × …× X
Yvolte
42/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaFOR– Esempio1
43/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaFOR– Esempio1
44/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaFOR– Esempio1
45/85
-
StrutturaIterativaFOR– Esempio1
• I = 1; I
-
StrutturaIterativaFOR– Esempio1
AlgoBuild:Struttureiterativeeselettive 47/85
-
StrutturaIterativaFOR– Esempio1
R denotalavariabileincuiverràmemorizzatodivoltainvoltal’output.Talevariabileèinizializzataad1
AlgoBuild:Struttureiterativeeselettive 48/85
-
StrutturaIterativaFOR– Esempio1PSEUDO-CODICE
PROGmainINXINYASSIGNR=1FORI=1;I
-
50/85AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaFOR– DEMO(Video)
IntroduzioneadAlgoBuild
-
StrutturaIterativaFOR– Esempio2
• Definiamo un diagramma di flusso cherappresenta il calcolo della media aritmetica di Nnumeri presi in input, dove• N è una variabile presa in input
AlgoBuild:Struttureiterativeeselettive 51/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaFOR– Esempio2PSEUDO-CODICE
PROGmainINNASSIGNSomma =0FORI=1;I
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaFOR– Esempio2RichiedoN all’utente(Input)
53/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaFOR– Esempio2• ImpostoSomma azero
• CiòmiserviràpertenertracciadellasommadegliNnumeri
54/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaFOR– Esempio2
• Ciclofor chevada1aN• Adogniiterazione
• Vienerichiestoininputunnumero(INValore)
• VieneaggiornatalavariabileSomma cheverràutilizzatasuccessivamenteperilcalcolodellamediaaritmetica• Somma=Somma+Valore
55/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaFOR– Esempio2
• Calcololamedia• Dividendolasomma(variabile
Somma)pergliN numeripresiininput
56/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaFOR– Esempio2
IlcontenutodellavariabileMediavienemostratoinoutput
57/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaFOR– Demo(Video)
IntroduzioneadAlgoBuild 58/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaFOR– Esempio2OSSERVAZIONE
È necessario fornire preventivamente alnostro programma il numero di valori di cuisi dovrà calcolare la media…
…è possibile fare la media di un certonumero (non noto a priori) di valori presi ininput?
59/85
-
StrutturediControllo:CicloaCondizioneFinale
AlgoBuild:Struttureiterativeeselettive 60/85
-
StrutturaIterativaDO/WHILE– Esempio
• Definiamo un diagramma di flusso cherappresenta il calcolo della media aritmetica diun certo numero (non noto a priori) di valoripresi in input
AlgoBuild:Struttureiterativeeselettive 61/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaDO/WHILE– Esempio
PSEUDO-CODICE
PROGmainASSIGNSomma =0ASSIGNN=0DO_WHILE//Continua==1INValoreASSIGNSomma =Somma +ValoreASSIGNN=N+1INContinua
ENDDO_WHILEContinua==1ASSIGNMedia=Somma /NOUTMedia
ENDPROG//main
62/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaDO/WHILE– Esempio• Inizializzazione a 0 delle variabili Somma
ed N• Non è stato preso ancora in input
alcun valore (quindi N = 0)• Non è stata eseguita ancora la
somma di alcun valore (quindiSomma = 0)
63/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaDO/WHILE– Esempio
• Ciclo DO/WHILE• Richiede in input un valore (IN Valore)• Aggiorna la variabile Somma, aggiungendogli la
variabile Valore• Somma = Somma + Valore
• Aggiorna il valore di N (dato che è stato preso ininput un nuovo valore)• N = N + 1
• Chiede all’utente se vuole continuare (quindi unnuovo valore verrà preso in input)• Se il valore della variabile Continua sarà
diverso da 1, allora il ciclo while siinterromperà
• Altrimenti si proseguirà con un’altraiterazione
64/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaDO/WHILE– Esempio
• Calcola la media aritmetica dividendoSomma per N
• La media aritmetica è memorizzata nellavariabileMedia• Che viene poi mostrata in output
65/85
-
AlgoBuild:Struttureiterativeeselettive
StrutturaIterativaDO/WHILE– DEMO– (Video)
AlgoBuild:Struttureiterativeeselettive 66/85
-
Array(ovettore)• Èunavariabilestrutturata doveèpossibilememorizzarepiùvalorituttidellostessotipo
• Unarraymonodimensionale ovettore puòessereimmaginatocomeuncontenitoresuddivisointantiscompartiquantisonoidatichevisivoglionomemorizzare• Unarraybidimensionaleènotocomematrice
• Ognunodiquestiscomparti,dettielementidelvettore,contieneununicodatoedèindividuatodaunnumeroprogressivo,dettoindice,chespecificalaposizionedell’elementoall’internodelvettorestesso
• L’indicepuòassumerevaloriinteridazero alnumerototaledielementimeno1
• L’indicedibasedell’arrayèsemprezero
• IlnumerocomplessivodeglielementidelvettorevienedettolunghezzaIndicei 0 1 2 3 4 5 6 7 8 9
a 32 15 8 5 12 9 63 3 102 1Nomearray
AlgoBuild:Struttureiterativeeselettive 67/85
-
Array(ovettore)• Peraccedereaunsingoloelementodiunarraysidevespecificareilnomedell’array seguitodall’indicedell’elemento postotraparentesiquadre:a[i]
• Es:a[1]restituiscel’elemento15,a[3]restituiscel’elemento5
Indicei 0 1 2 3 4 5 6 7 8 9
a 32 15 8 5 12 9 63 3 102 1Nomearray
AlgoBuild:Struttureiterativeeselettive 68/85
-
Esempio:InserireglielementiinunArrayestamparli• Vediamocomeinserireglielementi(valori)inunvettoredilunghezza10• Alterminedell’inserimento,glielementiverrannopoistampati
Indicei 0 1 2 3 4 5 6 7 8 9
aNomearray
AlgoBuild:Struttureiterativeeselettive 69/85
-
Indicei 0 1 2 3 4 5 6 7 8 9
aNomearray
AlgoBuild:Struttureiterativeeselettive 70/85
-
Indicei 0 1 2 3 4 5 6 7 8 9
aNomearray
AlgoBuild:Struttureiterativeeselettive 71/85
-
Indicei 0 1 2 3 4 5 6 7 8 9
aNomearray
AlgoBuild:Struttureiterativeeselettive 72/85
-
Indicei 0 1 2 3 4 5 6 7 8 9
aNomearray 32
AlgoBuild:Struttureiterativeeselettive 73/85
-
Indicei 0 1 2 3 4 5 6 7 8 9
aNomearray 32 15
AlgoBuild:Struttureiterativeeselettive 74/85
-
Indicei 0 1 2 3 4 5 6 7 8 9
aNomearray 32 15 8
AlgoBuild:Struttureiterativeeselettive 75/85
-
Indicei 0 1 2 3 4 5 6 7 8 9
aNomearray 32 15 8 5
AlgoBuild:Struttureiterativeeselettive 76/85
-
Indicei 0 1 2 3 4 5 6 7 8 9
aNomearray 32 15 8 5 12
AlgoBuild:Struttureiterativeeselettive 77/85
-
Indicei 0 1 2 3 4 5 6 7 8 9
aNomearray 32 15 8 5 12 9
AlgoBuild:Struttureiterativeeselettive 78/85
-
Indicei 0 1 2 3 4 5 6 7 8 9
aNomearray 32 15 8 5 12 9 63
AlgoBuild:Struttureiterativeeselettive 79/85
-
Indicei 0 1 2 3 4 5 6 7 8 9
aNomearray 32 15 8 5 12 9 63 3
AlgoBuild:Struttureiterativeeselettive 80/85
-
Indicei 0 1 2 3 4 5 6 7 8 9
aNomearray 32 15 8 5 12 9 63 3 102
AlgoBuild:Struttureiterativeeselettive 81/85
-
Indicei 0 1 2 3 4 5 6 7 8 9
aNomearray 32 15 8 5 12 9 63 3 102 1
AlgoBuild:Struttureiterativeeselettive 82/85
-
Prendovaloriininput
Restituiscovaloriinoutput
AlgoBuild:Struttureiterativeeselettive 83/85
-
Esempio:Determinareilmassimoelementodiunarrayestamparnelaposizione
AlgoBuild:Struttureiterativeeselettive
INIZIOALGORITMOtrovaMaxposizione = 0Per i che va da 0 a 9
Se a[i] > a[posizione]posizione = i //Istruzione eseguita se A(i) > max
Incrementa irestituisci a[posizione], posizioneFINEALGORITMOtrovaMax
Indicei 0 1 2 3 4 5 6 7 8 9
a 32 15 8 5 12 9 63 3 102 1Nomearray
84/85
-
AlgoBuild:Struttureiterativeeselettive 85/85