Ecdl modulo 1 -Fondamenti

21
ECDL - Modulo 1 Fondamenti Angela Gay 25 gennaio 2010 Indice 1 Gli algoritmi 2 1.1 Definire il termine algoritmo ..................... 2 1.2 Descrivere in forma algoritmica la procedura risolutiva di semplici problemi. ............................... 3 1.3 Rappresentare algoritmi mediante diagrammi ........... 4 2 Rappresentazione dei dati 7 2.1 Effettuare correlazioni fra i sistemi di numerazione decimale e binario, convertire dei dati numeri dall’uno all’altro sistema.... 7 2.2 Rappresentare i caratteri in forma binaria. Definire le nozioni di bit e di byte. ............................. 8 2.2.1 ASCII standard ed esteso .................. 8 2.2.2 UNICODE .......................... 9 2.3 Descrivere le caratteristiche di una immagine digitale. ...... 9 3 Linguaggi 10 3.1 Cenni di logica ............................ 10 3.1.1 Congiunzione (AND) ..................... 11 3.1.2 Disgiunzione (OR) ...................... 11 3.1.3 Negazione (NOT) ....................... 11 3.2 Linguaggi naturali e linguaggi formali ............... 12 3.2.1 Fasi di creazione del software ................ 15 3.3 Pseudolinguaggio ........................... 16 Bibliografia 21 1

Transcript of Ecdl modulo 1 -Fondamenti

Page 1: Ecdl modulo 1 -Fondamenti

ECDL - Modulo 1

Fondamenti

Angela Gay

25 gennaio 2010

Indice

1 Gli algoritmi 21.1 Definire il termine algoritmo . . . . . . . . . . . . . . . . . . . . . 21.2 Descrivere in forma algoritmica la procedura risolutiva di semplici

problemi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Rappresentare algoritmi mediante diagrammi . . . . . . . . . . . 4

2 Rappresentazione dei dati 72.1 Effettuare correlazioni fra i sistemi di numerazione decimale e

binario, convertire dei dati numeri dall’uno all’altro sistema. . . . 72.2 Rappresentare i caratteri in forma binaria. Definire le nozioni di

bit e di byte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2.1 ASCII standard ed esteso . . . . . . . . . . . . . . . . . . 82.2.2 UNICODE . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.3 Descrivere le caratteristiche di una immagine digitale. . . . . . . 9

3 Linguaggi 103.1 Cenni di logica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.1.1 Congiunzione (AND) . . . . . . . . . . . . . . . . . . . . . 113.1.2 Disgiunzione (OR) . . . . . . . . . . . . . . . . . . . . . . 113.1.3 Negazione (NOT) . . . . . . . . . . . . . . . . . . . . . . . 11

3.2 Linguaggi naturali e linguaggi formali . . . . . . . . . . . . . . . 123.2.1 Fasi di creazione del software . . . . . . . . . . . . . . . . 15

3.3 Pseudolinguaggio . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Bibliografia 21

1

Page 2: Ecdl modulo 1 -Fondamenti

1 GLI ALGORITMI 2

1 Gli algoritmi

Il termine algoritmo deriva dal nome del matematico persiano Abu Ja’far Mo-hammed ibn Mâsâ al- Khowârizmî, vissuto nel IX secolo d.C., che si ritieneessere uno dei primi autori ad aver fatto riferimento esplicitamente a questoconcetto, nel libro Al-giabr wa’l mu kabala (Libro sulla ricomposizione e sullariduzione), dal quale tra l’altro prende anche le origini la parola algebra.Per spiegare cosa è un algoritmo, partiamo da un esempio.

Esempio 1 Supponiamo di voler istruire un ’esecutore’ (macchina o persona)che sa fare moltiplicazioni e divisioni, affinché possa calcolare l’area di un trian-golo del quale vengono fornite la misura della base b e dell’altezza h. Le istru-zioni che dobbiamo dare all’esecutore, per renderlo capace di calcolare l’area deltriangolo, potrebbero essere le seguenti:

INIZIO

1. acquisisci b e h;

