Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoNatalia Di Marco Modificato 8 anni fa
1
INFORMATICA ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE
2
PROGRAMMI Un computer e’ una macchina per eseguire PROGRAMMI Un programma e’ un ALGORITMO per risolvere un certo PROBLEMA scritto secondo le regole di un LINGUAGGIO DI PROGRAMMAZIONE
3
ALGORITMO Un PROGRAMMA e’ un ALGORITMO posto in forma comprensibile al computer Definizione informale di ALGORITMO: una sequenza FINITA di passi NON AMBIGUI che porta alla soluzione di un problema Questa definizione si puo’ applicare al di fuori dell’Informatica: nella matematica (da cui ha origine) ma anche nella cucina
4
UN QUASI-ALGORITMO: LA RICETTA PER LA BAGNA CAUDA 1. Cuocere gli spicchi di aglio, coperti con il latte, fino a quando non diventino teneri. 2. Tritare l'aglio 3. Unirlo all'olio, alle acciughe tagliate molto finemente 4. Cuocere a fiamma moderata e mescolare fino a far ridurre il contenuto in un composto omogeneo. 5. Dopo circa venti minuti aggiungere qualche fiocco di burro 6. Servire in tavola con le verdure.
5
PERCHE’ QUASI- ALGORITMO? Numero di passi e’ finito Ma molti passi sono ambigui: ‘teneri’? `fiamma moderata’?
6
UN PROBLEMA, DUE ALGORITMI: IL MASSIMO COMUN DIVISORE
7
MCD: UN ALGORITMO ELEMENTARE A scuola si impara un algoritmo molto semplice per calcolare MCD: la SCOMPOSIZIONE IN FATTORI PRIMI 42 = 2 x 3 x 7 56 = 2 x 2 x 2 x 7 Algoritmo MCD(M, N): 1. Scomponi M ed N in fattori primi 2. Estrai i componenti comuni Questo metodo si’ puo’ solo applicare per numeri piccoli (la scomposizione in fattori primi e’ molto costosa)
8
MCD: L’ALGORITMO DI EUCLIDE MCD(M,N): 1. RIPETI finche’ M N 2. SE M > N, M M –N; 3. ALTRIMENTI, N N – M; 4. RITORNA al passo 1; 5. OUTPUT M
9
ESEMPIO MCD(42,56): M(42) N(56); N (56) > M (42) N 14 M(42) N(14); M (42) > N (14); M 28 M(28) N(14) M(28) > N (14); M 14 OUTPUT: 14 MCD(M,N): 1. RIPETI finche’ M N 2. SE M > N, M M –N; 3. ALTRIMENTI, N N – M; 4. RITORNA al passo 1; 5. OUTPUT M
10
MCD: L’ALGORITMO DI EUCLIDE, II MCD(M,N): 1. Dividi M per N; sia R il resto 2. Se R = 0, termina; MCD = N 3. Altrimenti, M = N, N = R, e ritorna da
11
UN ALGORITMO PIU’ FORMALE (CLASSIFICAZIONE DELLA TEMPERATURA) INPUT: una temperatura in Celsius ALGORITMO: 1. SE temperatura > 30 2. ALLORA caldo 3. ALTRIMENTI freddo OUTPUT: CALDO o FREDDO
12
ALCUNE CONSIDERAZIONI: PROBLEMI ED ALGORITMI Ci sono sempre molti algoritmi per risolvere un problema Parte dell’arte della programmazione e’ trovare gli algoritmi piu’ efficienti
13
ALGORITMI E FUNZIONI In termini matematici, un algoritmo puo’ essere visto come una FUNZIONE che produce un certo OUTPUT dato un certo INPUT Per esempio, MCD(42,56) = 14 Due algoritmi si dicono EQUIVALENTI se producono lo stesso output dato lo stesso input. Fattori primi e Euclide sono EQUIVALENTI (ma non egualmente efficienti!!)
14
ALGORITMI PIU’ COMUNI IN INFORMATICA Algoritmi MATEMATICI Per fare calcoli anche molto complessi (per esempio, integrali, la scoperta di numeri primi) Algoritmi di ORDINAMENTO 45 2 17 28 101 2 17 28 45 101 Algoritmi di RICERCA Algoritmi per il TRATTAMENTO DELLE STRINGHE COMPILATORI Algoritmi di COMPRESSIONE
15
DA ALGORITMI A PROGRAMMI
16
LINGUAGGI DI PROGRAMMAZIONE Un linguaggio di programmazione permette di esprimere certi tipi di istruzioni in modo che possano venire poi convertite in istruzioni macchina Un linguaggio di programmazione e’ caratterizzato da SINTASSI (come vengono scritte le istruzioni) SEMANTICA (come devono venire interpretate)
17
CONSIDERAZIONI, II: INGREDIENTI ESSENZIALI DI UN LINGUAGGIO DI PROGRAMMAZIONE MCD(M,N): 1. RIPETI finche’ M N 2. SE M > N, M M –N; 3. ALTRIMENTI, N N – M; 4. RITORNA al passo 1; 5. OUTPUT M
18
INGREDIENTI ESSENZIALI DI UN LINGUAGGIO DI PROGRAMMAZIONE Poter mettere istruzioni in SEQUENZA Poter cambiare l’ordine di esecuzione sulla base di TEST Poter RIPETERE istruzioni Questi ingredienti vengono catturati tramite i DIAGRAMMI DI FLUSSO
19
DIAGRAMMI DI FLUSSO Una rappresentazione grafica usata per descrivere in modo piu’ preciso i passi di un algoritmo senza usare una sintassi specifica Un diagramma e’ composto da una serie di BLOCCHI uniti da archi
20
ESEMPIO: AREA DEL RETTANGOLO Calcolo dell’area di un rettangolo AREA: 1. Leggi da input l’altezza H 2. Leggi da input la base B 3. Calcola l’area A 4. Produci in output il risultato
21
AREA DEL RETTANGOLO: DIAGRAMMA DI FLUSSO
22
BLOCCHI: INIZIO E FINE PROGRAMMA
23
BLOCCHI: ISTRUZIONI ELEMENTARI COUNT 0COUNT COUNT + 1
24
BLOCCHI: INPUT / OUTPUT
25
LE VARIABILI Molti algoritmi richiedono un qualche modo per immagazzinare i risultati di certi calcoli. Per esempio, nell’algoritmo per MCD, M e N Quasi tutti i linguaggi di programmazione permettono di usare delle VARIABILI per questo scopo. Una variabile puo’ essere pensata come un nome per una zona di memoria.
26
VARIABILI NELL’ALGORITMO DI EUCLIDE MCD( M,N ): 1. RIPETI finche’ M N 2. SE M > N, M M – N ; 3. ALTRIMENTI, N N – M ; 4. RITORNA al passo 1; 5. OUTPUT M
27
ESEMPIO: SCAMBIO DI VALORI 1. Leggi il valore della prima variabile X 2. Leggi il valore della seconda variabile Y 3. Salva il valore di X in una variable Aux per ricordarlo 4. Assegna ad X il valore di Y 5. Assegna a Y il valore di Aux
28
DIAGRAMMA DI FLUSSO
29
CONDIZIONALI Un’altro degli ingredienti fondamentali di un linguaggio di programmazione e’ la possibilita’ di scegliere di eseguire istruzioni diverse a seconda dei risultati di un TEST
30
CONDIZIONALI
31
ESEMPIO: PARI O DISPARI 1. Leggi N 2. Dividi N per 2 3. Se Resto = 0 scrivi: N e’ pari 4. Altrimenti scrivi: N e’ dispari
32
PARI E DISPARI
33
RIPETIZIONI L’ultimo componente fondamentale di un linguaggio di programmazione e’ la possibilita’ di ripetere le stesse azioni un gran numero di volte
34
RIPETIZIONI
35
ALGORITMO DI EUCLIDE M N OUTPUT:M M > N? M M - NN N - M STOP START F T T F
36
LINGUAGGI DI PROGRAMMAZIONE Il calcolatore comprende istruzioni in LINGUAGGIO MACCHINA 0011 001 010 Una prima astrazione dal linguaggio macchina sono i cosiddetti ASSEMBLER che esprimono le istruzioni macchina in formato simbolico ADD R1 R2 Una seconda astrazione sono i linguaggi di programmazione AD ALTO LIVELLO che astraggono dalle istruzioni macchina X X + Y
37
ALGORITMO DI EUCLIDE IN UN TIPICO LINGUAGGIO AD ALTO LIVELLO function MCD(M,N) while M ≠ N if M > N then M M - N else N N - M return M
38
COMPILATORE E’ un programma che trasforma un programma espresso in linguaggio ad alto livello (PROGRAMMA SORGENTE) in linguaggio macchina (PROGRAMMA OGGETTO) In Windows: crea file.exe Linguaggi tipicamente compilati: C, C++, Fortran, Pascal
39
COMPILATORI
40
INTERPRETI Un interprete e’ un programma che interpreta le istruzioni di un programma ad alto livello DIRETTAMENTE, senza tradurle in linguaggio macchina Tipici linguaggi interpretati: Java, Lisp, Perl, Python
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.