INFORMATICA ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE.

Slides:



Advertisements
Presentazioni simili
Software di base: Linguaggi di Programmazione
Advertisements

Algoritmi e Programmazione
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione lll
INFORMATICA UMANISTICA B
INFORMATICA UMANISTICA B ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE.
ANNUNCI MODULO C, D, E LABORATORI SONO INIZIATI
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica Algoritmi
Gli algoritmi.
DIAGRAMMI DI FLUSSO Notazione grafica usata per descrivere in modo intuitivo le azioni di cui è fatto un algoritmo. Viene usata per descrivere i passi.
Elementi di Informatica
Elementi di Informatica
Dall’algoritmo al programma.
ELEMENTI DI PROGRAMMAZIONE
PROGRAMMAZIONE: linguaggi
Massimo Comun Divisore
Linguaggi per COMUNICARE
DIVERTIRSI CON SCRATCH
Dal problema all’ algoritmo
L’ELABORATORE ELETTRONICO uno strumento in grado di eseguire insiemi di azioni (“mosse”) elementari le azioni vengono eseguite su oggetti (dati) per produrre.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
Click to edit Master title styleAlgoritmo algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito,
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
I linguaggi di programmazione Gruppo iOS 47: Colombini Christian Flora Jonathan Rossi Francesco.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI LINGUAGGIO MACCHINA.
ALGORITMI e DIAGRAMMI DI FLUSSO
Fondamenti di programmazione Prof.ssa Elisa Tiezzi
Algoritmo algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta.
© 2007 SEI-Società Editrice Internazionale, Apogeo
LA PROGRAMMAZIONE: Algoritmi e programmi
La rappresentazione degli algoritmi
Sistemi e Applicazioni per l’Amministrazione Digitale
Lavoro di gruppo 3^E sia Peroni Jessica Mascheroni Beatrice
MASSIMO COMUNE DENOMINATORE (M.C.D)
Dal problema al processo risolutivo
Richiami di concetti generali
Algoritmi e soluzioni di problemi
IL CONCETTO DI ALGORITMO
Dal problema al processo risolutivo
Programmazione strutturata
Forme per rappresentare l’algoritmo:
Process synchronization
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora
Classe III A A.s – 2012 Programma di Informatica
IL CONCETTO DI ALGORITMO
Programmazione e Laboratorio di Programmazione
Programmare.
© 2007 SEI-Società Editrice Internazionale, Apogeo
START ALGORITMO PER L’ACCENSIONE DEL CELLULARE ACCENDI CELLULARE
Dall’analisi del problema alla definizione dell’algoritmo
Strutture di Controllo
Secondo Programma in C.
Esempi di algoritmi.
© 2007 SEI-Società Editrice Internazionale, Apogeo
A = InputBox("Immetti un numero")
Ricorsione 16/01/2019 package.
PROBLEMA: DATI DUE NUMERI, SCRIVERLI IN ORDINE CRESCENTE.
Definizione di linguaggio di programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Programmazione e Laboratorio di Programmazione
Il Diagramma di Flusso Docente: Maria Savina Rossi Alunne:
Informatica CdL Scienze e Tecniche Psicologiche a.a
La programmazione strutturata
Algoritmi.
ALGORITMO E’ una successione finita di passi che consente di risolvere tutti i problemi di una classe e di determinare il risultato. Caratteristiche: Finito.
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

INFORMATICA ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE

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

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

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.

PERCHE’ QUASI- ALGORITMO? Numero di passi e’ finito Ma molti passi sono ambigui: ‘teneri’? `fiamma moderata’?

UN PROBLEMA, DUE ALGORITMI: IL MASSIMO COMUN DIVISORE

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)

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

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

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

UN ALGORITMO PIU’ FORMALE (CLASSIFICAZIONE DELLA TEMPERATURA) INPUT: una temperatura in Celsius ALGORITMO: 1. SE temperatura > ALLORA caldo 3. ALTRIMENTI freddo OUTPUT: CALDO o FREDDO

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

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!!)

ALGORITMI PIU’ COMUNI IN INFORMATICA Algoritmi MATEMATICI Per fare calcoli anche molto complessi (per esempio, integrali, la scoperta di numeri primi) Algoritmi di ORDINAMENTO  Algoritmi di RICERCA Algoritmi per il TRATTAMENTO DELLE STRINGHE COMPILATORI Algoritmi di COMPRESSIONE

DA ALGORITMI A PROGRAMMI

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)

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

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

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

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

AREA DEL RETTANGOLO: DIAGRAMMA DI FLUSSO

BLOCCHI: INIZIO E FINE PROGRAMMA

BLOCCHI: ISTRUZIONI ELEMENTARI COUNT  0COUNT  COUNT + 1

BLOCCHI: INPUT / OUTPUT

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.

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

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

DIAGRAMMA DI FLUSSO

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

CONDIZIONALI

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

PARI E DISPARI

RIPETIZIONI L’ultimo componente fondamentale di un linguaggio di programmazione e’ la possibilita’ di ripetere le stesse azioni un gran numero di volte

RIPETIZIONI

ALGORITMO DI EUCLIDE M  N OUTPUT:M M > N? M  M - NN  N - M STOP START F T T F

LINGUAGGI DI PROGRAMMAZIONE Il calcolatore comprende istruzioni in LINGUAGGIO MACCHINA 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

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

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

COMPILATORI

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