2. moltiplica b per h;

3. dividi il prodotto per 2;

4. comunica il risultato ottenuto.

FINEQuesto sequenza di istruzioni costituisce un algoritmo.

1.1 Definire il termine algoritmo

Siamo ora in grado di dare una definizione intuitiva (cioè, non rigorosa) di:

Algoritmo Per algoritmo si intende una successione finita di passi con-tenenti le istruzioni che specificano le operazioni da compiere per risolvere unaclasse di problemi.

L’algoritmo dunque deve godere delle seguenti proprietà:

1. finitezza, cioè costituito da un numero finito di passi, o istruzioni;

2. univocità, non deve essere ambiguo;

3. realizzabilità le istruzioni devono essere eseguibili materialmente.

Nella maggior parte dei testi scolastici, viene data una quarta proprietà deglialgoritmi:

4. un algoritmo, per essere tale, deve terminare in un numero finito di passi.

Page 3: Ecdl modulo 1 -Fondamenti

1 GLI ALGORITMI 3

Da notare la differenza tra la proprietà 1 (il numero di istruzioni deve esserefinito) e la proprietà 4 (l’algoritmo deve terminare). Come vedremo presto, unalgoritmo può prevedere le ripetizione (iterazione) di un gruppo di istruzionipiù volte. Ecco perché un algoritmo, pur costituito da un numero finito di istru-zioni, potrebbe non terminare: un certo gruppo di istruzioni potrebbe essereeseguito indefinitamente, portando alla non terminazione dell’algoritmo stesso.La quarta non dovrebbe essere considerata una proprietà caratteristica deglialgoritmi. Le motivazioni di ciò esulano dagli scopi e di questo testo, e possonoessere affrontate solo in corsi di matematica superiore. Qui possiamo solo af-fermare che tale motivazione è analoga a quella che induce, in matematica, adampliare gli insiemi numerici (da N a Z, a Q, a R... a C) affinché essi risultinochiusi rispetto a determinate operazioni (Cf. [3, pag. 5] per maggiori dettagli).

1.2 Descrivere in forma algoritmica la procedura risoluti-

va di semplici problemi.

Il nostro primo algoritmo è molto semplice. È costituito da alcune istruzioniche vanno eseguite in sequenza. Non sempre sarà così. A volte sarà necessarioeseguire alcune istruzioni, oppure altre, a seconda del verificarsi o meno di unadeterminata condizione. Parleremo in questo caso di struttura di selezione(si seleziona quale istruzione, o gruppo di istruzioni eseguire, in base al verifi-carsi della condizione).

Proviamo a descrivere i passi necessari per stabilire se un numero a è divisi-bile per un altro numero b. Il nostro algoritmo potrebbe essere il seguente:INIZIO

1. acquisisci a e b;

2. esegui la divisione a : b e indica con r il resto di tale divisione;

3. se r = 0

• allora comunica che a è divisibile per b

• altrimenti comunica che a non è divisibile per b

FINE

Questo è il nostro secondo algoritmo.

Page 4: Ecdl modulo 1 -Fondamenti

1 GLI ALGORITMI 4

1.3 Rappresentare algoritmi mediante diagrammi

Per rappresentare gli algoritmi, a volte si usano dei diagrammi, detti diagrammia blocchi (o anche diagrammi di flusso o flow chart). Ne vediamo ora qualcheesempio, partendo proprio dall’algoritmo per il calcolo dell’area del triangolo.

Algoritmo per il calcolo dell’area di un triangolo

Inizio efine

input eoutput

test

operazionidi calcolo

Significato dei principali blocchi

Page 5: Ecdl modulo 1 -Fondamenti

1 GLI ALGORITMI 5

Determinare se un numero a è divisibile per un numero b

Algoritmo di Euclide per il calcolo del MCD

Le due strutture di controllo viste fino ad ora (sequenza e selezione) non bastanoancora per permetterci di scrivere algoritmi non banali. Abbiamo bisogno anchedi poter ripetere più volte uno stesso gruppo di istruzioni. Parleremo allora diuna terza struttura di controllo, l’iterazione. Un esempio di algoritmo cheutilizza l’iterazione è l’algoritmo di Euclide per il calcolo del MCD fra duenumeri a e b naturali positivi.

