Ecdl modulo 1 -Fondamenti
Upcoming SlideShare
Loading in...5
×
 

Ecdl modulo 1 -Fondamenti

on

  • 2,968 views

 

Statistics

Views

Total Views
2,968
Views on SlideShare
2,945
Embed Views
23

Actions

Likes
0
Downloads
69
Comments
0

3 Embeds 23

http://angelacristina.it 13
http://www.angelacristina.it 9
http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Ecdl modulo 1 -Fondamenti Ecdl modulo 1 -Fondamenti Document Transcript

  • ECDL - Modulo 1 Fondamenti Angela Gay 25 gennaio 2010Indice1 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 . . . . . . . . . . . 42 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. . . . . . . 93 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Bibliografia 21 1
  • 1 GLI ALGORITMI 21 Gli algoritmiIl 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.FINE Questo sequenza di istruzioni costituisce un algoritmo.1.1 Definire il termine algoritmoSiamo 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.
  • 1 GLI ALGORITMI 3Da 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 bFINE Questo è il nostro secondo algoritmo.
  • 1 GLI ALGORITMI 41.3 Rappresentare algoritmi mediante diagrammiPer 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 Significato dei principali blocchi Inizio e fine input e output operazioni di calcolo test
  • 1 GLI ALGORITMI 5Determinare se un numero a è divisibile per un numero bAlgoritmo di Euclide per il calcolo del MCDLe 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.
  • 1 GLI ALGORITMI 6 INIZIO acquisisci a e b r <- resto(a:b) SI comunica: r=0? b è il risultato NO a <- b FINE b <- r r<-resto(a:b)Lo studente è inviatato a provare l’algoritmo di Euclide, assegnando ad a e bvalori naturali positivi, e compilando tabelle sull’esempio di quelle riporate diseguito (cerchiato in rosso il risultato prodotto dall’algoritmo). seconda prova: a = 5; b = 20 prima prova: a = 15; b = 3 a b r a b r valori iniziali 5 20 5 valori iniziali 15 3 ○ 0 prima iterazione 20 5 ○ 0 terza prova: a = 12; b = 20 prova tu: a = 25; b = 7 a b r a b r valori iniziali 12 20 12 valori iniziali 25 7 prima iterazione 20 12 8 prima iterazione seconda iterazione 12 8 4 seconda iterazione terza iterazione 8 4 ○ 0 terza iterazione
  • 2 RAPPRESENTAZIONE DEI DATI 7Prova anche con le seguenti coppie di valori: (a = 12, b = 105); (a = 42, b = 45).2 Rappresentazione dei datiVedremo 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 · 102Anche il sistema di numerazione binario (in base 2) è posizionale:Esempio 3 (10110)2 = 0 · 20 + 1 · 21 + 1 · 22 + 0 · 23 + 1 · 24 = 22La 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)10Per 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 1 13 2 1 6 2 0 3 2 1 1 2 1 0
  • 2 RAPPRESENTAZIONE DEI DATI 82.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 a 00000010 corrisponde a b 00000011 corrisponde a c 00000100 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 estesoOvviamente, 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
  • 2 RAPPRESENTAZIONE DEI DATI 9può 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 UNICODELa 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
  • 3 LINGUAGGI 10un 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 ciascun pixel. • TIFF (Tag Image File Format) è un formato comune nello scambio di immagini bitmap tra programmi diversi; per esempio i file acquisiti con lo scanner 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 algoritmi di compressione che devono conciliare l’esigenza di un’alta qualità dell’im- magine con la minima dimensione del file, molto usato nel web soprattutto per le foto. • PNG (Portable Network Graphics) altro formato di compressione di im- magini, destinato a sostituire il GIF in quanto presenta miglioramenti ed un 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 vantaggio sta nel fatto che è possibile modificare le dimensioni dell’immagine senza perderne le qualità, come invece accade con gli altri formati. Tra i formati di grafica vettoriale menzioniamo: – SVG è un formato aperto, le cui specifiche sono cioè pubbliche. – WMF (Windows Meta File); formato di grafica vettoriale proprie- tario.3 Linguaggi3.1 Cenni di logicaIn 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.
  • 3 LINGUAGGI 11Alcuni 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 F F V F V F F V V V3.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 F F V V V F V V V V3.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 V V F
  • 3 LINGUAGGI 123.2 Linguaggi naturali e linguaggi formaliLa 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 Artificiali Naturali (formali) ad alto a basso livello livelloI 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
  • 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; }
  • 3 LINGUAGGI 14listato del programma in Assemblermain:.LFB957: .cfi_startproc .cfi_personality 0x3,__gxx_personality_v0 pushq %rbp .cfi_def_cfa_offset 16 movq %rsp, %rbp .cfi_offset 6, -16 .cfi_def_cfa_register 6 subq $16, %rsp movl $.LC0, %esi movl $_ZSt4cout, %edi call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc leaq -4(%rbp), %rax movq %rax, %rsi movl $_ZSt3cin, %edi call _ZNSirsERi movl -4(%rbp), %eax imull -8(%rbp), %eax movl %eax, %edx shrl $31, %edx leal (%rdx,%rax), %eax sarl %eax cvtsi2ss %eax, %xmm0 movss %xmm0, -12(%rbp) movl $.LC1, %esi movl $_ZSt4cout, %edi call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc movss -12(%rbp), %xmm0 movq %rax, %rdi call _ZNSolsEf movl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi movq %rax, %rdi call _ZNSolsEPFRSoS_E movl $0, %eax leave ret .cfi_endproc Risulta evidente come sia maggiormante comprensibile il programma scrittoin linguaggio ad alto livello (nel nostro caso C++) rispetto al programma inlinguaggio Assembler.
  • 3 LINGUAGGI 15 Per completezza riportiamo anche una parte dello stesso programma inlinguaggio macchina:3.2.1 Fasi di creazione del softwareLe 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 programma oggetto • collegamento (link) del programma oggetto con le librerie: si ottiene il programma eseguibile.
  • 3 LINGUAGGI 16Il 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 programma3.3 PseudolinguaggioPer 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.
  • 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 1> <istruzione 2> <istruzione 2> : <istruzione n> : <istruzione n> Struttura alternativa F V SE <cond> <cond> ALLORA <istruzione v1> : <istruzione f1> <istruzione v1> <istruzione vn> ALTRIMENTI : : <istruzione f1> : <istruzione fn> <istruzione vn> <istruzione fm> FINESE
  • 3 LINGUAGGI 18 La struttura alternativa può anche avere la seguente forma: Struttura alternativa F <cond> SE <cond> V ALLORA <istruzione v1> <istruzione v1> : : <istruzione vn> : FINESE <istruzione vn> Struttura iterativa MENTRE F <cond> MENTRE <cond> <istruzione 1> V : <istruzione n> <istruzione 1> FINEMENTRE : <istruzione n>
  • 3 LINGUAGGI 19 Struttura iterativa RIPETI <istruzione 1> RIPETI : <istruzione 1> : <istruzione n> <istruzione n> FINCHÈ <cond> V <cond> FLo 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, h a <- (b * h) /2 COMUNICA aFINE (Area Triangolo) L’algoritmo che stabilisce se un numero a è divisibile per un numero b sarà:INIZIO(Divisibile) ACQUISISCI a,b r <- resto(a,b); SE r = 0 ALLORA COMUNICA "a è divisibile per b" ALTRIMENTI COMUNICA "a non è divisibile per b" FINESEFINE(Divisibile) Da notare il rientro (indentazione) che favorisce la comprensione della strut-tura logica dell’algoritmo.
  • 3 LINGUAGGI 20 Vediamo infine l’algoritmo di Euclide per il calcolo del Massimo ComunDivisore fra due numeri:INIZIO(Massimo Comun Divisore) ACQUISISCI a,b r <- resto(a,b); MENTRE r <> 0 a <- b b <- r r <- resto (a,b) FINEMENTRE COMUNICA "il risultato è " bFINE(Massimo Comun Divisore)Il simbolo ’<>’ è usato in informatica al posto di ’=’.
  • RIFERIMENTI BIBLIOGRAFICI 21Riferimenti 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, teoria dei linguaggi formali. ETS 1979.[4] Pino Tropeano. ECDL - Appunti Modulo 1 Release 2009. ——————————–