CorsoInforma+cadiBase
FlowChart
Abbiamode8oChe..
•  INFORMATICA:scienzaetecnicachetra-al'elaborazione
automa4cadeida4edeiprocedimen4dicalcolo
•  CALCOLATOREOELABORATOREELETTRONICO:
macchinaele-ronicaingradodimanipolareautoma4camente
informazioni,eseguendooperazionisuda4forni4iningresso
(input),pero-eneredeirisulta4emessicomeda4inuscita
(output)
•  PROGRAMMA:insiemediistruzionichepossonoessere
eseguitedaunelaboratoreele-ronico.
•  PROGRAMMATORE:Sioccupadirealizzareopera4vamentele
applicazioni,scrivendoleistruzioniso-oformadilineedi
codicebasatesuspecificilinguaggidiprogrammazione.
ModellodiComputer(semplificato)
Dati In Ingresso
Dati in Uscita
Elaborazione dei Dati
Informa+ca
SecondolaACM(Associa4onforCompu4ng
Machinery)…
L’Informa4caèloStudiosistema4codeglialgoritmi
chedescrivonoetrasformanol’Informazione:la
loroteoria,analisi,proge-o,efficienza,
realizzazioneeapplicazione.
RisoluzionediunProblema
L’uomo descrive l’algoritmo che la
macchina deve seguire per risolvere il
problema (ad esempio con i Diagrammi
di flusso)
Problema
Algoritmo
Programma
Linguaggio Macchina
Input
Macchina
La descrizione viene tradotta in
Linguaggio di alto livello (ad
esempio il linguaggio C)
Il programma di alto livello
viene tradotto in linguaggio
Macchina, ovvero codice binario
(ad esempio dal
compilatore)
Output
EsempidiAlgoritmi
Rice%apercucinareglispaghe0
➔MeIl’acquanellapentola
➔Faibollirel’acqua
➔MeIlapastanell’acqua
➔Aggiungiunpo’disale
➔A-endi6minu4
➔Scolalapasta
EsempidiAlgoritmi
Verificaseunnumeroèpariodispari
➔Prendiilnumero
➔Calcolailrestodelladivisioneinteradelnumero
per2
➔Seilrestoèzero
–  Allorailnumeroèpari
–  Altrimen4ilnumeroèdispari
Algoritmi
Conilterminealgoritmosiintende,ingenere,unmetodo
perlarisoluzionediproblemiu+lizzandounnumero
finitodipassi.
Daquestadefinizionesievinconolequa-roproprietà
fondamentalidell'algoritmo:
•  lasequenzadiistruzionideveesserefinita(finitezza);
•  essadeveportareadunrisultato(effe0vità);
•  leistruzionidevonoessereeseguibilimaterialmente
(realizzabilità);
•  leistruzionidevonoessereespresseinmodonon
ambiguo(nonambiguità).
Cara8eris+chediunalgoritmo
•  Azionieseguibilienonambigue
–  Nonsonoammessi“unpò”e“apiacere”,chenonsono
termini adaIadunamacchina
•  Determinis+co
–  Fa-ounpasso,ilsuccessivoèunoedunosolo,ben
determinato.Alterna4vesonopossibili,malasceltadeveessere
unica
•  Numerofinitodipassi
•  Terminazione
–  L’esecuzioneprimaopoidevefinireeprodurreunrisultatoin
tempofinito
–  Osservazione:la3nonimplicala4
Esempiodinonterminazione
SiconsideriilnumeroN
•  ScrivereN
•  ScrivereilnumerosuccessivoadN
•  Ripetereilpassoprecedente
Esempiodinonterminazione
Trovailpiùgrandenumeroprimo.
Nonesisteunprogrammacheriesceadareuna
rispostaintempofinito(Numerofinitodipassi)
TuJiproblemisonorisolvibili???
No..
Unproblemarisolvibileconunalgoritmosidice
computabile
Risoluzionediunproblema
Generalmentelarisoluzionediunproblema
consistenelprenderealcunida4iniziali(input)
rela4vialproblemaenelfornireun
risultato(output)cherisolvequest’ul4mo.
Algoritmo
Input
Esecutore
Output
NonècosìFacile
Perscriverelagiusta“sequenzadipassi”bisogna
essereunbravocuoco!
PrepararegliSpagheI:
•  Ingredien4(acqua,Sale,SpagheI)
•  Eseguirelarice-a
•  ServiregliSpagheI
Codificadell’Algoritmo
Affinchèunamacchinariescaacomprendereed
eseguireipassispecifica4daunalgoritmo,
quest’ul4modeveessereprimacodificatoinun
opportunoprogrammascri-oinunlinguaggioad
altolivello(cheverràsuccessivamentecompilato/
interpretato)
Algoritmo
Traduzione
Programma
Rappresentazionedeglialgoritmi
E’necessariofarriferimentoadeiformalismiche:
•  nonintroducanoambiguità
•  sianouniversalmentericonosciu4edinterpreta4allo
stessomododaungenericoesecutore
•  perme-anodirappresentareinmodoefficaceun
algoritmo
•  Cos4tuiscanounu4lestrumentoperpoipoterpassare
allafasedicodificainunlinguaggiodiprogrammazione
Rappresentazionedeglialgoritmi
1.  Rappresentazionegrafica
–  Diagrammiablocchi/FlowChart
2.  Rappresentazionetestuale
–  NotazioneLineareStru-urata/PseudoCodice
Algoritmi:operazionibase
Leoperazioniprimariesono:
•  Trasferimentodiinformazioni(istruzionidiI/O)
•  le8urada+,scri8urarisulta+,visualizzazioneda+
intermedi
•  Esecuzionedicalcoli(valutazioneespressioni)
•  Istruzionidiassegnamento
•  Stru8uredicontrollo(chemodificanoilflusso
sequenzialediesecuzionedelleoperazioni)
DiagrammidiFlusso
Idiagrammiablocchi(deIanchediagrammidiflusso)
sonounlinguaggiodimodellazionegraficoper
rappresentarealgoritmi(insensolato).
Essoconsentedidescrivereledifferen4operazioniso-o
formadiunoschemaincuilediversefasidelprocessoe
ledifferen4condizionichedevonoessererispe-ate
vengonorappresenta4dasimboligraficideIblocchi
elementari.Iblocchisonocollega4tralorotramitefrecce
cheindicanolacronologia.
DiagrammidiFlusso
Ogniazioneelementareèrappresentatadaun
blocco.
Esistono54pidiblocchielementari:
Blocco finale
Blocco iniziale
Blocco Elaborazione
Blocco Controllo
Blocco I/O
IstruzionidiI/O
•  le-uradida4ininput
•  scri-uradeirisulta4inoutput
Conne8ori
Isingolidiagrammidevonoessereuni4tramitei
conne+ori.
L’esecuzionedelleistruzionideveesserefa-a
sequenzialmente,ovveroseguendoiconne-ori.
Quandosiscrivel’algoritmobisognafaremolta
a%enzionealladirezionedelflussodiesecuzione.
IstruzionediAssegnamento
Conce8odivariabile
•  Iden4ficatadaun’e4che-a/iden4ficatore
simbolico
•  Puòesserecomodopensareallavariabilecome
aduncontenitoreincuipossiamomemorizzareo
reperiredeida+u+lizza+duranteilcalcolo
•  L’istruzionediassegnamentoperme-edi
assegnareunvaloreadunavariabile
IstruzionediAssegnamento
Unavariabilenumericaèunaen4tàcara-erizzatada
•  Unnome
•  Unvalore(contenuto)
•  Puòcambiareneltempo
Unacostantenumericaèunaen4tàcara-erizzatada
•  Unnome
•  Unvalore(contenuto)
•  Nonpuòcambiareneltempo
IstruzionediAssegnamento
A=5
Alla Variabile A assegno
il valore 5
Espressione
Un’espressioneèunacombinazionedioperatori
aritme4ci,costan4evariabilichepuòessere
calcolatagenerandounsingolovalorenumerico
Es:X+1X+(Y*5)
IstruzionediAssegnamento
•  Istruzionediassegnamento:“
”
•  VariabileEspressione
X5YX+4
X=5
Y=X+4
AssegnoallaVariabilexilvalore5
LaVariabileYconterràilvaloredellasommatrail
numero4edilvaloreassegnatoallavariabileX
Esempio
Descriveremediantediagrammidiflusso,un
algoritmochecalcolilasommadiduenumerileI
ininput
Diagrammadiflusso:Somma
Inizio
Z
X+Y
Leggi X
Scrivi Z
Leggi Y
Fine
Esempio2
Descrivere,mediantediagrammidiflusso,un
algoritmochescambiivalorididuevariabilile-e
ininput.
Diagrammadiflusso:Scambio
Inizio
Leggi X
Leggi Y
Aux
Y
Y
X
X
Aux
Scrivi Y
Scrivi X
Fine
Flussodiesecuzione
Sipossonoaverecasiincuinelflussodiesecuzione
sidevesceglieretradiversedirezioni
Ladirezionedascegliereèsubordinataalverificarsi
diunacondizione
Lacondizionepuòassumereduesta+:
–  Vero
–  Falso
Inques4casisiparladiistruzionecondizionale
Stru8uredicontrollo
TuIglialgoritmidevonoada-arsiadunaclassediproblemi
peressereapplica4almondorealeeleoperazionida
effe-uareperraggiungerelasoluzionespessodifferisconoa
secondadeicasichesipresentano.
Perquestoesistonodellepar4colaristru-uredellinguaggio
cheperme-onodicontrollareilflussodiesecuzione(quindi
delleoperazioni),ovverodieseguireunacertaseriedi
istruzionianchepiu'voltenelmomentoincuisiverificadi
unaseriedicondizioni.
Questestru-uresonoassolutamenteindispensabili,infaI
nonesisteunlinguaggiodiprogrammazioneincuinone'
possibilecontrollareilflussodelprocesso.
Stru8uredicontrollo
Quasilatotalitàdeiprogrammihalanecessitàdisvolgere
alcuneistruzioniocompieredeterminateoperazioni
(oppureevitaredicompierealcuneoperazioni)aseconda
deida4dipartenza.
Peresempiounprogrammacheesegueunadivisionetra
duenumeria/bdovràevitaredicompierel'effeIva
operazionearitme4caseildatob=0.
PerquestointuIilinguaggidiprogrammazioneesistono
deipar4colaricostruIchegeneralmenteperme-onodi:
-Scegliereseeseguireomenounacertaporzionedi
codice,oppure
-Eseguirepiùvolteunacertapartedicodice.
Stru8uredicontrollo
IstruzioniCondizionali
La selezione (o scelta) permette a un programma di proseguire
secondo uno tra due (o più) flussi di istruzioni alternative, a seconda
del risultato di un test o del verificarsi di una condizione.
L’iterazione (o ciclo, o loop) consiste nella ripetizione di una o più
istruzioni, e si può ottenere collegando il flusso in uscita da un
blocco con il flusso in entrata nel blocco stesso o in uno
precedente.
In tal modo si possono eseguire compiti ripetitivi senza specificare
uno per uno un gran numero di singoli passi, ma scrivendo per
esempio un’istruzione del tipo: “esegui il prossimo passo 1.000
volte”.
IstruzioniCondizionali
Selezionebinaria.Nellaselezioneiltestolacondizionesono
4picamentecos4tui4daunavariabilelogica,scri-adentro
ilsimbolodidecisione,(bloccocontrollo)dalqualeescono
duefrecce.Questeindicanolepossibiliazionidacompiersi
asecondadelvaloredellavariabile,comemostralafigura.
IstruzioniCondizionali
Sipuòanchevolerecompiereunacertaazioneseiltestola
condizionehannounvalorevero,enessunaazionenel
casocontrario.
Esempio
Descriveremediantediagrammadiflusso,un
algoritmochedeterminiilmassimotradue
numerileIininput
DiagrammadiFlusso:Max
Inizi
Vero
X>Y
Scrivi X
Falso
Leggi X
Scrivi Y
Leggi Y
Fine
Stru8uraIF-ELSE
L’istruzionecondizionaleif-elseècostruitaperscegliere
l’esecuzionediun’istruzioneinalterna4vaaun’altraa
secondadelvaloreassuntodaunadatacondizione.
if(condizione)
{operazione}
L'operazionepuòanchenonessereracchiusatra
parentesigraffe.
Vediamounsempliceesempio.
if($a==5){
echo"Lavariabileavale5";
}
Inquestocasoverràstampatalastringa"Lavariabilea
vale5"soloquando$asaràugualea5.
Stru8uraIF-ELSE
Abbiamointrodo-oilcontrolloreelse:aggiungelapossibilitàdieseguire
un'istruzionealterna4vanelcasolacondizionenonsiavera.
if(condizione)
{operazione1}
else
{operazione2}
VediamooradiapplicaretuIicasifinoravis4,u4lizzandol'annidamento
dipiùif:l'importanteèricordarsidichiuderesempreunacondizioneche
sièaperta.
if($a>$b)
{echo"aèmaggioredib";}
else
{if($a<$b){echo"aèminoredib";}
else
{if($a==$b){echo"aèugualedib";}
}}
Stru8urediControlloIteraJve
Lestru-uredicontrollo"itera4ve"consentonodi
specificarecheunadataistruzioneoundatobloccodi
istruzionidevonoessereesegui4ripetutamente.Esse
vengonoanchede-ecicli.
Ognistru-uradicontrollodiquesto4podeveconsen4redi
specificareso-oqualicondizionil'iterazione(ripe4zione)
ditaliistruzionidebbaterminare,ovverolacondizionedi
terminazionedelciclooppure,equivalentemente,la
condizionedipermanenzanelciclo.
Stru8uraWhile
Ilciclowhile(mentre,ofintantoché)èindicatoquandola
condizionedipermanenzainuncicloèunagenerica
condizionebooleana,indipendentedalnumerodi
iterazionieseguite.Leformetradizionalidiciclowhile
possonoessereparafrasatecome"ripe4(ilcodice
controllato)fintantochérestaveralacondizioneC".Un
esempio4picoèlale-uradida4daunfiledicuinonsi
conoscaaprioriladimensione;essopotrebbeassumere
laforma"leggiilprossimodatofinchénonincontrilafine
delfile".
Stru8uraWhile
Vediamounsempliceesempio:
$i=1;
while($i<=10)
{
echo$i;
$i++;
}
Questociclocon4nuaadincrementarelavariabile$ifino
aquandononsaràugualea10edognivoltastampailsuo
valore.Inpra4caverràstampatalastringa"12345678
910".
Stru8uraDo-While
Unmodoalterna4vopereseguirelastessacosasaràricorrerealciclodo..while.
L'unicadifferenzaècheilvaloredellacondizionevienecontrollatoallafinedel
cicloenonall'inizio.Inpra4calaprimaoperazionevienesempreeseguita,sia
chelacondizionesiaveraofalsa.
do
{
operazione
}
while(condizione)
Vediamol'esempio:
$i=1;
do
{
echo$i;
$i++;
}
while($i<=10)
Stru8ureDa+
Unastru8urada+èun'en4tàusataperorganizzareun
insiemedida4all'internodellamemoriadelcomputer,ed
eventualmentepermemorizzarliinunamemoriadi
massa.Lasceltadellestru-ureda4dau4lizzareè
stre-amentelegataaquelladeglialgoritmi.
Lastru8urada+èunmetododiorganizzazionedeida+,
quindiprescindedaida+effeJvamentecontenu+.
Ciascunlinguaggiodiprogrammazioneoffrestrumen4,piùo
menosofis4ca4,perdefinirestru-ureda4,ovvero
aggregareda4di4poomogeneooeterogeneo.
GliArray
Unarrayèunastru-urada+omogenea,checon4eneun
numerofinitodielemen4dellostesso4po,adesempio
unve-oredi10interi.Ques4elemen4sonoindividua4
a-raversounindicenumerico,che4picamentevada0al
numeromassimodielemen4menouno.Ladimensione
delve-oredeveesseredichiarataalmomentodellasua
creazione.Ve-orididimensionediversacos4tuiscono4pi
dida4diversi.
Glielemen4dell'array(levariabilichelocos4tuiscono)sono
iden4ficatedallostessonomedell'arrayedaunoopiù
indici,cheindicanolaposizionedell'elementoall'intero
delve-oreodellamatrice.
GliArray
Arraymonodimensionale:
Unarrayadunadimensioneècos4tuitodauninsiemefinito
dielemen4omogeneiincorrispondenzabiunivocaconun
insiemediindici.
Arraybidimensionalepuòessereconsideratounarraydi
arraymonodimensionalicioèognicomponentedell’array
èessostessounarray
L’accessoadognicomponentediunarraybidimensionalesi
hatramiteunacoppiadiindici(i,j)
Ilprimoindicesiriferisceallarigaedilsecondoallacolonna
GliArray
Array Monodimensionale
X
X[0] X[1] X[2] X[3] X[4] X[5] X[6] X[7]
Array Bidimensionale
COLONNE
A
R
I
G
H
E
A[0][0] A[0][1] A[0][2] A[0][3] A[0][4]
A[1][0] A[1][1] A[1][2] A[1][3] A[1][4]
A[2][0] A[2][1] A[2][2] A[2][3]
GliArray
Essigodonodelleseguen4proprietà:
•  Gliarraysonounodei4pididatostru-urato
•  Sonocompos4daelemen4omogenei
•  Ognielementoèiden4ficatoall’internodelve-oreda
unnumerod’ordinede-oancheindicedell’elemento
•  E’possibileriempireoleggereunasolaposizioneper
volta
•  Ilnumerodeglielemen4ède-odimensioneo
lunghezzadelve-ore
GliArray
Adesempio,pensiamodivolermemorizzareinomi
deigiornidellaseImanaall'internodell'arraydi
4postringachiamatogiorno;avremolaseguente
stru-ura:
$giorno[0]="lunedi'"$giorno[1]="martedi'"
$giorno[2]="mercoledi'"$giorno[3]="giovedi'"
$giorno[4]="venerdi'"$giorno[5]="sabato"
$giorno[6]="domenica"
Array
Esercizisugliarray