Page 6: Ecdl modulo 1 -Fondamenti

1 GLI ALGORITMI 6

acquisisci a e b

FINE

INIZIO

r <- resto(a:b)

r=0?

SI

NO

comunica:

b è i l r isultato

b <- r

a <- b

r<-resto(a:b)

Lo studente è inviatato a provare l’algoritmo di Euclide, assegnando ad a e b

valori naturali positivi, e compilando tabelle sull’esempio di quelle riporate diseguito (cerchiato in rosso il risultato prodotto dall’algoritmo).

prima prova: a = 15; b = 3a b r

valori iniziali 15 3○ 0

seconda prova: a = 5; b = 20a b r

valori iniziali 5 20 5prima iterazione 20 5○ 0

terza prova: a = 12; b = 20a b r

valori iniziali 12 20 12prima iterazione 20 12 8seconda iterazione 12 8 4terza iterazione 8 4○ 0

prova tu: a = 25; b = 7a b r

valori iniziali 25 7prima iterazioneseconda iterazioneterza iterazione

Page 7: Ecdl modulo 1 -Fondamenti

2 RAPPRESENTAZIONE DEI DATI 7

Prova anche con le seguenti coppie di valori: (a = 12, b = 105); (a = 42, b = 45).

2 Rappresentazione dei dati

Vedremo ora come le informazioni (programmi, dati) sono rappresentati all’in-terno di un elaboratore elettronico.

2.1 Effettuare correlazioni fra i sistemi di numerazione de-

cimale e binario, convertire dei dati numeri dall’uno

all’altro sistema.

I computer utilizzano un alfabeto composto da due soli simboli: le cifre 0 e 1.Tutte le informazioni memorizzate all’interno di un elaboratore elettronico sonocodificate esclusivamente mediante questi due simboli. Da qui deriva il terminedi sistema binario. Allo stesso modo il sistema decimale che tutti conosciamosi chiama così poiché vengono utilizzate dieci simboli o cifre (da 0 a 9). Dal-la matematica sappiamo che il sistema di numerazione decimale è posizionale.Questo significa che le cifre di un numero assumono un valore diverso a secondadella posizione in cui si trovano. Ogni numero in base 10 può essere scritto informa polinomiale:

Esempio 2 763 = 3 · 100 + 6 · 101 + 7 · 102 187 = 7 · 100 + 8 · 101 + 1 · 102

Anche il sistema di numerazione binario (in base 2) è posizionale:

Esempio 3 (10110)2 = 0 · 20 + 1 · 21 + 1 · 22 + 0 · 23 + 1 · 24 = 22

La scrittura polinomiale di un numero in binario ci dà l’algoritmo per la con-versione di un numero da base 2 a base 10.

Esempio 4 (11011)2 = 1 · 20 + 1 · 21 + 0 · 22 + 1 · 23 + 1 · 24 = (27)10

Per la conversione inversa (da base 10 a base 2) si utilizza, invece, il metododelle divisioni successive per la base (nel nostro caso, quindi per 2) Si divide ilnumero decimale per 2, e si fa lo stesso per il quoziente ottenuto, fino a quandoil quoziente stesso vale zero. I resti ottenuti dalla sequenza delle divisioni, presidall’ultimo al primo, costituiscono la rappresentazione del numero in base 2.

27 2

131 2

6 2

3 2

1 2

01

1

1

0

Page 8: Ecdl modulo 1 -Fondamenti

2 RAPPRESENTAZIONE DEI DATI 8

2.2 Rappresentare i caratteri in forma binaria. Definire

le nozioni di bit e di byte.

