INFORMATICA MATTEO CRISTANI.

Slides:



Advertisements
Presentazioni simili
Algoritmi e strutture dati
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
Linguaggi algoritmici
Classe III A A.s – 2011 Programma di Informatica 5 ore settimanali (3 laboratorio) Docenti –Prof. Alberto Ferrari –Prof. Alberto Paganuzzi.
ALGORITMI Un algoritmo (detto anche procedura, prescrizione, processo, routine, metodo) è un insieme di regole (dette anche direttive o istruzioni) che,
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
Fondamenti di Informatica
INFORMATICA Strutture iterative
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Informatica Problema Algoritmo Programma
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Definizione di Algoritmo
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
1 2. Analisi degli Algoritmi. 2 Algoritmi e strutture dati - Definizioni Struttura dati: organizzazione sistematica dei dati e del loro accesso Algoritmo:
Introduzione alla programmazione ll
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
ALGORITMI E PROGRAMMAZIONE STRUTTURATA
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
Unità Didattica 1 Algoritmi
Unità Didattica 2 I Linguaggi di Programmazione
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica Algoritmi
Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Elementi di Informatica
2000 Prentice Hall, Inc. All rights reserved. Capitolo 3 (Deitel) Lo sviluppo di programmi strutturati Indice degli argomenti Introduzione 3.2 -
Elementi di Informatica di base
Algoritmi e Programmazione strutturata
INFORMATICA MATTEO CRISTANI. INDICE CICLO DELLE LEZIONI LEZ. 1 INTRODUZIONE AL CORSO LEZ. 2 I CALCOLATORI ELETTRONICI LEZ. 3 ELEMENTI DI TEORIA DELL INFORMAZIONE.
PROGRAMMAZIONE: linguaggi
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
CODIFICA Da flow-chart a C++.
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
INFORMATICA MATTEO CRISTANI. INDICE CICLO DELLE LEZIONI LEZ. 1 INTRODUZIONE AL CORSO LEZ. 2 I CALCOLATORI ELETTRONICI LEZ. 3 ELEMENTI DI TEORIA DELL INFORMAZIONE.
INFORMATICA MATTEO CRISTANI.
INFORMATICA MATTEO CRISTANI.
BIOINFO3 - Lezione 15 ISTRUZIONI
Programmazione Strutturata
IO E LA MATEMATICA PROCEDURALE
DIVERTIRSI CON SCRATCH
ALGORITMI Un algoritmo (detto anche procedura, prescrizione, processo, routine, metodo) è un insieme di regole (dette anche direttive o istruzioni) che,
Rappresentazione degli algoritmi
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Esempi domande primo compitino Claudia Raibulet
Algoritmi.
Vincenza Ferrara Novembre 2007 Fondamenti di Matematica e Informatica Laboratorio Informatica I anno a.a
Realizzazione software
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
Diagrammi a blocchi.
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
ALGORITMI Dal problema al programma Definizione di algoritmo
Informatica 3 V anno.
Programmazione dei Calcolatori Elettronici
GLI ALGORITMI Appunti preparati dalla prof.ssa Maria D’Angelo.
Click to edit Master title styleAlgoritmo algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito,
Unità di apprendimento 6 Dal problema al programma.
Istruzioni e algoritmi. Istruzioni Operative I passi elementari che compongono l’algoritmo sono le istruzioni. Distinguiamo: Istruzioni di input Istruzioni.
Unità di apprendimento 6
Transcript della presentazione:

INFORMATICA MATTEO CRISTANI

