Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoAmedeo Fedele Modificato 8 anni fa
1
Linguaggi di programmazione La successione di Fibonacci A.A. 2015 - 2016Damiano Radici1 Informatica e tecnologie della comunicazione digitale
2
Agenda A.A. 2015 - 2016Damiano Radici2 2Analisi e sviluppo dell’algoritmo di Fibonacci 3I linguaggi di programmazione 4 Paradigmi della programmazione 5 Il codice Fibonacci (Pascal, VBasic, C/C++, Java) 1Fibonacci e la sua “successione”
3
Fibonacci e la sua “successione” A.A. 2015 - 2016Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale3 Matematico italiano, visse la sua giovinezza in Algeria dove imparò le cifre indo-arabiche, elaborò l’aritmetica che conosciamo e introdusse lo 0 (zero). Risolse molti problemi matematici legati alla riproduzione e al fenomeno della crescita e dell’evoluzione della vita. Leonardo Pisano detto il Fibonacci [1] (Pisa, Settembre 1175 ca. - Pisa, 1235 ca.) In matematica, la successione di Fibonacci, indicata con Fn o con Fib ( n ), è una succes- sione di numeri interi positivi in cui ciascun numero è la somma dei due precedenti e i primi due termini della successione sono per definizione F 1 =1 e F 2 =1. Tale successione ha quindi una definizione ricorsiva secondo la seguente regola: F 1 =1, F 2 =1, F n = F{n-1}+F{n-2} (per ogni n > 2) Gli elementi F n sono anche detti numeri di Fibonacci. 1 Wikipedia, Leonardo Fibonacci, https://it.wikipedia.org/wiki/Leonardo_Fibonacci
4
Agenda A.A. 2015 - 2016Damiano Radici4 2Analisi e sviluppo dell’algoritmo di Fibonacci 3I linguaggi di programmazione 4 Paradigmi della programmazione 5 Il codice Fibonacci (Pascal, VBasic, C/C++, Java) 1Fibonacci e la sua “successione”
5
Analisi e sviluppo dell’algoritmo di Fibonacci A.A. 2015 - 20165Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Il problema : “Scrivere un algoritmo per calcolare il sedicesimo numero di Fibonacci” Analisi : Lo sviluppo di un algoritmo per il calcolo della successione di Fibonacci, presenta le seguenti caratteristiche: problema di calcolo; di accumulo (memoria di calcolo); ricorsività dei cicli di calcolo.
6
Analisi e sviluppo dell’algoritmo di Fibonacci A.A. 2015 - 20166Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Il FlowChart : START F 1 = 1 F 2 = 1 CONT = 3 F 16 = Ø CONT > 16 F 16 = F 1 + F 2 F 1 = F 2 CONT = CONT + 1 F 2 = F 16 Stampa F 16 END SI NO START F 1 = 1 F 2 = 1 COUNT = 3 F 16 = Ø COUNT > 16 COUNT > 16 F 16 = F 1 + F 2 F 1 = F 2 COUNT = COUNT + 1 F 2 = F 16 Stamp F 16 END
7
Analisi e sviluppo dell’algoritmo di Fibonacci A.A. 2015 - 20167Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Il FlowChart : START F 1 = 1 F 2 = 1 CONT = 3 F 16 = Ø CONT > 16 F 16 = F 1 + F 2 F 1 = F 2 CONT = CONT + 1 F 2 = F 16 Stampa F 16 END SI NO START F 1 = 1 F 2 = 1 COUNT = 3 F 16 = Ø COUNT > 16 COUNT > 16 F 16 = F 1 + F 2 F 1 = F 2 COUNT = COUNT + 1 F 2 = F 16 Stamp F 16 END COUNT F 16 F1F1 F2F2 1 1,111 2 3212 4323 5535 6858 7138 8211321 9342134 10553455 11895589 1214489144 13233144233 14377233377 15610377610 16987610987 1715979871597 IL calcolo
8
Agenda A.A. 2015 - 2016Damiano Radici8 2Analisi e sviluppo dell’algoritmo di Fibonacci 3I linguaggi di programmazione 4 Paradigmi della programmazione 5 Il codice Fibonacci (Pascal, VBasic, C/C++, Java) 1Fibonacci e la sua “successione”
9
I linguaggi di programmazione A.A. 2015 - 20169Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale La programmazione La programmazione può essere definita come la disciplina che demanda al calcolatore elettronico la soluzione di un determinato problema. Un linguaggio di programmazione è, di conseguenza, lo strumento utilizzato per scrivere programmi che realizzano algoritmi. Da un certo punto di vista, un linguaggio di programmazione può essere immaginato come il linguaggio che consente la comunicazione tra l’uomo (in particolare, il programmatore) e il calcolatore. Il programma, quindi, non è altro che la traduzione di un algoritmo di soluzione per il problema nel linguaggio comprensibile al calcolatore. Ogni calcolatore è in grado di comprendere un particolare linguaggio di programmazione di basso livello detto linguaggio macchina, il cui testo è una sequenza di bit che il processore interpreta, secondo un funzionamento dettato dalla sua struttura fisica, eseguendo una sequenza di azioni. Ogni modello di CPU ha il suo particolare linguaggio macchina anche se vi sono molte similitudini fra un idioma e un altro.
10
I linguaggi di programmazione A.A. 2015 - 201610Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale La programmazione Abbiamo dunque da una parte l’uomo, capace di comunicare attraverso un linguaggio molto evoluto, e dall’altra il calcolatore, capace di comprendere soltanto il proprio linguaggio macchina. E’ ovvio che i primi programmatori si sono trovati costretti ad imparare il linguaggio macchina dell’elaboratore da loro utilizzato; tuttavia programmare in linguaggio macchina risulta molto difficile, noioso e frustrante perché bisogna scrivere e leggere attraverso simboli binari e bisogna guidare il calcolatore attraverso tutti i suoi passi elementari verso l’ottenimento del risultato finale della computazione. Sulla spinta del loro disagio, i primi programmatori operarono una semplificazione del linguaggio macchina introducendo il linguaggio ASSEMBLER. In questo linguaggio il codice binario delle varie istruzioni è sostituito da un codice mnemonico, ovvero vengono introdotte le variabili per rappresentare aree di memoria e i primi tipi di dato fondamentali come gli interi e i reali. La differenza tra un programma scritto in linguaggio macchina e l’equivalente scritto in ASSEMBLER può essere apprezzata nell’esempio qui di seguito riportato.
11
I linguaggi di programmazione - Esempio A.A. 2015 - 201611Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Problema calcolare z = x + y, dove x = 8 e y = 38 Soluzione in linguaggio macchina Nel linguaggio macchina bisogna stabilire quali locazioni di memoria associare alle variabili x, y e z e codificare in binario i valori numerici 8 e 38 00000000000000000000000001000000 00000000000100000000000001000100 00000010000000010000000000000000 00000001000000000000000000111100 Soluzione in ASSEMBLER mentre utilizzando l’ASSEMBLER quanto sopra non si rende più necessario: z : INT; x : INT 8; y : INT 38; LOAD R0,x; LOAD R1,y; ADD R0,R1; STORE R0,z;
12
I linguaggi di programmazione A.A. 2015 - 201612Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale La traduzione L’unico e solo linguaggio che il calcolatore è in grado di comprendere ed eseguire è il linguaggio macchina: la CPU non è in grado di eseguire programmi scritti in linguaggio ASSEMBLER. Com’è che dunque si è affermata la programmazione in ASSEMBLER? Ciò è stato possibile grazie alla realizzazione di un apposito programma (scritto dunque in linguaggio macchina), detto Assemblatore, che si preoccupa di tradurre un qualsiasi programma scritto in ASSEMBLER nel programma equivalente codificato in linguaggio macchina. I linguaggi di alto livello Una volta innescato il meccanismo di traduzione, i linguaggi di programmazione si sono evoluti fino ad arrivare ai cosiddetti linguaggi di alto livello la cui sintassi è molto più vicina al linguaggio naturale umano. Programmare in un dato linguaggio di programmazione significa generalmente scrivere uno o più semplici file di testo, chiamati codice sorgente. Il codice sorgente, contenente le istruzioni da eseguire e (spesso) alcuni dati noti e costanti, può essere poi eseguito passandolo ad un traduttore.
13
I linguaggi di programmazione A.A. 2015 - 201613Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale L’interpretazione L’interpretazione può essere vista come la riproposizione ad alto livello del ciclo di fetch-execute della macchina di von Neumann. Essa consiste nel tradurre una singola istruzione del programma sorgente nell’istruzione in linguaggio macchina equivalente, la quale viene subito eseguita, per poi passare all’interpretazione dell’istruzione successiva. Singola istruzione del programma sorgente Istruzione in linguaggio macchina equivalente Interprete 0000000001000000 0000000001000100 0000000000000000 0000000000111100 Istruzione 1 Istruzione 2 Istruzione 3 Istruzione 4 L’approccio interpretato comporta una minore efficienza a tempo di esecuzione (run- time); un programma interpretato, in esecuzione, richiede più memoria ed è meno veloce, a causa dell’overhead introdotto dall’interprete stesso.
14
I linguaggi di programmazione A.A. 2015 - 201614Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale La compilazione La compilazione consiste nel tradurre l’intero programma sorgente prima di eseguirlo. Attraverso la compilazione diviene possibile anche tradurre diversi programmi sorgenti in modo da ottenere un unico codice oggetto. programma sorgente Programma eseguibile Compilatore Istruzione 1 Istruzione 2 Istruzione 3 Istruzione 4 01000000 01000100 00000000 00111100
15
Agenda A.A. 2015 - 2016Damiano Radici15 2Analisi e sviluppo dell’algoritmo di Fibonacci 3I linguaggi di programmazione 4 Paradigmi della programmazione 5 Il codice Fibonacci (Pascal, VBasic, C/C++, Java) 1Fibonacci e la sua “successione”
16
Paradigmi della programmazione A.A. 2015 - 201616Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Esistono numerose famiglie di linguaggi, riconducibili a diversi paradigmi di programmazione. Ciascun paradigma fornisce al programmatore strumenti concettuali di diversa natura per descrivere gli algoritmi da far eseguire al calcolatore. Si parla così di un paradigma logico per quei linguaggi che consentono all’utente di esprimersi usando notazioni e concetti derivati dalla logica matematica e dal calcolo dei predicati; di paradigma funzionale se il linguaggio ha una struttura che ricorda da vicino il calcolo funzionale della matematica. Il paradigma più diffuso è quello procedurale o imperativo, ma al giorno d’oggi, il paradigma dominante è indubbiamente quello orientato agli oggetti, che deriva storicamente dal paradigma procedurale. Linguaggi imperativi Programmazione funzionale Programmazione logica Programmazione concorrente Linguaggi di scripting Programmazione orientata agli oggetti
17
Paradigmi della programmazione A.A. 2015 - 201617Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Non ha senso, in generale, parlare di linguaggi migliori o peggiori, o di linguaggi migliori in assoluto: ogni linguaggio nasce per affrontare una classe di problemi più o meno ampia, in un certo modo e in un certo ambito. Però, dovendo dire se un dato linguaggio sia adatto o no per un certo uso, è necessario valutare le caratteristiche dei vari linguaggi. A volte, un programma molto complesso e poco leggibile in un dato linguaggio può diventare assolutamente semplice e lineare se riscritto in un linguaggio di classe differente, più adatta. L’esempio più comune di linguaggio robusto (ovvero la capacità del linguaggio di prevenire, nei limiti del possibile, gli errori di programmazione) è il Pascal, che essendo nato a scopo didattico presuppone sempre che una irregolarità nel codice sia frutto di un errore del programmatore; mentre l’ASSEMBLER è l’esempio per antonomasia di linguaggio totalmente libero, in cui niente vincola il programmatore (e se scrive codice pericoloso o errato, non c’è modo di essere avvertiti). Proprietà dei linguaggi
18
Agenda A.A. 2015 - 2016Damiano Radici18 2Analisi e sviluppo dell’algoritmo di Fibonacci 3I linguaggi di programmazione 4 Paradigmi della programmazione 5 Il codice Fibonacci (Pascal, VBasic, C/C++, Java) 1Fibonacci e la sua “successione”
19
Il codice Fibonacci A.A. 2015 - 201619Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Linguaggio Pascal Il Pascal è un linguaggio di programmazione ad alto livello dove ad ogni istruzione del codice sorgente corrispondono diverse istruzioni in codice binario. Fu progettato per elaboratori elettronici nel 1969 da Niklaus Wirth, docente presso il Politecnico di Zurigo. Esso prende il nome da Blaise Pascal, un matematico francese, che fu il primo ad inventare una macchina calcolatrice: la Pascalina. Il Pascal si è rivelato utile a livello didattico per l'insegnamento dei metodi di programmazione. Esso si diffuse dapprima negli ambienti scientifici ma successivamente, grazie alla sua semplicità subì ampia diffusione. Oggi il linguaggio Pascal è poco usato per applicazioni professionali, a vantaggio di altri linguaggi più adatti a sfruttare le potenzialità del sistema operativo (C, C++, Visual Basic ecc.), ma è un ottimo strumento per iniziare a programmare data la sua semplicità.
20
Il codice Fibonacci A.A. 2015 - 201620Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Linguaggio Pascal - la struttura La struttura di base di un programma è costituita da 5 elementi: intestazione; riga che dichiara le variabili; istruzione che dichiara l'inizio del programma; corpo del programma; istruzione che dichiara la fine del programma. Ogni riga deve necessariamente terminare con un punto e virgola (;). Tutto il testo del programma, chiamato anche codice sorgente, può essere scritto indifferentemente sia in maiuscolo che in minuscolo. Struttura base: Program NOMEDELPROGRAMMA; intestazione var VARIABILI:TIPOVARIABILI; riga che dichiara le variabili begin istruzione che dichiara l'inizio del programma...... corpo del programma readln; end. istruzione che dichiara la fine del programma
21
Il codice Fibonacci A.A. 2015 - 201621Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Linguaggio Pascal - le parole riservate Le parole riservate sono parole che non possono esser usate né come nome di un programma, né come nome di una variabile, poiché sono istruzioni. Alcune parole riservate sono:
22
Il codice Fibonacci A.A. 2015 - 201622Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Linguaggio Pascal - il programma (codice) program fibonacci; uses crt; function fib(n:integer): integer; begin if (n <= 2) then fib := 1 else fib := fib(n-1) + fib(n-2); end; var i:integer; begin for i := 1 to 16 do write(fib(i), ', '); writeln('...'); end.
23
Il codice Fibonacci A.A. 2015 - 201623Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Linguaggio (Visual) BASIC Il BASIC (Beginner's All-purpose Symbolic Instruction Code), in informatica, è un linguaggio di programmazione ad alto livello. Ne furono coinventori i professori John George Kemeny e Thomas Eugene Kurtz. Il primo programma in BASIC "girò" il 1º maggio 1964 alle ore 4:00. [2] Alla stregua degli altri linguaggi, anche il BASIC possiede un proprio gruppo di parole riservate (parser comandi), inoltre: la traduzione da meta-programma a programma Visual Basic è quasi immediata i programmi iniziano con Sub main() e finiscono con End Sub per dichiarare una variabile si usa l’istruzione Dim, specificando il tipo As Integer: la variabile è di tipo “numero intero” As Double: la variabile è di tipo “numero decimale” As String: la variabile è di tipo “testo” As Boolean: la variabile è di tipo “booleano” (vero o falso) per leggere un dato si usa l’istruzione InputBox per scrivere qualcosa si usa l’istruzione MsgBox 2 Wikipedia, BASIC, https://it.wikipedia.org/wiki/BASIC
24
Il codice Fibonacci A.A. 2015 - 201624Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Linguaggio Visual Basic - il programma (codice)
25
Il codice Fibonacci A.A. 2015 - 201625Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Linguaggio C/C ++ Il C è un linguaggio di programmazione relativamente minimalista; la sua semantica utilizza un insieme ristretto di concetti relativamente semplici e vicini al funzionamento dell'hardware dei calcolatori. La sintassi del C è piuttosto versatile e il linguaggio è in forma libera, permettendo di scrivere istruzioni complesse in poche righe di codice, o di creare programmi criptici e illeggibili (offuscamento del codice) [3]. 3 Wikipedia, C (linguaggio), https://it.wikipedia.org/wiki/C_(linguaggio) Il C/C++ è un linguaggio di programmazione ad alto livello che integra caratteristiche dei linguaggi di basso livello, come il linguaggio macchina e l'assembly, per questo si usa anche l'espressione "di medio livello". Il C ha, e continua ad avere, anche una notevole importanza didattica, sebbene, per la sua complessità semantica e per le forti relazioni di tale semantica con il funzionamento dell'hardware dei computer, non si tratti di un linguaggio particolarmente intuitivo per i principianti.
26
Il codice Fibonacci A.A. 2015 - 201626Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Linguaggio C/C ++ - le parole riservate Il linguaggio C (come qualsiasi altro linguaggio di programmazione) consente la realizzazione di programmi adoperando un insieme di "parole chiave" (keywords). Lo standard ANSI ha definito il seguente insieme di parole chiave:
27
Il numero 3 == 2 F1=1 F2=1 Count=2 F16=2 F1=1 F2=2 Count=3 Debugger Il numero 3 == 2 Il numero 4 == 3 F16=3 F1=2 F2=3 Count=4 Debugger Il numero 3 == 2 Il numero 4 == 3 Il numero 5 == 5 F16=5 F1=3 F2=5 Count=5 Debugger Il numero 3 == 2 Il numero 4 == 3 Il numero 5 == 5 Il numero 6 == 8 F16=8 F1=5 F2=8 Count=6 Debugger Il codice Fibonacci A.A. 2015 - 201627Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Linguaggio C ++ - il programma (codice) #include using namespace std; int main(void) { inizio: int F1,F2,COUNT,F16; do { F1=1; F2=1; { for (COUNT=2;COUNT<16;COUNT++) { F16=F1+F2; F1=F2; F2=F16; cout<<"Il numero "<<COUNT+1<<"=="; cout<<F2<<endl; } cout<<endl; } return 0; } Il numero 3 == 2 Il numero 4 == 3 Il numero 5 == 5 Il numero 6 == 8 Il numero 7 == 13 F16=13 F1=8 F2=13 Count=7 Debugger Il numero 3 == 2 Il numero 4 == 3 Il numero 5 == 5 Il numero 6 == 8 Il numero 7 == 13 Il numero 8 == 21 F16=21 F1=13 F2=21 Count=8 Debugger Il numero 3 == 2 Il numero 4 == 3 Il numero 5 == 5 Il numero 6 == 8 Il numero 7 == 13 Il numero 8 == 21 Il numero 9 == 34 F16=34 F1=21 F2=34 Count=9 Debugger Il numero 3 == 2 Il numero 4 == 3 Il numero 5 == 5 Il numero 6 == 8 Il numero 7 == 13 Il numero 8 == 21 Il numero 9 == 34 Il numero 10 == 55 F16=55 F1=34 F2=55 Count=10 Debugger Il numero 3 == 2 Il numero 4 == 3 Il numero 5 == 5 Il numero 6 == 8 Il numero 7 == 13 Il numero 8 == 21 Il numero 9 == 34 Il numero 10 == 55 Il numero 11 == 89 F16=89 F1=55 F2=89 Count=11 Debugger Il numero 3 == 2 Il numero 4 == 3 Il numero 5 == 5 Il numero 6 == 8 Il numero 7 == 13 Il numero 8 == 21 Il numero 9 == 34 Il numero 10 == 55 Il numero 11 == 89 Il numero 12 == 144 F16=144 F1=89 F2=144 Count=12 Debugger Il numero 3 == 2 Il numero 4 == 3 Il numero 5 == 5 Il numero 6 == 8 Il numero 7 == 13 Il numero 8 == 21 Il numero 9 == 34 Il numero 10 == 55 Il numero 11 == 89 Il numero 12 == 144 Il numero 13 == 233 F16=233 F1=144 F2=233 Count=13 Debugger Il numero 3 == 2 Il numero 4 == 3 Il numero 5 == 5 Il numero 6 == 8 Il numero 7 == 13 Il numero 8 == 21 Il numero 9 == 34 Il numero 10 == 55 Il numero 11 == 89 Il numero 12 == 144 Il numero 13 == 233 Il numero 14 == 377 F16=377 F1=233 F2=377 Count=14 Debugger Il numero 3 == 2 Il numero 4 == 3 Il numero 5 == 5 Il numero 6 == 8 Il numero 7 == 13 Il numero 8 == 21 Il numero 9 == 34 Il numero 10 == 55 Il numero 11 == 89 Il numero 12 == 144 Il numero 13 == 233 Il numero 14 == 377 Il numero 15 == 610 F16=610 F1=377 F2=610 Count=15 Debugger Il numero 3 == 2 Il numero 4 == 3 Il numero 5 == 5 Il numero 6 == 8 Il numero 7 == 13 Il numero 8 == 21 Il numero 9 == 34 Il numero 10 == 55 Il numero 11 == 89 Il numero 12 == 144 Il numero 13 == 233 Il numero 14 == 377 Il numero 15 == 610 Il numero 16 == 987 F16=987 F1=610 F2=987 Count=16 Debugger
28
Il codice Fibonacci A.A. 2015 - 201628Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Linguaggio Java 4 Wikipedia, Java (linguaggio di programmazione), https://it.wikipedia.org/wiki/Java_(linguaggio_di_programmazione) In informatica Java è un linguaggio di programmazione orientato agli oggetti a tipizzazione statica, specificatamente progettato per essere il più possibile indipendente dalla piattaforma di esecuzione. Per facilitare il passaggio a Java ai programmatori old-fashioned, legati in particolare a linguaggi come il C++, la sintassi di base (strutture di controllo, operatori e così via) è stata mantenuta pressoché identica a quella del C++; tuttavia, non sono state introdotte caratteristiche ritenute fonti di una complessità non necessaria a livello di linguaggio e che favoriscono l'introduzione di determinati bug durante la programmazione, come l'aritmetica dei puntatori, l'ereditarietà multipla delle classi. Java fu annunciato ufficialmente il 23 maggio 1995 a SunWorld. Il 13 novembre 2006 la Sun Microsystems ha distribuito la sua implementazione del compilatore Java e della macchina virtuale (virtual machine) sotto licenza GPL. Non tutte le piattaforme java sono libere. L'ambiente Java libero si chiama IcedTea. [4]
29
Il codice Fibonacci A.A. 2015 - 201629Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale Linguaggio Java - il programma (codice) public class Fibonacci { public static int fib(int n) { if (n < 2) { return n; } else { return fib(n-1)+fib(n-2); } public static void main(String[] args) { for (int i=0; i<16; i++) System.out.print(fib(i)+", "); }
30
A.A. 2015 - 201630Damiano Radici – Corso di Informatica e tecnologie della comunicazione digitale
31
Linguaggi di programmazione La successione di Fibonacci A.A. 2015 - 2016Damiano Radici31 Informatica e tecnologie della comunicazione digitale
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.