In informatica la singola cifra binaria, di valore 0 o 1, viene chiamata bit (bina-ry digit). Il bit rappresenta l’unità di misura fondamentale in un computer mararamente viene utilizzato da solo. In genere si utilizza una serie di otto cifrebinarie (otto bit) che viene chiamata byte. Con un byte è possibile rappre-sentare un massimo di 256(28). Il byte rappresenta generalmente un carattere(lettera, numero o simbolo che sia). Ma come è possibile rappresentare un testousando solo degli 0 e degli 1? Lo strumento per risolvere il problema c’è, e sichiama codifica binaria dei caratteri. Vediamo meglio di cosa si tratta. Quandoscriviamo un testo, non facciamo altro che mettere uno dietro l’altro una serie disimboli, normalmente chiamati caratteri. In ogni lingua vi sono diversi caratte-ri: le lettere dell’alfabeto, i segni di interpunzione e infine le cifre. Ovviamentelo 0 e l’1 da soli non basterebbero a rappresentare tutti i simboli necessari perscrivere. Ma associando ad ogni carattere una sequenza di cifre binarie, eccoche le possibilità di rappresentare caratteri aumenta. La sequenza di bit accen-nata è appunto il Byte prima descritto. Potremmo allora, per esempio, fare unatabella di associazioni di questo tipo:

00000001 corrisponde ad a00000010 corrisponde a b00000011 corrisponde a c00000100 corrisponde a d..... ..... ....

e così via. Bene, per lavorare su dei testi tutti i computer ricorrono a unatabella di associazioni di questo tipo, che viene chiamata tavola dei caratteri.La tavola più usata è basata proprio su otto cifre binarie, otto bit. Le possibilicombinazioni di ’0’ e ’1’ nelle otto cellette a nostra disposizione come già dettosono 256. Con un solo Byte potremo allora rappresentare fino a 256 caratteridiversi.

2.2.1 ASCII standard ed esteso

Ovviamente, per evitare una vera e propria babele, è necessario accordarci edutilizzare la stessa tabella dei caratteri, i, per evitare che una testo scritto sulmio computer di casa si trasformi in una sequenza di segni indecifrabili sul com-puter a scuola. Tale problema fu risolto da Robert W. Bemer, nel 1965, che ideòe propose uno schema di codifica internazionale dei caratteri in informatica, ov-vero il processo o il criterio in base al quale lettere, cifre, simboli grafici e codicidi controllo vengono tradotti in combinazioni numeriche binarie leggibili da uncomputer (il concetto della tavola dei caratteri prima espresso). Tale codificafu chiamata ASCII (American Standard Code for Information Interchange) ov-vero Codice Standard Americano per lo Scambio di Informazioni e comprendeun set di 256 combinazioni, divise in due sottogruppi di 128 ciascuno, detti ri-spettivamente standard ed esteso. Il set ASCII standard usa 7 bit per codice e

Page 9: Ecdl modulo 1 -Fondamenti

2 RAPPRESENTAZIONE DEI DATI 9

può rappresentare 128 caratteri, numerati da 0 a 127; l’ASCII esteso usa anchel’ottavo bit e può rappresentare ulteriori 128 caratteri, numerati da 128 a 255.Nel set ASCII standard, i primi 32 codici sono assegnati a caratteri di controllodella comunicazione o della stampante e vengono usati nella trasmissione datitra computer o tra computer e stampante. I restanti 96 codici sono assegnatiai segni d’interpunzione, alle cifre da 0 a 9 e alle lettere dell’alfabeto latino,maiuscole e minuscole. I codici del set ASCII esteso, dal 128 al 255, consentonodi utilizzare l’ottavo bit di ogni carattere per identificare ulteriori 128 caratterispeciali, come le lettere accentate o i caratteri grafici e anche per permetterealle diverse entità linguistiche di inserire le proprie particolarità. Mentre il setASCII standard (i primi 7 bit) è universale sia per il software sia per l’hard-ware dei computer, i caratteri dell’ASCII esteso non costituiscono uno standarduniversalmente riconosciuto e quindi possono essere interpretati correttamentesolo da programmi, computer e stampanti progettati specificatamente per quelset. Le attribuzioni dei primi 128 valori sono stabilite da un codice valido pertutti i computer, mentre i successivi 128 sono lasciati alla definizione del singolosistema operativo.