INDICE CICLO DELLE LEZIONI LEZ. 1 LEZ. 2 LEZ. 3 LEZ. 4 LEZ. 5 LEZ. 6 INTRODUZIONE AL CORSO LEZ. 2 I CALCOLATORI ELETTRONICI LEZ. 3 ELEMENTI DI TEORIA DELL’ INFORMAZIONE LEZ. 4 MISURE DELLA INFORMAZIONE LEZ. 5 CALCOLO BINARIO: CONVERSIONI DI BASE LEZ. 6 CALCOLO BINARIO: OPERAZIONI IN BASE 2 LEZ. 7 ESERCITAZIONE DI CALCOLO BINARIO LEZ. 8 LEZ. 9 PORTE LOGICHE LEZ. 10 PROGETTO DI CIRCUITI DIGITALI LEZ. 11 INTRODUZIONE AGLI ALGORITMI LEZ. 12 PRODUTTIVITA’ INDIVIDUALE LEZ. 13 IL WEB LEZ. 14 RICERCA DI DOCUMENTI LEZ. 15 USO DEI MOTORI DI RICERCA LEZ. 16 SICUREZZA INFORMATICA LEZ. 17 ELEMENTI DI CRITTOGRAFIA LEZ. 18 ESERCITAZIONE DI CRITTOGRAFIA LEZ. 19 ESERCITAZIONE GENERALE LEZ. 20 SOMMARIO DEL CORSO

AGENDA DEFINIZIONE DI ALGORITMO APPROCCIO AL PROGETTO DI ALGORITMI MISURE SUGLI ALGORITMI

DEFINIZIONE DI ALGORITMO Algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito. In termini informali, un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico. Se questa idea aveva una certa importanza per il calcolo matematico, l'avvento dell'informatica l'ha arricchita di nuovi significati..

DEFINIZIONE DI ALGORITMO .. tanto che, con molta enfasi, è stata data anche la seguente definizione di informatica: L’informatica è lo studio degli algoritmi, che comprende: le loro proprietà formali e matematiche; le loro implementazioni hardware; le loro implementazioni linguistiche; le loro applicazioni.

CIO’ CHE NON E’ ALGORITMO L’opposto di algoritmo: euristica. Si definisce infatti procedimento euristico un metodo di approccio alla soluzione dei problemi che non segue un chiaro percorso, ma si affida all'intuito e allo stato temporaneo delle circostanze, al fine di generare nuova conoscenza.

CONCETTI BASE DI PROGRAMMAZIONE Tutte le operazioni utilizzate per realizzare algoritmi rientrano in una delle seguenti tre categorie: Operazioni sequenziali Un’istruzione sequenziale esegue una singola attività ben definita. Terminata l’attività, l’algoritmo passa all’operazione successiva. Solitamente le operazioni sequenziali sono espresse come semplici frasi dichiarative. Operazioni condizionali Si tratta delle istruzioni di un algoritmo che “pongono una domanda”. L’operazione successiva è selezionata sulla base della risposta fornita alla domanda. Operazioni iterative Si tratta delle istruzioni “di ciclo” di un algoritmo. Indicano di non proseguire con l’istruzione successiva, ma di tornare indietro e ripetere l’esecuzione di un precedente blocco di istruzioni.

