Libro
Libro
Libro
0 Giugno 2005
INDICE
Alcune defnizioni importanti: calcolatore, sistema di elaborazione
elettronico, programmabilit, soluzioni hardware e soluzioni software.
Pag. 1
Logica cablata e logica programmata: soluzioni hardware e soluzioni
software a confronto.
Pag. 2
Dal problema al programma: ciclo di sviluppo (semplifcato del software Pag. 3
!tudio della situazione reale, analisi dei re"uisiti Pag. 3
Analisi dei dati Pag. 4
Algoritmo risolutivo# defnizione, caratteristiche# Pag. 5
Defnizione di programma, linguaggi di programmazione Pag. 6
$ase di codifca Pag. 6
$igura dell%analista, distinzione tra risolutore ed esecutore Pag. 7
$ase di test (alpha, beta e gamma test Pag. 7
$ase di debug Pag. 8
&elease e manutenzione Pag. 8
Dismissione Pag. 8
Architettura hardware e software di un sistema di elaborazione (cpu,
principali dispositivi interni "uali la AL', i registri, decoder
Pag. 9
(iclo di funzionamento di una ()' (fetch * decode * e+ecute Pag. 11
&appresentazione interna delle informazioni, giustifcazione della scelta
digitale
Pag. 14
&appresentazione delle istruzioni Pag. 15
,voluzione dei linguaggi di programmazione (codice macchina, assembl-,
assemblatori, cenni ai diagrammi di .usso
Pag. 16
Linguaggi ad alto livello Pag. 18
Di/erenza tra interpreti e compilatori Pag. 19
La catena della programmazione (editor0D, e programma sorgente Pag. 20
(ompilazione e sue fasi: controllo lessicale, controllo sintattico, codice
oggetto
Pag. 21
0l lin1er e le librerie Pag. 21
L%eseguibile fnale Pag. 22
!truttura di un programma pascal, intestazione ed identifcatori Pag. 23
!ezione dichiarativa# constanti e vantaggi del loro uso Pag. 24
2ariabili Pag. 24
3ipi di dati semplici e loro dominio, forma esponenziale dei .oating point,
codice A!(00
Pag. 25
!ezione esecutiva Pag. 26
Assegnamento, compatibilit di tipo Pag. 26
'so delle parentesi Pag. 27
)rincipali operatori e operatori relazionali utilizzabili suddivisi per tipo di
dato, tipi di errore (onver.ow, under.ow, operazione illegale
Pag. 27
3abella con l%ordine di precedenza di tutti gli operatori visti Pag. 29
(omandi di ingresso4uscita (readln e write4ln Pag. 29
(omandi per il controllo del .usso di esecuzione, programmazione
strutturata
Pag. 30
!elezione ad una via (if then Pag. 31
!elezione a due vie (if then else Pag. 33
'so di condizioni composte con i connettivi logici Pag. 33
!elezione a molte vie (case of Pag. 34
,sercizi riepilogativi sulla struttura selettiva Pag. 36
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 1
Introduzione allo sviluppo del sw e manuale Turbo Pascal versione 1.0 Giugno 2005
!truttura iterativa enumerativa (for do Pag. 48
,sercizi riepilogativi sul ciclo for Pag. 50
!truttura iterativa indefnita repeat until Pag. 61
!truttura iterativa indefnita while do Pag. 63
,sercizi riepilogativi sul repeat e sul while Pag. 64
Approfondimento sui .ow chart Pag. 68
0 sottoprogrammi (procedure e funzioni Pag. 83
&egole di visibilit e durata Pag. 108
5li arra- Pag. 110
0 record Pag. 126
0 fles Pag. 131
La ricorsione Pag. 152
Limiti della memoria allocata staticamente Pag. 159
Allocazione dinamica della &A6 (implementazione completa del tipo di
dato astratto lista semplice
Pag. 160
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 2
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
Calcolatore? Non solo
7el nostro corso useremo spesso la parola computer (calcolatore. ,d anche se "uesta 8 entrata ormai
a far parte del linguaggio comune, 8 assai riduttiva. 9uesto termine sarebbe infatti appropriato per
"uelle :macchinette: che tenete negli astucci e che sono in grado di svolgere giusto le "uattro
operazioni elementari, l;estrazione di radice e poco pi< (sto volutamente ignorando le cosiddette
calcolatrici programmabili che, di fatto, sono dei personal computer in miniatura, anche se con
funzionalit limitate.
!i dovrebbe infatti parlare di sistea !i ela"ora#ione elettronico !elle in$ora#ioni
%rograa"ile.
!o/ermiamoci su ogni termine:
!istema 0nsieme di componenti, ognuno con la sua specifca funzione, ma con uno scopo
comune: elaborare (si parla di =processing% dati forniti in ingresso (si parla di =input% e fornire
risultati (si parla di =output% adeguatamente presentati.
0n un moderno sistema di elaborazione elettronico possiamo individuare tra i componenti: il
microprocessore (ad esempio 0ntel )entium, A6D Athlon, la memoria di lavoro &A6, il disco fsso
(hard dis1, il monitor, la stampante ecc.
,laborazione >perazione (tra cui i calcoli che trasforma uno o pi< dati4informazioni in altri
dati4informazioni. 9uesti dati possono insomma essere s? tra loro sommati, sottratti ecc. (se sono
numeri# ma possono anche essere confrontati tra loro, spostati o copiati da un punto all;altro
della memoria, inviati ad un dispositivo per la loro visualizzazione (ad esempio il monitor o
stampa.
7>3A: un !ato 8 una misurazione di un aspetto della realt e diventa in$ora#ione solo "uando
sappiamo dare un signifcato ad esso (ecco allora che un numero da anonimo diventa un peso,
un;altezza, un punto di un;immagine sul video ecc.
,lettronico 'n%elaborazione pu@ avvenire anche in modo manuale (come "uando con carta e
penna si mette in ordine alfabetico un elenco di nomi.
!e l;elaborazione avviene senza l;intervento umano si parla allora di elaborazione automatica ( ad
esempio le macchine per lo smistamento della posta .
, se infne i dispositivi automatici non hanno parti meccaniche movimento ma sono costituiti da
circuiti elettrici si parla di elaborazione elettronica (il microprocessore che somma due numeri.
)rogrammabile (on le macchinette calcolatrici non potrete fare altro che i calcoli previsti dal
costruttore. 7on c;8 modo infatti di istruire "uel piccolo congegno a svolgere calcoli diversi. Allo
stesso modo in cui non potete ottenere altro da una lavatrice che le se"uenze (programmi di
lavaggio previste dal costruttoreA , cos? come con una lavatrice potrete lavare solo panni, allo
stesso modo con una calcolatrice potrete usare solo numeriA
'n computer, invece, 8 dotato di una memoria di lavoro elettronica (&A6, &andom Access
6emor-, 6emoria ad accesso casuale in cui possono essere rappresentati numeri, lettere,
immagini e suoni.
7on solo: la memoria contiene anche la se"uenza delle istruzioni che il microprocessore deve
eseguire per svolgere un certo compito (il %rograaA B suCciente caricare (dall;hard dis1, dal
(D, dal D2D ecc. una diversa se"uenza di istruzioni per avere una macchina elettronica in grado
di svolgere un compito anche completamente diverso dal precedente.
3utto sommato, il ciclo di funzionamento di un sistema di elaborazione elettronico programmabile
(ehm, computer d;ora in avanti e solo per comodit 8 assai semplice: prelievo dalla &A6 dalla
prossima istruzione da eseguire, interpretazione dell;istruzione (cosa deve essere fattoD 9uali altri
componenti devono essere attivati ed in che modoD esecuzione (attivare nella giusta se"uenza i
componenti elettronici coinvolti. !i parla di ciclo di fetch (prelievo, decode (decodifca ed
execute (esecuzione.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 1
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
N&'() a%%ro$on!irete *+esti argoenti nel corso %arallelo !i ,sistei-
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 2
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
.ogica ca"lata e logica %rograata
9uando un dispositivo elettronico viene costruito in modo da poter funzionare senza un programma (i
circuiti sono scelti e collegati per dare sempre la stessa gamma di risposte viene defnito in logica
ca"lata (dalla parola inglese cable, cavo, flo.
'n altro esempio (avevamo gi visto "uello della lavatrice 8 rappresentato da un orologio digitale di
prima generazione (che di/erenza della lavatrice non presenta parti elettromeccaniche. 0n un orologio
di "uesto tipo non 8 presente alcun microprocessore e nessun programma: i circuiti sono stati stampati
per reagire in modo prefssato alla pressione dei tasti (reset, regolazione orario4data ecc. e per
incrementare l%orario4data.
> ancora: una )la-!tation costruita (per assurdo in logica cablata vi consentirebbe di giocare a "uel
solo gioco corrispondente a "uella particolare predisposizione di dispositivi elettronici e relativi
collegamenti elettrici.
9uando invece 8 presente un microprocessore che esegue istruzioni prelevate da una memoria si parla
di logica %rograata. !pesso la memoria pu@ essere riscritta (come avviene in tutti i personal
computer e il programma 8 cambiato piacere. ,cco allora che il computer pu@ di volta in volta
diventare l;e"uivalente elettronico di una macchina da scrivere (Eord, di una super calcolatrice
(,+cel, simulatore di calcio ($0$A e similiA ecc.
, le soluzioni che sfruttano una logica cablata vengono dette soluzioni /ar!0are (dove con "uesto
termine si indicano le parti fsiche di un sistema di elaborazione# in inglese il termine signifca
letteralmente = ferraglia%. 9uelle che sfruttano invece una logica programmata sono dette soluzioni
so$t0are (i dati e le istruzioni memorizzate sottoforma di un segnale elettrico chiaramente
impalpabile, morbido, soft (che signifca appunto = soCce%.
La soluzione software 8 pi< .essibile: se viene trovato un errore 8 suCciente cancellare "ualche
istruzione e la memoria e sostituirle con "uelle corrette. Lo stesso accade nel caso si decida di
apportare migliorie o adattare il programma a causa, per esempio, di una legge cambiata. 0n un
circuito, invece, se viene trovato un errore "uesto pu@ comportare lo scarto dell;intero circuito stesso e
la realizzazione di un circuito completamente nuovoA
La rigidit delle soluzioni hardware sembrano relegare "ueste ultime ad un ruolo di secondo piano
rispetto alle soluzioni software, ma hanno almeno un grosso pregio che potrebbe essere determinante:
la rapidit nel fornire la rispostaA 6ancando infatti il microprocessore e non essendoci codici
d;istruzione da prelevare nella &A6 nF decodifche da e/ettuare, i dati in input sono trasformati in
"uelli di output ad una velocit molto superiore rispetto ad un programma che compie la stessa
elaborazione.
7el nostro corso ci occuperemo di trovare soluzioni software ai problemi che a/ronteremo. , l;attivit
di programmazione non 8 l;unica da mettere in gioco per risolvere un problema.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. '
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
Dal %ro"lea al %rograa 1 ciclo !i s2il+%%o 3se%li4cato5 !el so$t0are
La scrittura del programma 8 solo una delle fasi del processo di sviluppo di un;applicazione
informatica. 3utto inizia con l;esigenza di risolvere un problema con un sistema informatico. La parola
problema deve essere intesa in modo ampio: gestire la contabilit di un;azienda, usare il personal
computer per scrivere documenti, per una simulazione di guida, per svolgere calcoli complessi,
controllare un processo industriale, pilotare un robot eccetera.
)er "uanto ci riguarda, i problemi saranno espressi in forma testuale. ,cco il testo dell;esame di !tato
del GHHI:
Una galleria d'arte ha deciso di creare un sistema che consenta ai suoi clienti di
consultare da casa il catalogo: dei quadri, tramite accesso a una pagina web che
la galleria pu creare presso un fornitore di servizi telematici.
er ogni quadro ! compilata una scheda che riporta l'autore, il titolo, la tecnica
"olio, tempera ecc.#, le dimensioni, il prezzo. $a consultazione del catalogo: pu
avvenire o semplicemente scorrendo avanti e indietro le schede in ordine
alfabetico oppure cercando uno speci%co autore.
&l candidato, fatte le ipotesi aggiuntive che ritiene necessarie,
'# proponga una soluzione per la creazione del sistema illustrandone la struttura a
blocchi e indicando una soluzione di principio per ciascun blocco(
)# proponga e illustri una struttura per il *ata +ase dei quadri,
,# sviluppi in dettaglio la soluzione per almeno una delle seguenti funzioni,
codi%candone un segmento con uno strumento software di sua conoscenza:
a# creazione del *ata +ase,
b# creazione di una semplice pagina web della galleria,
c# interfaccia per consentire al cliente la consultazione del catalogo: e la visione
delle singole schede,
-# facoltativamente proponga una soluzione di principio per realizzare un sistema
che consenta di mostrare al cliente non solo la scheda di catalogo, ma anche una
fotogra%a del quadro.
0l testo va dapprima ha studiato per evidenziare parti poco chiare (sulle "uali sar necessario prendere
delle decisioni ed eventualmente fare ipotesi aggiuntive su aspetti per i "uali il testo non dice come
comportarsi.
Ad esempio, nel testo si parla di prezzo del "uadro ma non viene indicata la
valuta da utilizzare. 'na galleria d;arte spesso a clienti stranieri, per cui la
soluzione di proporre il prezzo in lire (siamo nel =HI... e l;euro non esisteva
ancora e neppure l;obbligo di esporre il doppio prezzo in euro ed in lire forse
non 8 ottimale. ,cco allora la prima ipotesi aggiuntiva (o, se preferite, un primo
chiarimento: i prezzi verranno indicati sia in lire che in dollari.
9uesta fase viene chiamata studio della situazione reale. La letteratura informatica fa riferimento a
"uesta fase anche con il nome di analisi (termine per@ non corretto da un punto di vista matematico.
7aturalmente noi inizieremo con problemi e testi assai pi< semplici. Ad esempio: calcolare la spesa in
euro per una settimana di viaggi andata e ritorno da casa a scuola. Le uniche cose da chiarire
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. )
1
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
potrebbero essere: 8 necessario percorrere strade con pedaggiD 0l numero di chilometri del percorso in
andata 8 identico a "uello del ritornoD
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 5
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
2engono anche presi in considerazione i re*+isiti (cosa deve fare il programma, con "uali vincoli di
velocit, occupazione di memoria, hardware e software a disposizione, se deve funzionare in rete, se
deve sapere interoperare con altri software magari su piattaforme hardware diverse, se deve
funzionare in real time, se deve essere portabile in altri ambienti hardware4software, , che grado di
robustezza, che grado di sicurezza, che tipo di periferiche deve supporatare ecc.
Devono poi essere individuate tutte le informazioni che 8 necessario gestire. 9ueste spesso verranno
memorizzate in una banca dati (data base. 0l risultato di "uesta fase viene di solito sintetizzato con
uno schema che evidenzia i cosiddetti insiemi entit. e le relazioni tra esse.
Ad esempio, 8 possibile individuare l;insieme entit dei "uadri e "uello dei pittori:
)er ogni insieme entit vengono anche indicati gli attributi che descrivono un esemplare di "uell%
insieme. Ad esempio, per l;insieme entit dei pittori si decide che ogni pittore verr descritto tramite
un codice, un nome ed una data di nascita. >gni "uadro verr invece descritto da un codice e da un
titolo. La freccia che da pittori e raggiunge quadri sta ad indicare che per ogni pittore esiste un certo
numero di "uadri. 7ella banca dati verr creata una tabella =pittori% che conterr su ogni sua riga i dati
di un pittore e similmente per i "uadri. >gni "uadro potrebbe essere associato al suo pittore indicando
nel "uadro il codice del pittore.
9uesta fase viene chiamata analisi dei dati.
Anche per "uesta fase inizieremo con situazioni molto semplici. )roseguendo con l;esempio di
problema presentato al punto uno, non 8 diCcile convincersi che i dati di cui abbiamo bisogno sono:
costo di un litro di carburante, numero di chilometri tra la casa e la scuola, numero di chilometri che il
mezzo utilizzato compie con un litro di carburante, costo di eventuali pedaggi.
)er "ueste semplici situazioni uno schema come "uello appena visto 8 esagerato. (i accontenteremo
di elencare i cosiddetti dati in ingresso (input# il programma li elabora (processing per produrre i
risultati, i dati in uscita (output.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. *
Pittori
Codice
pittore
nome
Data di
nascita
Quadri
Codice
quadro
Titolo
2
costo di un litro di
carburante
chilometri tra casa e scuola
chilometri 4 litro del mezzo
costo di eventuali pedaggi.
INPUT
,laborazione svolta dal
programma
ELABORAZIONE
costo di un litro di
carburante
chilometri tra casa e scuola
chilometri 4 litro del mezzo
costo di eventuali pedaggi.
OUTPUT
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
Deve essere molto chiara una cosa: per dati in input si intendono "uelli in!is%ensa"ili, "uelli cio8 che
il computer non pu@ calcolare o derivare in altro modo. $acciamo un esempio: se ad un certo punto in
un programma abbiamo disposizione una "uantit espressa in ore e per proseguire 8 necessario
esprimerla i secondi, non cediamo alla pigrizia chiedendo a chi sta usando il programma di inserire
"uesto valore usando la tastiera, pretendendo che sia lui a fare la conversioneA !ar invece il
programma a calcolare autonomamente il valore richiesto moltiplicando per JKLL il numero delle ore...
7>3A: non 8 raro il caso di alunni in diCcolt al momento di individuare i dati in input. 0ntanto diciamo
che non 8 necessario avere la certezza di averli individuati proprio tutti per poter proseguire: 8
normale, dopo avere individuato i pi< importanti ed evidenti, iniziare la fase successiva (trovare un
;modo; di utilizzare i dati in input per giungere alla risultato# si ad un certo punto ci si accorge che
manca "ualche dato per poter proseguire lo si aggiunger semplicemente ai dati di input.
B arrivato il momento di descrivere il modo in cui i dati di input devono essere utilizzati per ottenere i
risultati. 9uesta ;descrizione; 8 chiamata algorito.
Da =Ei1ipedia%, l%enciclopedia libera (http:44it.wi1ipedia.org, con "ualche piccolo adattamento:
0l termine (algoritmo deriva dal nome del (grande matematico arabo AlMNhwarizmiO,
che pubblic@, tra gli altri, il libro dal "uale prende le origini la parola Algebra (ora
sapete chi odiare. 7ei suoi libri ne scrive anche i procedimenti per portare a termine
alcuni tipi di calcolo: "uesti procedimenti presero il nome di algoritmi.
7ella sua defnizione pi< semplice ed intuitiva un algoritmo 8 una se"uenza ordinata di
passi semplici che hanno lo scopo di portare a termine un compito pi< complesso (una
ricetta da cucina, ad esempio, pu@ essere considerata come un algoritmo che partendo
da un insieme di singoli alimenti di base ed eseguendo una se"uenza di passi, produce
come risultato un piatto composto.
In +n o!o %i6 $orale7 %ossiao *+in!i !e4nire l8algorito
coe +na se*+en#a or!inata e 4nita !i istr+#ioni c/e7 !ato +no
o! +na serie !i eleenti in in%+t7 %ro!+ce +no o! +na serie !i
ris+ltati in o+t%+t .
!e"uenza ordinata signifca che esiste un ordine preciso in base al "uale vengono
eseguite le istruzioni (d;altronde sarebbe ben diCcile prima sbattere un uovo e poi
rompere il guscioA.
!e"uenza fnita signifca che le istruzioni possono essere anche veramente tante, ma
non in numero limitato# inoltre il numero di volte che globalmente "ueste istruzioni
vengono eseguite non pu@ essere illimitato.
La se"uenza delle operazioni deve essere chiara, mai ambigua, deve avere un ordine
ben preciso, e deve giungere a termine per ogni input. 3utte le istruzioni devono
comportare delle azioni tra "uelle che l%esecutore 8 in grado di svolgere. 0l risultato di
un algoritmo deve essere sempre uguale indipendentemente da chi lo esegue.
!e, come visto, una ricetta da cucina rappresenta un discreto esempio di algoritmo
direttamente eseguibile da un essere umano, l;istruzione :aggiungere sale "uanto
basta: diCcilmente sar comprensibile per una macchina (ma anche tra gli umani
stessi "uel = "uanto basta% verrebbe sicuramente interpretato in tanti modi diversiA.
'n passo di un algoritmo pu@ essere defnito anche tramite un altro algoritmo
(chiamato in "uesto caso sottoalgoritmo, che suddivide il compito in compiti ancora
pi< elementari. $acciamo un esempio: l;algoritmo :va dal salotto alla cucina: si
compone in realt delle seguenti istruzioni:
esci dal salotto
curva a sinistra
prosegui per il corridoio fno all;ultima porta sulla sinistra
attraversa la porta a sinistra
9uesto 8 certamente fn troppo esplicito per un operatore umano (al "uale gi il
problema originale :va dal salotto alla cucina: sembra probabilmente abbastanza
elementare da non richiedere, in apparenza, suddivisioni, ma nel caso di un robot
richiederebbe di specifcare i passi con ben altra (minore complessit.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. +
3
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
L;algoritmo :attraversa la porta a sinistra: si compone di:
controlla se la porta 8 aperta
nel caso che la porta sia aperta salta il passo seguente
apri la porta
avanza di un metro
L;algoritmo :apri la porta:, compreso nel precedente, a sua volta si compone di:
protendi il braccio
a/erra la maniglia
rotea la mano di JL gradi in direzione antioraria
applica una pressione alla maniglia diretta di fronte a te
...
'n modo dettagliato di rappresentare l;algoritmo :attraversa la porta a sinistra: 8
allora il seguente:
controlla se la porta 8 aperta
nel caso che la porta sia aperta salta il passo seguente
apri la porta
protendi il braccio
a/erra la maniglia
rotea la mano di JL gradi in direzione antioraria
applica una pressione alla maniglia diretta di fronte a te
...
avanza di un metro
'na breve analisi dell;esempio sopra, porta a delineare alcune caratteristiche essenziali
di un algoritmo:
non ambiguo: le istruzioni devono essere univocamente interpretabili#
eseguibile: ogni istruzione deve terminare in tempo fnito.
0noltre, in informatica, si richiede generalmente che un algoritmo sia fnito, ovvero
termini per ogni insieme di dati di ingresso.
'n algoritmo non 8 tale se risolve in un caso particolare di un problema: deve essere utile per
la soluzione di un;intera classe di problemi. $acciamo un esempio: il procedimento che serve a
calcolare l;area del triangolo la cui base misura J m e l;altezza P m, e solo l;area di "uesto
triangolo, non pu@ defnirsi un algoritmo. 0l procedimento invece che descrive come calcolare
l;area di un "ualsiasi triangolo nota la misura della base e dell;altezza, risolve un;intera classe
di problemi (8 una soluzione generale e pu@ defnirsi algoritmo.
'n %rograa 8 la traduzione di un algoritmo in un blocco di istruzioni eseguibili
automaticamente da un sistema di elaborazione elettronico.
Arrivati a "uesto punto dobbiamo confrontarci con l;assoluta inadeguatezza del linguaggio
parlato (il cosiddetto linguaggio naturale per descrivere un algoritmo. Qanalizzo con un
classico esempio:
la vecchia porta la sbarra
9uale signifcato deve essere dato "uesta fraseD !i tratta forse di un;anziana signora china
sotto il peso di una pesante sbarraD > si sta parlando di uscita sbarrata da una vecchia portaD
9uesta ambiguit 8 inaccettabile per un computer: esso deve sapere esattamente come
comportarsi e deve produrre sempre gli stessi risultati se gli vengono sottoposti gli stessi dati
in input.
B necessario servirsi di linguaggi formali, cio8 rigorosamente defniti. 9uesti tipi di linguaggio
sono di solito molto meno ricchi di vocaboli e di regole sintattiche ma hanno il grosso pregio di
non essere ambigui (ogni istruzione 8 chiara, ha un solo signifcato e produce sempre lo stesso
risultato.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. ,
4
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
9uesti linguaggi sono chiamati linguaggi di programmazione. La fgura professionale che si
occupa della scrittura dei programmi 8 il %rograatore. la fase di scrittura di un
programma 8 detta di co!i4ca (il programmatore scrive il codice del programma
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. -
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
7on 8 detto che sia il programmatore a studiare il problema e ad ideare l;algoritmo risolutivo: la fgura
professionale specializzata in "uesti compiti preliminari e fondamentali 8 chiamato analista. ,%
certamente vero che il ruolo dell;analista e del programmatore possano essere svolti dalla stessa
persona. )er compiere una buona analisi 8 necessaria molta esperienza, ed 8 per "uesto che spesso si
nasce ;semplici; programmatori per poi diventare analisti o analistiMprogrammatori.
il ruolo del programmatore ; puro; 8 "uello allora di ricevere dall;analista la descrizione dell;algoritmo
per provvedere alla codifca (cio8 scrittura di "uest;ultimo usando un linguaggio di programmazione.
3orneremo presto sulla "uestione della descrizione degli
algoritmi: 8 il tema portante di "uest;anno scolasticoA
7>3A: 8 corretto fare distinzione tra il risol+tore di un problema (colui che ha ideato l%algoritmo che lo
risolve e l-esec+tore materiale dei passi dell%algoritmo. 7el nostro caso il risolutore 8 sempre un
uomo4donna e l%esecutore 8 il computer.
3erminata la scrittura del programma inizia la fase di test. !ottoporre a test un programma
signifca provarlo con tutte le confgurazioni di dati in input normali e particolari. Di nuovo,
facciamo un semplice esempio immaginando di avere scritto un programma che, forniti due
numeri in input, calcola che percentuale 8 il primo rispetto al secondo# ad esempio se il primo
numero fosse PL ed il secondo GPL, il risultato fornito dovrebbe essere JJ,J R periodico (PL 8
infatti un terzo di GPL.... 7on 8 diCcile convincersi che nel programma la formula usata 8:
(primo numero4secondo numeroSGLL
$are il test di "uesto programma con confgurazioni di dati in input ;normali;, signifca provare il
programma con coppie di numeri tipo (GL,TL (PL,GPL eccetera. )oi ci si potrebbe domandare se il
programma fornisce risultati corretti anche "uando il primo numero 8 maggior dal secondo: (TUL,KL# e
scopriremo che la risposta 8 s?: otterremo come valore ULLR (in e/etti, TUL 8 il "uadruplo di KL. , se
usassimo numeri negativiD 7essun problema...
>1, 8 arrivato il momento di essere cattivi: e se usassimo numeri decimaliD 3ipo (GL.T, HV.P D , se il
primo numero fosse zero: (L, JUD Anche con "ueste confgurazioni di valori in input il programma
continua a fornire risultati corretti. 5iunti a "uesto punto, il programmatore inesperto (o pigro
potrebbe concludere che il programma funziona bene in tutti i casi possibili. )urtroppo, la matematica
c;insegna che non 8 possibile dividere per zero: inserendo una confgurazione di input con il secondo
uguale a zero, come in (VT,L, il programma andrebbe letteralmente tiltA 5li informatici in "uesti casi
usano un;espressione assai colorita: il programma va in crashA
0l caso dello zero come secondo numero 8 un cosiddetto caso liite: ogni programma dovrebbe
essere testato in tutti i casi limite che potrebbero presentarsi, anche se con probabilit molto bassaA
La fase di test viene di solito suddivisa a sua volta in:
alpha test: 8 "uello svolto direttamente dal programmatore che ha scritto il codice o comun"ue
da personale interno alla ditta che commercializzer il software# potremmo dire che in "uesta fase
vengono trovati gli errori pi< grossolani#
beta test: "uando il software viene ritenuto suCcientemente stabile viene distribuito, di solito
gratuitamente, ad un numero ristretto di utenti che, in cambio del benefcio di poter disporre in
anteprima del prodotto "uasi fnito, comunicheranno secondo protocolli stabiliti una descrizione
degli errori che capitano durante l;utilizzo# se il prodotto 8 particolarmente complesso, il numero
dei beta tester, pu@ essere elevato: ad esempio, "uando la 6icrosoft rilascia per il beta test una
nuova versione di Eindows lo fa anche a decine di migliaia di utentiA
gamma test: a volte viene defnito un ulteriore livello che si di/erenzia dal precedente solo del
fatto che dovrebbe essere "uasi esente da errori
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 10
5
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
La fase di test ha lo scopo di evidenziare gli errori durante il funzionamento del programma, il che
non vuol dire per@ automaticamente sapere "uale istruzione ha causato il problema.
La fase di !e"+g indica invece l;attivit del programmatore volta ad individuare esattamente la
porzione di codice che contiene l;errore in modo da poter eliminare.
>gni volta che si scopre un errore 8 necessario ritornare alla fase di codifca per modifcare il codice.
A33,7W0>7,AA 'na delle cattive abitudini pi< comuni 8 "uella di non testare nuovamente il programma
dopo l;eliminazione di un errore. )urtroppo l;esperienza insegna che, non cos? raramente come si
potrebbe pensare, le modifche apportate per correggere un errore ne introducono altriA
$inalmente il codice pu@ essere immesso sul mercatoA !i parla di rilascio (release. 6a non 8 fnita
"uiA Anzi, rapportato a GLL, il totale dell;impegno rappresentato da "ueste fasi viene stimato da molti
come non superiore al ULR
,d il resto D !iate sinceri: "uante volte vi 8 capitato di ac"uistare un video game senza essere costretti
ad applicare una cosiddetta patch (letteralmente pezza, correzione. 9uante volte come utenti siamo
rimasti in attesa dell;ennesimo service pac/ (un 1it che contiene molte patch =in un colpo solo% di
Eindows o di >Cce o di altri softwareD 6a anche senza errori, ogni anno vengono immesse sul
mercato nuove versioni ("ualcuno riesce a contare "uelle della serie $0$AD o di $inal $antas-D.
0l KLR che manca di tutto il costo per lo sviluppo del software viene fagocitato dalla cosiddetta
an+ten#ione. (i sono tre tipi di manutenzione:
correttiva: anche dopo aver superato tutte le fasi di test, 8 "uasi impossibile che un software non
contenga ancora almeno un errore# periodicamente, "uindi, vengono rilasciate versioni che si
spera siano di volta in volta meno a/ette da errori#
perfettiva o migliorativa: indica tutti "uegli interventi che non servono a togliere degli
errori ma a migliorare in "ualche modo il prodotto# ad esempio a renderlo pi< veloce, a
diminuire le sue esigenze di spazio sul disco, a renderlo capace di riconoscere nuove
periferiche, a compiere funzioni prima non previste eccetera#
adattiva o adattativi: nessun errore da togliere, nessun miglioramento da portare# ma un
cambiamento nel contesto in cui il software deve funzionare costringe ad apportare delle
modifche: il caso classico che si cita in "uesta situazione 8 la modifca di una legge che forza la
software house a rispettarla, a costo di pesanti modifche del codiceA
0nfne, "uando un;applicazione non 8 pi< utile (perchF superata da altre, perchF le modifche
richieste sono troppe, perchF un evento imprevisto la rende obsoleta eccetera se ne pu@ anche
decretare la morte, la dismissione.
&iassumendo:
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 11
6
7
8
1
Studio della
situazione reale
2
Analisi dei dati
3
Algoritmo/i risolutivo
4
Codifica
5
test
8
Dismissione
6
debug
7
Manutenzione
,% doveroso sottolineare che "uesto processo nel "uale io ho
individuato otto stadi non 8 l;unico modello riconosciuto per lo
sviluppo del software (e a dire la verit l;ho semplifcato rispetto
"uelli che trovate nella letteratura informatica. B per@ facile da
capire e si adatta bene alla maggior parte delle stazioni che ci
troveremo ad a/rontare. Di tanto in tanto ritorneremo su uno degli
stadi per aggiungere maggiore dettaglio.
Questo tipo di modello detto! per
e"identi moti"i! a cascata.
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
(rc/itett+ra /ar!0are e so$t0are !i +n sistea !i ela"ora#ione
)er capire cosa sia un linguaggio di programmazione e come utilizzarlo per scrivere programmi, 8
prima necessaria una panoramica che mostri a grandi linee il funzionamento di un sistema di
elaborazione.
SCHEMA A BLOCCHI DI UN SISTEMA DI ELABORAZIONE
Nota: tec!ca"ete #a$%a&o' ! ()##o$t! &! "e"o$!**a*!oe &! "a((a
(oo aco$a #e$!+e$!c,e &! !#)t-o)t#)t. La %o$o !"#o$ta*a / #e$0
ta%e &a "e$!ta$e ) t$atta"eto a #a$te.
0l cuore del sistema 8 la ()' ((entral )rocessing 'nit, 'nit centrale di processo. 7ei personal
computer la ()' 8 rappresentata da un singolo chip (il microprocessore: )entium, (eleron, Athlon,
!empron, )ower)(, non vi dicono nulla "uesti nomiDD
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 12
R
A
M
C1U
1e$!+e$!c,e &!
!#)t 2ta(t!e$a3
1e$!+e$!c,e &!
o)t#)t 2"o!to$3
S)##o$t! &! "e"o$!**a*!oe
&! "a((a 2&!(c,!' a(t$!' CD3
1e$!+e$!c,e &!
!#)t - o)t#)t
2"o&e"3
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
La ()' 8 il =cervello% del sistema. 0l software di base (il Q0>! che controlla direttamente l%hardware,
windows4linu+ cio8 i sistemi operativi, gli strumenti di programmazione ed altre utilit di sistema ed
anche "uello applicativo (programmi di video scrittura, contabilit, giochi ecc. 8 formato da istruzioni,
molte istruzioni. )er avere un idea della complessit, pensate che un software applicativo come Eord 8
formato da milioni di istruzioni ... 9ueste indicano ci@ che va fatto per consentire all%utente di scrivere
un documento usando il computer. ,cco, sinteticamente, come funziona l%intero meccanismo:
'sando l%interfaccia che il sistema operativo mette a disposizione, l%utente comanda il caricamento
delle istruzioni (il programma dai supporti di memorizzazione di massa: nel caso di Eindows si fa
doppio clic1, ad esempio, sull%icona di Eord ....
Le istruzioni (se non tutte almeno "uelle che servono in un primo momento sono trasferite dai lenti
supporti di memorizzazione di massa nella velocissima memoria elettronica (&A6: da "uest%ultima
saranno a disposizione della ()' in tempi molto brevi.
La ()' preleva la prima istruzione del programma dalla &A6 (&andom Access 6emor-, memoria ad
accesso casuale.
La ()' =capisce% cosa gli chiede l%istruzione.
LA ()' invia i necessari comandi a tutti i dispositivi interessati da "uell%istruzione, eseguendola.
!e l%istruzione non 8 "uella fnale, si ritorna al punto J prelevando la successiva istruzione e cos? via ...
Durante l%esecuzione delle istruzioni, la ()' pu@ usare la parte della &A6 rimasta libera per registrare
dati intermedi: 8 sempre per motivi di velocit che si preferisce la memoria elettronica a "uella di
massa (naturalmente si dovr prima o poi provvedere anche alla registrazione dei dati sui supporti di
massa, permanenti, pena la perdita dei dati stessi allo spegnimento del computer. Ad esempio, i
documenti creati con Eord sono prima registrati nella &A6 e solo con un comando esplicito di
registrazione ($ile 4 !alva sono memorizzati sui dischi.
Alcune istruzioni chiederanno alla ()' di controllare l%uso di periferiche di input o di output. !empre
pensando a Eord, non 8 diCcile convincersi che le sue istruzioni debbano fare in modo che la ()'
rimanga in attesa fno a che chi sta usando il programma non preme un tasto "ualsiasi o usa il mouse.
7on appena l%utente preme un tasto, le istruzioni comandano la sua visualizzazione sul video# se con il
mouse viene scelto un comando dal menu, le istruzioni chiederanno alla ()' di comportarsi in modo
appropriato.
0n realt tutto "uesto avviene con la collaborazione del sistema operativo (Eindows o Lilnu+, ad
esempio: "uest%ultimo mette a disposizione di ogni programma una serie di servizi che possono
essere invocati# ad esempio se un carattere deve essere fatto apparire sullo schermo, tutte le
operazioni coinvolte non sono gestite al massimo dettaglio dal programmatore di word (per fortunaA#
"uello che accade 8 che il programmatore che ha scritto Eord =chiede% a Eindows di fare "uesto per
lui. !ono tantissimi i servizi messi a disposizione da un sistema operativo (gestione di tutte le
periferiche, gestione della ram, del fle s-stem, della rete ecc.. 9uando i sistemi operativi non
esistevano ancora od erano molto primitivi, la vita del programmatore era molto pi< dura (doveva
programmare 3'330 i dettagli. Approfondirete "uesti aspetti nel corso di sistemi.
,saminiamo ora in dettaglio il funzionamento di una ()'. ,cco un ingrandimento:
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 1'
R
A
M
C
1
U
CU
Cot$o% U!t
Deco&!+!cato$e
ALU
A$!t"et!c
Lo4!c
U!t
1e$ co"a&a$e %a
%ett)$a o %a (c$!tt)$a
I&!$!**! #e$ %e44e$e
o (c$!5e$e %a RAM
(
6)( &at! e(te$o: #$e%e5o ) &ato &a%%a RAM o %o $e4!(t$o &a%%a RAM
$e4!(t$!
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
7on spaventatevi: 8 pi< semplice di "uello che sembra a colpo d%occhio. 7ella zona in grigio della &A6
immaginiamo essere presenti un blocco di istruzioni da eseguire (potrebbero essere "uelle di un
programma come Eord.
La RAM: #e(!a"o%a co"e )a (e7)e*a &! ce%%e' c,!a"ate 68te. I o4! 68te #)0
e((e$e "e"o$!**ato ) &ato' co"e ) !(t$)*!oe o& ) ca$atte$e 25e&$e"o &o#o co"e
e& ! c,e +o$"a3. Ne% &!(e4o 7)! (o#$a (oo (tat! e5!&e*!at! ! 4$!4!o 7)att$o 68te.
O4! ce%%a 268te3 5!ee !&!cata co !% ()o !&!$!**o' c!o/ %a #o(!*!oe a #a$t!$e
&a%%9!!*!o. :!(to c,e (! co"!c!a a cota$e &a *e$o' 7)e(t9)%t!"o / %9!&!$!**o &e%%a #$!"a ce%%a !
a%to e%%a RAM 2(! #a$%a ac,e &! 68te *e$o3. La (eco&a ce%%a &a%%9a%to ,a a%%o$a !&!$!**o )o e
co(; 5!a... I 68te ! 4$!4!o !!*!ao a%%9!&!$!**o c!7)e e te$"!ao 7)att$o 68te #!< a5at!'
a%%9!&!$!**o otto 2co(!&e$a&o !% c!7)e (oo a##)to 7)att$o !&!$!**!3.
I $e4!(t$!: (oo ce%%e &! "e"o$!a (#ec!a%!' !te$e a%%a C1U' )(ate #e$ "e"o$!**a$e
valori per diversi scopi: la ()' impiega pochissimo a trovare o scrivere un dato nei
registri, perchF sono molto vicini ad essa e molto veloci. ,% "uindi assai conveniente
tenere "ui i risultati intermedi delle operazioni e tutto ci@ che si dovrebbe continuamente
rileggere o scrivere nella pi< lenta &A6. )urtroppo la spazio all%interno della ()' 8 veramente minimo:
c%8 spazio solo per alcune decine di registri ... (hiaro che di volta in volta si terr, della &A6, solo ci@
che serve alle istruzioni del momento, poi si dovr sostituire il contenuto dei registri con un altra parte
della &A6. )ur con "ueste limitazioni, lavorare con i registri d grossi benefci rispetto all%uso della sola
&A6.
Alcuni registri hanno poi una funzione speciale: uno, chiamato contatore di programma (program
counter indica a "uale indirizzo della &A6 si trova il dato che rappresenta la prossima istruzione da
eseguire.
'n altro 8 chiamato registro indirizzi: 8 "ui che va depositato un indirizzo ogni volta che si vuole
leggere o scrivere un b-te della &A6 ("uando si vuole leggere il codice della prossima istruzione da
eseguire, il contatore di programma viene infatti copiato "ui.
'n altro 8 chiamato registro istruzioni e contiene il codice numerico dell%istruzione letta nella &A6, che
deve essere eseguita (infatti ogni possibile istruzione 8 rappresentata da un codice numerico.
AL': 8 l%'nit Aritmetico Logica. ,ssa svolge le operazioni aritmetiche (matematiche elementari ed i
confronti logici tra due dati (sa dire se sono uguali, se uno 8 pi< grande o pi< piccolo dell%altro ecc..
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 1)
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
(ontrol 'nit: 8 l%unit di controllo. ,% lei che invia a tutti gli altri dispositivi segnali elettrici con cui
comanda tutte le micro operazioni che possono essere svolte. Ad esempio pu@ comandare l%invio del
contenuto di un registro in un altro registro, oppure la lettura di un b-te della &A6 ed il trasferimento
del suo contenuto in un registro (o il contrario, il trasferimento alla AL' di due dati da sommare o da
sottrarre (ed il comando che fa eseguire la somma e la sottrazione. )u@ inviare segnali di comando
anche a dispositivi esterni alla ()': ad esempio pu@ comandare allo scanner di inviare il prossimo
blocco di dati del documento che sta leggendo. 0nsomma 8 il vero regista che regola il funzionamento
di tutti gli altri dispositivi interni od esterni.
Qus: si 8 parlato di invio di comandi dalla control unit, di trasportare b-te dalla &A6 ai registri e
viceversa, di comunicare indirizzi per usare la &A6. (ome viaggiano tutte "ueste informazioni D
!emplice, usano il bus A Qattute a parte, il termine indica i canali fsici lungo i "uali si spostano i
segnali elettrici che rappresentano dati, indirizzi e comandi. (i sono tre tipi di bus:
Qus dati: come suggerisce il nome, trasporta dati (il contenuto di una cella di &A6, di un registro o un
b-te da o verso una periferica. ,siste un bus dati interno, sul "uale viaggiano i dati all%interno della
()', ed uno esterno che permette lo scambio dei dati tra la ()' e dispositivi esterni (e viceversa o tra
dispositivi esterni stessi. Xo rappresentato i bus dati con una linea a tratti piccoli. )er non appesantire
il disegno non ho collegato tutti i dispositivi che si possono scambiare dati grazie al bus interno. Le
frecce indicano naturalmente il senso di percorrenza.
7elle moderne architetture esistono bus specializzati per scambiare dati con periferiche che
consumano "uesti ultimi ad un tasso elevatissimo. 'n esempio 8 rappresentato dalla scheda grafca:
essa sfrutta bus dedicati (connessione A5), oggi in via di sostituzione con i collegamenti !erial Ata.
Qus indirizzi: ogni volta che la ()' legge o scrive un dato dalla &A6 deve prima impostare il relativo
indirizzo # pensate al bus indirizzi come ad un bus dati specializzato nel trasportare indirizzi. Xo
indicato il bus indirizzi con una linea a tratti larghi.
Qus controlli: 8 l%insieme delle linee su cui viaggiano i comandi (segnali elettrici che la (ontrol 'nit
invia a dispositivi esterni# serve anche ai dispositivi esterni per segnalare eventi particolari alla ()':
avete presente cosa accade "uando fnisce la carta della stampante D > "uando il disco che tentate di
scrivere 8 protetto D > "uando non c%8 pi< spazio sul disco D L%ho indicato nel disegno con le tre linee
continue che puntano verso il basso. La control 'nit pu@ attivare o disattivare anche i componenti
interni grazie a delle linee di selezione: le ho indicate con delle linee continue senza frecce: "uando la
(ontrol 'nit vuole attivare un dispositivo, invia lungo una linea di selezione un segnale apposito.
>ra che sono stati descritti tutti i componenti, vediamoli all%opera. 0mmaginiamo che le istruzioni da
eseguire siano contenute nei b-te in grigio:
0l registro program counter, abbiamo detto, contiene l%indirizzo dell%istruzione da eseguire (in "uesto
caso l%indirizzo del primo b-te in grigio. )er poterla leggere dalla &A6 8 necessario che tale indirizzo
sia contenuto nel registro indirizzi. L%unit di controllo comanda allora la copia del contenuto del
program counter in "uesto registro.
L%unit di controllo comanda "uindi al dispositivo di lettura4scrittura della &A6 (non evidenziato nel
disegno per semplicit di leggere il b-te all%indirizzo contenuto ora nel registro indirizzi# il suo valore (il
codice dell%istruzione viene trasferito lungo il bus dati esterno e da l? sul bus dati interno, fno a
depositarlo nel registro istruzioni.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 15
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
L%unit di controllo comanda a "uesto punto al decodifcatore di leggere dal registro istruzioni il codice
numerico dell%istruzione e di =capire% che cosa 8 richiesto.
!ulla base della =risposta% del decodifcatore l%unit di controllo attiva in se"uenza i dispositivi
interessati dall%istruzione# ad esempio (semplifcando se si dovesse calcolare A Y Q Z (
prelevare Q dalla &A6 (indirizzo di Q in registro indirizzi e successiva lettura#
prelevare ( dalla &A6 (indirizzo di ( in registro indirizzi e successiva lettura#
trasferire alla AL' gli operandi e comandare la somma
copiare il risultato nella posizione dove in &A6 si trova =(% (indirizzo di ( in registro indirizzi e scrittura
Ne% +$atte"#o !% #$o4$a" co)te$ / (tato a)to"at!ca"ete !c$e"etato e
!&!ca %9!&!$!**o &e%%a #$o((!"a !(t$)*!oe &a e(e4)!$e. S! #)0 a%%o$a
$!co"!c!a$e &a% #)to 1' +!o a c,e ... !% co"#)te$ 5!ee (#eto = I $ea%t>'
ac,e &o#o c,e !% #$o4$a""a te$"!a' a& e(e"#!o c,!)&e&o ?o$&' )
a%t$o $!"ae ! +)*!oe: 7)e%%o c,e 4!> +)*!oa5a #$!"a &! ?o$&'
?!&o@( ! #e$(oa. I+att! !% (!(te"a o#e$at!5o' e((o (te((o ) !(!e"e &!
#$o4$a""!' / a%%9o#e$a &a% "o"eto &e%%9acce(!oe &e% co"#)te$ +!o
a%%o (#e4!"eto. A)a&o %9)tete co"a&a' )(a&o %9!te$+acc!a 4$a+!ca'
%a #a$te*a &! )9a##%!ca*!oe' %e !(t$)*!o! &! 7)e(t9)%t!"a a++!acao ! RAM 7)e%%e &e% (!(te"a
o#e$at!5o e& !% #$o4$a" co)te$ 5!ee +atto B#)ta$e9 a%%a #$!"a !(t$)*!oe &e%%9a##%!ca*!oe' c,e
!!*!a co(; a& e((e$e e(e4)!ta. A #$o4$a""a te$"!ato (! $!#$e&e a& e(e4)!$e !% (!(te"a
o#e$at!5o. D)$ate !% ()o +)*!oa"eto %9a##%!ca*!oe #)0 $!c,!a"a$e #a$t! &e% (!(te"a
o#e$at!5o 2$!c,!e(ta &! (e$5!*!3: !% #)to a c)! (! e$a a$$!5at! co %9a##%!ca*!oe 5!ee #$!"a
"e"o$!**ato' #e$ #ote$ $!#$e&e$e' &o#o c,e !% (!(te"a o#e$at!5o ,a e(a)&!to %a $!c,!e(ta' !%
#$o4$a""a e(atta"ete &a%%9!(t$)*!oe a c)! e$a (tato !te$$otto.
La +a(e ! c)! (! #$o55e&e a #$e%e5a$e !% co&!ce )"e$!co &e%%9!(t$)*!oe &a e(e4)!$e / c,!a"ata
$ase !i $etc/ (prelievo.
La fase in cui il decodifcatore interpreta l%istruzione, determinando le microoperazioni che verranno
poi eseguite dall%unit di controllo 8 chiamata $ase !i !eco!e (decodifca.
La fase in cui le microoperazioni sono e/ettivamente portate a termine, attivando nella giusta
se"uenza i dispositivi interessati 8 chiamata $ase !i e9ec+te (esecuzione.
0l ciclo fetch, decode ed e+ecute viene ripetuto a velocit incredibili: oggi
miliardi di milioni di volte al secondo (G volta al secondo Y G Xertz Y
GXz# un milione di volte al secondo Y G 6ega Xertz Y G6hz# G5hzY un
miliardo. Le fantastiche capacit di un sistema di elaborazione sono
tutte "ui: una velocit pazzesca ed una memoria perfetta nell%eseguire
istruzioni semplicissime (sposta un b-te di "ua e mettilo di l ... A ,%
come se un muratore usasse mattoni grandi come pezzi del lego (le istruzioni semplicissime ma lo
facesse ad una velocit incredibile, costruendo palazzi meravigliosi, ma solo se "ualcuno lo guida
passo passo (il programma ... 9ualcuno ha infatti defnito il computer uno stupido molto veloce A
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 1*
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
&A))&,!,73AW0>7, 073,&7A D,LL, 07$>&6AW0>70
R!"ae &a (c!o4%!e$e aco$a ) o&o !"#o$tate: co"e (oo $a##$e(etate
%e !+o$"a*!o! e%%a RAM e e! $e4!(t$! C E %e !(t$)*!o! C E((e*!a%"ete
&e5oo e((e$e t$attat! )"e$! e ca$atte$!. Le #$!"e "acc,!e ca%co%at$!c!
(attenzione: non sto ancora parlando di computer elettroniciA erano grandi
grovigli di ingranaggi: pur costruite con una precisione ammirabile, gli attriti ed
i tempi di funzionamento di tutte "ueste parti meccaniche costituivano un limite
serio per la velocit di elaborazione.
6entre un ingranaggio impiega un certo tempo per funzionare, un segnale elettrico va alla velocit
della luce (JLL.LLL Nm al secondo A (ome dire, pi< di sette volte il giro della terra in un secondo A
!ono stati ideati dei dispositivi (circuiti elettronici in grado sfruttare i segnali elettrici per
rappresentare le informazioni ed elaborarle. !i 8 anche capito che il miglior modo di procedere sarebbe
stato "uello di rappresentare tutto sotto forma di numeri binari. (erchiamo di arrivare a "uesta
conclusione per gradi.
I (e4a%! e%ett$!c! o (oo #e$+ett!: ) (e4a%e e%ett$!co' "et$e 5!a44!a () ) +!%o'
/ (o44etto a &!(t)$6! e& atte)a*!o! &! 5a$!o t!#o c,e te&oo a &!(to$ce$%o: !
#a$te*a' c!o/' #o((!e&e ce$te ca$atte$!(t!c,e 2+o$"a' #ote*a ecc.3 D a%%9a$$!5o o
(oo #!< e(atta"ete %e (te((e. 1e$ c)! (e (ce%4o &)e (e4a%! a66a(ta*a (!"!%! t$a
%o$o e %! t$a("etto' #ot$e66e ca#!ta$e c,e c,! %! $!ce5e (ca"6! %9)o #e$ %9a%t$o
2e$$o$e3. A)e(ta #o((!6!%!t> c$e(ce co !% )"e$o &e! t!#! &! (e4a%e )(at!. A)e(to
(#!e4a #e$c,E ! #$otot!#! &! ca%co%ato$e c,e ce$ca5ao &! )(a$e tat! (e4a%! &!5e$(!
#e$ $a##$e(eta$e %e c!+$e )"e$!c,e e& ! ca$atte$! &e%%9a%+a6eto o e66e$o "o%to ()cce((o:
(e"#%!ce"ete %a #$o6a6!%!t> &! e$$o$e e$a t$o##o a%ta = Ce$to (e ! t!#! &! (e4a%e +o((e$o &! "eo'
&!"!)!$e66e %a #$o6a6!%!t> &! co+o&e$%! ... F! &o5e #o((!a"o a$$!5a$e C U (o%o (e4a%e o
6a(ta: (a$e66e (e"#$e )4)a%e a (e (te((o e o #o$te$e66e !+o$"a*!oe' "a &)e ... D)e / #$o#$!o
$!()%tato !% )"e$o ott!"a%e: )(a&o (o%o &)e (e4a%! !% #!< #o((!6!%e &!5e$(! t$a %o$o' / 6e
&!++!c!%e c,e ) (e4a%e 5e4a &!(to$to a% #)to ta%e &a co+o&e$%o #e$ %9a%t$o. E9 ata %a logica
digitale (binaria, basata cio8 sull%uso di due soli simboli (che possiamo far corrispondere alle cifre L ed
G. 3utte le informazioni devono essere codifcate (rappresentate con combinazioni diverse di L ed G.
9ueste cifre, dette binarie, sono anche chiamate bit. 'n bit pu@ essere L od G.
0 circuiti digitali sono facili da costruire: digitali, cos? sono chiamati i circuiti in grado di trattare segnali
di due tipi, per confrontarli e combinarli. )urtroppo non 8 possibile neanche accennare alla
realizzazione dei circuiti digitali. 2i basti sapere che 8 relativamente semplice costruire circuiti per
memorizzare, sommare, sottrarre, moltiplicare, dividere, confrontare ecc. due numeri binari. 9uesto
perchF le regole dell%aritmetica binaria (come si fanno le somme, sottrazioni, moltiplicazioni ecc. sono
addirittura pi< semplici di "uelle che usiamo noi con la nostra aritmetica decimale (le cifre dallo L al
H A Qeh, avete un intero corso di elettronica per togliervi certe voglieA
0l sistema binario 8 e"uivalente a "uello decimale: come dire che ogni numero espresso
con la nostra notazione decimale 8 esprimibile anche in binario ed in modo biunivoco. 0l
termine signifca che, dato un "ualsiasi numero espresso in decimale, lo si pu@ convertire
ottenendo un numero in forma binaria# viceversa se si parte da "uesto numero binario e
lo si converte in decimale, si ritorna al numero di partenza. 9uesto 8 molto importante:
signifca poter continuare per noi a fornire dati in decimale all%elaboratore. 9uesti saranno
convertiti in binario ed elaborati. 0l risultato sar di nuovo, per noi, convertito in binario,
con la certezza di non commettere e"uivoci. ,"uivalentemente, signifca che tutte le operazioni
matematiche possibili in decimale lo sono anche in binario e che se una certa operazione in decimale
d un certo risultato, lo stesso verr fornito in binario dall%operazione corrispondente. )otremmo dire,
volgarmente, che il sistema binario 8 =potente% "uanto "uello decimale.
Anche le informazioni non numeriche sono comun"ue rappresentabili sotto forma di numeri.
(onsideriamo caso per caso:
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 1+
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
Alfanumeriche: le singole cifre numeriche, le lettere dell%alfabeto ed altri caratteri come la
punteggiatura: basta far corrispondere ad ogni carattere un ben preciso codice numerico. 'no tra i
codici pi< di/usi 8 l%(:CII: secondo "uesto codice, ad esempio la lettera =A% 8 codifcata con il numero
KP, la =Q% con KK e cos? via (i numeri precedenti il KP sono usati per altri caratteri. 7aturalmente
l%elaboratore sapr "uando interpretare un numero come tale o come la rappresentazione di un
carattere. 7ota: in fondo al libro troverai un appendice con l%intera tabella A!(00.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 1,
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
5rafche: se il disegno 8 di tipo tecnico memorizzo le coordinate numeriche di ogni elemento
geometrico ed altre caratteristiche (coordinate del centro di una circonferenza e la misura del raggio,
le coordinate degli angoli di un rettangolo o degli estremi di una retta ecc.. !e il disegno 8 pittorico,
cio8 fatto per punti (pi+el, si memorizza per ogni pi+el il valore dell%intensit di rosso, verde e blu che
lo caratterizza.
Animazioni e flmati: 8 un caso particolare del precedente. 0nfatti ogni se"uenza di animazione o
flmato 8 formata da tanti fotogrammi, ognuno dei "uali pu@ essere considerato un disegno statico,
ricadendo nel caso precedente. 'n a tecnica molto usata per risparmiare memoria 8 "uella di
memorizzare solo alcuni fotogrammi chiave (1e- frame e dire per ogni fotogramma intermedio cosa
cambia a livello di pi+el (compressioni mpeg 4 div+.
!uoni: ogni suono pu@ essere scomposto, determinando le caratteristiche delle onde sonore che lo
costituiscono. 9uesti caratteristiche sono rappresentate da numeri ... ,sistono dei formati compressi
anche per l%audio (6)J, E6A.
&A))&,!,73AW0>7, D,LL, 0!3&'W0>70:
!i adotta anche in "uesto caso una rappresentazione numerica. ,cco "ui sotto il formato di una
generica istruzione:
codice
operazione
operando G (o suo indirizzo operando T (o suo indirizzo indirizzo risultato
>gni possibile istruzione 8 indicata da un codice numerico. Ad esempio la somma potrebbe essere
indicata con LLG (ricordiamo che i numeri sono binari, ed usano solo lo L e l%G, la di/erenza con LLT
ecc. Dopo aver specifcato il tipo di istruzione 8 necessario indicare gli operandi (ad esempio i numeri
da sommare. 9ualche volta nell%operazione si mettono direttamente i valori da usare, altre volte si
specifca l%indirizzo dove trovare in &A6 i valori che servono. (os? si potrebbe chiedere di sommare
direttamente LLGL (T in binario e LGLL (U in binario oppure intendere che LLGL 8 l%indirizzo in &A6 in
cui trovare il primo numero da sommare e che LGLL 8 l%indirizzo dove trovare in &A6 il secondo
numero da sommare. A seconda del codice dell%istruzione la ()' sa come comportarsi. !e l%istruzione
produce un risultato 8 anche possibile indicare a "uale indirizzo in &A6 depositare il risultato. ,cco
come potrebbe apparire un%istruzione completa:
LLLG LLGL LGLL GGLL
7oterete che sono necessari GK bit, cio8 due b-te, per rappresentarla. 0nfatti, anche se le celle della
&A6 contengono un b-te, spesso sono considerati a gruppi. 0l decodifcatore riceve proprio la se"uenza
completa di bit, la scompone in codice operativo, operandi e indirizzo risultato e comunica alla (ontrol
'nit le se"uenze (microistruzioni di comandi da attivare. Alcune istruzioni, semplici, occupano un solo
b-te, altre molti. La ()' non fa in "uesto caso confusione a causa delle diverse lunghezze: il codice
operativo (il primo ad essere letto nella &A6 chiarisce subito di che tipo di istruzione si tratta e di
"uanti b-te necessita, per ogni sua parte. ,% per "uesto che il program counter pu@ essere
automaticamente aumentato del giusto numero di b-te per =puntare% alla posizione in &A6 in cui si
trova la prossima istruzione.
>!!,&2AW0>7, 06)>&3A73,. !embrerebbe che "ualsiasi aspetto della realt sia perfettamente
rappresentabile e trattabile da un elaboratore ... ma non 8 esattamente cos? A Dobbiamo convincerci
che ci@ che viene costruito nelle memorie di un elaboratore 8 solo un modello (una rappresentazione
semplifcata, parziale, mai perfetta della realt. (erto, "uando scriviamo una lettera con Eord 8
esattamente "uello che si voleva fare: in "uesto caso il modello 8 praticamente perfetto. 6a in altri,
per motivi pratici, sono stati imposti dei limiti. )ensiamo ai numeri interi. )i< sono grandi e pi< bit sono
necessari per rappresentarli, "uesto 8 intuitivo. )er motivi di eCcienza e praticit si 8 deciso di
dedicare sempre lo stesso numero di bit per rappresentare un intero: sono usati cio8 gli stessi bit per
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 1-
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
un numero grande che per uno piccolo. ,% un po% come scrivere LLGTI che 8 ancora GTI: stessa cosa
in binario (i bit di pi< ed inutili sono messi a L. 5i, ma "uanti bit D !e ne vengono usati pochi allora
non sar possibile rappresentare numeri grandi. !e ne vengono usati tanti, tutte le volte che si
rappresenta un numero piccolo ne vengono =sprecati% un certo numero ... 9ualun"ue sia la scelta, la
conclusione 8 sempre la stessa: fssato il numero di bit da usare, automaticamente 8 fssato anche il
pi< grande ed il pi< piccolo numero intero (positivo e negativo che si pu@ rappresentare. !tessa cosa
per i numeri reali ("uelli =con la virgola%: in "uesto caso, oltre ai limiti esiste anche un problema di
precisione. 0nfatti un numero pu@ anche essere piccolo ma con un numero infnito di cifre decimali
(pensate al pi greco: se si fssa il numero di bit, pi< di tante cifre decimali non potranno essere
rappresentate. ,cco allora che un numero come J,GUPKVTHUJUPK sar invece memorizzato come
J,GUPKVJ, arrotondando la sesta cifra. Ai fni pratici, per la stragrande maggioranza delle applicazioni,
la "uestione 8 praticamente inin.uente, ma 8 giusto sapere che "uesti limiti esistono e che ci@ che
viene rappresentato all%interno di un sistema di elaborazione pu@ essere soggetto ad approssimazioni.
Attenzione: poichF ogni informazione 8 rappresentata in forma numerica, "uesto signifca che ogni
tipo di informazione 8 soggetto ad approssimazioni (scegliendo, ad esempio, di usare pochi bit per le
intensit dei colori di un immagine, la gamma dei colori risultanti sar povera e discorde da "uella
reale.
E2ol+#ione !ei ling+aggi !i %rograa#ione
>1, tutto "uesto discorso per avere perfettamente chiaro "uesto concetto: nella sua forma pi<
primitiva un programma 8 una se"uenza di valori numerici memorizzati in altrettanti b-te della &A6# il
formato di memorizzazione di "uesti valori 8 "uello binario. 'n programma in "uesta forma 8
immediatamente comprensibile al decodifcatore e di linguaggio in cui 8 espresso 8 chiamato
ling+aggio acc/ina. !i parla anche di ling+aggio "asso li2ello perchF 8 vicino alla macchina e
lontano dal nostro linguaggio naturale.
0 primi programmatori non
avevano molta scelta: non
esisteva la tastiera, non
esistevano i supporti di
memorizzazione di massa ... >gni
istruzione ed ogni dato veniva
comunicato al computer usando le
cosiddette schede perforate
(ormai reperti archeologici A. !ono
tessere di carta, dalle dimensioni
di una grossa banconota, su cui i
numeri binari sono rappresentati
bucando o no piccoli rettangoli
disposti in fle verticali: un buco
all%interno del rettangolino signifca G, niente buco L. 'na fla verticale di rettangolini corrisponde ad
un b-te: "uindi, l%uno di fanco all%altro, sulla stessa scheda possono stare anche pi< b-te (fle di
rettangolini. 0l programmatore, usando un dispositivo chiamato perforatrice, preparava pacchi di
schede, corrispondenti ai programmi che voleva far eseguire. Le schede perforate venivano poi lette
da un lettore meccanico: "uesto scandiva ogni scheda rilevando i fori e comunicando G o L al
computer, che a sua volta memorizzava i b-te nella &A6.
A parte la scomodit fsica di "uesto meccanismo (era facilissimo spiegazzare una scheda, con
conseguente inceppamento del perforatore o del lettore, oppure invertire la posizione di due schede
ecc., la realizzazione e la manutenzione di un programma non era pane per i denti di tutti:
bisognava diventare esperti (in materia di programmazione non sono ammesse mezze misure di
"uel particolare linguaggio riconosciuto dalla ()' usata, fatto di intricate se"uenze di zeri e di
uno: provate ad immaginare la fatica di trovare un piccolo errore in una lista di centinaia di
migliaia di codici binari ...
bisognava essere esperti di aritmetica binaria, visto che tutto 8 espresso in "uella forma#
dato che le istruzioni sono cos? a basso livello, vicino all%hardware, era necessario conoscere alla
perfezione anche "uest%ultimo# se cambia l%hardware i programmi dovevano essere
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 20
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
pesantemente modifcati# se cambiava il microprocessore (la ()', e con esso l%insieme delle
istruzioni accettate, l%intero programma andava riscritto#
)er tutti "uesti motivi era diCcile trovare buoni programmatori e lo sviluppo del software era costoso e
lento. 7onostante "ueste diCcolt i primi abbozzi di sistemi operativi e le prime applicazioni sono stati
scritti proprio cos? ... direttamente linguaggio macchinaA
!i parla di linguaggio perchF come ogni linguaggio parlato ha un suo vocabolario di =parole% (l%insieme
dei codici delle istruzioni che si possono usare ed una sua sintassi, cio8 le regole con cui si possono
formare le =frasi% (le istruzioni e le se"uenze di istruzioni. >gni frase ha poi il suo =signifcato% (l%e/etto
che produce.
'n primo miglioramento (oltre alla di/usione di dispositivi come le tastiere ed i dischi 8 stato
introdotto con l%uso di codici mnemonici al posto delle se"uenze di G e di L. 0l concetto 8 assai intuitivo:
8 molto pi< semplice ricordare "ualche cosa del tipo =!'6 GP TG% che non =GLLGLLGLGLGG%, per
indicare che vanno sommati GP e TG. 0l programmatore pu@ ora scrivere il programma usando un
linguaggio un po% pi< lontano da "uello macchina ma pi< vicino al suo modo di esprimersi. 9uesto
linguaggio 8 chiamato asse"l;. 7aturalmente, prima di sottoporre il programma al computer 8
necessario un processo di traduzione: i codici mnemonici ed i valori espressi in decimale non sono
comprensibile dalla ()' A 'n programma apposito chiamato asse"latore 3asse"ler5 , scritto
ovviamente in linguaggio macchina, traduce ogni codice mnemonico e valore decimale nella
corrispondente se"uenza di G e di L. 0 linguaggi assembl- devono essere considerati, come linguaggio
macchina, di basso livello.
9ui a lato, un esempio di
programma scritto in un
linguaggio assembl-. ,sso
calcola la somma di una
se"uenza di numeri letti
(istruzione 07 G dalla periferica G
(che potrebbe essere la tastiera
fno a che non viene specifcato
lo zero come numero da
sommare. 9uando viene inserito
lo zero si termina il ciclo di
lettura e si invia il risultato
(istruzione >'3 T alla periferica
T (che potrebbe essere il video.
7>3A: non sforzatevi di
comprendere i dettagli (8 ancora troppo prestoA
Qeh, certamente meglio di una sflza di bit, ma ancora piuttosto diCcile da
leggereA 0noltre "uesto stesso programma 8 inservibile con un;altra ()'...
7on solo: un programmatore abituato a programmare per un;altra ()' (e
"uindi con un altro linguaggio assembl- potrebbe non capirci nullaA
(i vorrebbe una specie di linguaggio universale comprensibile a tutti i
programmatori. 'no strumento assai di/uso 8 rappresentato dai cosiddetti
<o0 c/art. La traduzione 8 !iagraa !i <+sso perchF grafcamente
descrive la se"uenza delle istruzioni che verranno eseguite dal computer.
L;idea alla base dei diagrammi di .usso 8 semplice: invece di usare dei
codici letterali che cambiano da una ()' all;altra, usare dei simboli grafci
uguali per tutte le ()'. !uccessivamente il diagramma di .usso guida il
programmatore nella scrittura del programma nel linguaggio assembl- per
la ()' che deve usare. !e un domani gli si chiedesse di riscrivere il
programma per un;altra ()' non dovrebbe cominciare da zero ma potrebbe
sfruttare lo stesso diagramma di .usso. Addirittura il compito potrebbe
essere svolto con la stessa eCcienza anche da un altro programmatore.
9ui a lato, il diagramma di .usso che descrive lo stesso algoritmo di somma
di una se"uenza di numeri terminata da zero vista prima in assembl-.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 21
inizio
totale .& 0
leggi dato
totale .& totale / dato
dato00
1
scrivi totale
2ine
2also
vero
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
2isivamente 8 semplice seguire il .usso del programma: si parte dall;ovale con la scritta ;inizio;, si
giunge ad un ri"uadro in cui si associa all;identifcatore = totale% il numero zero, ovvio valore di
partenza per una somma.
)oi si comanda la lettura di un dato (il pallino che precede indica il punto a cui far ritorno per leggere
altri dati# poi si aggiunge al totale il dato letto# nel rombo si decide se 8 arrivato il momento di
terminare o di chiedere altri dati: se il test (confronto del dato letto con il numero zero d come
risultato = falso% si segue il percorso indicato dalla freccia con l;etichetta corrispondente e si risale al
punto in cui poi, chiedendo un nuovo dato, il ciclo si ripete# se invece il test d come risultato =vero% si
segue l;altra freccia, il ciclo termina, e si provvede a scrivere il totale calcolato.
3orneremo presto a parlare dei diagrammi di .usso. 0nfatti "uesto strumento mantiene la sua validit
anche "uando introdurremo linguaggi di programmazione pi< potenti ed espressivi dell;assembl-.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 22
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
0 linguaggi assembl- sono, infatti, ancora troppo scomodi e so/rono, in fondo, ancora di tutti i problemi
elencati per il linguaggio macchina: hanno reso solo un poco pi< lieve la vita al programmatore, ma
sono ancora molto legati alla ()' usata. 0l passaggio successivo 8 stato lo sviluppo di linguaggi ancora
pi< lontani dal linguaggio macchina e, di conseguenza, pi< vicini al nostro modo di esprimerci. !ono
nati i ling+aggi a! alto li2ello. 9uesti sono caratterizzati da istruzioni molto potenti, con descrizioni
facili da ricordare, che corrispondono anche a centinaia di semplici istruzioni in linguaggio macchina o
assembl-.
,d ecco "ui a lato la versione dello stesso algoritmo codifcata con
il linguaggio di programmazione )ascal (per l;esattezza il suo =
dialetto% 3urbo )ascal.
B molto leggibile, compatto. Dopo un;intestazione che assegna un
nome al programma, il programmatore dichiara i simboli che
vorr utilizzare indicando anche che sono dei numeri interi
(integer.
0l =begin% indica appunto l;inizio del programma. (ome prima
istruzione si azzera il totale e poi si ripetono (repeat due
istruzioni fno a che (until non viene introdotto come dato il
valore zero: la lettura (read del dato e la sua aggiunta al totale.
3erminato il ciclo si provvede alla scrittura del totale calcolato.
!iamo chiaramente ad un livello pi< astratto: il programmatore non deve conoscere i meccanismi
hardware della stampante o della ()': ad esempio, deve solo ricordare che il comando di stampa 8
=write% e che deve specifcare tra parentesi ci@ che vuole sia stampato. (ambia la stampante D 0l
comando rimane sempre "uesto A (ambia la ()' D 0l comando rimane sempre "uesto ... (ambia
addirittura il tipo di computerD 7on devo modifcare o riscrivere tutti i programmi: il )ascal rimane
)ascal...
&icordiamo "ualche nome di linguaggio ad alto livello tra i pi< famosi: $ortran (di/usissimo in ambito
scientifco e storicamente il primo linguaggio ad alto livello, il =(% (di/usissimo in molti ambiti# la sua
capacit di interagire ancora facilmente con l%hardware della macchina gli vale la defnizione in e/etti
di linguaggio di medio livello# molti sistemi operativi, anche per l%eCcienza dei programmi che i
compilatori =(% sono in grado di produrre, sono per "uesto motivo in gran parte sviluppati con "uesto
linguaggio, (obol (di/usissimo in ambito gestionale e commerciale, il mitico Qasic (il linguaggio che
ha aperto, per la sua semplicit, la porta della programmazione a milioni di utenti anche non esperti di
informatica, il )ascal (usatissimo negli ambienti scolastici, il Lisp ed il )rolog (usati per sviluppare
programmi di intelligenza artifciale, il (ZZ (il successore del (. (oncludiamo con un linguaggio che
sta rapidissimamente con"uistandosi i favori dei programmatori perchF molto adatto a sviluppare
programmi funzionanti su 0nternet: [ava (che molto ha in comune con il (ZZ.
Ad ognuno il suo. 6a se "uesta 8 solo una scelta dei principali linguaggi, "uanti sono in tutto D 0l
numero preciso non 8 noto, ma 8 certo che superi "ualche centinaio ... (ome mai D )er lo stesso
motivo per cui esistono in fondo tanti linguaggi anche all%interno del nostro: esiste un linguaggio
matematico (osereste negarlo, pensando all%algebra, alle formule matematiche ecc. D, un linguaggio
flosofco, uno giuridico ecc. A seconda dell%ambito applicativo pu@ convenire usare un linguaggio
specializzato. 0l $ortran deve il suo nome al termine =$ormula 3ranslator%, cio8 traduttore di formule: il
suo dizionario 8 ricco di comandi per calcoli matematici complessi. 0l (obol l%opposto: 8 ricco per@ di
comandi per gestire eCcientemente archivi sui dischi, che 8 proprio ci@ che occorre per sviluppare
programmi di gestione aziendale. Attenzione: non 8 che con un linguaggio si possano fare certe cose
ma non altre, solo ... pi< semplicemente. )rovate a spiegare le e"uazioni senza usare termini
matematici ... ,% possibile, ma che fatica ... )er lo stesso motivo sarebbe anche possibile scrivere in
(obol un programma per il calcolo dell%orbita di un satellite, ma che fatica ... (erto, alcuni linguaggi
sono pi< specializzati di altri. Alcuni sono invece ad uso generale: il Qasic ed il =(% od il (ZZ non
eccellono in nessun campo in particolare ma sono pi< che adeguati per ogni compito. ,% il mercato che
decide la fortuna di un linguaggio.
>vviamente anche per i linguaggi a medio4alto livello 8 necessaria una traduzione in linguaggio
macchina prima di poterli mandare in esecuzioneA
7>3A: tutti i linguaggi diversi dal codice macchina sono chiamati si"olici perchF hanno sostituito dei
simboli L.mnemonici alle se"uenze di G e
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 2'
Progra soa=
2ar totale7 !ato) integer=
"egin
totale )>0=
re%eat
rea!3!ato5=
totale )> totale ? !ato
+ntil !ato>0=
0rite3totale5.
en!.
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
,sistono due tipi di traduttori per linguaggi a medio4alto livello:
G. Inter%reti. 0l programmatore scrive le istruzioni usando un programma di video scrittura (e!itor.
9uando si comanda la partenza del programma, l%interprete legge le istruzioni una alla volta, non
opera una vera traduzione ma si limita a riconoscere ci@ che le istruzioni vogliono ed a compiere
l%azione corrispondente# otteniamo "uindi subito, senza attese apprezzabili, il risultato dell;esecuzione
di "uell;istruzione ma non viene prodotto in modo permanente nessun codice binario: se "uesta
istruzione deve essere eseguita di nuovo, anche per GLLL volte, deve essere reinterpretata.
T Co%ilatori: "uesti sono dei veri traduttori. (ome prima, il programmatore scrive le istruzioni
usando un programma di video scrittura(e!itor. 6a, ogni volta che modifca anche un solo carattere
del testo del programma e ne richiede l;esecuzione, il programmatore deve comandare ad uno
specifco programma (co%ilatore la traduzione in linguaggio macchina di tutte le istruzioni che
compongono il programma. (ome approfondiremo meglio in seguito, il risultato della compilazione
prima di poter essere mandato in esecuzione deve essere elaborato anche da un altro programma
(lin@er che, per cos? dire, completa l;opera di traduzione iniziata dal compilatore.
Inter%reti e co%ilatori a con$ronto
Inter%reti Co%ilatori
6inori tempi di attesa durante lo sviluppo: per
vedere il risultato in esecuzione di una modifca
ad un;istruzione o della giunta di una nuova
istruzione, si deve attendere solo
l;interpretazione delle istruzioni che portano a
"uella che interessa# tutto il resto del programma
8 come se venisse ignorato.
6aggiori tempi totali nel fornire il risultato:
l;esecuzione 8 rallentata dal continuo bisogno di
interpretare le righe del programma, anche se
sono gi state interpretate molte volte. 0n certe
situazioni il tempo di esecuzione di un
programma interpretato pu@ essere anche GLL
volte superiore a "uello del corrispondente
programma compilato \
Dipendenza del programma dall%interprete:
l%interprete deve sempre essere gi pronto e
disponibile in memoria.
&elativamente semplici da scrivere.
)ossibili lunghi tempi di attesa durante lo
sviluppo: prima di potere e stare un;istruzione
"ualsiasi di un programma, 8 necessario che tutto
il programma venga tradotto in linguaggio
macchina# se le istruzioni sono poche ("ualche
centinaio le potenze elaborative e la velocit
degli odierni hard dis1 (che a volte non vengono
addirittura utilizzati perchF sono suCcienti le
ormai assai capienti e molto pi< veloci &A6 la
velocit della compilazione 8 tale da sembrare
che si stia utilizzando un interpreteA !e il progetto
consta invece di migliaia, centinaia di migliaia, di
milioni di istruzioni (JL milioni per Eindows HIA
prima di veder partire il programma in seguito ad
una modifca potrebbero rendersi necessari tempi
di attesa anche di parecchi minuti...
,secuzione veloce: tempo per la compilazione a
parte, il codice binario prodotto dalla
compilazioneZlin1 pu@ essere eseguito a grande
velocit senza bisogno di ulteriori traduzioni.
0ndipendenza del programma dal compilatore:
una volta tradotto in binario il programma, il
compilatore non serve pi<.
)i< complessi da realizzare rispetto agli interpreti.
2olendo sintetizzare vantaggi e svantaggi, diciamo che con un interprete risulta velocizzata la fase di
sviluppo: non ci sono i tempi di compilazione e di lin1 che costringono a ritradurre l%intero programma
anche se si sbaglia, letteralmente, una virgola. 'n compilatore produce un programma autonomo che
garantisce il massimo della velocit in esecuzione (anche decine di volte pi< veloce: mentre un
interprete 8 perfetto per lo sviluppo del programma, il compilatore serve a generare prodotto fnale.
)er la verit, "ueste considerazioni erano molto pi< vere "ualche anno fa: i computer erano molto pi<
lenti nel far funzionare i compilatori (()' meno potenti e dischi molto pi< lenti: era allora molto
conveniente usare un interprete nelle fasi iniziali (in cui si commettono molti errori ed il compilatore
per i ritocchi fnali. >ggi i tempi di compilazione e lin1 sono rapidissimi e l%interprete come strumento 8
molto meno appetibile.
!viluppare software, oggi sempre pi< complicato, 8 molto costoso. ,ssere produttivi 8 indispensabile
per avere successo come sviluppatori di software. 5li odierni compilatori e lin1er sono integrati in
ambienti di sviluppo sofsticatissimi, dove alcune parti standard di un programma sono scritte
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 2)
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
automaticamente A Ad esempio, mentre un tempo, per gestire una fnestra come "uelle di Eindows,
era necessario scrivere decine di istruzioni, oggi il programmatore disegna la fnestra con il mouse
(come fareste in )aintbrush per un rettangolo e le istruzioni corrispondenti sono generate in
automatico. Lo stesso per molte fnestre di dialogo, i bottoni, i menu, le caselle con gli elenchi, le
schede di inserimento dati, i pannelli di ricerca di un fle per l%apertura o la registrazione di un archivio
ecc. ,% sempre disponibile anche un potente strumento per la ricerca degli errori (debugger. 9uesti
sono solo alcuni dei moltissimi bonus che un moderno ambiente per lo sviluppo dei programmi 8 in
grado di oCre ...
.a catena !ella %rograa#ione
0l programmatore inizia con lo scrivere le istruzioni (nel linguaggio di programmazione scelto con un
programma chiamato e!itor. 9uesto termine inglese signifca redattore cio8 colui che cura la scrittura
di un testo, ed ha "uindi un signifcato abbastanza generico. 6olto semplicemente, pensate all;editor
come ad un programma di videoscrittura specializzato per la stesura delle istruzioni. 0l fle scritto con
l;editor prende il nome di co!ice sorgente. (source code. 0 primi editor erano molto semplici e
permettevano solo di scrivere il codice (il testo corrispondente alle istruzioni e di salvarlo su disco:
spettava poi al programmatore mandare in esecuzione, manualmente, il compilatore ed il lin1er.
>ggi gli editor sono diventati = intelligenti%:
colorano, o evidenziano automaticamente in altro modo (usando il grassetto, il corsivo, la
sottolineatura ecc le diverse parti di un;istruzione per facilitare la lettura (si parla di sintax
highlightining, cio8 evidenziazione della sintassi# e cos? anche decisamente pi< diCcile
commettere certi errori (tipo dimenticarsi di chiudere delle parentesi aperte#
sono in grado di completare automaticamente la scrittura delle istruzioni (code completion: il
programmatore inizia a scrivere un comando e l;editor pu@ proporre un elenco di tutti i comandi
che iniziano con le stesse lettere# a "uesto punto programmatore pu@ inserire rapidamente il
comando che voleva scrivere senza digitare il resto dei caratteri# pu@ anche usare delle
abbreviazioni di pochissime lettere per far inserire un;istruzione composta anche da molte righe
che poi verr completata#
un;altra caratteristica utilissima 8 rappresentata dai cosiddetti tooltip (suggerimenti: mentre si
sta completando la scrittura di una istruzione complessa sopra il punto di inserimento dei
caratteri appare un piccolo ri"uadro che contiene informazioni sull;istruzione stessa# "uesto
meccanismo consente di risparmiare tantissimo tempo che una volta venire impiegato per andare
a consultare un manuale#
sono integrati con un sistema di aiuto (help in linea ipertestuale (cio8 navigabile facendo clic sui
collegamenti che portano ad approfondimenti, argomenti correlati, esempi# a volte l;help 8
addirittura ipermediale (si possono richiamare flmati, animazioni, commenti vocali ecc..
permettono, addirittura, di =disegnare% parte del programma invece di scriverlo: usando il mouse
il programmatore dispone componenti preconfezionati su "uella che diventer la fnestra del
programma in esecuzione: caselle in cui inserire del testo, bottoni su cui fare clic, men<,
tavolozze che appariranno "uando si vorr far scegliere un colore all;utente, fnestre di dialogo
che permetteranno di cercare un fle sul disco "uando l;utente comander il caricamento di un
documento o il suo salvataggio eccetera# per ogni componente scelto l;editor inserir
automaticamente il codice corrispondenteA 9uando un editor 8 in grado di funzionare in "uesto
modo 8 detto 2is+ale.
sono in grado di richiamare automaticamente il compilatore ed il lin1er e se uno di "uesti due
programmi trova degli errori mostrare a video i relativi messaggi spostando il punto di
inserimento del testo sulla riga del primo errore# se invece il programma non contiene errori pu@
anche essere mandato automaticamente in esecuzione per provarlo: al termine dell;esecuzione si
verr riportati nell;ambiente di lavoro dell;editto. 0n "uesto modo il programmatore 8 in grado di
controllare tutti i passaggi senza mai abbandonare le editor. B per "ueste caratteristiche che oggi,
pi< che di semplici editor, si preferisce parlare di IDE7 Integrate! De2elo%ent
En2inronent 3a"ienti integrati !i s2il+%%o.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 25
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
0 fle dei codici sorgenti vengono registrati sul disco con un;estensione (la parte del nome del fle dopo
il punto che aiuta a riconoscere il linguaggio di programmazione utilizzato. ,cco le principali
estensioni: .pas ()ascal, .c ((, .cpp (c ZZ, .asm (assembl-, .asp (A!), .bas (Qasic.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 2*
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
0l co%ilatore trasforma il codice sorgente nel cosiddetto co!ice oggetto (ob]ect code# ma "uesto
processo di traduzione potrebbe interrompersi per vari motivi:
viene scoperto un simbolo che non appartiene al cosiddetto dizionario delle parole chiave
(@e;0or! proprie del linguaggio e neppure all%insieme dei simboli aggiunti dal programmatore:
ad esempio se il linguaggio prevede un comando write per scrivere "ualche cosa sullo schermo, il
programmatore potrebbe sbagliare e scrivere wrote# "uesta parola viene non verrebbe
riconosciuta come appartenente al linguaggio# viene allora cercata nell%insieme degli simboli (si
parla pi< correttamente di identi%catori introdotti dal programmatore# "uest%ultimo potrebbe
aver dichiarato di voler usare un simbolo chiamato area per memorizzare un valore con la virgola
in cui far calcolare la superfcie del cerchio:
area :Y raggio S raggio S J.GU# dai al simbolo area il valore della formula indicata (S signifca
moltiplicato
naturalmente raggio 8 un altro simbolo introdotto dal programmatore per memorizzare il dato
corrispondente alla misura del raggio \
se un identifcatore non viene trovato neppure nell%insieme defnito dal programmatore, allora il
compilatore decide che ha trovato un errore lessicale# "uesta fase viene infatti chiamata analisi
lessicale e "uella parte del compilatore che la svolge anali##atore lessicale.
Errori sintattici e! anali##atore sintattico. Anche se viene superata la fase di analisi
lessicale ci potrebbero essere ancora errori di tipo sintattico, cio8 che violano una regola sintattica
di "uel linguaggio# le regole sintattiche servono a costruire frasi corrette, al di l del fatto di aver
usato singoli termini riconosciuti. 7ulla di sorprendente: anche con la lingua italiana dovete
rispettare delle regole (soggetto, verbo, complemento oggetto ecc. ricordateD, solo che "uelle di
un linguaggio di programmazione sono decisamente pi< sempliciA ,d anche in italiano, pur
usando tutte parole presenti sul dizionario, 8 facilissimo scrivere frasi senza sensoA
$acciamo un esempio: molti linguaggi hanno la regola che pretende che ogni istruzione sia
terminata con un punto e virgola:
write(=9uesta istruzione contiene un erroreA%
6entre dal punto di vista dell%analizzatore lessicale non ci sono errori, "uello sintattico si accorge
della mancanza della virgola alla fne dell%istruzione.
(ontrollo lessicale e sintattico non esauriscono il compito di un compilatore: esiste anche un controllo
chiamato semantico che non 8 per@ il caso di approfondire in "uesta sede.
7ota: i codice oggetto hanno di solito come estensione .ob]
0l codice oggetto, risultato della compilazione, non 8 ancora in una forma del tutto eseguibile dalla
()': alcune parti del codice sorgente non possono essere tradotte dal compilatore perchF
rappresentano dei riferimenti ( lin@ a dei comandi esterni che non fanno parte direttamente del
linguaggio di programmazione in uso ma sono resi disponibili in raccolte chiamate li"rerie. (librar-.
9ueste ultime sono un preziosissimo strumento per la programmazione: una volta che un problema 8
stato risolto il codice corrispondente (gi tradotto in linguaggio macchina pu@ essere depositato in
una raccolta (la libreria dalla "uale potr essere estratto per essere incorporato in altri programmi che
ne hanno bisogno.
Ad esempio: immaginiamo di avere scritto un comando che disegna sullo schermo una circonferenza
note le sue coordinate sullo schermo del centro e la misura del raggio# il codice sorgente viene
compilato e tradotto in codice oggetto (da notare che anche in "uesto caso ci potrebbero essere della
parti ancora non tradotte\ ed aggiunto con un programma apposito ad una libreria (immaginiamo
che si chiami gra%ca.lib, dove .lib 8 naturalmente l%estensione con cui sono di solito individuate su
disco le librerie. Decidiamo di chiamare crf (abbreviazione di circonferenza il comando in "uestione#
le coordinate del centro e la misura del raggio della circonferenza dovranno essere indicate (come in
"uasi tutti i linguaggi di programmazione tra parentesi tonde al momento dell%uso del comando
stesso,
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 2+
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
0mmaginiamo ora di scrivere un programma di geometria e di avere la necessit di disegnare alcune
circonferenze. ,cco come richiameremmo il comando:
programma geometria#
'!,! grafca#
\
crf( GT , KG , JL#
\
crf( V, UH , TT#
0l compilatore non 8 in grado di tradurre il comando crf (non appartiene a "uelli standard del pascal ed
in mancanza di altre indicazioni dovrebbe interrompersi ed emettere un messaggio di errore (tipo
=simbolo non trovato% in corrispondenza delle righe in cui si richiama il comando crf.
3rovando per@ l%indicazione di utilizzo della libreria gra%ca, lascia nel codice oggetto un cosiddetto
collegamento (lin1 non risolto, cio8 una specie di segnalibro per ricordare che in "uel punto c%8 da
completare la traduzione.
,% compito del programma lin@er analizzare tutti i collegamenti irrisolti dei programmi oggetto che gli
vengono sottoposti al fne di produrre un unico eseguibile (estensione .e+e e cercare nelle librerie
indicate il codice mancante# "uest;ultimo verr estratto in copia ed incorporato nei punti richiesti. ,cco
uno schema che esemplifca il meccanismo:
Abbiamo ora tutte le nozioni necessarie per esaminare in dettaglio il procedimento di scrittura di un
programma.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 2,
0l programmatore utilizza in "uesto esempio due volte il comando per
disegnare una circonferenza# il centro della prima ha come coordinate
GT, KG ed un raggio pari a JL# similmente per la seconda.
,% molto importante che il programmatore specifchi dove 8 possibile
trovare il codice oggetto che corrisponde al comando crfA 9uesta
informazione viene fornita con ='!,! grafca%.
)rogram geometria#
'!,! grafca#
\
crf( GT , KG , JL#
\
crf( V, UH , TT#
Pro#ramma ese#ui$ile %inale
t$a&)*!oe ! %!4)a44!o "acc,!a
&e%%e !(t$)*!o! (c$!tte &a%
#$o4$a""ato$e.
&
co&!ce &e%%a c$+ #$e%e5ato &a%%a
%!6$e$!a
c$+
G.
G.
G.
7)a&$ato
G.
G.
Ecc'
&
(
I% co&!ce &e%%a crf
5!ee e(t$atto &a%%a
%!6$e$!a e& !co$#o$ato
e% #$o4$a""a +!a%e.
La %!6$e$!a &! (o%!to
cot!ee !% co&!ce &!
"o%t! co"a&!
Co&!ce So$4ete
2Heo"et$!a.#a(3
co"#!%ato$e
Co&!ce
o44etto
Heo"et$!a.o6I
Co&!ce 6!a$!o
&e% co"a&o c$+
LIBRERIA HRAFICA.LIB
%!Je$
Heo"et$!a.eKe
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
:tr+tt+ra !i +n %rograa Pascal
>gni programma )ascal 8 costituito da tre sezioni:
0ntestazione
Progra ^nome programma_#
,% una riga che inizia con la %arola riser2ata (1e-word program seguita dal nome che si vuol dare al
programma. Le parole riservate sono alcune decine ed il programmatore non pu@ usare identifcatori
con lo stesso nome di una di esse. Ad esempio, non possiamo chiamare un programma proprio
program. 0l nome da dare al programma 8 invece un esempio di i!enti4catore, un nome scelto dal
programmatore.
(i sono alcune regole da rispettare "uando scegliamo un identifcatore:
il suo primo carattere non pu@ essere una cifra numerica (il compilatore penserebbe che in "uel
punto sta iniziando un numero# ad esempio 'arrivato non va bene# arrivato' invece s?#
non pu@ contenere spazi# totale iva non va bene# totale&va o 0otale&va o totale`iva invece s?#
notate in particolare l;uso del carattere di sottolineatura ` che consente di =staccare% le parole
come se avessimo inserito uno spazio#
non pu@ contenere caratteri strani: ad esempio AaDbRcd eccetera# come regola pratica potreste
ricordare che possono essere usate solo lettere (maiuscole e minuscole, cifre numeriche ed il
carattere di sottolineatura# alcuni linguaggi fanno di/erenza tra minuscole e maiuscole (e sono
detti case sensitive per cui gli identifcatori totale e 0otale sono considerati diversi# altri
linguaggi, tra cui )ascal, non distinguono invece minuscole maiuscole (e sono detti case
insensitive#
hanno una lunghezza massima, di solito piuttosto ampia ("uasi sempre almeno JT caratteri#
attenzione perchF 8 superata la lunghezza massima non 8 detto che il compilatore segnali errore
ma potrebbe semplicemente considerare uguali due identifcatori che iniziano con la stessa
se"uenza di caratteri pari a lunghezza massima# se "uesta fosse otto, ad esempio, i due
identifcatori costo0otale e costo0ot potrebbero essere considerati lo stesso identifcatore,
causando situazioni d;errore diCcili da scoprire#
Dopo il nome del programma deve essere messo un punto e virgola. 0l punto e virgola 8 molto usato in
)ascal (ed in genere da molti linguaggi di programmazione: serve a separare due istruzioni# "uesto
signifca che se dopo un;istruzione dev;essere scritta una parola riservata che di per sF non viene
considerata un% istruzione il punto e virgola pu@ anche essere omesso. 0n ogni caso, almeno all;inizio,
potreste ricordare come regola semplifcata "uella di mettere un punto e virgola alla fne di
un;istruzione. ,cco allora "ualche esempio di intestazione corretta:
%rogra prova# %rogra primo)rogramma# %rogra primo`programma#
%rogra capitoloG#
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 2-
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
!ezione dichiarativa
9ui il programmatore assegna un nome (i!enti4catore ai dati che devono essere memorizzati
durante l;elaborazione.
(ostanti
!e un identifcatore viene descritto nella sezione introdotta dalla parola riservata const (abbreviazione
di constant, costante deve anche essere indicato dopo il simbolo dell;uguaglianza (Y il suo valore
che non potr mai variare durante l;esecuzione del programma. Ad esempio il valore del pi greco pu@
essere introdotto in un programma in "uesto modo:
Progra geometria#
const
)0`5&,(> Y J.GUGPHTKP#
0n un programma possono essere introdotte tutte le costanti che si vogliono. 0l tipo del dato (un
numero reale, real in )ascal per una costante viene dedotto dal valore posto dopo il simbolo
dell;uguaglianza. ,cco alcuni altri esempi di costanti:
50>&70`!,3306A7A Y V# esempio di costante di tipo intero (integer in )ascal
&0!)>!3A`A$$,&6A302A Y =!%# esempio di costante di tipo carattere# gli apici sono obbligatoriA
6,!!A550>`,&&>&, Y =!bagliato AA% # esempio di costante di tipo stringa (se"uenza di caratteri
racchiusi tra apici,
string in )ascal
2antaggi dell;uso delle costanti:
aumentano la leggibilit di un programma: 8 pi< facile riconoscere nomi simbolici che numeri
complessi#
aumentano la .essibilit di un programma: se vi 8 la necessit di cambiare il valore associato ad
una costante sar suCciente farlo solamente nella sezione const ed automaticamente il nuovo
valore verr utilizzato in ogni punto del programma in cui 8 stata usata la costante:
migliorano la sicurezza: il programmatore non potr neppure per sbaglio cambiare il valore della
costante perchF il compilatore glielo impedir emettendo un messaggio di errore
7>3A: la sezione delle costanti pu@ anche non essere presente.
2ariabili
9uando invece il valore di un dato pu@ cambiare durante l;esecuzione deve essere memorizzato in una
cosiddetta 2aria"ile. Le variabili devono essere dichiarate in una sezione, individuata dalla parola
chiave var, posta dopo la sezione const:
Progra geometria#
const
)0`5&,(> Y J.GUGPHTKP#
2ar
raggio : integer#
0n )ascal le variabili non possono ricevere un valore di partenza direttamente nella sezione dichiarativa
ma dovr essere usato un apposito comando (assegnamento nella sezione esecutiva. (ome
certamente immaginate "uesto stesso comando non pu@ essere invece utilizzato con le costanti. Dopo
l%identifcatore del nome di una variabile deve essere messo il simbolo =:% (due punti e poi
l;identifcatore di un tipo, ed infne il punto e virgola.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. '0
7el resto del programma invece di essere costretti a ricordare "uesta
scomoda se"uenza di cifre decimali sar possibile utilizzare la costante
)0`5&,(>.
7ota: 8 abitudine dei programmatori usare le maiuscole per gli identifcatori
che rappresentano una costante.
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
)i< variabili dello stesso tipo possono essere dichiarate insieme separando gli identifcatori con una
virgola:
2ar
base, altezza: integer#
0l tipo individua l%insieme dei possibili valori che possono essere assunti da una costante o da una
variabile (si parla anche di !oinio. >gni tipo ha infatti i suoi limiti . ,cco la tabella che riassume la
situazione per i principali tipi del )ascal:
IN'EAI
Tipo da a
B8te L 255
S,o$t!t M128 127
Ite4e$ M32768 32767
?o$& L 65535
Lo4!t M2147483648 2147483647
AE(.I
Tipo da a
Rea% 2.NK1L
M38
1.7K1L
38
S!4%e 1.5K1L
M45
3.4K1L
38
Do)6%e 5.LK1L
M324
1.7K1L
3L8
eKte&e& 1.NK1L
M4N51
1.1K1L
4N32
,sempi di numeri reali: J.GU U.VKG,MJ#
0l secondo numero 8 espresso in $ora es%onen#iale: la lettera , seguita da un
numero e"uivale a moltiplicare (o dividere se il numero dopo la , 8 negativo per "uella
potenza del dieci.
9uindi U.VKG,MJ Y U.VK + GL
MJ
Y U.VK 4 GLLL Y L.LLUVK# T.UP,ZU Y T.UP + GL
U
Y
TUPLL
7 >3A: ci si riferisce a "uesto tipo di dato anche con la dicitura <oating %oint, a virgola mobile.
'IP& C(A(''EAE (c/ar. 0l tipo char si usa per il singolo carattere (lettera alfabetica, cifra numerica
da L a H o "ualsiasi altro simbolo rappresentabile con il ).(. come la punteggiatura, ma anche le lettere
dell%alfabeto greco, alcuni caratteri semigrafci tipo cuoricini o faccine, lettere straniere come o
simboli matematici. L%elenco completo forma "uella che viene chiamata la ta"ella (:CII (American
!tandard (ode form 0nformation 0nterchange che esiste in forma orginale (GTI simboli o estesa (TPK
simboli. 0 caratteri vanno racchiusi tra due apici semplici come in =a%, =A%, =e%,%U%.
Attenzione a non confondere una cifra numerica con il carattere corrispondente: G 8 diverso da =G% A
Anche se in un documento di testo i numeri vengono memorizzati con la se"uenza dei codici ascii
corrispondenti, "uesto formato risulta molto ineCciente per svolgere calcoli numerici. 7umeri interi e
reali vengono rappresentati in modo assai diverso ma "uesti argomenti verranno a/rontati in parallelo
nel corso di sistemi.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. '1
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
'IP& B&&.E(N& ("oolean. 0 dati boolean possono assumere solo due valori: vero (true e falso
(false.
'IP& :'AINC( (string 'n dato string 8 un insieme di caratteri racchiusi tra apici. La lunghezza
massima 8 TPP caratteri.
,sempi di string: =6arco%, =GT4LJ4GHHI%#
9uesti appena visti sono dati semplici o non strutturati: non sono ulteriormente scomponibili. )i<
avanti nella dispensa verr introdotta la possibilit di usare dati complessi o strutturati. 2edremo
anche come sia possibile per il programmatore aggiungere nuovi dati (user de%ned t1pe, tipi defniti
dall%utente basandosi su "uelli nativi del pascal (standard t1pe, tipi standard.
7>3A: la sezione delle costanti pu@ anche non essere presente.
)rocedure e $unzioni
Dopo la sezione delle variabili pu@ essere presente "uella dei cosiddetti sottoprogrammi. !i rimanda la
discussione di "uesto argomento ad un momento pi< appropriato, molto pi< avanti nella dispensa\
)er il momento possiamo comportarci come se "uesta sezione non esistesse.
!ezione esecutiva (corpo principale del programma
E9 %a #a$te 5e$a"ete o#e$at!5a &e% #$o4$a""a= Co$$!(#o&e ! #$at!ca a%%a t$a&)*!oe &e%%9a%4o$!t"o. La #a$te
&!c,!a$at!5a / !+att! (o%o #$e#a$ato$!a e (e$5e a% co"#!%ato$e #e$ e((e$e #!< e++!c!ete 2a& e(e"#!o (e coo(ce !
at!c!#o ! t!#! &e%%e 5a$!a6!%! #)0 o$4a!**a$%e #!< e++!c!ete"ete e%%a RAM3 e cot$o%%a$e !% $e(to &e% #$o4$a""a
#e$ a%c)! t!#! &! e$$o$e 2a& e(e"#!o teta$e &! "o&!+!ca$e )a co(tate: co"e #ot$e66e (e o a5e((!"o &!c,!a$ato !
at!c!#o 7)a%! !&et!+!cato$! co(!&e$a$e a((oc!at! a 5a%o$! !"")ta6!%!C3.
A)e(ta (e*!oe !!*!a co %a #a$o%a $!(e$5ata $e#in e te$"!a co %a #a$o%a $!(e$5ata end (e4)!ta &a ) #)to:
#$o4$a" E(e"#!oD Ite(ta*!oe
co(t
G
5a$
G
$e#in
)
end*
TIPI DI I+TRUZIONE C,E +I PO++ONO -ETTERE NELLA +EZIONE E+ECUTI.A
asse#namento: "e"o$!**a ! )a 5a$!a6!%e )a co(tate o##)$e !% 5a%o$e &! )Oa%t$a 5a$!a6!%e o##)$e !% $!()%tato &!
) ca%co%o 2e(#$e((!oe3D ! 1a(ca% !% (!"6o%o &e%%Oa((e4a"eto / 7)e(to: /(
pro#ram E(e"#!D!A((e4a"etoD
5a$
1' 2: !te4e$D K: $ea%D (: (t$!4D
6e4!
1 :P 1LLD 1 :P 2D 1 :P 3Q234 R 23D
K :P 2D K :P 3.14D K :P 1D ( :P Bc!ao
co"e (ta!C9D
e&.
pro#ram A((e4a"et!Co"#at!6!%!D
5a$
c: c,a$D K: $ea%D (: (t$!4D
6e4!
K :P 3 S 7 2Q e7)!5a%e a 1L.L Q3D
c :P BA9D
( :P cD 2Q ) ca$atte$e B(ta9 ! )a (t$!4a
Q3
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. '2
Se*!oe &!c,!a$at!5a
Se*!oe e(ec)t!5a
I% 5a%o$e c,e 5!ee a((e4ato a& )a 5a$!a6!%e &e5e e((e$e &! t!#o co"#at!6!%e.. A)e(to
o (!4!+!ca #e$ +o$*a !&et!co "a c,e 2a%"eo3 !% $!()%tato &e%%Oe(#$e((!oe a%%a &e(t$a
&e% (!"6o%o &! a((e4a"eto (!a co5e$t!6!%e e% t!#o &e%%a 5a$!a6!%e !&!cata a%%a
(!!(t$a.
Co"e $e4o%a #$at!ca $!co$&ate 7)e(ta: ) t!#o #!< 4$a&e #)0 acco4%!e$e )o #!<
B#!cco%o9 "a o !% 5!ce5e$(a.
A& e(e"#!o' (e T / )a 5a$!a6!%e $ea%e: K :P 7 co$$!(#o&e a K :P 7.L e K:P3S7
co$$!(#o&e a K :P 1L.L 24%! !te$! 7 e %O!te$o $!()%tato &e%%Oe(#$e((!oe 3S7 #o((oo
e((e$e co5e$t!t! e% co$$!(#o&ete )"e$o $ea%e (e*a #$o6%e"!3. Ma (e K +o((e )a
5a$!a6!%e !te$a' %Oa((e4a"eto K :P 1.5' a""e((o c,e +o((e accettato' &o5$e66e
t$a(+o$"a$e !% )"e$o $ea%e 1.5 o e% )"e$o !te$o )o o e% )"e$o !te$o &)e co
)a #e$&!ta &! #$ec!(!oe !accetta6!%e e ta%e &a $!c,!e&e$e ) co"a&o e(#%!c!to 2 K :P
t$)c21.53 a& e(e"#!o t$oca !% )"e$o $ea%e $e(t!t)e&o ) !te$o.
T :P 8D co(tate T :P UD 5a$!a6!%e T :P UQ2 S4D e(#$e((!oe
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. ''
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
E9 ac,e #o((!6!%e ca%co%a$e e(#$e((!o! +acet! )(o &! #a$ete(!. U co"#)te$ o ,a #e$0 ece((!t> &! +ac!%!ta$(! %a
%ett)$a &! )Oe(#$e((!oe )t!%!**a&o &!5e$(! t!#! &! #a$ete(!: 7)a&$e e 4$a++e o &e5oo e((e$e )(ate= B!(o4a )(a$e
!5ece #!< %!5e%%! &! #a$ete(! to&e:
Come siamo a$ituati noi Come de"0essere scritto con un lin#ua##io di pro#ramma1ione
25 S 43 25 S 43
24 M23 Q 223 SN3 24 M23 Q 223 SN3
V 24 S 63 - 3W Q 223 S 73 2 24 S 63 - 3 3 Q 223 S 73
X V 24 S 63 - 3W Q 223 S 73 Y - 267 R N3 2 2 24 S 63 - 33 Q 223 S 73 3 - 267 R N3
Princi%ali o%eratori %re!e4niti e! o%eratori rela#ionali +tili##a"ili %er i %rinci%ali ti%i !i !ato
C,AR
O$&2 ca$atte$e 3 Co&!ce a(c!! co$$!(#o&ete: o$&2BA93 65D o$&2Ba93 N7D o$&2B193 4N
C,$2 co&!ce a(c!!3 Ca$atte$e co$$!(#o&ete: c,$2653 BA9D c,$2N73 Ba9
U#ca(e2 ca$atte$e3 T$a(+o$"a !% ca$atte$e ! "a!)(co%o: )#ca(e2Ba93 BA9D )#ca(e2BA93 BA9
Co+$ot! 2#$e&!cat!3: P' Z 2"!o$e3' [ 2"a44!o$e3' Z[ 2&!5e$(o3' ZP 2"!o$e o& )4)a%e3' [P 2"a44!o$e o& )4)a%e3.
NOTA: (oo t)tt! &a !te&e$(! ! (e(o a%+a6et!co.
INTERI
S M Q So""a' (ott$a*!oe' "o%t!#%!ca*!oe
a DI: 6 A)o*!ete !te$o t$a a e 6: 12 &!5 4 3D 14 &!5 4 3D
a MOD 6 Re(to !te$o &e%%a &!5!(!oe t$a a e 6
S)cc2 )"e$o 3 S)cce((o$e &e% )"e$o !&!cato: ()cc243 5
1$e&2 )"e$o 3 1$e&ece((o$e &e% )"e$o !&!cato: #$e&253 4
Dec2 )"e$o 3 To4%!e )o a )"e$o: &ec273 6
Dec2)"e$o' 7)at!ta3 To4%!e 7)at!t> a )"e$o: &ec212'53 7
Ic2 )"e$o 3 A44!)4e )o a )"e$o: !c273 8
Ic2)"e$o' 7)at!ta3 A44!)4e 7)at!t> a )"e$o: !c212'53 17
A6(2 )"e$o 3 :a%o$e a((o%)to 2o "o&)%o3 &! )"e$o
S7$2K3 A)a&$ato
MK O##o(to &! K
1o((!6!%! e$$o$!: o"er%lo2 e di"isione per 1ero 2&!5!(!o 68 *e$o3.
Co+$ot! 2#$e&!cat!3: P' Z 2"!o$e3' [ 2"a44!o$e3' Z[ 2&!5e$(o3' ZP 2"!o$e o& )4)a%e3' [P 2"a44!o$e o& )4)a%e3.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. ')
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
REALI 3 ricordare c4e sono rappresentati nella %orma x = mantissa * 10
caratteristica
come in 5.28 * 10
6
S M Q - So""a' (ott$a*!oe' "o%t!#%!ca*!oe' &!5!(!oe
S7$t 2K3 Ra&!ce 7)a&$ata
S7$2K3 A)a&$ato
S!2K3' co(2K3' ta2K3'
a$cta2K3
Seo' co(eo' ta4ete' a$cota4ete &! K
A6(2 K 3 :a%o$e a((o%)to 2o "o&)%o3 &! K
MK O##o(to &! K
T$)c2K3 T$oca %a #a$te +$a*!oa$e &! K
Ro)&2K3 A$$oto&a"eto &! K
1o((!6!%! e$$o$!: o"er%lo2 2ca$atte$!(t!ca t$o##o 4$a&e #e$ e((e$e $a##$e(etata3' under%lo2 2ca$atte$!(t!ca t$o##o
#!cco%a #e$ e((e$e $a##$e(etata3' &!5!(!oe #e$ *e$o' a$4o"eto !%%e4a%e 2!%%e4a% a$4)"et' co"e ! sqrt(-10)3.
1$o6%e"! &! #$ec!(!oe: / %!"!tata &a% )"e$o &! 6!t &e&!cat! a%%a "at!((a
1$o6%e"! &! a##$o((!"a*!oe: (oo &o5)t! a%%a co5e$(!oe t$a &ec!"a%e e 6!a$!oD a& e(e"#!o L.1 2! &ec!"a%e3 #)0
e((e$e $a##$e(etat! ! 6!a$!o (o%o co"e )"e$o #e$!o&!co 2L.LLL1 LLL1 LLL1G3 c,e )a 5o%ta co5e$t!to !
&ec!"a%e #)0 &a$e o$!4!e a o"e a##$o((!"at! co"e L.LNNNNNN o N.NNNNNEM2
Co+$ot! 2#$e&!cat!3: P' Z 2"!o$e3' [ 2"a44!o$e3' Z[ 2&!5e$(o3' ZP 2"!o$e o& )4)a%e3' [P 2"a44!o$e o& )4)a%e3.
+TRIN5,E
S Cocatea*!oe: Bc!ao B S Ba t)tt!9 Bc!ao a t)tt!9
Co#82(' !!*!o'
7)at!3
Re(t!t)!(ce &e%%a (t$!4a s %a (otto (t$!4a c,e !!*!a a%%a #o(!*!oe inizio e cot!)a #e$ quanti ca$atte$!
Co+$ot! 2#$e&!cat!3: P' Z 2"!o$e3' [ 2"a44!o$e3' Z[ 2&!5e$(o3' ZP 2"!o$e o& )4)a%e3' [P 2"a44!o$e o& )4)a%e3.
NOTA: (oo t)tt! &a !te&e$(! ! (e(o a%+a6et!co.
ALTRI CO-ANDI UTILI
Le4t,2(3 Re(t!t)!(ce a%%a %)4,e**a 2)"e$o &! ca$atte$!3 &e%%a (t$!4a (
1o(2(1' (23 Re(t!t)!(ce %a #o(!*!oe &e%%a (t$!4a (1 a%%O!te$o &e%%a (t$!4a (2D (e (1 o 5!ee t$o5ata $e(t!t)!(ce *e$o
:a%2(' K' e$$o$e3 Se #o((!6!%e t$a(+o$"a %a (t$!4a ( e% )"e$o co$$!(#o&ete e "e"o$!**a !% $!()%tato e%%a 5a$!a6!%e TD (e
%a co5e$(!oe $!e(ce e%%a 5a$!a6!%e !te$a errore e ,a "e((o !% 5a%o$e *e$oD (e %a co5e$(!oe o $!e(ce !
errore 5!ee e"e((o ) 5a%o$e &!5e$(o &a *e$o
St$2K' (3 Co5e$te !% )"e$o K e%%a (t$!4a co$$!(#o&ete "e"o$!**a&o%a e%%a 5a$!a6!%e (t$!4a (
Ic$e"eto-&ec$e"eto &e% 5a%o$e &! )a 5a$!a6!%e.
K :P K S 1D K a(()"e !% 5a%o$e att)a%e !c$e"etato &! )o 2K &!5eta K !c$e"etato &! )o3
ATTENZIONE: o co+o&ete%o co %a (c$!tt)$a K P 8 S 1 2te(t &! co+$oto t$a !% 5a%o$e cote)to e%%a 5a$!a6!%e K
e 7)e%%o &e%%a 5a$!a6!%e 8 !c$e"etato &! )o.
K :P K S 5.2D K 5!ee !c$e"etata &! 5.2 2e5!&ete"ete !% t!#o &! K / real3
K :P K M1LD K 5!ee !c$e"etata &! 1L
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. '5
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
PRINCIPALI OPERATORI IN ORDINE DECRE+CENTE DI PRECEDENZA
not
Ne4a*!oe %o4!ca 26oo%eaa3D e(e"#!o: ot KP8 2e(#$e((!oe 5e$a (e !% 5a%o$e &e%%a 5a$!a6!%e K / &!5e$(o
&a 7)e%%o &! 83D
Ne4a*!oe 6!t a 6!t 2$it2ise3: ot 1LL1L L11L1
S Mo%t!#%!ca*!oe a$!t"et!ca
4 D!5!(!oe 2t$a )"e$! $ea%!3
div D!5!(!oe !te$a
mod Mo&)%o 2!% $e(to &! )a &!5!(!oe !te$a3 5 "o& 2 1 18 "o& 5 3
and
A& 6oo%eao: 2K[43 a& 2KZ123 2e(#$e((!oe 5e$a (e K ,a ) 5a%o$e co"#$e(o t$a 4 e 123
A& 6!t@!(e: 1LL1 a& 1L11 11L1
Z So""a a$!t"et!ca' cocatea*!oe &! (t$!4,e 2Bc!ao B S Ba t)tt!9 Bc!ao a t)tt!93
M Sott$a*!oe a$!t"et!ca
or
O$ 6oo%eao: 2KZ43 o$ 2K[123 2e(#$e((!oe 5e$a (e K ,a ) 5a%o$e e(te$o a%%9!te$5a%%o 24'123
O$ 6!t@!(e: 1LL1 a& 1L11 1L11
Y Te(t &! )4)a4%!a*a
^_
Te(t &! o )4)a4%!a*a 2&!5e$(o &a3D K Z[ 8 2e(#$e((!oe 5e$a (e !% 5a%o$e &e%%a 5a$!a6!%e K / &!5e$(o &a
7)e%%o &! 83
^ Te(t "!o$e &!
_ Te(t "a44!o$e &!
^Y Te(t "!o$e o )4)a%e &!
_Y Te(t "a44!o$e o )4)a%e &!
comandi di in#resso6uscita: (e$5oo #e$ ac7)!(!$e &at! &a%%a ta(t!e$a o #e$ 5!()a%!**a$e $!()%tat! )"e$!c!' "e((a44!
&! te(to' ca$atte$! (e"!4$a+!c!' #$!"!t!5e 4eo"et$!c,e 2$ette' c!$co+e$e*e3' ()o!' (ta"#a$e ecc.
uscita (scrittura)
2rite7espressione8! espressione9! ):: "o(t$a ()%%o (c,e$"o %a (e7)e*a &e! 5a%o$! &e%%e e(#$e((!o! !&!cate t$a
#a$ete(!D espressione1/2ecc. #)0 e((e$e #$at!ca"ete 7)a%(!a(! co(a 2)a co(tate )"e$!ca')a co(tate (t$!4a'
)a 5a$!a6!%e &! t)tt! ! #$!c!#a%! t!#!' )Oe(#$e((!oe c,e 5e$$e66e #$!"a ca%co%ata e& !% c)! 5a%o$e (a$e66e 7)!&!
5!()a%!**atoD ota: o 5a a ca#o a)to"at!ca"eteD #e$ c)! !% ()cce((!5o co"a&o &! 5!()a%!**a*!oe () 5!&eo
cot!)e$> ()%%a (te((a %!ea &e%%o (c,e$"o 2a "eo c,e (! (!a 4!> a$$!5at! a%%O)%t!"a #o(!*!oe' e% 7)a% ca(o (! 5a
co")7)e a ca#o3D
2riteln7espressione8! espressione9! ):: co"e !% co"a&o write e& ! #!< (! #o(!*!oa a)to"at!ca"ete ()%%a
#$o((!"a %!ea &e%%o (c,e$"o.
E(e"#!: @$!te2123D @$!te2Ba93D @$!te2Bc!ao "o&o93D @$!te2BH!a! ,a B' eta' B a!93D
@$!te%2BI ) (eco%o c! (oo B' 6LQ6LQ24Q365Q1LL.L' B(eco&!93D
NOTA: (e o "o%t!#%!ca((!"o #e$ 1LL.L 2c! a5e5ate 6a&atoC3 otte$$e""o ) "e((a44!o &! e$$o$e #e$c,E !% $!()%tato
()#e$e$e66e !% #!< 4$a&e )"e$o !te$o 2%o4!t3 $a##$e(eta6!%e co !% t)$6o 1a(ca%. I&!ca&o !5ece ) )"e$o
$ea%e !% ca%co%o 5!ee e++ett)ato e% &o"!!o &e! )"e$! $ea%!.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. '*
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
I% +o$"ato &e% $!()%tato )(a %a ota*!oe e(#oe*!a%e: 3.1536LLLLLLESLN. E9 #e$0 #o((!6!%e !&!ca$e &e4%!
!&!cato$! &! a"#!e**a: &etto ! a%t$e #a$o%e #o((!a"o (ce4%!e$e 7)ate #o(!*!o! ()% 5!&eo )t!%!**a$e #e$ %e c!+$e
#$!"a e &o#o !% #)to &ec!"a%e:
@$!te%26LQ6LQ24Q365Q1LL.L/8;/;3 31536LLLLL :1L:L (!4!+!ca 1L #o(!*!o! ! t)tto' &! c)!
L 2e(()a3 #e$ %e c!+$e &o#o !% #)to &ec!"a%e
@$!te%26LQ6LQ24Q365Q1LL.L/8</93 31536LLLLL.LL :13:2 (!4!+!ca 13 #o(!*!o! ! t)tto' &! c)! 2 #e$ %e
c!+$e &o#o !% #)to &ec!"a%e 26!(o4a cota$e
ac,e 7)e(tO)%t!"o3
ingresso (lettura)
readln7 "aria$ile:: !% #$o4$a""a (! "ette ! atte(a &! ) 5a%o$e c,e &e5e e((e$e &!4!tato )(a&o %a ta(t!e$aD !%
t!#o &e% &at! !(e$!to &e5e co$$!(#o&e$e a 7)e%%o &e%%a 5a$!a6!%eD ) 7)a&$at!o o& ) t$att!o %a"#e44!ate
!&!cao %o (tato &! atte(aD !% &ato (! !te&e &!4!tato co"#%eta"ete 7)a&o 5!ee #$e")to !% ta(to !5!o 2ete$
()%%e ta(t!e$e a"e$!cae3D !% 5a%o$e !(e$!to 5!ee "e"o$!**ato e%%a 5a$!a6!%e !&!cata: &a 7)e(to "o"eto !
a5at! &!5eta &!(#o!6!%e e% #$o4$a""a.
Comandi per il controllo del %lusso di esecu1ione
T)tt! ! co"a&! 5!(t! +!o a& o$a (oo &e% t)tto !()++!c!et! #e$ implementare 2$ea%!**a$e ()% co"#)te$3 a%4o$!t"!
ac,e "o%to (e"#%!c!. I""a4!!a"o a& e(e"#!o ) #$o4$a""a c,e c,!e&e a c,! %o (ta )(a&o &! !(e$!$e %Oet>D !%
#$o4$a""a &o5$e66e $!(#o&e$e co ) "e((a44!o a##$o#$!ato a (eco&a c,e c! (! t$o5! &! +$ote a& ) "a44!o$ee
#!)tto(to c,e a ) "!o$ee.
No cO/ "o&o (c$!5e&o (e"#%!ce"ete )O!(t$)*!oe &o#o %Oa%t$a &! $!)(c!$e ! 7)e(to !teto= 1e$ o$a' !+att!' (!a"o
(o%o ! 4$a&o &! !&!ca$e ! (e7)e*a )a (e$!e &! co"a&!. A)e(to / ce$ta"ete )t!%e e& !&!5!&)a %a #$!"a &e%%e
co(!&&ette strutture %ondamentali della pro#ramma1ione' Ne "acao &)e: %a sele1ione e %Oitera1ione' La
(e%e*!oe co$$!(#o&e %a #o((!6!%!t> &! +a$ e(e4)!$e ) 6%occo &! !(t$)*!o! #!)tto(to c,e ) a%t$o a (eco&a &e%
$!()%tato &! ) co+$oto. LO!te$a*!oe co$$!(#o&e !5ece %a #o((!6!%!t> &! +a$ $!#ete$e ) 6%occo &! !(t$)*!o! +!o a%
5e$!+!ca$(! &! )a ce$ta co&!*!oe.
D)e (t)&!o(! ,ao &!"o(t$ato c,e co (e7)e*a' (e%e*!oe e %O!te$a*!oe #o((oo e((e$e (c$!tt! t)tt! ! #o((!6!%!
#$o4$a""! c,e ) "!c$o#$oce((o$e / ! 4$a&o &! e(e4)!$e. S! #a$%a ac,e &! pro#ramma1ione strutturata'
NOTA: (!ete ca%&a"ete !5!tat! a co()%ta$e %Oa##$o+o&!"eto ()! &!a4$a""! &! +%)((o #e$ 5e&e$e co"e (oo
$a##$e(etate %e (t$)tt)$e +o&a"eta%! &e%%a #$o4$a""a*!oe.
C! (oo t$e t!#! &! (t$)tt)$a (e%ett!5a: a& )a 5!a' a &)e 5!e 2&etta ac,e 6!a$!a3' a "o%te 5!e.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. '+
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
+ELEZIONE AD UNA .IA
Fa e(e4)!$e )a (!4o%a o& ) 6%occo &! !(t$)*!o! 2&e%!"!tate ! 7)e(to ca(o &a%%a co##!a &! #a$o%e c,!a5e begin
end3 (o%o (e %a co&!*!oe !&!cata e 5e$a 2t$)e3. Se %a co&!*!oe / +a%(a %9!(t$)*!oe 2o !% 6%occo &!
!(t$)*!o!3 5!ee (e"#%!ce"ete !4o$ato. Ecco %a (!ta((! 2a (!!(t$a !% ca(o &! (!4o%a !(t$)*!oe e& a &e(t$a
7)e%%o co #!< &! )a !(t$)*!oe:
!+ co&!*!oe t,e
!(t$)*!oeD
ma non sarebbe sbagliato:
!+ co&!*!oe t,e
6e4!
!(t$)*!oeS!4o%a
e&
Do#o istruzione o / (tato &!"et!cato ) #)to e 5!$4o%a: #$!"a &! ) end #)0 e((e$e o"e((a ! 7)ato !% D
(e$5e a (e#a$a$e &)e !(t$)*!o! e %9e& o #)0 e((e$e co(!&e$ato )9!(t$)*!oe "a ) &e%!"!tato$e.
condizione / ) e(#$e((!oe c,e )a 5o%ta 5a%)tata &e5e 4ee$a$e ) 5a%o$e 6oo%eao 25e$o-+a%(o3D %e co&!*!o!
(! e(#$!"oo co 4%! operatori rela1ionali:
O1ERATORE ESEM1I
Z "!o$e T Z 4 KS8 Z * a Z 6Sc O$&2c3 Z 67 213 1a$o%a1 Z 1a$o%a2 223
ZP "!o$e o& )4)a%e T ZP 4 KS8 Z * a Z 6Sc O$&2c3 ZP 67 1a$o%a1 ZP 1a$o%a2
P )4)a%e :otoP6 KS8 P * a P 6Sc 2aS63 &!5 2 P 4 C%!ete1 P C%!ete2
[P "a44!o$e o& )4)a%e Tota%e[P1L KS8 [P * a [P 6Sc T [P (7$t2*3 233 1a$o%a1 [P 1a$o%a2
[ "a44!o$e So""a[1LL KS8 [ * a [ 6Sc T [ (7$2*3 Le4t,2co4o"e3[12 243
Z[ &!5e$(o K Z[ 8 KS8 Z[ * a [ 6Sc T Z[ (7$2*3 Co4o"e1 Z[ Co4o"e2
(1) c / ) ca$atte$eD %a +)*!oe o$& $e(t!t)!(ce !% 5a%o$e &e% ()o co&!ce ASCII c,e 5!ee co+$otato co !%
5a%o$e 67.
(2) !arola1 e !arola2 (oo &)e (t$!4,eD !% co+$oto &e5e e((e$e !te(o ! (e(o %e((!co4$a+!co' c!o/
co(!&e$a&o %a #o(!*!oe c,e c!a(c)a #a$o%a occ)#e$e66e ()% 5oca6o%a$!oD #e$ c)! Bcae9 Z Bca ! a!
%!6$!' e "! (a9D !% t)tto (! a##%!ca ac,e 7)a&o %a (t$!4a cot!ee #!< #a$o%e co"e ! B6e% cae9 Z B6e% 4atto9
(") I% 5a%o$e &e%%a 5a$!a6!%e # 5!ee co+$otato co 7)e%%o &e%%a $a&!ce 7)a&$ata &e% 5a%o$e cote)to e%%a
5a$!a6!%e z
($) S! cot$o%%a (e %a %)4,e**a ! ca$atte$! &e%%a (t$!4a cognome ()#e$a 12
I""a4!!a"o &! 5o%e$ a##%!ca$e )o (coto a% #$e**o &! ) #$o&otto (o%o a! c%!et! a6!t)a%!...
program %pplica&conto'
(ar
costo: real' tipo)liente: string' percentuale&conto:
integer'
begin
writeln(*+nserisci costo prodotto: *)' readln( costo )'
writeln(*+nserisci e(entuale , di sconto: *)'
readln(percentuale&conto )'
writeln(*+nserisci il tipo di cliente: *)'
readln( tipo)liente )'
if tipoCliente=abituale then
costo = costo ! "costo#100$ * percentuale%conto&
writeln(*-uesto cliente paga :./ costo):
readln' (0 un readln senza (ariabile attende fino a c1e non (iene premuto il tasto +2+3)
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. ',
!+ co&!*!oe t,e
6e4!
!(t$)*!oe1D
!(t$)*!oe2D
G
!(t$)*!oeN
e&D
NOTA: ! "o%t! &e4%! e(e"#! c,e 5e$$ao #$o#o(t! o c! (!
#$eocc)#e$> &! cot$o%%a$e %a co$$ette**a &e! &at! !(e$!t!
t$a"!te %a ta(t!e$a #e$c,E !% co&!ce (! a##e(at!$e66e e
&!5ete$e66e "o%to #!< &!++!c!%e &a (e4)!$e.
I $!+e$!"eto a% #$o4$a""a 7)! a %ato' a& e(e"#!o' %O)tete
#ot$e66e !(e$!$e ) co(to #a$! a *e$o o e4at!5o' )a
#e$cet)a%e &! (coto (e*a (e(o e& ac,e )a &e(c$!*!oe
#e$ !% t!#o &e% c%!ete c,e #ot$e66e B "ette$e ! c$!(!9 !% te(t
+atto co %9!+: BA6!t)a%e9 co %a A "a!)(co%a o 5e$$e66e
$!coo(c!)to !5a%!&o #e$ %Oa##%!ca*!oe &e%%o (coto.
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
end.
A%t$! e(e"#!.
#$o4$a" (e%e*!oeD
5a$
a'6'c: !te4e$D
(1'(2: (t$!4D
c1'c2: c,a$D
6e4!
a:P1D 6:P2D c:P1D
(1:PO$o((!OD (2:PO"a$!oOD
c1:POaOD
c2:PO6OD
!+ aP6 t,e
@$!te%2Oa )4)a%e 6O3D
!+ a[3 t,e
@$!te%2Oa "a44!o$e 3O3D
!+ 6Z6 t,e
@$!te%2O6 "!o$e 6O3D
!+ 3[P4 t,e
@$!te%2OI . "a44!o$e )4)a%e IIO3D
2Q !% (e4)ete co+$oto (e4)e %Oo$&!e a%+a6et!co 2aZ6' 6Zc' ac[a6'
ecc.3 Q3
!+ c1ZPc2 t,e
@$!te%2OI ca$. "!o$e )4)a%e IIO3D
!+ (1Z[(2 t,e
@$!te%2O%e (t$!4,e (oo &!5e$(eO3D
!+ (1[(2 t,e
@$!te%2O%a I (t$!4a 5!ee &o#o %a II ()% &!*!oa$!oO3D
$ea&%
e&.
455354 )3674
I% (o%o +atto &! !&eta$e !% co&!ce o / ()++!c!ete a& !&!5!&)a$e !% 6%occo &e%%e !(t$)*!o! &o#o !% t1enD
e%%Oe(e"#!o c,e (e4)e ac,e (e &a%%O!&eta*!oe / #$o6a6!%e c,e %O!te*!oe &a% #$o4$a""ato$e (!a 7)e%%a &!
+a$ e(e4)!$e %e t$e !(t$)*!o! (o%o 7)a&o !% 5a%o$e &e%%a 5a$!a6!%e 8 / "a44!o$e &! &)e' ! $ea%t> #e$ !% co"#!%ato$e
%O!(t$)*!oe if t1en te$"!a &o#o !% D &! istruzione12%e a%t$e &)e !(t$)*!o! (oo (e"#$e e co")7)e e(e4)!te
!&!#e&ete"ete &a%%Oe(!to &e% cot$o%%o ()%%a 5a$!a6!%e 8). I #$at!ca !% #$!"o (#e**oe &! co&!ce / e7)!5a%ete
a 7)e%%o cet$a%eD ()%%a &e(t$a' !5ece' %a 5e$(!oe co$$etta:
I+ K[2 t,e
I(t$)*!oe1D
I(t$)*!oe2D
I(t$)*!oe3D
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. '-
NOTA2: &o#o ) 6e4! 2o &o#o !% t1en (e c9/ )a
(o%a !(t$)*!oe3 a6!t)ate5!' a&a&o a ca#o' a
$!et$a$e &! ) #a!o &! ca$atte$! e a& a%%!ea$e &!
co(e4)e*a t)tto !% 6%occo &e%%e !(t$)*!o!. Do#o
%9end $!to$e$ete a (c$!5e$e %e !(t$)*!o! a%%!eate
co %9if. A)e(ta tec!ca &! (c$!tt)$a (! c,!a"a
indenta1ione. I&eta$e !% co&!ce a)"eta !
"o&o &$a(t!co %a %e44!6!%!t>=
I(t$)*!oe
I+ K[2 t,e
Be4!
I(t$)*!oeD
I(t$)*!oeD
I(t$)*!oe
E&D
I(t$)*!oeD
NOTA1: a%%O!te$o &e%%a #a$te t1en #)0 e((e$e
"e((a )a 7)a%(!a(! !(t$)*!oe 1a(ca%' 7)!&!
ac,e a%t$e (t$)tt)$e &! cot$o%%o &e% +%)((o co"e
) a%t$o B!+ G t,e G9D ! #$at!ca c! (!
$!t$o5e$e66e co (t$)tt)$e B!+ Gt,e G e%(e9 c,e
e cote4oo &e%%e a%t$e 25e&! #!< a5at!3
I(t$)*!oe
I+ K[2 t,e
Be4!
I(t$)*!oeD
I(t$)*!oeD
I(t$)*!oe
E&D
I(t$)*!oeD
I+ K[2 t,e
I(t$)*!oe1D
I(t$)*!oe2D
I(t$)*!oe3D
I+ K[2 t,e
6e4!
I(t$)*!oe1D
I(t$)*!oe2D
I(t$)*!oe3
e&D
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
+ELEZIONE A DUE .IE
R!(#etto a 7)e%%a a& )a 5!a 5!ee a44!)ta %a #a$te &a e(e4)!$e 7)a&o %a co&!*!oe +a%(a:
!+ co&!*!oe t,e
!(t$)*!oeSe:e$a
e%(e
!(t$)*!oeSeFa%(aD
A)! (o#$a (oo (tat! e(e"#%!+!cat! t)tt! ! #o((!6!%! ca(! c,e (! #o((oo #$e(eta$e a (eco&a c,e (!a #$e(ete )a
(o%a !(t$)*!oe &a e(e4)!$e 2e%%a #a$te t1en o e%%a #a$te else3 #!)tto(to c,e ) 6%occo &! &)e o #!< !(t$)*!o! c,e
5ao 7)!&! $acc,!)(e t$a ) begin e& ) end. Ne% #$!"o e(e"#!o cO/ )a (o%a !(t$)*!oe &a e(e4)!$e (!a c,e %a
co&!*!oe (!a 5e$a (!a c,e (!a +a%(a. Ne% (eco&o e(e"#!o c! (oo N !(t$)*!o! &a e(e4)!$e 7)a&o %a co&!*!oe
5e$a e& )a (o%a 7)a&o %a co&!*!oe +a%(a. Ne% te$*o e(e"#!o cO/ )a (o%a !(t$)*!oe &a e(e4)!$e 7)a&o %a
co&!*!oe 5e$a e& N !(t$)*!o! 7)a&o %a co&!*!oe +a%(a. Ne%%O)%t!"o e(e"#!o #!< &! )O!(t$)*!oe &a e(e4)!$e
(!a e% ca(o %a co&!*!oe (!a 5e$a (!a e% ca(o (!a +a%(a.
Se %a co&!*!oe / 5e$a 5!ee e(e4)!ta %O!(t$)*!oe 2o !% 6%occo &! !(t$)*!o! t$a begin end3 &o#o !% t1en e 5!ee
!5ece !4o$ata %a #a$te else. :!ce5e$(a' (e %a co&!*!oe / +a%(a 5!ee !4o$ata %O!(t$)*!oe 2o !% 6%occo &!
!(t$)*!o! t$a begin end3 &o#o !% t1en e 5!ee e(e4)!ta %a #a$te else.
Co&!*!o! co"#o(te
Le co&!*!o! )(ate +!o a& o$a (oo &e+!!te (e"#%!c!D )(a&o ! connetti"i lo#ici and' or e not #o((!a"o
co"#o$e &! #!< co"#%e((e 2co"#o(te3.
La co&!*!oe co"#o(ta c,e )(a and / 5e$a 7)a&o %o (oo CONTEM1ORANEAMENTE t)tte %e co&!*!o!
co!5o%teD (e ANCHE UNA SOLA &! e((e eO +a%(a' %a co&!*!oe !te$a $!()%te$> +a%(a. O4! co&!*!oe &e5e
e((e$e $acc,!)(a t$a #a$ete(! to&e.
if (a9:1) and (a;:") t1en (0 le parentesi sono 3<<=+>%?35+4 0)
writeln(@a e@@ compreso tra 1 e "@)' (0 3?%: per inserire un apostrofo o un accento in una stringa A
necessario raddoppiarlo (altrimenti il compilatore penserebbe
c1e lB termina la stringa0)
if (s1:@rossi@) and (s2:@mario@) t1en
writeln(@e@@ la persona cercataCC@)'
if (s1:@rossi@) and (eta9:1D) t1en
writeln(@rossi e@@ maggiorenne/ masc1io o femmina@)'
(0 le condizioni possono anc1e essere piu@@ di 2 ... de(ono sempre essere (ere
)3?46!35%4%64?4 0)
if (s1:@rossi@) and (eta91D) and (s2:@femmina@) t1en
writeln(@rossi e@@ maggiorenne/ femmina@)'
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. )0
!+ co&!*!oe t,e
I(t$)*!oeSe:e$a
e%(e
6e4!
I(t$)*!oe1SeFa%(aD
I(t$)*!oe2SeFa%(aD
G
I(t$)*!oeNSeFa%(aD
e&D
!+ co&!*!oe t,e
6e4!
I(t$)*!oe1Se:e$aD
I(t$)*!oe2Se:e$aD
G
I(t$)*!oeNSe:e$aD
e&
e%(e
!(t$)*!oeSeFa%(aD
!+ co&!*!oe t,e
6e4!
I(t$)*!oe1Se:e$aD
I(t$)*!oe2Se:e$aD
G
I(t$)*!oeNSe:e$aD
e&
e%(e
6e4!
I(t$)*!oe1SeFa%(aD
I(t$)*!oe2SeFa%(aD
G
I(t$)*!oeNSeFa%(aD
e&D
455354 )3674: "ette$e !% D #$!"a dell.else. I #a(ca% %9!(t$)*!oe if t1en else
/ co(!&e$ata !&!5!(!6!%e e' %o (a#ete' !% D (e$5e a (e#a$a$e &)e !(t$)*!o!.
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
La co&!*!oe co"#o(ta c,e )(a or / 5e$a 7)a&o %o / ALMENO UNA &e%%e co&!*!o! co!5o%te.D / +a%(a
7)a&o %e co&!*!o! (oo +a%(e TUTTE CONTEM1ORANEAMENTE.
+f (mese:.>ennaio.) or (mese:.6arzo.) or (mese:.=uglio.) t1en
umeroEgiorni :: "1'
1$e(tate #a$t!co%a$e atte*!oe a% (e4)ete e(e"#!oD 5a %etto co(;: (e Z6e%%a[ o##)$e Z5ecc,!a e $!cca[ a%%o$a ..
o((e$5ate %e #a$ete(!' OBBLIHATORIE: !+ 2 3 o$ 2 2 3 a& 2 3 3
if (s1:@bella@) or ( (eta9F0) and (s2:@ricca@) ) t1en
writeln(@la sposo in ogni caso ...@)'
:a$!ate ()% te"a G 2#!< &! )a !(t$)*!oe &a e(e4)!$e3
if (s1:@bella@) or ( (eta9F0) and (s2:@ricca@) ) t1en
begin
writeln(@la sposo in ogni caso ...@)'
writeln(@poi forse mi pentiroC@)
end
else
begin
writeln(@in questo caso niente dubbi ...@)'
writeln(@... meglio scapoli CC@)
end'
IF !&!+!cat!: 4%! if #o((oo cotee$e a%t$! ifD (! #a$%a &! if !&!+!cat!:
(0 tro(iamo il massimo tra a b c 0)
if a9:b t1en
if a9:c t1en
writeln(@il ma8 e@@ a@)
else
writeln(@il ma8 e@@ c@)
else
if b9:c t1en
writeln(@il ma8 e@@ b@)
else
writeln(@il ma8 e@@ c@)'
+ELEZIONE A -OLTE .IE
Co"!c!a"o co !% &!$e e o / )a (t$)tt)$a !&!(#e(a6!%e "a (o%o )a co"o&!t>. \ (tata !t$o&otta #e$ (o(t!t)!$e %a
(t$)tt)$a &e4%! if ! ca(cata c,e $!(c,!a &! &!5eta$e #oco %e44!6!%e. Ecco 7)! (otto %e &)e (t$)tt)$e a co+$oto e%
co"#!to &! &ete$"!a$e 7)at! 4!o$! c! (oo ! ) ce$to "e(e &e%%Oao: %a 5a$!a6!%e mese cot!ee ) )"e$o &a 1 a
12D %a 5a$!a6!%e anno !% )"e$o c,e co$$!(#o&e a%%Oao &! $!+e$!"eto.
I+ "e(eP2 t,e
I+ ao "o& 4 P L t,e
H!o$!:P2N 2Q 6!(e(t!%e Q3
E%(e
H!o$!:P28
E%(e
I+ 2"e(eP13 o$ 2"e(eP33 o$ 2"e(eP53
o$ 2"e(eP73 o$ 2"e(eP83 o$ 2"e(eP1L3
o$ 2"e(eP123 t,e
H!o$!:P31
E%(e
H!o$!:P3L
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. )1
IF ! ca(cata:
!+ co&!*!oe1 t,e
G
e%(e
!+ co&!*!oe2 t,e
G
e%(e
!+ co&!*!oe3 t,e
G.
E%(e
G
Case eta o%
1..11: @$!te%2B (e! ) #o##ate=93D
12..15:
6e4!
@$!te%2BO]' &!""! co"e t! c,!a"!93D
$ea&%2 o"e 3D
e&D
else
6e4!
@$!te%2BMat)(a o a""e((! G93D
@$!te%2B1$e"! !5!o #e$ cot!)a$e93D
$ea&%
e&
endD
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
La (t$)tt)$a &! &e(t$a B(! %e44e9 co(;: e% ca(o !% 5a%o$e &! "e(e (!a 2ca(e "e(e o+ G3 2 +a! !% cot$o%%o #e$ !% 6!(e(t!%e'
e% ca(o !5ece !% 5a%o$e (!a )o t$a 1'3'5'7'8'1L'12 ! 4!o$! (oo 31' a%t$!"et! (oo 3L. I #$at!ca (! e%ecao )o
&o#o %Oa%t$o ! ca(! #o((!6!%! 2! 5a%o$! a(()t! &a%%a 5a$!a6!%e c,e (! (ta cot$o%%a&o3 e #e$ c!a(c) ca(o (! !&!cao %e
!(t$)*!o! &a e(e4)!$e. La (t$)tt)$a c,e e $!()%ta / ce$ta"ete #!< %!ea$e e %e44!6!%e &! 7)e%%a otte!6!%e co )a
(e$!e &! if t1en else a!&at! e-o ! ca(cata: e #!< (oo ! ca(! &a co(!&e$a$e e #!< co5!ee )(a$e 7)e(ta
)o5a (t$)tt)$a. Ma 5e&!a"oe ! &etta4%!o %a (!ta((!:
Case "e(e o%
9/ I+ ao "o& 4 P L t,e
H!o$!:P2N 2Q 6!(e(t!%e Q3
E%(e
H!o$!:P28D
8!<!=!>!?!8;!89/ H!o$!:P31D
else
H!o$!:P3LD
endD
Do#o %a #a$o%a $!(e$5ata case &e5e e((e$e (#ec!+!cata %a 5a$!a6!%e &a cot$o%%a$e: #o((!a"o )(a$e (o%o 5a$!a6!%! &! t!#o
integer e c1ar 2! $ea%t> t)tte %e 5a$!a6!%! &! t!#o ordinale3.
1e$ o4! ca(o c,e (! #$e(eta #o((!a"o e%eca$e:
) (!4o%o 5a%o$e 2co"e !% )"e$o 2 c,e $a##$e(eta +e66$a!o e%%Oe(e"#!o3
#!< 5a%o$! (e#a$at! &a 5!$4o%a co %O!&ea c,e %a 5a$!a6!%e &a cot$o%%a$e #)0 a(()"e$e )o 7)a%(!a(! &! 7)e(t!
5a%o$! #e$ $!ca&e$e ! 7)e(to ca(o
) !te$5a%%o &! 5a%o$!: 1..12 (!4!+!ca &a 1a 12' Ba9..9*9 (!4!+!ca &a%%a Ba9 a%%a B*9
)a (!t)a*!oe "!(ta t$a %e &)e #$ece&et! co"e ! 1'3'5M12 c,e 5e$$e66e !te$#$etato co"e o !% 5a%o$e 1' o !%
5a%o$e 3' o ) 5a%o$e t$a 5 e 12
Do#o %Oe%eco &e! 5a%o$! c,e !&!5!&)ao ) ce$to ca(o (! &e5e "ette$e (!"6o%o / 2&)e #)t!3 e #o! o %O)!ca
!(t$)*!oe &a e(e4)!$e o !% 6%occo &e%%e !(t$)*!o! &a e(e4)!$e $acc,!)(e t$a begin e end. O4! ca(o &e5e e((e$e
(e#a$ato &a% ()cce((!5o co ) #)to e 5!$4o%a.
\ #o((!6!%e' "a o o66%!4ato$!o' !(e$!$e )a #a$te else begin end co %O!&ea &! !&!ca$e %e !(t$)*!o! &a e(e4)!$e
e% ca(o !% 5a%o$e &e%%a 5a$!a6!%e &! cot$o%%o o t$o5! $!(cot$o ! e(()o &e! ca(! #$!"! e%ecat!. A& e(e"#!o e%
cot$o%%o &e% 5a%o$e &e%%a 5a$!a6!%e "e(e (e (!a"o ce$t! c,e !% ()o 5a%o$e / e%%O!te$5a%%o 1..12' &o#o a5e$ cot$o%%ato
c,e o (!a &)e e t)tt! ! 5a%o$! c,e co$$!(#o&oo a "e(! co 31 4!o$!' %a #a$te else o #)0 c,e co$$!(#o&e$e a ca(!
! c)! !% "e(e / )o &! 7)e%%! co 3L 4!o$!. Nat)$a%"ete a5$e""o ac,e #ot)to )(a$e %a +o$"a e(te(a (e*a %a #a$te
else:
Case "e(e o%
9/ I+ ao "o& 4 P L t,e
H!o$!:P2N 2Q 6!(e(t!%e Q3
E%(e
H!o$!:P28D
8!<!=!>!?!8;!89/ H!o$!:P31D
@!A!B!88/ H!o$!:P3LD
endD
I% case 5a (e"#$e coc%)(o co ) end. U9)%t!"a #a$t!co%a$!t>: #$!"a &e%%9else &! ) case
&e5e e((e$e "e((o ) #)to e 5!$4o%a #e$c,E a%t$!"et! #ot$e66e e((e$e co+)(o co %a #a$te
else &! ) if t1en else !(e$!to e%%O)%t!"o ca(oG I+att! e%%Oe(e"#!o 7)! ()%%a &e(t$a (e*a !%
#)to e 5!$4o%a &o#o !% 2L' l.else c,e &o5$e66e e((e$e e(e4)!to 7)a&o !% (o44etto ,a #!< &! 18
a! 2ca(o 9#!4%!at)tto9 &e% case3 5e$$e66e !5ece e$$oea"ete a((oc!ato co %9if c,e cot$o%%a
%e ")%te.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. )2
Case eta o%
8''88/ @$!te%2B (e! ) #o##ate=93D
89''8=/
$e#in
@$!te%2BO]' &!""! co"e t! c,!a"!93D
$ea&%2 o"e 3D
endD
else
$e#in
@$!te%2BMat)(a o a""e((! G93D
@$!te%2B1$e"! !5!o #e$ cot!)a$e93D
$ea&%
end
endD
on A un erroreC
Case eta o%
8''8</ #a4,etta:P5D
8@38?: !+ ")%tePL t,e
#a4,etta:P2LD
else
@$!te%2B:a! a %a5o$a$e=93
endD
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
E+ERCIZI E RIEPILO5ATI.I +ULLA +ELEZIONE
+EL8' difficolt' bassa I(e$!ta )9et> &!$e (e (!a"o ! #$e(e*a &! ) "!o$ee o "a44!o$ee.
1$o4$a" "a44!o$e!1D
)(e(
e@&e%a8' c$tD
5a$
eta: !te4e$D 2Q 5a$!a6!%e ! c)! 5e$$aO "e"o$!**ata %OetaO Q3
2Q NOTA: o )(a$e "a! %e %ette$e accetate #e$ !
o"! &e%%e 5a$!a6!%! = Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
@$!te2OA)at! ,a! ,a!C M[ O3D
$ea&%2eta3D
!+ eta[P18 t,e
@$!te%2OO]' 5e&o c,e (e! "a44!o$ee ...O3
e%(e
@$!te%2OSe! aco$a ) #o##ate' to$a t$a O' 18 M eta' Oa! ==O3D
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
2Q #$o6%e"! a#e$t!: co(a ()cce&e (e c,! )(a !% #$o4$a""a (6a4%!a e& !(e$!(ce
) etaO e4at!5a o t$o##o 4$a&e #e$ e((e$e 5e$a C
"o&!+!ca !% #$o4$a""a #e$ cot$o%%a$e 7)e(te #o((!6!%!taO ==
t$o5! %a (o%)*!oe e% (o$4ete O"a44!o$2.#a(O Q3
e&.
+EL9' di%%icoltC/ $assa I(e$!to ) )"e$o' &!$e (e eO #a$! o &!(#a$!
#$o4$a" #a$!&!(#a$!1D
)(e( e@&e%a8' c$tD
5a$
)"e$o: !te4e$D 2Q 5a$!a6!%e ! c)! 5e$$aO "e"o$!**ata !% )"e$o Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
@$!te2OI(e$!(c! ) )"e$o e t! &!$oOO (e eOO #a$! o &!(#a$! M[ O3D
$ea&%2)"e$o3D
!+ )"e$o "o& 2 P L t,e
@$!te%2OeOO #a$!O3
e%(e
@$!te%2OeOO &!(#a$!O3D
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. )'
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
+EL<' di%%icoltC/ $assa I(e$!to ) ca$atte$e' &!$e (e eO )a 5oca%e o& )a co(oate.
#$o4$a" co(oate:oca%eD
)(e(
e@&e%a8' c$tD
5a$
c: c,a$D 2Q 5a$!a6!%e ! c)! 5e$$aO "e"o$!**ata !% (!4o%o ca$atte$e Q3
2Q co""eto: !% t!#o c,a$ #)0 "e"o$!**a$e ) (o%o ca$atte$eD occ)#a %a
"etaO &e%%o (#a*!o &! )a (t$!4a %)4a ) (o%o ca$atte$e #e$c,E co %e
(t$!4,e ) 68te ()##%e"eta$e (e$5e a "e"o$!**a$e %a %)4,e**a &e%%a
(t$!4a (te((aD 7)e(to o eO !5ece o55!a"ete ece((a$!o #e$ )a
5a$!a6!%e ca$atte$e' %a c)! %)4,e**a eOO (e"#$e 1 Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
@$!te2OI(e$!(c! ) ca$atte$e M[ O3D
$ea&%2c3D
2Q 1RIMA SOLUZIONE Q3
@$!te%2O1RIMA SOLUZIONEO3D
!+ 2 cPOaO 3 o$ 2 cPOeO 3 o$ 2 cPO!O 3 o$ 2 cPOoO 3 o$ 2 cPO)O 3 t,e
@$!te%2OeOO )a 5oca%eO3
e%(e
@$!te%2OeOO )a co(oateO3D
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%D
2Q co""eto: 7)e(ta (o%)*!oe o t!ee coto &e%%e 5oca%! ! "a!)(co%o Q3
2Q SECONDA SOLUZIONE Q3
@$!te%2OSECONDA SOLUZIONEO3D
!+ 2 cPOaO 3 o$ 2 cPOeO 3 o$ 2 cPO!O 3 o$ 2 cPOoO 3 o$ 2 cPO)O 3 o$
2 cPOAO 3 o$ 2 cPOEO 3 o$ 2 cPOIO 3 o$ 2 cPOOO 3 o$ 2 cPOUO 3
t,e
@$!te%2OeOO )a 5oca%eO3
e%(e
@$!te%2OeOO )a co(oateO3D
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%D
2Q co""eto: #$o5ate co %a A: %a #$!"a (o%)*!oe o +o$!(ce ) $!()%tato
co$$etto' %a (eco&a (!OD #e$oOO c! (oo "o%t! te(t ... ecco )a (o%)*!oe
#!)OO e++!c!ete Q3
2Q TERZA SOLUZIONE Q3
@$!te%2OTERZA SOLUZIONEO3D
2Q #$!"a t$a(+o$"!a"o !% ca$atte$e ! "a!)(co%o e #o! +acc!a"o ! te(t
(o%o co %e "a!)(co%eD )#ca(e eO )a +)*!oe c,e $e(t!t)!(ce !%
"a!)(co%o &e% ca$atte$e +o$!to co"e #a$a"et$o t$a #a$ete(!D
(e !% ca$atte$e e$a 4!aO ! "a!)(co%o' $!"ae ! "a!)(co%o Q3
c :P )#ca(e2 c 3D
!+ 2 cPOAO 3 o$ 2 cPOEO 3 o$ 2 cPOIO 3 o$ 2 cPOOO 3 o$ 2 cPOUO 3 t,e
@$!te%2OeOO )a 5oca%eO3
e%(e
@$!te%2OeOO )a co(oateO3D
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. ))
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%D
2Q AUARTA SOLUZIONE Q3
@$!te%2OAUARTA SOLUZIONEO3D
2Q (o%)*!oe co !+ ! ca(cata' #oco %e44!6!%e e %)4a Q3
c :P )#ca(e2 c 3D
!+ 2 cZ[OAO 3 t,e
!+ 2 cZ[OEO 3 t,e
!+ 2 cZ[OIO 3 t,e
!+ 2 cZ[OOO 3 t,e
!+ 2 cZ[OUO 3 t,e
@$!te%2OeOO )a co(oateO3
e%(e
@$!te%2OeOO )a 5oca%e 2U3O3
e%(e
@$!te%2OeOO )a 5oca%e 2O3O3
e%(e
@$!te%2OeOO )a 5oca%e 2I3O3
e%(e
@$!te%2OeOO )a 5oca%e 2E3O3
e%(e
@$!te%2OeOO )a 5oca%e 2A3O3D
2Q co""et!: 7)e(ta (o%)*!oe' #!)tto(to #e(ate' co(ete #e$oO &!
!t$a#$e&e$e a*!o! &!++e$e*!ate a (eco&a &e%%e 5oca%! !cot$ateD
! 6%occ,! ELSE (oo t)tt! ece((a$!= &!5e$(a"ete !(e$e&o 7)e%%a 5oca%e
o 5e$$e66e (ta"#ato )%%a= 1$o5a a to4%!e$e %O)%t!"o 6%occo e& !(e$!(c!
%a A ... Q3
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%D
2Q AUINTA SOLUZIONE Q3
@$!te%2OAUINTA SOLUZIONEO3D
2Q %a #!)O e++!c!ete' (+$)tta&o )a &e%%e +)*!o! &!(#o!6!%!
#e$ %e (t$!4,e: %a +)*!oe #o( $e(t!t)!(ce %a #$!"a #o(!*!oe &! )a
(t$!4a a%%O!te$o &! ) a%t$aD (e o %a t$o5a $e(t!t)!(ce *e$oD
a& e(e"#!o #o(2O#oO'Oto#o%!oO3 $e(t!t)!(ce 3 #e$c,eO %a (t$!4a O#oO
eO (tata t$o5ata a #a$t!$e &a%%a #o(!*!oe 3 e%%a (t$!4a Oto#o%!oO Q3
!+ #o(2c'OaAeE!IoO)UO3 Z[ L t,e 2Q c t$o5ata &a 7)a%c,e #a$te Q3
@$!te%2OeOO )a 5oca%eO3
e%(e
@$!te%2OeOO )a co(oateO3D
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%D
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. )5
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
+EL@' di%%icoltC/ $assa I(e$!t! A' B e C &!$e (e B eO co"#$e(o t$a A e CD ! #$at!ca (! cot$o%%a (e B a##a$t!ee
a%%O!te$5a%%o VA'CW
#$o4$a" !te$5a%%oD
)(e(
e@&e%a8' c$tD
5a$
a' 6' c: $ea%D
2Q 5a$!a6!%! ! c)! 5e$$ao "e"o$!**at! ! )"e$! Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
@$!te2OI(e$!(c! %OOe(t$e"o (!!(t$o &e%%OO!te$5a%%o M[ O3D
$ea&%2a3D
@$!te2OI(e$!(c! %OOe(t$e"o &e(t$o &e%%OO!te$5a%%o M[ O3D
$ea&%2c3D
2Q (e ! )"e$! (oo (tat! !(e$!t! e%%Oo$&!e (6a4%!ato' (to# Q3
!+ a[c t,e
@$!te%2OIte$5a%%o !"#o((!6!%e.O3
e%(e
6e4!
@$!te2OI(e$!(c! ) )"e$o e t! &!$oOO (e a##a$t!ee a%%OO!te$5a%%o M[ O3D
$ea&%263D
!+ 2 6[Pa 3 a& 2 6ZPc 3 t,e
@$!te%2OA##a$t!eeO3
e%(e
@$!te%2ONo a##a$t!eeO3
e&D
2Q co""et!: (! eO &ec!(o &! co"#$e&e$e 4%! e(t$e"! 2[P e ZP3 e! cot$o%%!D
otate %e #a$ete(! o66%!4ato$!e ! #$e(e*a &! #!)O &! )a co&!*!oeD
co5!cete5! c,e OR !5ece &! a& (a$e66e (tato ) e$$o$e: ) )"e$o'
#e$ e((e$e e%%O!te$5a%%o Va'cW &e5e e((e$e CONTEM1ORANEAMENTE #!)O
4$a&e 2a% "a((!"o )4)a%e3 &! a e #!)O #!cco%o 2a% "a((!"o )4)a%e3 &! cD
)(a&o %OOR %a co&!*!oe (a$e66e (tata 5e$a ac,e 7)a&o UNA SOLA &e%%e
co&!*!o! eO 5e$aD a& e(e"#!o (e %O!te$5a%%o +o((e V5' 11W' e& !% )"e$o
&a 5e$!+!ca$e +o((e 13' co 2 6[Pa 3 o$ 2 6ZPc 3 a&$e""o ! #$at!ca a
5e$!+!ca$e 2 13[P5 3 o$ 2 13ZP11 3 c,e $!()%te$e66e 5e$a 4$a*!e 13[P5 ac,e
(e eO +a%(o c,e 13ZP11 2e 7)!&! !% #)to o a##a$t!ee a%%O!te$5a%%o=
%Oo$ 2"a co &!5e$(e co&!*!o!3 eO !% coett!5o %o4!co 4!)(to 7)a&o
(! 5)o%e cot$o%%a$e c,e ) #)to (!a ESTERNO a& ) !te$5a%%o:
!+ 2 6Za 3 o$ 2 6[c 3 t,e
@$!te%2ONo a##a$t!eeO3
e%(e
@$!te%2OA##a$t!eeO3
!+att! ) #)to NON a##a$t!ee (e eO #!)O #!cco%o &e%%Oe(t$eo !+e$!o$e
o #!)O 4$a&e &e%%Oe(t$e"o ()#e$!o$e
Q3
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. )*
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
+EL=' di%%icoltC/ $assa I(e$!te &)e "!()$e' )a ! #o%%!c! e %Oa%t$a ! cet!"et$!' &!$e 7)a% / %a "a44!o$e
#$o4$a" cet!"et$!1o%%!c!D
)(e(
e@&e%a8' c$tD
5a$
c": $ea%D 2Q 5a$!a6!%e ! c)! 5e$$aO "e"o$!**ate %a "!()$a ! cet!"et$! Q3
#o: $ea%D 2Q 5a$!a6!%e ! c)! 5e$$aO "e"o$!**ate %a "!()$a ! #o%%!c! Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
@$!te2OI(e$!(c! %a "!()$a ! cet!"et$! M[ O3D
$ea&%2c"3D
@$!te2OI(e$!(c! %a "!()$a ! #o%%!c! M[ O3D
$ea&%2#o3D
2Q $!co$&a&o c,e 1 #o%%!ceP2.54 c" ... Q3
!+ #o Q 2.54 [ c" t,e
@$!te%2OLa "!()$a ! #o%%!c! eOO "a44!o$e 2O' #oQ2.54:4:2' Oc"3O3
e%(e
!+ #o Q 2.54 Z c" t,e
@$!te%2OLa "!()$a ! cet!"et$! eOO "a44!o$eO3
e%(e
@$!te%2OLe &)e "!()$e (oo e7)!5a%et!O3D
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
e&.
+EL A' di%%icoltC/ $assa I(e$!te %e "!()$e &e! %at! &! 2 $etta4o%! &!$e 7)a%e &e! &)e ,a %a ()#e$+!c!e "a44!o$e
#$o4$a" co+$otaA$eeD
)(e(
e@&e%a8' c$tD
5a$
61' 62: $ea%D 2Q 5a$!a6!%e ! c)! 5e$$ao "e"o$!**ate %e &)e 6a(! Q3
,1' ,2: $ea%D 2Q 5a$!a6!%e ! c)! 5e$$ao "e"o$!**ate %e &)e a%te**e Q3
a1' a2: $ea%D 2Q 5a$!a6!%e ! c)! 5e$$ao "e"o$!**ate %e &)e a$ee Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
@$!te2OI(e$!(c! %a 6a(e &e% #$!"o $etta4o%o M[ O3D
$ea&%2613D
@$!te2OI(e$!(c! %OOa%te**a &e% #$!"o $etta4o%o M[ O3D
$ea&%2,13D
@$!te2OI(e$!(c! %a 6a(e &e% (eco&o $etta4o%o M[ O3D
$ea&%2623D
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. )+
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
@$!te2OI(e$!(c! %OOa%te**a &e% (eco&o $etta4o%o M[ O3D
$ea&%2,23D
2Q 1RIMA SOLUZIONE Q3
@$!te%2O1RIMA SOLUZIONEO3D
2Q (e o !te$e((a "e"o$!**a$e ! 5a%o$! &e%%e &)e a$ee (! #)oO #$oce&e$e
a% co+$oto &!$etto &e%%e $!(#ett!5e +o$")%e &! ca%co%o Q3
!+ 61Q,1 [ 62Q,2 t,e
@$!te%2OI% #$!"o $etta4o%o ,a %a ()#e$+!c!e "a44!o$eO3
e%(e
!+ 61Q,1 Z 62Q,2 t,e
@$!te%2OI% (eco&o $etta4o%o ,a %a ()#e$+!c!e "a44!o$eO3
e%(e
@$!te%2OI &)e $etta4o%! ,ao %a (te((a ()#e$+!c!eO3D
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%D
2Q SECONDA SOLUZIONE 2"!4%!o$e3 Q3
@$!te%2OSECONDA SOLUZIONEO3D
2Q ca%co%!a"o #$!"a %e &)e ()#e$+!c! e (a%5!a"o !% $!()%tato ! a1 e a2 Q3
a1 :P 61Q,1D
a2 :P 62Q,2D
2Q #o! )(!a"o a1 e a2 #e$ ! co+$ot! Q3
!+ a1[a2 t,e
@$!te%2OI% #$!"o $etta4o%o ,a %a ()#e$+!c!e "a44!o$eO3
e%(e
!+ a1Za2 t,e
@$!te%2OI% (eco&o $etta4o%o ,a %a ()#e$+!c!e "a44!o$eO3
e%(e
@$!te%2OI &)e $etta4o%! ,ao %a (te((a ()#e$+!c!eO3D
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%D
2Q co""et!: 7)e(ta (eco&a (o%)*!oe )(a &)e 5a$!a6!%! ! #!< #e$0 ,a !%
4$o((o #$e4!o &! o +a$ $!#ete$e !% ca%co%o &e%%e a$eeD !o%t$e
#e$"ette$e66e &! )(a$e ! 5a%o$! &e%%e a$ee ac,e ! )a !#otet!ca
cot!)a*!oe &e% #$o4$a""aD $e&e ac,e #!< (e"#%!ce co"#$e&e$e
7)e%%o c,e (! (ta +ace&o Q3
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. ),
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
+EL>' di%%icoltC/ media I(e$!ta )Oet>O' &!$e (e (!a"o ! #$e(e*a &! ) "a44!o$ee o &! )
"!o$eeD cot$o%%a$e ac,e e5et)a%! e$$o$! &! !(e$!"eto &a #a$te &e%%O)tete
#$o4$a" "a44!o$e!2D
)(e( e@&e%a8' c$tD
5a$
eta: !te4e$D 2Q 5a$!a6!%e ! c)! 5e$$aO "e"o$!**ata %OetaO NOTA: o )(a$e "a! %e %ette$e accetate #e$ !
o"! &e%%e 5a$!a6!%! = Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
2Q $!(#etto a%%a (o%)*!oe &e%%Oe(e$c!*!o "a44!o$.#a( !&!c,!a"o e%%a $!c,!e(ta &e%%OetaO ac,e %O!te$5a%%o accettato: &a
L a! 2eoato3 a 12L Q3
@$!te2OA)at! ,a! ,a! 2LM12L3 C M[ O3D
$ea&%2eta3D
2Q SOLUZIONE 1 Q3
2Q cot$o%%!a"o #e$ e$$o$!: etaO e4at!5e o ()#e$!o$! a 12L Q3
@$!te%2OSOLUZIONE 1O3D
!+ 2 etaZL 3 o$ 2 eta[12L 3 t,e
@$!te%2OERRORE: %OOetaOO &e5e e((e$e co"#$e(a t$a L e 12L =O3
e%(e
!+ eta[P18 t,e
@$!te%2OO]' 5e&o c,e (e! "a44!o$ee ...O3
e%(e
@$!te%2OSe! aco$a ) #o##ate' to$a t$a O' 18 M eta' Oa! ==O3D
2Q co""et!: otate %e #a$ete(! OBBLIHATORIE 7)a&o ! ) !+ cOeO #!< &! )a co&!*!oeD otate co"e (!a
#o((!6!%e !!*!a$e )a #a$te ELSE ()6!to co ) a%t$o te(tD 7)e(to t!#o &! (t$)tt)$a
!+ ... t,e
...
e%(e
!+ ... t,e
...
e%(e
!+ ... t,e
ecc. ecc.
eO &etta co !+ ! ca(cata e #e$"ette &! 5e$!+!ca$e ! ()cce((!oe )a (e7)e*a &! co&!*!o!
La (o%)*!oe #$ece&ete o co(ete' ! ca(o &! e$$o$e' &! ca#!$e (e %o (6a4%!o eO $e%at!5o a& )Oet>O "!o$e &! *e$o
o a& )Oet>O t$o##o 4$a&e #e$c,/ %e &)e co&!*!o! (oo te(tate !(!e"e. :e&!a"o co"e ottee$e ) cot$o%%o aco$a
#!)O acc)$ato $!(#o&e&o co "e((a44! &! e$$o$e &!++e$e*!at! e #!)O acc)$at!Q3
2Q SOLUZIONE 2 Q3
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%2OSOLUZIONE 2O3D
!+ 2 etaZL 3 t,e
@$!te%2OERRORE: %OOetaOO o #)oOOe((e$e e4at!5a=O3
e%(e
!+ 2 eta[12L 3 t,e
@$!te%2OERRORE: %OOetaOO o #)oOOe((e$e "a44!o$e &! 12L=O3
e%(e
!+ eta[P18 t,e
@$!te%2OO]' 5e&o c,e (e! "a44!o$ee ...O3
e%(e
@$!te%2OSe! aco$a ) #o##ate' to$a t$a O' 18 M eta' O a! ==O3D
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. )-
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
+EL ?' di%%icoltC/ media Letto ) ca$atte$e' &!$e (e co$$!(#o&e a& )a %ette$a "a!)(co%a e (e (;
&!$e (e eO )a co(oate o& )a 5oca%e.
#$o4$a" "a!)(co%aD
5a$
c: c,a$D
6e4!
@$!te2OI(e$!$e ) ca$atte$e M[ O3D
$ea&%2c3D
2Q 1RIMA SOLUZIONE: SENZA CASE Q3
2Q (e !% co&!ce ASCII &e% ca$atte$e %etto eO co"#$e(o t$a 7)e%%! &! A e Z
a%%o$a (! t$atta &! )a "a!)(co%a ... Q3
@$!te%2OSENZA OOCASEOO ...O3D
!+ 2 o$&2c3[Po$&2OAO3 3 a& 2 o$&2c3ZPo$&2OZO3 3 t,e
6e4!
@$!te%2OHa! !(e$!to )a "a!)(co%aO3D
2Q 5e&!a"o o$a (e c eO )4)a%e a& )a &e%%e 5oca%! Q3
!+ 2cPOAO3 o$ 2cPOEO3 o$ 2cPOIO3 o$ 2cPOOO3 o$ 2cPOUO3 t,e
@$!te%2O... e& eOO )a 5oca%eO3
e%(e
@$!te%2O... e& eOO )a co(oateO3
e&
e%(e
@$!te%2ONo (! t$atta &! )a "a!)(co%aO3D
2Q 1OI SOLUZIONE CON CASE Q3
@$!te%2OCON OOCASEOO ...O3D
2Q !% ca(e #!)O e(te$o e cot!ee !te$a"ete ) a%t$o ! ) ()o ca(o Q3
ca(e o$&2c3 o+
o$&2OAO3..o$&2OZO3: 2Q .. (!4!+!ca &a% 5a%o$e .. a% 5a%o$e Q3
6e4!
@$!te%2OHa! !(e$!to )a "a!)(co%aO3D
2Q 7)e(to ca(e eO cote)to e% #$!"o ca(o &! 7)e%%o #!)O e(te$o Q3
ca(e c o+
OAO'OEO'OIO'OOO'OUO: @$!te%2O... e& eOO )a 5oca%eO3D
e%(e
@$!te%2O... e& eOO )a co(oateO3
e&D
e&D
e%(e
@$!te%2ONo (! t$atta &! )a "a!)(co%aO3D
e&D
$ea&%D
e&.
R!co$&o c,e %a +)*!oe o$&2c3' &o5e c / ) ca$atte$e' $e(t!t)!(ce !% co&!ce ASCII &! 7)e(t9)%t!"o. Cot$o%%a$e c,e
o$&2c3 (!a co"#$e(o t$a o$&2BA93 e o$&2BZ93 (!4!+!ca cot$o%%a$e c,e !% co&!ce ASCII &e% ca$atte$e c (!a co"#$e(o t$a
7)e%%o &e%%a #$!"a e &e%%9)%t!"a %ette$a "a!)(co%a e' ! &e+!!t!5a' c,e c cote4a )a %ette$e "a!)(co%a.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 50
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
+EL B' di%%icoltC/ media D!(e4a !% &!a4$a""a &! +%)((o e (c$!5! ) #$o4$a""a c,e' %ett! t$e )"e$!' %! "etta !
o$&!e c$e(cete
#$o4$a" o$&!a^t$eD
5a$ a'6'c'te"#: !te4e$D
6e4!
@$!te2OI(e$!$e !% #$!"o )"e$o M[ O3D
$ea&%2a3D
@$!te2OI(e$!$e !% (eco&o )"e$o M[ O3D
$ea&%263D
@$!te2OI(e$!$e !% te$*o )"e$o M[ O3D
$ea&%2c3D
2Q eO ece((a$!o a((!c)$a$(! c,e t$e )"e$! (!ao ! o$&!e Q3
2Q #$!"a o$&!a a e 6 t$a %o$o Q3
!+ 6Za t,e
6e4!
te"#:PaD
a:P6D
6:Pte"#
e&D
2Q #o! "ett! c a% #o(to 4!)(to ... Q3
!+ cZa t,e
6e4!
te"#:PaD
a:PcD
c:P6D
6:Pte"#
e&
e%(e
!+ cZ6 t,e
6e4!
te"#:P6D
6:PcD
c:Pte"#
e&D
@$!te% 2a'O O'6'O O'c'O #$e"e$e IN:IO #e$ cot!)a$eO3D
$ea&%D
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 51
a
6 N C
6 c
a
N 6 C
6 c
6Za
cZa
a
6 N 3
6 c a
3 6 N
6 c
cZ6
a
6 N 8
6 c a
6 8 N
6 c
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
+EL 8;' di%%icoltC/ media Lett! t$e )"e$! &a ta(t!e$a' &ete$"!a$e (e #o((oo a##a$tee$e a& )a #$o4$e((!oe
a$!t"et!ca. TRACCIA: ! )a #$o4$e((!oe a$!t"et!ca %a &!++e$e*a t$a &)e )"e$!
co(ec)t!5! eO co(tate. A& e(e"#!o: 1 4 7 1L 13 16 ecc. / %a #$o4$e((!oe ! c)! o4! )"e$o (! ott!ee
(o""a&o 3 a% #$ece&ete. La &!++e$e*a t$a &)e )"e$! co(ec)t!5! 7)a%(!a(! / #a$! a 3.
#$o4$a" #$o4$e((!oeD
5a$ a'6'c'te"#: !te4e$D
6e4!
@$!te2OI(e$!$e !% #$!"o )"e$o M[ O3D
$ea&%2a3D
@$!te2OI(e$!$e !% (eco&o )"e$o M[ O3D
$ea&%263D
@$!te2OI(e$!$e !% te$*o )"e$o M[ O3D
$ea&%2c3D
2Q eO ece((a$!o #$!"a a((!c)$a$(! c,e ! t$e )"e$! (!ao ! o$&!e Q3
2Q #$!"a o$&!a a e 6 t$a %o$o Q3
!+ 6Za t,e
6e4!
te"#:PaD
a:P6D
6:Pte"#
e&D
2Q #o! "ett! c a% #o(to 4!)(to ... Q3
!+ cZa t,e
6e4!
te"#:PaD
a:PcD
c:P6D
6:Pte"#
e&
e%(e
!+ cZ6 t,e
6e4!
te"#:P6D
6:PcD
c:Pte"#
e&D
!+ 26Ma3 P 2cM63 t,e
@$!te%2OSoo ! #$o4$e((!oe a$!t"et!caO3
e%(e
@$!te%2ONON (oo ! #$o4$e((!oe a$!t"et!caO3D
@$!te% 2O#$e"e$e IN:IO #e$ cot!)a$eO3D
$ea&%D
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 52
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
+EL 88' di%%icoltC/ alta :e$!+!ca$e (e )a &ata !(e$!ta &a ta(t!e$a eO co$$etta
#$o4$a" &ataCo$$ettaD
5a$ 44'""'aa: !te4e$D 2Q 44P4!o$o' ""P"e(e' aaPao Q3
oJ^&ata: 6oo%eaD
6e4!
@$!te2OI(e$!$e !% 4!o$o: O3D$ea&%2443D
@$!te2OI(e$!$e !% "e(e: O3D$ea&%2""3D
@$!te2OI(e$!$e %OOao: O3D$ea&%2aa3D
2Q 1RIMA SOLUZIONE SENZA CASE Q3
oJ^&ata:P+a%(eD 2Q (e &ata ()#e$a cot$o%%! oJ^&ata 5e$$aO "e((o a t$)e Q3
!+ 244[L3 a& 244Z323 a& 2""[L3 a& 2""Z133 a& 2aa[L3 t,e
!+ ""P2 t,e 2Q +e66$a!o Q3
6e4!
!+ aa "o& 4 P L t,e 2Q #e$ (e"#%!c!taO: 6!(e(t!%! (e ")%t!#%! &! 4 Q3
6e4!
!+ 44ZP2N t,e
oJ^&ata:Pt$)e
e&
e%(e 2Q o 6!(e(t!%e Q3
!+ 44ZP28 t,e
oJ^&ata:Pt$)e
e&
e%(e 2Q "e(e &!5e$(o &a +e66$a!o ... Q3
!+ 2""P13 o$ 2""P33o$ 2""P53 o$ 2""P73 o$
2""P83 o$ 2""P1L3 o$ 2""P123 t,e 2Q "e(e co 31 4!o$! Q3
6e4!
!+ 44ZP31 t,e
oJ^&ata:Pt$)e
e&
e%(e 2Q "e(e co 3L 4!o$! Q3
!+ 44ZP3L t,e
oJ^&ata:Pt$)eD
@$!te%2OSe*a ca(e:O3D
!+ oJ^&ata t,e
@$!te%2OData co$$etta ... O3
e%(e
@$!te%2OData e$$ata ==O3D
$ea&%D
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 5'
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
2Q 1OI SOLUZIONE CON CASE Q3
oJ^&ata:P+a%(eD
!+ 244[L3 a& 244Z323 a& 2""[L3 a& 2""Z133 a& 2aa[L3 t,e
ca(e "" o+
2: !+ aa "o& 4 P L t,e
6e4!
!+ 44ZP2N t,e
oJ^&ata:Pt$)e
e&
e%(e 2Q o 6!(e(t!%e Q3
!+ 44ZP28 t,e
oJ^&ata:Pt$)eD
1'3'5'7'8'1L'12: !+ 44ZP31 t,e
oJ^&ata:Pt$)eD
e%(e
!+ 44ZP3L t,e
oJ^&ata:Pt$)eD
e&D
@$!te%2OCo !% ca(e:O3D
!+ oJ^&ata t,e
@$!te%2OData co$$etta ... O3
e%(e
@$!te%2OData e$$ata ==O3D
$ea&%D
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 5)
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
+TRUTTURE ITERATI.E
E(a"!e$e"o o$a ! t$e t!#! c%a((!c! &! (t$)tt)$a !te$at!5a e)"e$at!5a 2c!c%o for do3' !&e+!!ta co cot$o%%o !
co&a-)(c!ta #e$ 5e$o 2c!c%o repeat until3 e &e%%a !&e+!!ta co cot$o%%o ! te(ta-)(c!ta #e$ +a%(o 2c!c%o w1ile3.
1$e"e((a: ! $ea%t> #ot$e"o (c$!5e$e ) 7)a%(!a(! #$o4$a""a )t!%!**a&o (o%o )a &e%%e &)e +o$"e &! (t$)tt)$a
!te$at!5a !&e+!!ta. I+att! %a (t$)tt)$a !te$at!5a e)"e$at!5a #)0 e((e$e B(!")%ata9 co )a &e%%e a%t$e &)e' e& /
(e"#$e #o((!6!%e $!(c$!5e$e ) (e4"eto &! co&!ce c,e )t!%!**a )a &e%%e &)e +o$"e &! !te$a*!oe !&e+!!ta )(a&o
%Oa%t$a. Detto ! a%t$e #a$o%e t)tte %e o(t$e e(!4e*e #ot$e66e$o e((e$e (o&&!(+atte o )t!%!**a&o (o%o !% c!c%o repeat
until o )(a&o (o%o !% c!c%o w1ile.
Co"e ,o a5)to 4!> "o&o &! (otto%!ea$e #e$ ! co(t$)tto case %O)(o &! +o$"e &!5e$(e +ac!%!ta %a #$o4$a""a*!oe !
7)e! ca(! ! c)! )a &e%%e +o$"e &! !te$a*!oe e(!(tet! / #a$t!co%a$"ete !&!cata.
+truttura iterati"a enumerati"a
S! c,!a"a co(; #e$c,E #)0 e((e$e )(ata (o%o (e !% )"e$o &! 5o%te c,e %O!(t$)*!oe o& !% 6%occo &! !(t$)*!o! &e5e
e((e$e $!#et)to / oto e% "o"eto ! c)! !% c!c%o !!*!a' e& / #e$ c)! #o((!6!%e +a$ cota$e 2c!o/ e)"e$a$e3 a%
#$o4$a""a !% )"e$o &! 5o%te c,e &e5e $!#ete$e %e !(t$)*!o!. Ecco %a (!ta((!:
Gor (ariabileEdiEcontrollo :: (aloreEinizio to (aloreEfine do
+struzioneD
O##)$e:
Gor (ariabileEdiEcontrollo :: (aloreEinizio to (aloreEfine do
begin
+struzione1'
+struzione2'
+struzione'
end'
La 5a$!a6!%e &! cot$o%%o &e5e e((e$e &! t!#o o$&!a%e 2integer/ longint o c1ar ac,e (e 7)e(tO)%t!"o ca(o / a((a! $a$o3.
A& e((a 5!ee a((e4ato co"e 5a%o$e !!*!a%e 7)e%%o !&!cato &o#o %Oo#e$ato$e &! a((e4a"eto. Se !% 5a%o$e !!*!a%e
/ !+e$!o$e a 7)e%%o !&!cato co"e +!a%e &o#o %a #a$o%a c,!a5e to %e !(t$)*!o! o (oo $!#et)te e##)$e )a 5o%ta.
D!5e$(a"ete !% c!c%o !!*!a e %e !(t$)*!o! (oo e(e4)!te )a #$!"a 5o%taD &o#o c,e / (tata e(e4)!ta %O)%t!"a
!(t$)*!oe %a 5a$!a6!%e &! cot$o%%o 5!ee !c$e"etata &! )a )!t>D (e !% 5a%o$e / !+e$!o$e o )4)a%e a 7)e%%o !&!cato
co"e +!a%e !% c!c%o 5!ee $!#et)to. I% c!c%o te$"!a 7)a&o !% 5a%o$e &e%%a 5a$!a6!%e &! cot$o%%o ()#e$a 7)e%%o !&!cato
co"e 5a%o$e +!a%e.
LOe(e"#!o c,e (e4)e
(ta"#a #e$ c!7)e
5o%te !% "e((a44!o
Bc!ao=9:
#$o4$a" c!c%!D
5a$ !: !te4e$D
6e4!
+o$ !:P1 to 5 &o
@$!te%2Bc!ao=93D
$ea&%D
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 55
#$o4$a" c!c%!D
5a$ !: !te4e$D
6e4!
+o$ !:P1 to 1 &o
@$!te%2Bc!ao=93D
$ea&%D
e&.
I 7)e(to ca(o !% c!c%o
5!ee $!#et)to )a 5o%ta
#$o4$a" c!c%!D
5a$ !: !te4e$D
6e4!
+o$ !:P1 to L &o
@$!te%2Bc!ao=93D
$ea&%D
e&.
I 7)e(to ca(o !% c!c%o o
5!ee $!#et)to eac,e )a
5o%ta
#$o4$a" c!c%!D
5a$ !: !te4e$D
6e4!
+o$ !:P M3 to 3 &o
@$!te%2Bc!ao=93D
$ea&%D
e&.
I% 5a%o$e &O!!*!o o &e5e e((e$e #e$ +o$*a 1.
I% c!c%o c,e (e4)e (ta"#e$> !% "e((a44!o
(ette 5o%te 2o &!"et!c,!a"o c,e &e5e
co(!&e$a$e ac,e !% 5a%o$e L e%%a (e7)e*a
c,e 7)! $!#o$to #e$ !te$o M3 M2 M1 L 1 2 3 3
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
#$o4$a" c!c%!D
5a$ !' 6a(e' a%te**a' 7)at!: !te4e$D
6e4!
@$!te%2BA)at! t$!a4o%! 5)o! e(a"!a$eC93D
$ea&%2 7)at! 3D
+o$ !:P 1 to 7)at! &o
6e4!
@$!te%2BI(e$!(c! %a "!()$a &e%%a 6a(e &e%
t$!a4o%o93D
$ea&%2 6a(e 3D
@$!te%2BI(e$!(c! %a "!()$a &e%%99 a%te**a
co$$!(#o&ete93D
$ea&%2 a%te**a 3D
@$!te%2BLa "!()$a &e%%a ()#e$+!c!e &! 7)e(to t$!a4o%o /: B' 6a(eQa%te**a-23D
$ea&%D
e&D 2Q &e% +o$ Q3
e&.
Cota$e co"e ! 4a"6e$!: e(!(te )a +o$"a %e44e$"ete "o&!+!cata &e% co(t$)tto for c,e co(ete &! co(!&e$a$e !
5a%o$! &e%%a 5a$!a6!%e &! cot$o%%o ! "o&o &ec$e(cete cota&o' #e$ co(; &!$e' a%%O!&!et$o. LOe(e"#!o (e4)ete
(ta"#a ()% 5!&eo ! )"e$! &a 1L a 1:
#$o4$a" c!c%!D
5a$ !: !te4e$D
6e4!
+o$ !:P 1L
&o@to 1 &o
@$!te%2 ! 3D
$ea&%D
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 5*
A)e(to e(e"#!o c,!a$!(ce co"e o (!a ece((a$!o coo(ce$e %Oe(atto 5a%o$e
&e% )"e$o &e%%e 5o%te c,e (a$> $!#et)to !% c!c%o a% "o"eto &e%%a (c$!tt)$a
&e% co&!ce.
\ !5ece ece((a$!o c,e 7)e(to 5a%o$e (!a oto a% "o"eto ! c)! !% c!c%o
&o5$> e((e$e e(e4)!to: oto o (!4!+!ca (a#e$e 7)a%e (a$> e++ett!5a"ete
7)e(to 5a%o$e 2/ %O)tete #$o4$a""a c,e &ec!&e 7)at! (a$ao ! t$!a4o%!
e(a"!at! &!4!ta&o 7)e(to ) 5a%o$e 7)a&o !% #$o4$a""a 4%!e%o c,!e&e3D
(!4!+!ca !5ece (a#e$e c,e 7)e(to 5a%o$e / cote)to ! )a ce$ta 5a$!a6!%e
27)at!3 e& / 7)e(tO)%t!"a c,e #)0 e((e$e )t!%!**ata co"e 5a%o$e te$"!a%e
&e%%a 5a$!a6!%e &! cot$o%%o.
Co"e 5e&ete' / ()++!c!ete !&!ca$e !5ece &! to %a #a$o%a c,!a5e downto e co"e #)to &! !!*!o ) 5a%o$e #!<
4$a&e &! 7)e%%o !&!cato #e$ !% #)to &! +!e.
A)e(to e(e"#!o / "o%to !te$e((ate ac,e #e$ ) a%t$o "ot!5o: &!"o(t$a co"e (!a possi$ile utili11are nelle
istru1ioni del ciclo il "alore assunto in quel momento dalla "aria$ile di controllo.
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
E+ERCIZI E RIEPILO5ATI.I +UL CICLO DOR
ITE8' di%%icoltC/ $assa (ta"#a &e! #$!"! N )"e$! at)$a%!' co N %etto &a ta(t!e$a
#$o4$a" )"e$!D
)(e( e@&e%a8' c$tD
5a$
!: !te4e$D 2Q cotato$e c!c%o Q3 : !te4e$D 2Q 7)! 5!ee "e"o$!**ato !% )"e$o %etto &a ta(t!e$a Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
@$!te2OF!o a c,e )"e$o &e5o a$$!5a$eC M[ O3D $ea&%2 3D
+o$ ! :P 1 to &o
@$!te%2 ! 3D
2Q co""et!: eO aco$a "ate$!a &! &!(#)ta t$a "ate"at!c! (e co(!&e$a$e %o
*e$o ) at)$a%eD (e %o (! 5)o%e co(!&e$a$e ta%e !% co&!ce &!5eta:
+o$ ! :P L to M1 &o
@$!te%2 ! 3D
!+att! (e c,!e&e((!"o ! #$!"! 5 at)$a%! &o5$e""o ottee$e: L'1'2'3'4
e (a$e66e 7)!&! ece((a$!o +e$"a$e !% c!c%o a 4' c!oeO M1
Q3
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
e&.
ITE9' di%%icoltC/ $assa (ta"#a &e! #$!"! N )"e$! at)$a%!' co N %etto &a ta(t!e$aD %a (ta"#a &e5e a55e!$e &a%
)"e$o #!)O 4$a&e a% #!)O #!cco%o
#$o4$a" )"e$!D
)(e( e@&e%a8' c$tD
5a$
!: !te4e$D 2Q cotato$e c!c%o Q3 : !te4e$D 2Q 7)! 5!ee "e"o$!**ato !% )"e$o %etto &a ta(t!e$a Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
@$!te2OF!o a c,e )"e$o &e5o a$$!5a$eC M[ O3D $ea&%2 3D
+o$ ! :P &o@to 1 &o 2Q NOTATE IL DO?NTO IN:ECE DI TO ==== Q3
@$!te%2 ! 3D
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 5+
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
ITE<' di%%icoltC/ $assa (ta"#a &e! #$!"! N )"e$! at)$a%!' co N %etto &a ta(t!e$aD a +!aco &! c!a(c) )"e$o
!&!ca$e (e eO #a$! o &!(#a$!
#$o4$a" )"e$!D
)(e( e@&e%a8' c$tD
5a$
!: !te4e$D 2Q cotato$e c!c%o Q3 : !te4e$D 2Q 7)! 5!ee "e"o$!**ato !% )"e$o %etto &a ta(t!e$a Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
@$!te2OF!o a c,e )"e$o &e5o a$$!5a$eC M[ O3D $ea&%2 3D
2Q $!co$&o c,e %Oo#e$ato$e MOD ca%co%a !% $e(to &e%%a &!5!(!oe t$a !% )"e$o c,e 5!ee "e((o a%%a ()a (!!(t$a e
7)e%%o c,e 5!ee "e((o a%%a ()a &e(t$aD a& e(e"#!o 7 "o& 3 ca%co%a !% $e(to &e%%a &!5!(!oe t$a 7 e 3' 7)!&! 1D 13
"o& 8 M[ 5D 1N "o& 5 M[ 4D 7)a&o !% #$!"o )"e$o eO ")%t!#%o &e% (eco&o !% $e(to eO *e$o: 4 "o& 2 M[ LD
15 "o& 3 M[ LD 15 "o& 5 M[ LD Q3
+o$ ! :P 1 to &o
6e4!
@$!te2 ! 3D
2Q ! )"e$! #a$! &!5!(! #e$ &)e &ao $e(to L Q3
!+ ! "o& 2 P L t,e
@$!te%2O )"e$o #a$!O3
e%(e
@$!te%2O )"e$o &!(#a$!O3D
e&D
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
e&.
ITE@' di%%icoltC/ $assa Sta"#a &e! )"e$! &!(#a$! "!o$! o )4)a%! a N' co N %etto &a ta(t!e$a
#$o4$a" &!(#a$!D
)(e( e@&e%a8' c$tD
5a$
!: !te4e$D 2Q cotato$e c!c%o Q3 : !te4e$D 2Q 7)! 5!ee "e"o$!**ato !% )"e$o %etto &a ta(t!e$a Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
@$!te2OF!o a c,e )"e$o &e5o a$$!5a$eC M[ O3D $ea&%2 3D
+o$ ! :P 1 to &o
6e4!
!+ ! "o& 2 P 1 t,e
@$!te%2 ! 3D
e&D
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 5,
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
ITE=' di%%icoltC/ $assa Sta"#a &e! #$!"! N )"e$! at)$a%! 2N %etto &a ta(t!e$a3 co a +!aco
! $!(#ett!5! 7)a&$at! e c)6!
#$o4$a" #ote*eD
)(e(
e@&e%a8' c$tD
5a$
!: !te4e$D 2Q cotato$e c!c%o Q3
: !te4e$D 2Q 7)! 5!ee "e"o$!**ato !% )"e$o %etto &a ta(t!e$a Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
@$!te2OF!o a c,e )"e$o &e5o a$$!5a$eC M[ O3D
$ea&%2 3D
2Q 1RIMA SOLUZIONE Q3
@$!te%2O1RIMA SOLUZIONEO3D
+o$ ! :P 1 to &o
@$!te%2 !' O O' !Q!' O O' !Q!Q! 3D
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%D
2Q SECONDA SOLUZIONE 2(+$)tta %Oo#e$ato$e (7$ c,e ca%co%a !% 7)a&$ato Q3
@$!te%2OSECONDA SOLUZIONEO3D
+o$ ! :P 1 to &o
@$!te%2 !' O O' (7$2!3' O O' (7$2!3Q! 3D
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%D
2Q TERZA SOLUZIONE
a%%!ea ! )"e$! )(a&o 4otoK82co%oa' $!4a3 #e$ #o(!*!oa$e !% c)$(o$e a%%a co%oa-$!4a &e%%o (c,e$"o
&e(!&e$ataD @,e$eU eO )a +)*!oe c,e $e(t!t)!(ce !% )"e$o &! $!4a &o5e (! t$o5a !% c)$(o$eD 7)!&! 4otoK827'
@,e$eU3 (!4!+!ca co%oa 7' o ")o5e$t! &a%%a $!4a () c)! t! t$o5! ...Q3
@$!te%2OTERZA SOLUZIONEO3D
+o$ ! :P 1 to &o
6e4!
@$!te2 ! 3D
4otoK827'@,e$eU3D @$!te2 (7$2!3 3D
4otoK8214'@,e$eU3D @$!te%2 (7$2!3Q! 3
e&D
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%D
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 5-
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
ITEA' di%%icoltC/ $assa Sta"#a &e! )"e$! !te$! $e%at!5! &a MN a SN' co N %etto &a ta(t!e$a
#$o4$a" )"e$!D
)(e(
e@&e%a8' c$tD
5a$
!: !te4e$D 2Q cotato$e c!c%o Q3
: !te4e$D 2Q 7)! 5!ee "e"o$!**ato !% )"e$o %etto &a ta(t!e$a Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
@$!te2OF!o a c,e )"e$o &e5o a$$!5a$eC M[ O3D
$ea&%2 3D
+o$ ! :P M to &o
@$!te%2 ! 3D
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
e&.
ITE>' di%%icoltC/ $assa Sta"#a &e! )"e$! &a INIZIO a FINE' co INIZIO e FINE %ett! &a ta(t!e$a.
Cot$o%%a$e c,e INIZIO (!a ZP FINE Q3
#$o4$a" )"e$!D
)(e( e@&e%a8' c$tD
5a$
!: !te4e$D 2Q cotato$e c!c%o Q3
!!*!o' +!e: !te4e$D
te"#: !te4e$D 2Q 5a$!a6!%e &! a##o44!o #e$ (ca"6!a$e !!*!o e +!e
(e !(e$!t! e%%Oo$&!e (6a4%!ato Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
@$!te2ON)"e$o &! #a$te*a M[ O3D
$ea&%2 !!*!o 3D
@$!te2ON)"e$o +!a%e M[ O3D
$ea&%2 +!e 3D
2Q 1RIMA SOLUZIONE Q3
@$!te%2O1RIMA SOLUZIONEO3D
!+ !!*!oZP+!e t,e
+o$ ! :P !!*!o to +!e &o
@$!te%2 ! 3
e%(e
+o$ ! :P +!e to !!*!o &o
@$!te%2 ! 3D
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%D
2Q co""et!: (e %O)tete !(e$!(ce !!*!o e +!e e%%Oo$&!e (6a4%!ato
2!!*!o[+!e3 (! e(e4)e ) c!c%o co 4%! e(t$e"! !5e$t!t!D Q3
2Q SECONDA SOLUZIONE Q3
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. *0
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
@$!te%2OSECONDA SOLUZIONEO3D
2Q (e !!*!o e +!e (oo !5e$t!t!' %! (ca"6!o Q3
!+ !!*!o[+!e t,e
6e4!
te"#:P!!*!oD
!!*!o:P+!eD
+!e:Pte"#
e&D
2Q o$a !!*!o e +!e (oo (e*a &)66!o e%%Oo$&!e 4!)(to ... Q3
+o$ ! :P !!*!o to +!e &o
@$!te%2 ! 3D
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%D
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
e&.
ITE?' di%%icoltC/ $assa 4ee$a*!oe &! )"e$! ca()a%!
2Q $a&o".#a(
Co 7)e(to e(e$c!*!o !"#a$e$ete:
M %O)t!%!**o &e%%a +)*!oe $a&o" #e$ 4ee$a$e )"e$! ! "o&o ca()a%e
2)t!%e #e$ (!")%a*!o!' 4!oc,! ecc.
M %O)t!%!**o &e%%a +)*!oe $a&o"!*e #e$ a5e$e (e7)e*e &! )"e$! ca()a%!
(e"#$e &!5e$(e
Q3
#$o4$a" #$o5a^$a&o"D
)(e( e@&e%a8 c$tD
5a$ K'!')": !te4e$D 2Q o ,ao ) (!4!+!cato #a$t!co%a$e Q3
6e4!
c%$(c$D
2Q ES1ERIENZA 1 Q3
2Q $a&o"2N3 $e(t!t)!(ce ) )"e$o ca()a%e co"#$e(o t$a L e NM1 Q3
K:P$a&o"253D 2Q K &!5eta ) )"e$o co"#$e(o t$a L e 4 Q3
@$!te%2OE(#e$!e*a 1: O' K3D
2Q #o((!a"o )(a$e $a&o" &!$etta"ete' (e*a "e"o$!**a$e !% $!()%tato ! K Q3
@$!te%2OE(#e$!e*a 1: O'$a&o"2N33D
$ea&%D
2Q ES1ERIENZA 2 Q3
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. *1
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
2Q 4ee$!a"o )a (e7)e*a &! 1L )"e$! co"#$e(! t$a L e 15 Q3
+o$ !:P1 to 1L &o
@$!te%2OE(#e$!e*a 2: O' $a&o"21633D
$ea&%D
2Q NOTA BENE: t)tte %e 5o%te c,e (! +a $!#a$t!$e !% #$o4$a""a' $a&o" 4ee$a
%a (te((a (e7)e*a &! )"e$! 2o((e$5ate%o co %Oe(#e$!e*a . 2 +ace&o
#a$t!$e !% #$o4$a""a #!)O 5o%te3.
Se (! 5)o%e !!*!a$e o4! 5o%ta co )a (e7)e*a &!5e$(a' )(a$e !% co"a&o
$a&o"!*e: e((o ca"6!a %a (e7)e*a 6a(a&o(! ()% te"#o (ca&!to
&a%%Oo$o%o4!o !te$o &e% co"#)te$ Q3
2Q ES1ERIENZA 3 Q3
2Q $!(c$!5ete !% c!c%o &e%%Oe(#e$!e*a &)e +ace&o%o #$ece&e$e &a% co"a&o
$a&o"!*eD +ate $!#a$t!$e #!)O 5o%te !% #$o4$a""a e otate co"e %a (e7)e*a
&e%%Oe(#e$!e*a 3 ca"6! t)tte %e 5o%te Q3
$a&o"!*eD
+o$ !:P1 to 4 &o
@$!te%2OE(#e$!e*a 3: O' $a&o"21633D
$ea&%D
2Q ES1ERIENZA 4 Q3
2Q I5ece &! ) )"e$o #o((!a"o )(a$e co"e #a$a"et$o #e$ %a $a&o" )a
5a$!a6!%e !te$a Q3
@$!te 2OD!""! ) )"e$o: O3D
$ea&%2)"3D
@$!te%2OO$a 4ee$o )a (e7)e*a &! 1L )"e$! t$a L e O')" M 13D
+o$ !:P1 to 1L &o
@$!te%2OE(#e$!e*a 4: O' $a&o"2)"33D
$ea&%D
2Q 1RO:A DA SOLO ...
1. Co(a acca&e !&!ca&o 1 co"e #a$a"et$o &e%%a $a&o" C
2. Co(a acca&e !&!ca&o L co"e #a$a"et$o &e%%a $a&o" C
3. Co(a acca&e !&!ca&o ) )"e$o e4at!5o co"e #a$a"et$o &e%%a $a&o" C
4. Co(a acca&e !&!ca&o ) )"e$o $ea%e co"e #a$a"et$o &e%%a $a&o" C
5. Co(a acca&e !&!ca&o )a 5a$!a6!%e !te4e$ c,e cot!ee ) 5a%o$e
e4at!5o co"e #a$a"et$o &e%%a $a&o"C
Q3
2Q ESERCIZI SUHHERITI
ES. 1: t$o5ate ) "o&o #e$ 4ee$a$e )"e$! t$a 1 e ND
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
ES. 2: (+$)tta&o 7)ato (co#e$to e%%Oe(e$c!*!o . 1' 4ee$ate )a co%oa
&! $!()%tat! &! )a (c,e&!a &e% totoca%c!oD
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
ES. 3: 4ee$ate ! "o&o ca()a%e %a (e7)e*a &e! o"! #e$ %e !te$$o4a*!o! &! )a c%a((e co (o%o 7)att$o a%)! c,e
(! c,!a"ao 1$!"o' Seco&o' Te$*o' e A)a$toD
SUHHERIMENTI: !% #$o6%e"a (a$aO o e(t$a$$e #!)O 5o%te %o (te((o o"eD +ate co$$!(#o&e$e o4! o"e a& )
)"e$oD 7)a&o 5!ee e(t$atto 7)e% )"e$o' (ta"#ate !% o"e co$$!(#o&ete e #o! Ocace%%ateO 7)e% o"e
co#!a&o e%%a 5a$!a6!%e c,e %o "e"o$!**a )a OTO a% #o(to &e% o"eD (e 4ee$ate ) )"e$o ca()a%e c,e co$$!(#o&e
a& )a T 2o"e 4!aO e(t$atto3 &o5ete #$o5a$e co ) a%t$o )"e$oD #e$ (a#e$e 7)a&o +e$"a$(! 4e(t!te
) cotato$e c,e a)"ete$ete (o%o 7)a&o o t$o5e$ete )a OTO
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM Q3 e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. *2
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
ITEB' di%%icoltC/ $assa )t!%!**a %a $a&o" #e$ e(t$a$$e )"e$! &a 1 a N
#$o4$a" e(t$a!^1^ND
)(e( e@&e%a8' c$tD
5a$ !': !te4e$D
6e4!
c%$(c$D
2Q &ato c,e $a&o"2N3 e(t$ae )"e$! t$a L e& NM1' eO ()++!c!ete a44!)4e$e
1 a% $!()%tato #e$ a5e$e )"e$! t$a LS1P1 e NM1S1PN
Q3
@$!te2OC,e N 5)o! )(a$eC M[ O3D
$ea&%23D
2Q e(t$a!a"o 2L )"e$! &a 1 a Q3
+o$ !:P1 to 2L &o
@$!te%2 $a&o"23S1 3D
2Q CONCLUSIONI
La +o$")%a c,e 4ee$a ) )"e$o ca()a%e t$a 1 e N eO:
RANDOM2N3 S 1
Q3
$ea&%D
e&.
ITE8;' di%%icoltC/ $assa )t!%!**a %a $a&o" #e$ e(t$a$$e )"e$! t$a A e B
#$o4$a" e(t$a!^ABD
)(e( e@&e%a8' c$tD
5a$ !'a'6: !te4e$D
6e4!
c%$(c$D
2Q $a&o"2N3 e(t$ae )"e$! t$a L e& NM1D !""a4!!a"o &! 5o%e$ e(t$a$$e )"e$!
t$a 5 e 12: eO ()++!c!ete a44!)4e$e a 5 ) )"e$o ca()a%e t$a L e 7
!t)!t!5a"ete' !+att!' 5SLP5 e 5S7P12D ! 4ee$a%e &o5$e"o a44!)4e$e
a% #$!"o e(t$e"o 2A3 ) )"e$o ca()a%e t$a L e BMA
Q3
@$!te2OC,e A 5)o! )(a$eC M[ O3D
$ea&%2a3D
@$!te2OC,e B 5)o! )(a$eC M[ O3D
$ea&%263D
2Q e(t$a!a"o 2L )"e$! &a A a B Q3
2Q NOTA: atte*!oe= $a&o"2BMA3 e(t$a$$e66e )"e$! t$a L e 2BMA3 M 1
eO 7)!&! ece((a$!o !&!ca$e $a&o" 2BMAS13 Q3
+o$ !:P1 to 2L &o
@$!te%2 A S $a&o"2BMAS13 3D
$ea&%D
e&.
ITE88' di%%icoltC/ $assa 4ee$a*!oe &! )a co%oa &! )a (c,e&!a &e% totoca%c!o
#$o4$a" co%oa^totoca%c!oD
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. *'
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
)(e( e@&e%a8' c$tD
5a$ !: !te4e$D $!()%tato: !te4e$D
6e4!
c%$(c$D
$a&o"!*eD
2Q o #ote&o e(t$a$$e %a T' )(e$e"o ) )"e$o a% ()o #o(to: !% 3D 4ee$!a"o
a%%o$a 13 )"e$! &a 1 a 3 ... Q3
+o$ !:P1 to 13 &o
6e4!
$!()%tato:P $a&o"233S1D
!+ $!()%tato P 3 t,e
@$!te%2OTO3
e%(e
@$!te%2$!()%tato3 2Q 1 o 2 Q3
e&D
$ea&%D
2Q #$o5!a"o co )a (c,e&!a #!)O $ea%!(t!ca c,e #$!5!%e4!a 4%! 1 $!(#etto a%%e T e %e T $!(#etto a! 2D (! e(t$ae ) . &a
1 a 13 e (e eO t$a 1 e 6 eO co"e (e +o((e )(c!to %O1' t$a 7 e 1L %OT e t$a 11 e 13 !% 2 Q3
+o$ !:P1 to 13 &o
6e4!
$!()%tato:P $a&o"2133S1D
!+ $!()%tato ZP 6 t,e
@$!te%213
e%(e
!+ $!()%tatoZP1L t,e
@$!te%2OTO3
e%(e
@$!te%223
e&D
$ea&%D
e&.
ITE89' di%%icoltC/ $assa +a$ (c$!5e$e ()%%o (c,e$"o 1LL 5o%te %a +$a(e Oco"e #$o4$a""a "! (eto ) #oO (t)#!&o ...O
#$o4$a" "e((a44!D
)(e( e@&e%a8' c$tD
co(t
AUANTE^:OLTEP1LLD 2Q )"e$o &e! "e((a44! c,e (a$ao (ta"#at! co""eto: %O)(o &! )a co(tate #e$"ette
&! ca"6!a$e "o%to +ac!%"ete !% )"e$o &e! "e((a44! (e*a +a$e co+)(!oe co a%t$! e5et)a%! )"e$! 1LL Q3
5a$
!: !te4e$D 2Q cotato$e c!c%o Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
+o$ ! :P 1 to AUANTE^:OLTE &o
@$!te%2Oco"e #$o4$a""a "! (eto ) #oOO (t)#!&o ...O3D
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. *)
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
ITE8< di%%icoltC/ $assa +a$ (c$!5e$e ()%%o (c,e$"o 5 5o%te %a +$a(e Oco"e #$o4$a""a "! (eto ) #oO (t)#!&o ...OD
!&!ca$e a%%O!!*!o &! o4! $!4a !% ()o )"e$o #$o4$e((!5o 21' 2' 3 ...3
#$o4$a" "e((a44!D
)(e(
e@&e%a8' c$tD
co(t
5a$
!: !te4e$D 2Q cotato$e c!c%o Q3
6e4!
c%$(c$D 2Q cace%%o %o (c,e$"o Q3
2Q 1RIMA SOLUZIONE Q3
@$!te%2O1RIMA SOLUZIONEO3D
+o$ ! :P 1 to AUANTE^:OLTE &o
@$!te%2ON. $!4a: O' ! 'O co"e #$o4$a""a "! (eto ) #oOO (t)#!&o ...O3D
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%D
2Q (#e((o e%%e !(t$)*!o! &! ) c!c%o +o$ eO )t!%e )(a$e %a 5a$!a6!%e &! cot$o%%o &e% c!c%o (te((oD ! 7)e(to e(e"#!o' a%
"o"eto &! (c$!5e$e o4! $!4a %a 5a$!a6!%e &! cot$o%%o ! ,a #$o#$!o !% 5a%o$e c,e (e$5e (ta"#a$e co"e )"e$o
#$o4$e((!5o &! $!4aD !+att! 7)a&o (! (ta"#a #e$ %a #$!"a 5o%ta !% "e((a44!o !% ()o 5a%o$e eO )o' 7)a&o (! (ta"#a
!% "e((a44!o #e$ %a (eco&a 5o%ta !% ()o 5a%o$e eO &)e ecc. Q3
2Q SECONDA SOLUZIONE Q3
@$!te%2OSECONDA SOLUZIONEO3D
+o$ ! :P 1 to AUANTE^:OLTE &o
6e4!
@$!te2ON. $!4a: O3D2Q o 5a a ca#o ... Q3
@$!te2!3D 2Q o 5a a ca#o ... Q3
@$!te%2O co"e #$o4$a""a "! (eto ) #oOO (t)#!&o ...O3D
e&D
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%D
2Q co""et!: %a (eco&a (o%)*!oe eO e7)!5a%ete a%%a #$!"aD otate co"e (!a INDIS1ENSABILE a44!)4e$e )
6e4! e& ) e& #e$ $acc,!)&e$e e& !&!ca$e ! "o&o #$ec!(o %O!!*!o e %a +!e &e% 6%occo &! !(t$)*!o! c,e &e5e
e((e$e $!#et)toD (e !+att! a5e((!"o (c$!tto:
+o$ ! :P 1 to AUANTE^:OLTE &o
@$!te2ON. $!4a: O3D
@$!te2!3D
@$!te%2O co"e #$o4$a""a "! (eto ) #oOO (t)#!&o ...O3D
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
!% co"#!%ato$e o #ot$e66e ! a%c) "o&o ca#!$e 7)a%! (oo %e !(t$)*!o! &a $!#ete$e 2#e$ 7)a%e "ot!5o +e$"a$(! a%
#$!"o @$!te #!)tto(to c,e a% (eco&oC3D %Oa5e$ a%%!eato ! co"a&! @$!te-@$!te% (e$5e (o%o a $e&e$e #!)O %e44!6!%e !%
co&!ce #e$ o! ... "a #e$ !% co"#!%ato$e (!4!+!ca co"#$e&e$e e% c!c%o +o$ SOLO LA RIHA SUCCESSI:A:
+o$ ! :P 1 to AUANTE^:OLTE &o
@$!te2ON. $!4a: O3D
@$!te2!3D
@$!te%2O co"e #$o4$a""a "! (eto ) #oOO (t)#!&o ...O3D
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
#$o5a a to4%!e$e !% 6e4!-e& e (#e$!"eta #e$(oa%"ete c,e !% c!c%o
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. *5
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
(ta"#e$e66e #e$ &!ec! 5o%te %a (c$!tta ON. $!4a:O e (o%o )a 5o%ta !%
$e(to ==
A COSA SER:E ALLORA A:ER COM1LICATO IL CODICE CC
RIS1OSTA: AD A:ER MAHHIOR CONTROLLO' COME MOSTRATO NELLA OTERZA SOLUZIONEO Q3
2Q TERZA SOLUZIONE
7)e(ta 5o%ta (! O#$ete&eO c,e !% "e((a44!o c,e #$ece&e !% )"e$o &! $!4a
(!a (c$!tto ! $o((o' !% )"e$o &! $!4a ! 4!a%%o e %a (c$!tta ! 5e$&e
Q3
@$!te%2OTERZA SOLUZIONEO3D
+o$ ! :P 1 to AUANTE^:OLTE &o
6e4!
teKtco%o$2RED3D @$!te2ON. $!4a: O3D2Q o 5a a ca#o ... Q3
teKtco%o$2UELLO?3D @$!te2!3D 2Q o 5a a ca#o ... Q3
teKtco%o$2HREEN3D @$!te%2O co"e #$o4$a""a "! (eto ) #oOO (t)#!&o ...O3D
e&D
@$!te%2OMMMMMMMMMMMMMMMMMMMMMMMMMMO3D
@$!te%D
2Q co""et!: (o%o co(t$)e&o !% "e((a44!o )a #o$*!oe a%%a 5o%ta )(a&o !% @$!te eO #o((!6!%e !te$5a%%a$e ! co"a&!
#e$ %a (e%e*!oe &e% co%o$e Q3
@$!te%2O1$o4$a""a te$"!ato. 1$e"e$e IN:IO #e$ cot!)a$e...O3D
$ea&%D 2Q #e$ &a$e !% te"#o &! %e44e$e !% "e((a44!o Q3
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. **
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
+TRUTTURA ITERATI.A INDEDINITA R il ciclo repeat ) until
Se$5e a $!#ete$e )a o #!< !(t$)*!o! +!o a% "o"eto ! c)! %a co&!*!oe (#ec!+!cata &o#o %a #a$o%a c,!a5e until
&!5eta 5e$a. A)e(to "o"eto o / #$e5e&!6!%e &a c)! %a &eo"!a*!oe B!&e+!!ta9 #e$ 7)e(to t!#o &! c!c%o.
O55!a"ete !% c!c%o te$"!e$> (o%o (e %e !(t$)*!o! c,e 5e4ao $!#et)te a5$ao co"e e++etto !% $a44!)4!"eto
&e%%a co&!*!oe &! )(c!ta. Se 7)e(to o &o5e((e a55e!$e !% c!c%o (! $!#ete$e66e a%%O!+!!to 2! 4e$4o (! &!$e66e c,e
!% #$o4$a""a / Ba&ato ! %oo# !+!!to9 o' (e"#%!ce"ete'9 a&ato ! %oo#93
Ne%%Oe(e"#!o c,e (e4)e (! c,!e&e a%%O)tete &! !(e$!$e ) 5a%o$e "a44!o$e o )4)a%e 1L. Se %O)tete (6a4%!a 2!(e$e&o
) 5a%o$e "!o$e &! 1L3 $!ce5e ) a55!(o e& !% &ato 5!ee $!c,!e(to. Ecco co"e 5!ee #$o4$a""ata 7)e(ta
o#e$at!5!t>:
#$o4$a" #$o5aD
5a$ 5a%o$e: !te4e$D
6e4!
repeat
@$!te%2BI(e$!$e ) )"e$o "a44!o$e o& )4)a%e 1L: B3D
$ea&% 25a%o$e 3D
!+ 5a%o$eZ1L t,e
@$!te%2BE$$o$e' $!#$o5a G93D
until "aloreE(8;*
G $e(to &e% #$o4$a""a G
e&.
Ca$atte$!(t!c,e &e% c!c%o $e#eat:
!% cot$o%%o c,e &ec!&e (e $!#ete$e o "eo !% 6%occo &e%%e !(t$)*!o! (! t$o5a ! +o&o a% c!c%o e& / #e$ 7)e(to
c,e !% c!c%o repeat 5!ee &etto co cot$o%%o ! co&aD 7)e(to co"#o$ta c,e a%"eo )a 5o%ta %e !(t$)*!o! &e%
c!c%o 5e4oo e(e4)!teD 7)a%c,e 5o%ta 7)e(to / ) 5ata44!o "a a%t$e 5o%te o 27)a&o / ece((a$!o cot$o%%a$e
#$!"a )a co&!*!oe (e*a %a 7)a%e #ot$e66e e((e$e a&&!$!tt)$a &e%ete$!o e(e4)!$e %e !(t$)*!o!3D (e cO/ 7)e(ta
ece((!t> #$o6a6!%"ete / "e4%!o )t!%!**a$e %Oa%t$o t!#o &! (t$)tt)$a !te$at!5a !&e+!!ta: !% c!c%o w1ile 25e&! #!<
a5at!3
!% c!c%o te$"!a 7)a&o %a co&!*!oe &! )(c!ta / 5e$a: #e$ 7)e(to "ot!5o (! #a$%a ac,e &! c!c%o co )(c!ta #e$
5e$o
U(c!ta &a% c!c%o $e#eat co cotato$e.
Fo&a"eta%"ete (! )t!%!**a )a 5a$!a6!%e #e$ cota$e 7)ate 5o%te / (tato e(e4)!to !% c!c%o. I #$at!ca #o((!a"o
e")%a$e !% co"#o$ta"eto &! ) c!c%o for "a co tata +%e((!6!%!t> ! #!<: o (!a"o a& e(e"#!o co(t$ett! a cota$e &!
)o ! )o "a #o((!a"o (ce4%!e$e &! 7)ato a)"eta$e %a 5a$!a6!%e &! cot$o%%o a& o4! e(ec)*!oe &e% c!c%oD o
(!a"o e##)$e co(t$ett! a& !c$e"eta$%a &! 5a%o$! !te$!: #ot$e""o a& e(e"#!o o#ta$e #e$ !c$e"et! &! "!%%e(!"! &!
)!t> #e$ ca%co%! &! t!#o (c!et!+!co. :e&!a"o 7)a%c,e e(e"#!o.
!:PLD
$e#eat
! :P !S1D
@$!te%2 ! 3D
)t!% !P1LD
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. *+
Sa$e66e !"#o((!6!%e #$o4$a""a$e %a (te((a o#e$at!5!t> )t!%!**a&o
!% c!c%o for.
C,!a$a"ete / !"#o((!6!%e (a#e$e 7)ate 5o%te (a$> ece((a$!o
$!#ete$e %e o#e$a*!o! a ca)(a &! $!#et)t! e$$o$! &a #a$te &e%%O)tete=
A)e(to c!c%o (ta"#a ()% 5!&eo ! )"e$! &a )o a 1L. T)tt! &Oacco$&o ()% +atto c,e ! (!t)a*!o! &! 7)e(to t!#o (!a "e4%!o
)t!%!**a$e !% c!c%o for: co 7)e(tO)%t!"o o / !% #$o4$a""ato$e a &o5e$(! $!co$&a$e c,e / ece((a$!o !!*!a%!**a$e %a 5a$!a6!%e &!
cot$o%%o 2!:PL3' !c$e"eta$%a a& o4! c!c%o 2!:P!S13 e 5e$!+!ca$e (e / a$$!5ato !% "o"eto &! !te$$o"#e$e !% c!c%o' "a / t)tto
(5o%to ! a)to"at!co (eco&o %e !&!ca*!o! &ate &a% #$o4$a""ato$e ()%%a #$!"a $!4a &e%%a (t$)tt)$a fordo.
Ma ecco )a #$!"a a##%!ca*!oe !te$e((ate: 5e4oo (ta"#at! t)tt! ! ")%t!#%! &! 3 +!o a% 21. No / ece((a$!o )t!%!**a$e
%Oo#e$ato$e MOD #e$ te(ta$e %a &!5!(!6!%!t> #e$ t$e &! o4! (!4o%o 5a%o$e &e%%a 5a$!a6!%e &! cot$o%%o co"e a5$e""o +atto co
) c!c%o for: !5ece &! !c$e"eta$e %a 5a$!a6!%e &! )a )!t> a%%a 5o%ta' (! a44!)4e t$e !&!5!&)a&o o4! 5o%ta a co%#o (!c)$o
) )o5o ")%t!#%o=
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
!:PLD
$e#eat
! :P !S3D
@$!te%2 ! 3D
)t!% !P21D
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. *,
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
U(c!ta &a% c!c%o $e#eat co &o"a&a a%%Oo#e$ato$e.
Da )(a$e ! 7)e! ca(! ! c)! / ece((a$!o +a$ !(e$!$e &a ta(t!e$a )a (e7)e*a &! &at! e& / %Oo#e$ato$e c,e &e5e
&ec!&e$e 7)a&o (oo +!!t!. I""a4!!a"o ) #$o4$a""a +)*!oate a%%O!4$e((o &! )a "o(t$a c,e &e5e (e$5!$e a
$!c,!e&e$e ! &at! a 4$a+!c! &! o4! 5!(!tato$e e& a (ta"#a$e #e$ c!a(c)o ) ca$te%%!o &! $!coo(c!"eto. No /
o55!a"ete #o((!6!%e )t!%!**a$e ) c!c%o for: !"#o((!6!%e' !+att!' (a#e$e a #$!o$! 7)at! (a$ao ! 5!(!tato$!G 1e$ %o
(te((o "ot!5o o / #o((!6!%e )t!%!**a$e ) c!c%o repeat co )(c!ta cot$o%%ata &a ) cotato$e. \ !5ece ()++!c!ete
o$4a!**a$e ) c!c%o repeat ! c)! %O)(c!ta 5e4a &ec!(a &a%%a $!(#o(ta &ata &a%%Oo#e$ato$e a& )a &o"a&a #o(ta &a%
co"#)te$ co"e )%t!"o #e$ a*!oe &e% c!c%o:
repeat
@$!te%2BI(e$!$e !% o"!at!5o &e% 5!(!tato$e: B3D
$ea&%2o"e^co4o"e3D
@$!te%2BI(e$!$e %a &ata &! a(c!ta &e% 5!(!tato$e: B3D
$ea&%2&ata^a(c!ta3D
Z!(t$)*!o! #e$ %a (ta"#a &e% ca$te%%!o G[
2riteln7F+ono terminati i "isitatoriGH:*
readln7 risp :*
until risp(H+HD
U(c!ta &a% c!c%o $e#eat co !(e$!"eto &! ) 5a%o$e co5e*!oa%e.
\ ) "!4%!o$a"eto &e%%a tec!ca #$ece&ete. A)e(tO)%t!"a' !+att!' co(t$!4e %Oo#e$ato$e a $!(#o&e$e ac,e "o%te
5o%te a%%a (te((a &o"a&a #e$ &!$e 7)a&o (oo te$"!at! ! &at!. I% Bt$)cco9 co(!(te e%%o (ta6!%!$e c,e !% c!c%o &e5e
te$"!a$e 7)a&o a%%a $!c,!e(ta &! )o &e! &at! #$e5!(t! 5!ee !(e$!to ) 5a%o$e (#ec!a%e. R!#$e&e&o %Oe(e"#!o &e%%a
"o(t$a #ot$e""o &ec!&e$e c,e !% c!c%o te$"!a 7)a&o co"e o"!at!5o &e% 5!(!tato$e 5!ee !(e$!ta %a #a$o%a
NESSUNO. Ecco co"e #ot$e66e a##a$!$e !% co&!ce:
repeat
@$!te%2BI(e$!$e !% o"!at!5o &e% 5!(!tato$e 7NE++UNO per terminare3: B3D
$ea&%2o"e^co4o"e3D
i% nomeIco#nomeJEHNE++UNOH t,e
6e4!
@$!te%2BI(e$!$e %a &ata &! a(c!ta &e% 5!(!tato$e: B3D
$ea&%2&ata^a(c!ta3D
Z!(t$)*!o! #e$ %a (ta"#a &e% ca$te%%!o G[
e&D
until nomeIco#nome(HNE++UNOHD
NOTA: %a co&!*!oe &! )(c!ta &a ) c!c%o $e#eat #)0 e((e$e co"#o(ta' t!#o 7)e%%e 4!> 5!(te #e$ %a (t$)tt)$a (e%ett!5a.
LOe(e"#!o (e4)ete $!c,!e&e a%%Oo#e$ato$e ) 5a%o$e co"#$e(o e%%O!te$5a%%o 1M1LL:
$e#eat
@$!te%2BI(e$!$e ) 5a%o$e co"#$e(o t$a 1 e 1LL: B3D
$ea&%25a%o$e3D
)t!% 25a%o$e[P13 a& 25a%o$eZP1LL3D
NOTA: co"e a5ete 5!(to &a4%! e(e"#!' 7)a&o cO/ #!< &! )a !(t$)*!oe e% c!c%o o / ece((a$!o )t!%!**a$e )
6%occo begin end: !% co"#!%ato$e !+att! / #e$+etta"ete ! 4$a&o &! !&!5!&)a$e %O!!*!o e %a +!e &e%%e !(t$)*!o! &e%
c!c%o )(a&o %e &)e #a$o%e c,!a5e repeat e until co"e &e%!"!tato$!.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. *-
S! !""a4!a e %Oo#e$ato$e &e66a $!(#o&e$e &!4!ta&o %a
%ette$a S.
Da ota$e c,e !% $e(to &e! &at! 5!ee c,!e(to (o%o (e o /
(tata !(e$!ta %a #a$o%a co5e*!oa%e #e$ te$"!a$e !% c!c%o.
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
+TRUTTURA ITERATI.A INDEDINITA R il ciclo 24ile
S! &!(t!4)e &a% repeat #e$ 7)e(te ca$atte$!(t!c,e:
!% cot$o%%o c,e &ec!&e %a te$"!a*!oe c!c%o / +atto #$!"a &e%%e !(t$)*!o! &e% c!c%o (te((o: #e$ 7)e(to "ot!5o
5!ee ac,e !&!cato co"e c!c%o co cot$o%%o ! te(taD (e %a co&!*!oe o / (o&&!(+atta +! &a%%O!!*!o !% c!c%o
#ot$e66e o co"!c!a$e e##)$e' c!o/ %e ()e !(t$)*!o! o e((e$e e(e4)!te eac,e )a 5o%taD
!% c!c%o te$"!a 7)a&o %a co&!*!oe / +a%(a: (! #a$%a !+att! &! c!c%o co )(c!ta #e$ +a%(oD
Ecco %a (!ta((!:
@,!%e co&!*!oe &o o##)$e @,!%e co&!*!oe &o
!(t$)*!oeS!4o%a 6e4!
!(t$)*!oe1D
!(t$)*!oe1D
G
!(t$)*!oeND
e&
I 4ee$a%e #ot$e""o &!$e c,e %e tec!c,e #e$ &ec!&e$e %a te$"!a*!oe &e% c!c%o 5!(te #e$ !% c!c%o repeat 5ao 6ee
ac,e #e$ 7)e(to c!c%o co ! &o5)t! a&atta"et! $e(! ece((a$! &a%%a &!++e$ete %o4!ca:
!:PLD
@,!%e !Z1L &o
6e4!
! :P !S1D
@$!te%2 ! 3D
e&D
!:PLD
@,!%e !Z21 &o
6e4!
! :P !S3D
@$!te%2 ! 3D
e&D
o"e^co4o"e:P99D 2Q (t$!4a )%%a' 5)ota Q3
24ile nomeIco#nomeJEHNE++UNOH do
$e#in
@$!te%2BI(e$!$e !% o"!at!5o &e% 5!(!tato$e 7NE++UNO per
terminare3: B3D
$ea&%2o"e^co4o"e3D
i% nomeIco#nomeJEHNE++UNOH t,e
6e4!
@$!te%2BI(e$!$e %a &ata &! a(c!ta &e% 5!(!tato$e: B3D
$ea&%2&ata^a(c!ta3D
Z!(t$)*!o! #e$ %a (ta"#a &e% ca$te%%!o G[
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. +0
Sta"#a &e! ")%t!#%! &! t$e +!o a% 21.
Sta"#a &e! )"e$! &a 1 a 1L. A)a&o (ta"#a !% 1L %a co&!*!oe &!5eta +a%(a 21L o / "!o$e &! 1L "a )4)a%e=3
Da ota$e %a 4o++a44!e &! 7)e(ta (o%)*!oe. 1o!c,E /
ece((a$!o c,e %a 5a$!a6!%e &! cot$o%%o a66!a ) 5a%o$e
&!5e$(o &a%%a #a$o%a BNESSUNO9 #e$ #ote$e !!*!a$e !% c!c%o'
(!a"o co(t$ett! a& )(a$e ) a((e4a"eto #e$ &a$e a 7)e(ta
5a$!a6!%e ) 5a%o$e c,e (o&&!(+! 7)e(to $e7)!(!to.
\ )a co+e$"a &e% +atto c,e !% c!c%o w1ile (!a &a #$e+e$!$e
(o%o ! 7)e%%e (!t)a*!o! ! c)! / !"#o$tate cot$o%%a$e c,e
)a ce$ta co&!*!oe (!a (o&&!(+atta aco$ #$!"a &!
co"!c!a$e a& e(e4)!$e %e !(t$)*!o! &e% c!c%oG
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
e&D
end 2Q &e% @,!%e Q3
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. +1
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
E+ERCIZI RIEPILO5ATI.I +UI CICLI REPEAT E K,ILE
ITE8@ di%%icoltC/ media Ca%co%o &e%%e #$!"e N #ote*e &! 2D &e5e e((e$e LZPNZP14
2Q DOMANDA: 1ERCHEO NON SI 1U_ SU1ERARE L9ES1ONENTE 14 CC Q3
#$o4$a" #ote*eD)eD
5a$
: !te4e$D 2Q !% )"e$o !(e$!to &a%%O)tete Q3
#ot: !te4e$D 2Q %e #ote*e &! 5o%ta ! 5o%ta ca%co%ate Q3
!: !te4e$D 2Q #e$ ! c!c%! Q3
6e4!
@$!te%2OCALCOLO 1OTENZE DI 2O3D
@$!te%D
2Q cot!)o a c,!e&e$e ) N +!c,eO (o&&!(+a ... Q3
$e#eat
@$!te%2OI(e$!(c! 2LZPZP143: O3D
$ea&%23D
!+ 2ZL3 o$ 2[143 t,e
@$!te%2O:a%o$e e$$ato= RI1RO:A 2LZPZP143O3D
)t!% 2LZP3 a& 2ZP143D
2Q :EDIAMO 1RIMA LA SOLUZIONE CON IL RE1EAT ...Q3
#ot:P1D !:PLD
@$!te%2OSOLUZIONE CON IL RE1EATO3D
$e#eat
@$!te%2OLa #ote*a O'!' O &e% 2 eOO: O'#ot3D
#ot:P#otQ2D
!:P!S1
)t!% ![D
$ea&%D
2Q :EDIAMO 1OI LA SOLUZIONE CON IL ?HILE ...Q3
#ot:P1D !:PLD
@$!te%2OSOLUZIONE CON IL ?HILEO3D
@,!%e !ZP &o
6e4!
@$!te%2OLa #ote*a O'!' O &e% 2 eOO: O'#ot3D
#ot:P#otQ2D
!:P!S1
e&D
$ea&%D
2Q :EDIAMO INFINE LA SOLUZIONE CON IL FOR ...Q3
@$!te%2OSOLUZIONE CON IL FORO3D
#ot:P1D
+o$ !:PL to &o
6e4!
@$!te%2OLa #ote*a O'!' O &e% 2 eOO: O'#ot3D
#ot:P#otQ2
e&D
$ea&%
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. +2
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
ITE8=' di%%icoltC/ $assa Ca%co%o &e%%a "e&!a &! N )"e$! !(e$!t! &a%%O)tete
#$o4$a" "e&!aN)"e$!D
5a$
: !te4e$D 2Q 7)at! )"e$! !(e$!$e Q3
)"e$o: !te4e$D
(o""a: $ea% D 2Q %a (o""a #)0 ()#e$a$e 32767 ... Q3
"e&!a: $ea%D
!: !te4e$D 2Q #e$ ! c!c%! Q3
6e4!
@$!te%2OCALCOLO MEDIAO3D
@$!te%D
2Q cot!)o a c,!e&e$e ) N +!c,eO (o&&!(+a ... Q3
$e#eat
@$!te%2O7)at! )"e$! 5)o! !(e$!$eC 2N[L3: O3D
$ea&%23D
!+ ZPL t,e
@$!te%2O:a%o$e (e*a (e(o= RI1RO:A 2N[L3O3D
)t!% [LD
2Q :EDIAMO 1RIMA LA SOLUZIONE CON IL RE1EAT ...Q3
(o""a:PLD !:P1D
@$!te%2OSOLUZIONE CON IL RE1EATO3D
$e#eat
@$!te2OI(e$!$e ) )"e$o 2O'!'O3 M[ O 3D
$ea&%2)"e$o3D
(o""a:P(o""aS)"e$oD
!:P!S1D
)t!% ![D
"e&!a:P(o""a-D
@$!te%2O"e&!a: O'"e&!a:6:23D
$ea&%D
2Q :EDIAMO 1OI LA SOLUZIONE CON IL ?HILE ...Q3
(o""a:PLD !:P1D
@$!te%2OSOLUZIONE CON IL ?HILEO3D
@,!%e !ZP &o
6e4!
@$!te2OI(e$!$e ) )"e$o 2O'!'O3 M[ O 3D
$ea&%2)"e$o3D
(o""a:P(o""aS)"e$oD
!:P!S1D
e&D
"e&!a:P(o""a-D
@$!te%2O"e&!a: O'"e&!a:6:23D
$ea&%D
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. +'
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
2Q :EDIAMO INFINE LA SOLUZIONE CON IL FOR ...Q3
@$!te%2OSOLUZIONE CON IL FORO3D
(o""a:PLD
+o$ !:P1 to &o
6e4!
@$!te2OI(e$!$e ) )"e$o 2O'!'O3 M[ O 3D
$ea&%2)"e$o3D
(o""a:P(o""aS)"e$oD
e&D
"e&!a:P(o""a-D
@$!te%2O"e&!a: O'"e&!a:6:23D
$ea&%D
e&.
ITE8A' di%%icoltC/ media Dato ! !#)t ) )"e$o !te$o N' (o""a$e ! #$!"! N )"e$! &!(#a$! e
5e$!+!ca$e c,e ta%e (o""a eO )4)a%e a% 7)a&$ato &! N.
#$o4$a" (o"^&!(#D
)(e( e@&e%a8' c$tD
5a$
!'7)at!: !te4e$D )"e$o'(o""a: $ea%D
6e4!
c%$(c$D
2Q !% cot$o%%o c,e (e4)eQ(e"6$aQ e++!cace: #$o5ate co 35LLLD
e #o! co 7LLLL: %Oe$$o$e o 5!ee $!%e5atoD #e$c,eO CC Q3
$e#eat
@$!te%2OA)at! )"e$! &!(#a$! 5)o! co(!&e$a$eC 2&a L a O'MATINT'O3O3D
$ea&%27)at!3D
!+ 27)at!ZL3 o$ 27)at![MATINT3 t,e
@$!te%2OE$$ato' $!#ete$e %OO!(e$!"etoO3
)t!% 27)at![PL3 a& 27)at!ZPMATINT3D
(o""a:PLD)"e$o:P1D 2Q 1 eO !% #$!"o . &!(#a$! ...Q3
+o$ !:P1 to 7)at! &o
6e4!
(o""a:P(o""aS)"e$oD
)"e$o:P)"e$oS2D 2Q !&!5!&)!a"o !% . &!(#a$! ()cce((!5o Q3
e&D
@$!te%2OCo(!&e$at! ! #$!"! O'7)at!'O )"e$! &!(#a$!O3D
@$!te%2OLa %o$o (o""a eOO: O'(o""a:1L:L3D
2Q "o%t!#%!co #e$ 1.L #e$ t$a(+o$"a$e ! $ea% !% $!()%tato
a%t$!"et! (a$e66e !te4e$ e %!"!tato a 32767 Q3
@$!te%2OI% 7)a&$ato &! O'7)at!' O eOO O'7)at!Q1.LQ7)at!:1L:L3D
!+ (o""aP7)at!Q1.LQ7)at! t,e
@$!te%2ORe4o%a 5e$!+!cata=O3
e%(e
@$!te%2ORe4o%a o 5e$!+!cata=O3D
$ea&%D
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. +)
NOTA: MATINT / )a co(tate #$e&e+!!ta c,e $a##$e(eta !% #!<
4$a&e )"e$o !te$o e (! #)0 )t!%!**a$eD co !% t)$6o 1a(ca% ! #$at!ca
co$$!(#o&e a% 5a%o$e 32.767 "a / "e4%!o )(a$e %a co(tate: #e$c,EC
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
ITE8>' di%%icoltC/ media U 4!$o t)$!(t!co eO +atto &! N ta##e' &e%%e 7)a%! (! !t$o&)coo &a ta(t!e$a
!% o"e &e%%a c!ttaO &! a$$!5o e ! J" #e$co$(!. Ca%co%a$e !% #e$co$(o tota%e e !% #e$co$(o "e&!o &e%%e ta##e
#$o4$a" ta##eD
)(e( e@&e%a8' c$tD 5a$
!'7)ate^ta##e: !te4e$D
J"^ta##a'(o""a^J": $ea%D
c!tta: (t$!4D
6e4!
c%$(c$D
$e#eat
@$!te%2OA)ate (oo %e ta##eC 2&a L a O'MATINT'O3O3D
$ea&%27)ate^ta##e3D
!+ 27)ate^ta##eZL3 o$ 27)ate^ta##e[MATINT3 t,e
@$!te%2OE$$ato' $!#ete$e %OO!(e$!"etoO3
)t!% 27)ate^ta##e[PL3 a& 27)ate^ta##eZPMATINT3D
(o""a^J":PLD
+o$ !:P1 to 7)ate^ta##e &o
6e4!
@$!te%2O1$o((!"a &e(t!a*!oe CO3D
$ea&%2c!tta3D
$e#eat
@$!te%2OA)ato &!(ta O'c!tta'O ! J"CO3D
$ea&%2J"^ta##a3D
!+ 2J"^ta##aZL3 o$ 2J"^ta##a[MATINT3 t,e
@$!te%2OE$$ato' $!#ete$e %OO!(e$!"etoO3
)t!% 2J"^ta##a[PL3 a& 2J"^ta##aZPMATINT3D
(o""a^J":P(o""a^J"SJ"^ta##aD
e&D
@$!te%2O1e$co$(o tota%e: O'(o""a^J":5:1'OJ"O3D
@$!te%2O1e$co$(o "e&!o #e$ ta##a: O'(o""a^J"-7)ate^ta##e:5:1'OJ"O3D
$ea&%
e&.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. +5
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
C&:( :&N& I D.&E CF(A'
I +%o@ c,a$t (oo (c,e"! c,e &e(c$!5oo 5!(!5a"ete co"e #$oce&e %9e(ec)*!oe &! ) #$o4$a""a. E((! o (oo
%e4at! a& )o (#ec!+!co %!4)a44!o: &ato ) +%o@ c,a$t' !% #$o4$a""ato$e #)0 #o! )(a$e ) 7)a%(!a(! %!4)a44!o &!
#$o4$a""a*!oe 2(! t$atta' #e$ co(; &!$e' &! ) %!4)a44!o 5!()a%e co"#$e(!6!%e a t)tt! ! #$o4$a""ato$!3. I% +%o@
c,a$t a!)ta ac,e !% #$o4$a""ato$e a &e(c$!5e$e co$$etta"ete ) a%4o$!t"o 2!% #$oce&!"eto $!(o%)t!5o &! )
#$o6%e"a3.
O4! t!#o &! !(t$)*!oe c,e (! #)0 !(e$!$e ! ) #$o4$a""a ,a ) ()o (!"6o%o e& o4)a &e%%e t$e (t$)tt)$e
+o&a"eta%! &e%%a #$o4$a""a*!oe 2(e7)e*a' (e%e*!oe e& !te$a*!oe3 #)0 e((e$e $a##$e(etata. E(!(too ac,e
(!"6o%! (#ec!a%! 2!!*!o #$o4$a""a' +!e #$o4$a""a ecc.3 c,e o $a##$e(etao !(t$)*!o! 5e$e e #$o#$!e "a c,e
(oo )t!%! #e$ %a co(t$)*!oe &e% +%o@ c,a$t.
I PAINCIP(.I :IGB&.I
Inizio programma (i simboli sono e"uivalenti Fine programma (i simboli
sono e"uivalenti
puoi ricordare solo un simbolo a scelta \ puoi ricordare solo un
simbolo a scelta \
=!% sta per !tart, =i% sta per 0nizio =$% sta per fine, =,% sta per ,nd
Assegnamento o altre istruzioni generiche Scrittura di un valore sul
video (i simboli sono e"uivalenti
(esempio: dai ad + il valore I puoi ricordare solo un
simbolo a scelta \
BS9 (ta #e$ (c$!5!' B?9 (ta #e$ ?$!te
2e(e"#!o &! !(t$)*!oe 4ee$!ca3
(ettura &! ) 5a%o$e (c$!tto co %a ta(t!e$a e "e"o$!**ato e%%a 5a$!a6!%e !&!cata
2! (!"6o%! c,e (e4)oo (oo e7)!5a%et!: $!co$&ae )o a t)a (ce%ta ..3
E(e"#!o: %e44e$e &o5e a6!ta )a #e$(oa e "e"o$!**a$e %9!+o$"a*!oe e%%a 5a$!a6!%e indirizzo
BL9 (ta #e$ Le44!' BR9 (ta #e$ Rea&
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. +*
!!*!o
(ta$t S +!e e& F
K 8 Sc$!5! Bc!ao9 S Bc!ao9
I
E
? Bc!ao9
Le44! !&!$!**o
L !&!$!**o R !&!$!**o
att!5a a%%a$"e
I
3uante .& '*5 4 +
( 5(ettimane in un anno:5
( 3uante
6
7 .& ,
N& HH
EAA&AE HHH
*+esto ti%o !i
sele#ione I !etto a 2
2ie
%ria
2ia
secon!a 2ia
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
Se %9et> / "!o$e &! 18 a%%o$a
a##%!ca (coto
a%t$!"et!
a##%!ca #$e**o #!eo.
Nota: e% +%o@ c,a$t !""a4!!a"o c,e
%e 5a$!a6!%! eta e prezzo a66!ao 4!> )
5a%o$e 5a%!&o e c,e ! ca%co%! !&!cat!
(!ao 7)!&! +att!6!%!. Lo (coto 21L`3 5!ee ca%co%ato &!5!&e&o !% #$e**o #!eo #e$ 1LL 2ca%co%a&o co(; %91`3 e
"o%t!#%!ca&o !% $!()%tato #e$ 1L 2ottee&o !% 1L`3.
Se %a te"#e$at)$a ()#e$a 37 C a%%o$a
+a! ()oa$e %9a%%a$"e.
Co"e #otete 5e&e$e (e o c9/ )%%a c,e &e5e e((e$e +atto 7)a&o %a
co&!*!oe / +a%(a' (! co4!)4e %a #a$te B+a%(o9 &!$etta"ete co !%
coetto$e.
NOTA IM1ORTANTE: ! o4! &!a4$a""a c,e $a##$e(eta %a (e%e*!oe c!
&e5e e((e$e (e"#$e ) (o%o #)to &! !4$e((o 2%a +$ecc!a et$ate e% $o"6o3 e& ) (o%o #)to &! )(c!ta 2!%
coetto$e +!a%e3. E5!tate 7)!&! +$ecce c,e &a%%9!te$o e(coo 5e$(o a%t$! #)t! &e% &!a4$a""a o c,e &a%%9e(te$o
4!)4oo ! ) #)to !te$o:
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. +-
eta . 1,
sconto .& "prezzo 4 100$ 8 10 sconto .& 0
6
temp 9 '+
attiva allarme
6
temp 9 '+
attiva allarme
6
temp 9 '+
attiva allarme
( prezzo
6
N& HH
EAA&AE HHH
N& HH
EAA&AE HHH
*+esto ti%o !i
sele#ione I !etto a
+na 2ia
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
%ele*ione a molte ,ie
E(!(te ac,e )9)t!%e 5a$!ate c,e #$e5e&e "o%te 5!e a (eco&a &e% 5a%o$e &! )a 5a$!a6!%e. I""a4!!a"o c,e %a
5a$!a6!%e mese cote4a ) 5a%o$e &a 1 a 12 c,e $a##$e(eta )o &e! "e(! &e%%9ao. D! )o5o' 5o$$e""o (a#e$e
7)at! 4!o$! co(!&e$a$e. :! $!co$&o c,e ! "e(! co 31 4!o$! (oo 1 24ea!o3' 3 2"a$*o3' 5 2ecc.3' 7' 8' 1L' 12D
7)e%%! co 3L 4!o$! (oo 4 2a#$!%e3' 6' N' 11D !""a4!!a"o #e$ (e"#%!c!t> c,e +e66$a!o 223 e a66!a (e"#$e 28.
I% +%)((o #)0 (e4)!$e t$e 5!e a (eco&a &e% 5a%o$e &e%%a 5a$!a6!%e mese. I t$e +%)((! #o((!6!%! (! $!co4!)4oo #o! e%
(o%!to coetto$e. Ac,e (e o )(ato ! 7)e(to e(e"#!o' / #$e5!(to ) +%)((o &a (e4)!$e 7)a&o o (! 5e$!+!ca
e(()o &e! ca(! #$ece&et!.
-serci*i risolti sulla struttura seletti,a
%-(1. +nserita un.etI dire se siamo in presenza di
un minorenne o di un maggiorenne
NOTE/ co ) +%o@ c,a$t (! 5o4%!oo &!
(o%!to co4%!e$e 4%! a(#ett! essenziali &!
) a%4o$!t"oD 7)e(to (!4!+!ca' a&
e(e"#!o' Bt$a(c)$a$e9 a%c)! "e((a44! o55!
c,e e% #$o4$a""a ! 1a(ca% (a$ao
!5ece !&!cat!: / !% ca(o &e% "e((a44!o
BI(e$!$e %9et>9 c,e &o5$e66e #$ece&e$e
%a ()a %ett)$a:
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. ,0
: eta
eta901,
( 5maggiorenne5 ( 5minorenne5
: F
: eta
( 5Inserire l5et;5
ese
giorni JK 31
giorni JK 28 giorni JK 30
1737577787
10712
2
47679711
altre istr+#ioni
%er i esi !a 31
altre istr+#ioni
%er $e""raio
altre istr+#ioni
%er i esi !a 30
In t+tti gli altri
casi
(crivi 5errore<5
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
%-(2. +nserita un@etI@/ dire se siamo in
presenza di un maggiorenne o di un
minorenne' controllare anc1e e(entuali
errori di inserimento da parte dell@utente
1$!"a (o%)*!oe: !#ot!**a&o ) et>
"a((!"a &! 12L a!' cot$o%%!a"o c,e
%9et> !(e$!ta o (!a a% &! +)o$!
&e%%9!te$5a%%o L 2eoato3 R 12L.
NOTA: (!ate coe$et! co %9)t!%!**o &e%%e
et!c,ette B:9 e BF9: !o ,o (ce%to &!
#$o(e4)!$e #e$ 5e$o 2:3 (e"#$e a &e(t$a e
#e$ +a%(o 2F3 (e"#$e a (!!(t$a.
NOTA: / !"#o$tate &!++e$e*!a$e co )
#a%%!oMcoetto$e (e#a$ato %e )(c!te &a%%e
&)e (t$)tt)$e (e%ett!5e. I% (e4)ete +%o@
c,a$t / 7)!&! (6a4%!ato. No $!)(c!$e""o
!+att! a t$a&)$%o e% co$$!(#o&ete
#$o4$a""a 1a(ca% 2(! acca5a%%e$e66e$o 4%!
Be&9 &e! 6%occ,! B6e4! G e&9 &e%%e
#a$t! Bt,e9 e& Be%(e9 &e! &)e B!+9 ==
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. ,1
: eta
eta901,
( 5maggiorenne5 ( 5minorenne5
eta.0 or eta9120
( 5errore5
6
: eta
eta901,
( 5maggiorenne5 ( 5minorenne5
eta.0 or eta9120
( 5errore5
6
NO LL
6
6
St$)tt)$a a Bca(cata9
: num
( 5dispari5
num >?@ 200
( 5pari5
6
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
%-(/. I(e$!to ) ca$atte$e' &!$e (e eO )a 5oca%e o& )a co(oate.
So%)*!oe 1 2o (! +a &!(t!*!oe t$a %e 5oca%!3
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. ,'
c .& maiuscolo" c $
: c
c05A5
( 5vocale A5 c05I5
c05A5
( 5vocale A5
( 5vocale I5 c05?5
( 5vocale ?5
c05B5
( 5vocale B5 ( 5consonante5
6
6
6
6
c .& maiuscolo" c $
: c
( 5consonante5
c05A5 or c05A5 or c05I5
or c05?5 or c05B5
( 5vocale5
6
So%)*!oe 2: / #o((!6!%e !t$a#$e&e$e
)9a*!oe &!5e$(a #e$ o4! 5oca%e
NOTA: o4! (t$)tt)$a (e%ett!5a / co"#%eta"ete cote)ta !
7)e%%a &e% %!5e%%o ()#e$!o$eD c9/ (e"#$e ) (o%o #)to &!
!4$e((o 2+$ecc!a F &e%%a (t$)tt)$a ()#e$!o$e3 e& ) (o%o #)to
&! )(c!ta 2&a% coetto$e3
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
%-(5. I(e$!t! A' B e C &!$e (e B eO co"#$e(o t$a A e CD ! #$at!ca (! cot$o%%a (e B a##a$t!ee a%%O!te$5a%%o VA'CW
0tera*ione "ripeti*ione+ cicli$
1)$ a5e&o a &!(#o(!*!oe (e7)e*a e
!te$a*!oe $!"a4oo "o%te %e (!t)a*!o!
B!t$atta6!%!9 co 7)e(t! (t$)"et!. Co(!&e$!a"o !+att! 7)e(to #$o6%e"a a%%9a##a$e*a "o%to (e"#%!ce: (ta"#a$e !
)"e$! &a 1 a 1LLLL. Ce$ta"ete %a (o%)*!oe &! )(a$e #e$ 1LLLL 5o%te %9!(t$)*!oe &! (c$!tt)$a #e$ (ta"#a$e o4!
)"e$o o / "o%to #$at!ca6!%e G
A #a$te ! #$o6%e"! &! t$o5a$e )o (#a*!o ()++!c!ete #e$ &!(e4a$e (c,e"! co(; eo$"! e& !% te"#o
#e$ &!(e4a$%!' (a$e""o co(t$ett! a "o&!+!ca$e (o(ta*!a%"ete !% &!a4$a""a a% 5a$!a$e &e%%a
$!c,!e(ta 2(ta"#a$e (o%o ! #$!"! 5LLL )"e$! o +!o a% 15LLL3.
1a$te&o !5ece &a%%a co(!&e$a*!oe c,e (! (tao $!#ete&o !(t$)*!o! "o%to (!"!%! 2ca"6!a (o%o
! 5a%o$e &a (c$!5e$e ()% 5!&eo3 (! #e$5!ee a& )a
(t$)tt)$a c!c%!ca c,e +a $!#ete$e )a o& ) 4$)##o &!
!(t$)*!o! +!o a% $a44!)4!"eto &! )a co&!*!oe 2!
7)e(to ca(o !% $a44!)4!"eto &e% 1LLLL3.
Ecco %o (c,e"a 4ee$!co 2c!o/ o a##%!cato a%%a
(o%)*!oe &! a%c) #$o6%e"a #a$t!co%a$e3 &! ) +%o@
c,a$t #e$ %a (t$)tt)$a !te$at!5a.
Le !(t$)*!o! (oo $!#et)te )a #$!"a 5o%ta. H!)t! a%%a co&!*!oe' (e
7)e(ta / 5e$a a%%o$a (! e(ce e& !% c!c%o te$"!a. Se %a co&!*!oe / +a%(a
(! $!to$a a%%9!!*!o 2coetto$e &! !4$e((o3.
Se a%%9!te$o &e% c!c%o' #$!"a o #o!' )a &e%%e !(t$)*!o! +a$> (; c,e %a
co&!*!oe &!5ete$> 5e$a' !% c!c%o te$"!e$> 5e$a"ete.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. ,)
I
( 1
( 2
( 10000
...
...
condizione
6
Dum 0 10001
6
...
num .& 1
num .0 10000
(" num $
num .& num /1
v
6
0T-2: (ta"#a &e! #$!"! N )"e$! at)$a%!'
co N %etto &a ta(t!e$aD (ta"#a &a% #!< 4$a&e a% #!<
#!cco%o
: n
i .& i & 1
( i
i .0 0
i .& n
6
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
0T-.. Sta"#a &e! #$!"! N )"e$! at)$a%!'
co N %etto &a ta(t!e$aD a +!aco &! c!a(c)
)"e$o !&!ca$e (e eO #a$! o &!(#a$!
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. ,+
0T-/: Sta"#a &e! )"e$! &!(#a$! "!o$! o )4)a%! a
N' co N %etto &a ta(t!e$a
: n
i .& i / 1
i 9 n
i .& 1
i >?@ 2 0 1
( i
6
6
: n
i .& i / 1
( i
i 9 n
i .& 1
i >?@ 2 0 0
( 5pari5 ( 5dispari5
6
6
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
0T-5. Fa$ !(e$!$e )a (e7)e*a &! )"e$! &a ta(t!e$a.
La (e7)e*a (! !te&e te$"!ata 7)a&o 5!ee
!(e$!to !% )"e$o L. S! &e5e ca%co%a$e e 5!()a%!**a$e
%a (o""a &! t)tt! ! )"e$! !(e$!t!.
totale .& 0
: n
totale .& totale / n
n 0 0
n .9 0
( totale
6
-serci*i risolti riassunti,i
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. ,,
0T-6: Fa$ !(e$!$e )a (e7)e*a &! )"e$! &a ta(t!e$a.
E9 %9)tete &e% #$o4$a""a c,e &!ce 7)a&o (oo +!!t! !
)"e$! 2$!(#o&e&o a& )a o##o$t)a &o"a&a #o(ta
&a% #$o4$a""a3. S! &e5e ca%co%a$e e 5!()a%!**a$e
%a "e&!a &! t)tt! ! )"e$! !(e$!t!.
totale .& 0
cont .& 0
: n
( 5initi 15
risp 0 5(5
: risp
media .& totale 4 c
( c
c .& c /1
totale .& totale / n
6
NOTA: e((e&o !% "e((a44!o 2&o"a&a3 #e$ %a
te$"!a*!oe &e% c!c%o #a$t!co%a$"ete !"#o$tate' /
"e4%!o !&!ca$%o e% +%o@ c,a$t.
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
1. C,!e&e$e &a ta(t!e$a %9!(e$!"eto &! )a (e7)e*a &! &ate. A& o4! &ata' e(#$e((a e%%a +o$"a 4!o$o "e(e e&
ao 2B49' B"9 e& Ba9 e% +%o@ c,a$t3' a44!)4e$e ) 4!o$o e (ta"#a$e %a &ata $!()%tate. E9 %9)tete &e% #$o4$a""a
c,e &!ce 7)a&o (oo +!!te %e &ate 2$!(#o&e&o a& )a o##o$t)a &o"a&a #o(ta &a% #$o4$a""a3. I#ote(!
(e"#%!+!cat!5a: co(!&e$a$e Fe66$a!o (e"#$e &a 28 4!o$!. T$acc!a: / ece((a$!o #$e(ta$e atte*!oe a%%e &ate c,e
co$$!(#o&oo a +!e "e(e o ao: e%%a &ata $!()%tate ca"6!e$> (!c)$a"ete !% "e(e e +o$(e ac,e %9ao G
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. ,-
L g,m,a
g ^M gZG
mYT
g_TI
g ^M G# m ^M J
mYG or J,P,V,
I,GL,GT
g_JG
g ^M G
m ^M mZG
g_JL
g ^M G
m ^M mZG
m_GT
m ^M G
a ^M aZG
risp Y ;!;
! ;fniti D;
L risp
2
2
$
2
$
2
$
2 $
2
$
2
$
Gestione Arc%ivi Tradizionali & versione '.1 (ettembre 200)
2. Sta"#a &e! )"e$! &a B a& A co B[A.
Cot$o%%a$e c,e B (!a "a44!o$e &! A
#$!"a &! !!*!a$e.
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. -0
s E
E .& E & 1
E . A
: A
: E
E 9 A
6
6
c .& +
c .& c / +
( c
c 901000
6
!
I record con il Turbo Pascal versione 1.' :uglio 200'
p:Ynuovo`nodo#
end#
(S07!,&06,73> 07 (>DA D0 '7 7'>2> ,L,6,73>: riceve il puntatore ;p; ad una lista ed un valore da
inserire S
%roce!+re inserisciTinTco!a32ar %)%+ntatore= 2alore)integer5=
var nuovo`nodo,fne`lista: puntatore#
begin
new(nuovo`nodo# nuovo`nodol.inf:Yvalore#
nuovo`nodol.pun:Ynil#
(S devo distinguere il caso lista vuota S
if p^_nil then (S lista non vuota S
begin
fne`lista:Yp# (S parto dall;inizio ... S
while fne`listal.pun^_nil do (S ... ed avanzo fno alla fne ... S
fne`lista:Yfne`listal.pun#
fne`listal.pun:Ynuovo`nodo
end
else
p:Ynuovo`nodo
end#
07!,&06,73> D0 '7 7'>2> ,L,6,73> 07 '7A )>!0W0>7, 073,&6,D0A: riceve il puntatore ;p; al nodo
che preceder "uello da inserire
%roce!+re inserisciTinTe##o32ar %)%+ntatore= 2alore)integer5=
var nuovo`nodo: puntatore#
begin
new(nuovo`nodo# nuovo`nodol.inf:Yvalore#
if pYnil then (S la lista e; vuota S
begin
nuovo`nodol.pun:Ynil# p:Ynuovo`nodo
end
else
begin
nuovo`nodol.pun:Ypl.pun# (S aggancio successivo S
pl.pun:Ynuovo`nodo (S mi faccio puntare da precedente S
end
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. 5
E9 !"#o$tate #$!"a (a%5a$e !% 5a%o$e &! p
e%%a ca(e%%a #)tato$e &e% )o5o o&o:
&!5e$(a"ete 2!5e$te&o c!o/ %9o$&!e &e!
&)e a((e4a"et!3 (! #e$&e$e66e !% 5a%o$e
o$!4!a%e &! p c!o/ &e% #$!"o o&o' $e&e&o
!$$a44!)4!6!%e %9!te$a %!(ta==
Ac,e (e (a$> #o! ece((a$!o &!++e$e*!a$e !% ca(o %!(ta 5)ota'
7)e(te !(t$)*!o! 5ao 6ee ! et$a"6! ! ca(!.
P
NIL
%ineIlista
nuo"oInodo
+!e^%!(ta:P+!e^%!(tab.#) G
I% &!(e4o 7)! a %ato (! $!+e$!(ce a% ca(o %!(ta
o 5)otaG
I record con il Turbo Pascal versione 1.' :uglio 200'
end#
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. *
NIL
P
nuo"oInodo nuovo_nodo^.pun:=p^.pun
! p^.pun:=nuovo_nodo
I% &!(e4o 7)! a %ato +a e5!&ete"ete
$!+e$!"eto a% ca(o %!(ta o 5)otaG
I record con il Turbo Pascal versione 1.' :uglio 200'
&0(,&(A 07 '7A L0!3A 7>7 >&D07A3A
La procedura non si limita a restituire un puntatore all%elemento eventualmente trovato ma anche il
puntatore a "uello che eventualmente lo precede. Xo scelto "uesto comportamento perchF per alcune
operazioni, una volta trovato un elemento, 8 necessario disporre anche del puntatore all%elemento
precedente (ad esempio nel caso volessimo cancellare l%elemento trovato
%roce!+re cercaTnonTor!inata3%) %+ntatore= 2alore) integer= 2ar corrente7 %rece!ente)
%+ntatore5=
begin
precedente:Ynil# corrente:Ynil#
if p^_nil then
begin
corrente:Yp#
while (correntel.inf^_valore and (correntel.pun^_nil do
begin
precedente:Ycorrente#
corrente:Ycorrentel.pun
end#
if correntel.inf^_valore then
begin
precedente:Ynil#
corrente:Ynil
end
end
end#
&0(,&(A 07 '7A L0!3A >&D07A3A
9uesta versione della ricerca lavora su una lista ordinata (diciamo in modo crescente. 3rovato un
elemento il cui valore supera "uello che si sta cercando non ha pi< senso continuare la ricerca \ "uelli
seguenti saranno per forza tutti maggioriA
%roce!+re cercaTor!inata3%) %+ntatore= 2alore) integer= 2ar corrente7 %rece!ente)
%+ntatore5=
begin precedente:Ynil# corrente:Ynil#
if p^_nil then
begin
corrente:Yp#
while (correntel.inf^valore and (correntel.pun^_nil do
begin
precedente:Ycorrente#
corrente:Ycorrentel.pun end#
if correntel.inf^_valore then
begin precedente:Ynil# corrente:Ynil end end end#
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. +
La $!ce$ca / e++ett)ata () )a %!(ta o o$&!ata. Se (alore 5!ee t$o5ato' !
corrente 5!ee $e(t!t)!to !% #)tato$e a% o&o ce$cato' ! precedente 7)e%%o a%
o&o c,e %o #$ece&ete 2nil (e !% o&o ce$cato / !% #$!"o3. Se !% 5a%o$e o
5!ee t$o5ato (!a corrente c,e precedente (oo "e((! a nil3.
NIL
precedente
corrente
I record con il Turbo Pascal versione 1.' :uglio 200'
,L0607AW0>7, D0 '7 ,L,6,73>
9uesta procedura invoca "uella di ricerca per ottenere il puntatore al nodo da cancellare ed a "uello
che lo precede (se esiste. !ono infatti "ueste le informazioni necessarie per una corretta eliminazione.
%roce!+re eliina32ar %) %+ntatore= 2alore) integer5=
var corrente,precedente: puntatore#
begin
cerca`non`ordinata(p,valore,corrente,precedente#
if corrente^_nil then
begin
if precedente^_nil then
(S eliminazione in mezzo o in coda S
precedentel.pun:Ycorrentel.pun
else (S eliminazione in testa S
p:Ycorrentel.pun#
dispose(corrente
end
end#
07!,&06,73> 07 '7A L0!3A >&D07A3A
0l nuovo elemento deve essere inserito mantenendo la lista ordinata.
%roce!+re inserisciTinTor!ine32ar %)%+ntatore= 2alore)integer5=
var nuovo`nodo,precedente,corrente: puntatore#
begin
new(nuovo`nodo# nuovo`nodol.inf:Yvalore#
if pYnil then
begin
nuovo`nodol.pun:Ynil# p:Ynuovo`nodo
end
else
if valore^pl.inf then (S inserzione in testa S
begin
nuovo`nodol.pun:Yp# p:Ynuovo`nodo
end
else
begin
(S cerca il punto di inserimento S
precedente:Yp# corrente:Yp#
while (correntel.inf^Yvalore and (correntel.pun^_nil do
begin
precedente:Ycorrente# corrente:Ycorrentel.pun
end#
if valore_correntel.inf then (S inserimento in coda S
begin
nuovo`nodol.pun:Ynil# correntel.pun:Ynuovo`nodo
end
else (S inserimento in mezzo S
begin
nuovo`nodol.pun:Ycorrente# precedentel.pun:Ynuovo`nodo
end end end#
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. ,
Cace%%a*!oe ! me11o6coda a%%a %!(ta.
NIL
precedente
corrente
P
NIL
precedente
corrente
NIL
P
Cace%%a*!oe ! testa a%%a %!(ta.
I(e$!(ce )o5! 5a%o$! "atee&o )
o$&!a"eto c$e(cete. La tec!ca )(ata / %a
(te((a &e% (o$t #e$ !(e$*!oe 2$!ce$ca &e% 4!)(to
#)to &! !(e$!"eto3 )(ata #e$ ! 5etto$! "a
4$a*!e a! #)tato$! / e5!tato t)tto !%
(o5$acca$!co &e%%o (#o(ta"eto &e4%! e%e"et!
#e$ +a$ #o(to a 7)e%%o )o5o=
I record con il Turbo Pascal versione 1.' :uglio 200'
,!3&AW0>7, D0 '7 ,L,6,73>
,strai si di/erenzia dalla elimina perchF =sgancia% il nodo che contiene l%informazione cercata ma non
lo distrugge: restituisce il puntatore al nodo ed 8 poi responsabilit del chiamante liberare la memoria.
$+nction estrai32ar %) %+ntatore= 2alore) integer5) %+ntatore=
var corrente,precedente: puntatore#
begin
cerca`non`ordinata(p,valore,corrente,precedente#
if corrente^_nil then
begin
if precedente^_nil then (S eliminazione in mezzo o in coda S
precedentel.pun:Ycorrentel.pun
else (S eliminazione in testa S
p:Ycorrentel.pun
end#
estrai:Ycorrente# (S eventualmente, nil S end#
>ra che padroneggiate ( i meccanismi di gestione delle liste siete in grado di capire gli svantaggi
della gestione dinamica della &A6 (dei vantaggi abbiamo gi discusso\:
5li algoritmi sono pi< diCcili ed 8 pi< facile commettere errori
7on 8 possibile un accesso casuale agli elementi: per usare "uello in posizione =7% 8
necessario scorrere gli =7MG% che precedono con un ciclo. (onfrontate "uesta tecnica con
l%immediatezza degli arra1: vettg7e
A parit di tipo e di numero di elementi usa pi< memoria, "uella usata per memorizzare i
puntatoriAA (ma in alcune situazioni globalmente abbiamo comun"ue un grosso risparmio:
ricordate l%esercizio sullo !6A' e le TL.LLL stringheDD
Autore: abrizio !amuso "email: camuso#camuso.it sito web: www.camuso.it $ Pag. -