2.2.2 UNICODE

La codifca ASCII (anche quella, peraltro non standard, ad 8 bit) attualmentenon è sufficiente a rappresentare tutti i caratteri di tutte le lingue del mondo.L’ottavo bit, introdotto proprio per rappresentare un maggior numero di carat-teri, non costituisce, come già detto, uno standard, e lingue differenti associanolo stesso codice a caratteri differenti.

Per risolvere questi problemi, è stata ideata una nuova codifica: la codificaunicode, che rappresenta ogni carattere come un numero di 2 byte (quindi 16bit). In questo modo è possibile rappresentere fino a 216 = 65536 caratteridifferenti. Ogni gruppo di 2 byte rappresenta un unico carattere usato in almenouno dei linguaggi del mondo. Caratteri che sono usati in molteplici linguaggihanno lo stesso codice numerico. C’è esattamente 1 numero per carattere edesattamente un carattere per numero. I dati unicode non sono quindi maiambigui.

2.3 Descrivere le caratteristiche di una immagine digitale.

Un’immagine, come ogni altra informazione, è rappresentata all’interno di uncalcolatore com una sequenza di bit. Per fare questo l’immagine viene decom-posta in punti (pixel). Il pixel (picture element) è la più piccola unità che uncomputer può visualizzare su un montor; un insieme di pixel organizzati in unagriglia sullo schermo forma tutto ciò che è visualizzato sullo schermo: caratteri,grafici, immagini.Digitalizzare un’immagine significa quidi trasformala in un reticolo di pixel. Cia-scun pixel porta con sé una quantità prefissata di informazioni, che dipende dalnumero di bit associati ad ogni pixel. Se per esempio ad ogni pixel è associatoun solo bit, ogni pixel può assumere due soli colori differenti (bianco/nero); se

Page 10: Ecdl modulo 1 -Fondamenti

3 LINGUAGGI 10

un pixel ha associati 4 bit sulla scala dei grigi, si possono visualizzare 16 (24)tipi di grigio; con 8 bit si possono visualizzare 256 (28) colori differenti. I fileche contengono immagini tendono a diventare molto grandi; esistono pertantovari formati di compressione per limitarne le dimensioni.I principali formati dei file di immagine sono:

• BMP (bitmap): formato che definisce la posizione e il colore di ciascunpixel.

• TIFF (Tag Image File Format) è un formato comune nello scambio diimmagini bitmap tra programmi diversi; per esempio i file acquisiti con loscanner sono spesso in questo formato.

• GIF (Graphic Interchange Format) è il formato compresso, molto usa-to per le immagini grafiche in internet. Esistono anche le GIF animate,costituite da brevi sequenze di immagini GIF.

• JPEG (Joint Photographic Experts Group), formato basato su algoritmidi compressione che devono conciliare l’esigenza di un’alta qualità dell’im-magine con la minima dimensione del file, molto usato nel web soprattuttoper le foto.

• PNG (Portable Network Graphics) altro formato di compressione di im-magini, destinato a sostituire il GIF in quanto presenta miglioramenti edun grado di compressione maggiore.

• Infine esistono formati di grafica vettoriale: in questi casi il file non con-tiene l’immagine, ma le istruzioni per ricostruirla. Un notevole vantaggiosta nel fatto che è possibile modificare le dimensioni dell’immagine senzaperderne le qualità, come invece accade con gli altri formati. Tra i formatidi grafica vettoriale menzioniamo:

– SVG è un formato aperto, le cui specifiche sono cioè pubbliche.

– WMF (Windows Meta File); formato di grafica vettoriale proprie-tario.

3 Linguaggi

3.1 Cenni di logica

In Informatica capita spesso di dover ricorrere ai principi della logica degli enun-ciati, detta anche algebra booleana dal nome del matematico inglese GeorgeBoole. Gli oggetti della logica sono gli enunciati.

Definizione 1 Si chiama enunciato una proposizione che può essere soltantovera o falsa.

Page 11: Ecdl modulo 1 -Fondamenti