PROPRIETA’ DEGLI ALGORITMI Un algoritmo deve essere: non ambiguo (i risultati non devono variare in funzione della macchina o persona che esegue l'algoritmo) corretto (deve risolvere un dato problema) realizzabile (deve essere eseguibile con le risorse a disposizione) finito (deve essere composto da un numero finito di passi elementari; le operazioni sono eseguite un numero finito di volte) efficiente (deve avere un costo accettabile, se non ottimo, in termini di risorse consumate: tempo di CPU richiesto per completare, quantità di memoria utilizzata, quantità di bit trasferiti)

ATTRIBUTI DI UN ALGORITMO Correttezza Facilità di comprensione Eleganza Efficienza Talvolta eleganza e facilità di comprensione vanno in direzioni contrarie: più elegante è la soluzione, più difficile risulta da capire.

EFFICIENZA Efficienza è il termine usato per descrivere l’uso attento delle risorse da parte di un algoritmo. Come si misurano il tempo e lo spazio consumati da un algoritmo, in modo da determinare se è efficiente? L’efficienza rispetto allo spazio si può giudicare in base alla quantità di informazioni che l’algoritmo deve registrare nella memoria del computer per svolgere il proprio compito, oltre ai dati iniziali sui quali opera. L’efficienza rispetto al tempo di un algoritmo è un’indicazione della quantità di “lavoro” richiesto dall’algoritmo stesso. È una misura dell’efficienza implicita del metodo, indipendente dalla velocità della macchina su cui è eseguito, dai valori dei dati di ingresso elaborati ma non dalla loro quantità.

MISURE DELLA COMPLESSITA’ Tempo di esecuzione Tipologia di algoritmo logN Risolvono grossi problemi riducendone la dimensione di un fattore costante. N Eseguono poche operazioni su ciascun elemento dell’input. NlogN Suddividono il problema in sottoproblemi più piccolo che vengono risolti indipendentemente. N2 Elaborano gli elementi dell’input a coppie (probabilmente all’interno di due cicli nidificati). 2N Risolvono alcuni problemi di interesse pratico per i quali non si conoscono ancora algoritmi non esponenziali. N3 Elaborano terne di valori (probabilmente all’interno di tre cicli nidificati).

DESCRIZIONE DI UN ALGORITMO Il linguaggio di descrizione di un algoritmo deve essere adeguato alle caratteristiche del suo esecutore. esecutore umano: - linguaggio naturale (eventualmente strutturato) - linguaggio grafico (es. diagrammi di flusso) calcolatore (esecutore automatico): - linguaggio di programmazione (programma = specifica di una computazione)

PSEUDOCODICE Utilizzare un insieme di istruzioni per MT per descrivere un algoritmo non è certamente agevole. Molti studiosi di informatica utilizzano una notazione denominata pseudocodice per progettare e rappresentare gli algoritmi. Si tratta di costrutti in simil-linguaggio naturale studiati per assomigliare alle istruzioni di un linguaggio di programmazione, ma che in realtà non si eseguono su un computer. Lo pseudocodice rappresenta un compromesso tra i due estremi del linguaggio naturale e di quello formale; è semplice, altamente leggibile e praticamente privo di regole grammaticali.

ESEMPIO Esempio moltiplicazione per somme Problema: dati due numeri interi a e b maggiori o uguali a 0, determinarne il prodotto p. p  0 se b=0 vai all’istruzione 6 p  p+a b  b-1 vai all’istruzione 2 fine

TERMINAZIONE ATTENZIONE! Il fatto che il numero di istruzioni presenti nella descrizione di un algoritmo sia finito non implica necessariamente che l’algoritmo termini in un tempo finito! r  0 r  r+1 vai all’istruzione 2 fine Manca la condizione di uscita dal ciclo!

DIAGRAMMI DI FLUSSO Un diagramma di flusso (flow chart) è la rappresentazione grafica dei passi che costituiscono un algoritmo. E’ uno strumento efficace per la descrizione degli algoritmi. I diagrammi di flusso usano forme geometriche diverse per rappresentare: trasferimento di informazioni (lettura dati, scrittura risultati, visualizzazione dati intermedi) esecuzione di calcoli assunzione di decisioni esecuzione di iterazioni (ripetizione di sequenze di operazioni)

Simboli convenzionali: Elaborazione – I blocchi rettangolari possono rappresentare istruzioni di assegnamento o più in generale istruzioni che comportano una qualche modifica dello stato globale della computazione. Decisione – I blocchi a forma di rombo vengono utilizzati per rappresentare istruzioni di salto condizionato. Inizio/fine – I blocchi ovali vengono utilizzati per rappresentare l’inizio e la fine dell’algoritmo.

SIMBOLI v  E B i1,i2,..,in o1,o2,..,on

WHILE-DO Ciclo di esecuzione di una istruzione I O

REPEAT-UNTIL Ciclo con condizione d’uscita I O

IF-THEN-ELSE Selezione tra due istruzioni sulla base di una condizione

ESEMPIO CALCOLO DEL FATTORIALE N!=N*(N-1)*(N-2)*…*2