3 LINGUAGGI 11

Alcuni enunciati possono essere composti, ossia formati a sottoenunciati colle-gati tra loro da connettivi logici. Il valore di verità di un enunciato compo-sto è completamente definito dai valori di verità dei suoi sottoenunciati e dalconnettivo logico che li unisce. I connettivi fondamentali sono AND, OR, NOT.

3.1.1 Congiunzione (AND)

Due enunciati p e q possono essere collegati dal connettivo “e” (∧, AND), inmodo da formare un enunciato composto, che risulta vero solo quando sono verientrambi i sottoenunciati p e q, come risulta dalla seguente tavola di verità:

p q p AND q

F F FF V FV F FV V V

3.1.2 Disgiunzione (OR)

Due enunciati p e q possono essere collegati dal connettivo “o” (∨, OR), in mododa formare un enunciato composto, che risulta vero quando è vero almeno unodei due sottoenunciati p e q, come risulta dalla seguente tavola di verità:

p q p OR q

F F FF V VV F VV V V

3.1.3 Negazione (NOT)

Dato un enunciato p è possibile formare un altro enunciato che si indica conNOT p, detto negazione di p, che risulta vero se p e falso, e falso se p è vero:

p NOT p

F VV F

Page 12: Ecdl modulo 1 -Fondamenti

3 LINGUAGGI 12

3.2 Linguaggi naturali e linguaggi formali

La comunicazione (tra uomo e uomo, tra uomo e macchina) avviene attraver-so formalismi che prendono il nome di linguaggi. Possiamo fare una primaclassificazione dei linguaggi analizzando la figura seguente:

Linguaggi

NaturaliArtificiali(formali)

ad altolivello

a bassolivello

I linguaggi naturali (italiano, inglese, francese, cinese...) sono quelli che gliuomini utilizzano per comunicare tra di loro. Sono dotati di notevole ricchez-za espressiva, possono però dare adito ad ambiguità, imprecisioni o difficoltàdi interpretazioni. Come esempio portiamo una riedizione della classica frase:La professoressa Gay dice Giovanni non capisce niente. Tale frase ha due si-gnificati molto diversi, a seconda dell’intonazione di voce, delle pause o dellapunteggiatura che si usa. Infatti La professoressa Gay - dice Giovanni - noncapisce niente è molto differente, in quanto a significato, a La professoressa Gaydice: “Giovanni non capisce niente”.I linguaggi artificiali (o formali, o simbolici) invece sono stati creati dal-l’uomo secondo regole ben definite prive di eccezioni ed ambiguità e sono dedicatia scopi precisi e circoscritti.Per la comunicazione tra uomo e macchina si usano linguaggi formali detti lin-guaggi di programmazione. Tra questi possiamo distinguere i linguaggi adalto livello, o linguaggi procedurali, (Pascal, C++, Java, VisualBasic...) e i lin-guaggi a basso livello (linguaggio macchina e linguaggio assembler).Il linguaggio macchina è l’unico ad essere compreso da un computer. In essooperazioni e dati sono espressi in binario, sono dunque sequenza di bit. Le ope-razioni sono molto semplici (somma, moltiplicazione, confronto di operandi...).Risulta evidente la difficoltà a programmare utilizzando un tale strumento.Il linguaggio assembler costituisce un passo avanti (verso l’uomo). Le stessesemplici istruzioni del linguaggio macchina sono indicate da codici mnemmoni-ci, anziché da sequenze di bit (ad esempio addl per somma, mull o imull permoltiplica, cmpl per compara...); anche gli operandi sono espressi in modo sim-bolico. Il linguaggio assembler, pur nella sua vicinanza al linguaggio macchina,non è direttamente comprensibile dall’elaboratore, e deve pertanto essere tra-dotto in linguaggio macchina da uno specifico programma detto assemblatore.I linguaggi ad alto livello invece sono più vicini al linguaggio naturale, dal quale

Page 13: Ecdl modulo 1 -Fondamenti

3 LINGUAGGI 13

(in genere dall’inglese) prendono in ’prestito’ alcune parole. Le istruzioni so-no più complesse, ed ognuna di esse può richiedere l’esecuzione di un numeroabbastanza elevato di istruzioni macchina. I linguaggi ad alto livello sono piùsemplici da utilizzare per noi, però non sono direttamente comprensibili dall’e-laboratore. È necessaria pertanto una fase di traduzione del programma, svoltada particolari sw (compilatori o interpreti).Per capire meglio la differenza fra linguaggi ad alto livello e a basso livello,riportiamo di seguito il listato di un semplice programma (quello del calcolodell’area di un triangolo) nel linguaggio c++, in linguaggio assembler, e (unaparte del)lo stesso programma in linguaggio macchina.

listato del programma in C++

#include <iostream>using namespace std;

int main(){

int b,h;float area;cout << "Inserisci base e altezza " ;cin >> b >> h;area=b*h/2;cout <<"l’area è " << area << endl;

}

Page 14: Ecdl modulo 1 -Fondamenti

3 LINGUAGGI 14

listato del programma in Assembler

main:.LFB957:

.cfi_startproc

.cfi_personality 0x3,__gxx_personality_v0pushq %rbp.cfi_def_cfa_offset 16movq %rsp, %rbp.cfi_offset 6, -16.cfi_def_cfa_register 6subq $16, %rspmovl $.LC0, %esimovl $_ZSt4cout, %edicall _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKcleaq -4(%rbp), %raxmovq %rax, %rsimovl $_ZSt3cin, %edicall _ZNSirsERimovl -4(%rbp), %eaximull -8(%rbp), %eaxmovl %eax, %edxshrl $31, %edxleal (%rdx,%rax), %eaxsarl %eaxcvtsi2ss %eax, %xmm0movss %xmm0, -12(%rbp)movl $.LC1, %esimovl $_ZSt4cout, %edicall _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKcmovss -12(%rbp), %xmm0movq %rax, %rdicall _ZNSolsEfmovl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esimovq %rax, %rdicall _ZNSolsEPFRSoS_Emovl $0, %eaxleaveret.cfi_endproc

Risulta evidente come sia maggiormante comprensibile il programma scrittoin linguaggio ad alto livello (nel nostro caso C++) rispetto al programma inlinguaggio Assembler.

Page 15: Ecdl modulo 1 -Fondamenti

3 LINGUAGGI 15

Per completezza riportiamo anche una parte dello stesso programma inlinguaggio macchina:

3.2.1 Fasi di creazione del software

Le fasi necessarie per la creazione di un programma sono le seguenti:

• Analisi del problema

• progettazione dell’algoritmo

• traduzione dell’algoritmo in un linguaggio procedurale: si ottiene il pro-gramma (o codice) sorgente

• traduzione del sorgente attraverso il compilatore: si ottiene il programmaoggetto

• collegamento (link) del programma oggetto con le librerie: si ottiene ilprogramma eseguibile.

Page 16: Ecdl modulo 1 -Fondamenti

3 LINGUAGGI 16

Il compilatore è in grado di rilevare gli errori formali (lessicali e sintattici) delprogramma, ma non gli errori logici (bug) dovuti ad un algoritmo errato, chepossono essere scoperti solo con l’esecuzione del programma; così dobbiamoaggiungere ai passaggi elencati il seguente:

• test del programma

3.3 Pseudolinguaggio

Per rappresentare gli algoritmi, oltre ai diagrammi a blocchi che abbiamo giàvisto, (e che, oltre all’innegabile vantaggio di rappresentare in forma grafical’algoritmo, hanno anche grosse pecche) esistono altri formalismi, detti pseudo-linguaggi. Sono linguaggi che, grazie soprattutto ad una sintassi non partico-larmente rigida, costituiscono una via di mezzo tra il linguaggio naturale e ilinguaggi di programmazione. Gli pseudo-linguaggi hanno delle parole chiave;noi possiamo assumere di utilizzare le seguenti:

• INIZIO(<nome algoritmo>), FINE(<nome algoritmo>) per delimitare l’al-goritmo

• ACQUISISCI e COMUNICA per le operazioni di ingresso ed uscita

• <-, per effettuare calcoli e assegnare valori alle variabili

• SE... ALLORA... ALTRIMENTI... FINESE per la struttura di selezione

• MENTRE... FINEMENTRE per la struttura iterativa (ciclo)

• RIPETI .... FINCHÈ per un’altra forma della struttura iterativa.

Page 17: Ecdl modulo 1 -Fondamenti

3 LINGUAGGI 17

Di seguito vengono affiancate le strutture di controllo dello pseudo-linguaggioora introdotto, con i corrispettivi diagrammi a blocchi, a cui lo studente è giàabituato:

Sequenza di istruzioni

<istruzione 1><istruzione 2>

:<istruzione n>

<istruzione 2>

<istruzione n>

:

<istruzione 1>

Struttura alternativa

SE <cond>ALLORA

<istruzione v1>:

<istruzione vn>ALTRIMENTI

<istruzione f1>:

<istruzione fm>FINESE

<cond>

<istruzione v1>

<istruzione vn>

<istruzione f1>

<istruzione fn>

::

VF

Page 18: Ecdl modulo 1 -Fondamenti

3 LINGUAGGI 18

La struttura alternativa può anche avere la seguente forma:

Struttura alternativa

SE <cond>ALLORA

<istruzione v1>:

<istruzione vn>FINESE

<cond>

<istruzione v1>

<istruzione vn>

:

F

V

:

Struttura iterativa MENTRE

MENTRE <cond><istruzione 1>

:<istruzione n>

FINEMENTRE

<cond>

<istruzione 1>

<istruzione n>

:

V

F

Page 19: Ecdl modulo 1 -Fondamenti

3 LINGUAGGI 19

Struttura iterativa RIPETI

RIPETI<istruzione 1>

:<istruzione n>

FINCHÈ <cond>

<cond>

<istruzione 1>

<istruzione n>

:

F

V

Lo studente è invitato a descrivere le differenze tra le due strutture iterative(MENTRE e RIPETI).Possiamo ora cimentarci nella traduzione dei tre algoritmi precedentemente vistinel nostro pseudo-linguaggio. L’algoritmo del calcolo dell’area di un triangolodiventa:

INIZIO (Area Triangolo)ACQUISISCI b, ha <- (b * h) /2COMUNICA a

FINE (Area Triangolo)

L’algoritmo che stabilisce se un numero a è divisibile per un numero b sarà:

INIZIO(Divisibile)ACQUISISCI a,br <- resto(a,b);SE r = 0

ALLORACOMUNICA "a è divisibile per b"

ALTRIMENTICOMUNICA "a non è divisibile per b"

FINESEFINE(Divisibile)

Da notare il rientro (indentazione) che favorisce la comprensione della strut-tura logica dell’algoritmo.

Page 20: Ecdl modulo 1 -Fondamenti

3 LINGUAGGI 20

Vediamo infine l’algoritmo di Euclide per il calcolo del Massimo ComunDivisore fra due numeri:

INIZIO(Massimo Comun Divisore)ACQUISISCI a,br <- resto(a,b);MENTRE r <> 0

a <- bb <- rr <- resto (a,b)

FINEMENTRECOMUNICA "il risultato è " b

FINE(Massimo Comun Divisore)

Il simbolo ’<>’ è usato in informatica al posto di ’6=’.

Page 21: Ecdl modulo 1 -Fondamenti

RIFERIMENTI BIBLIOGRAFICI 21

Riferimenti bibliografici

[1] Mariella Grisà, Fabiana Guerra. ECDL Open Source. McGraw-Hill, 2008.

[2] A. Lorenzi, M. Govoni. Manuale Atlas per la patente europea del computer.

Atlas, 2009.

[3] Aiello, Albano, Attardi, Montanari. Teoria della computabilità, logica, teoriadei linguaggi formali. ETS 1979.

[4] Pino Tropeano. ECDL - Appunti Modulo 1 Release 2009.

——————————–