Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Documenti analoghi
Rappresentazione con i diagrammi di flusso (Flow - chart)

Cosa è l Informatica?

Informatica. Come si risolve un problema?

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Corso di Informatica di Base

Lezione 1. Problemi Algoritmi Programmi

Algoritmi e Programmi

Sviluppo di programmi

Concetti Introduttivi. Il Computer

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi

Laboratorio di Programmazione

Informatica Generale Andrea Corradini I linguaggi di programmazione

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

La codifica digitale

PROBLEMI ALGORITMI E PROGRAMMAZIONE

FONDAMENTI DI INFORMATICA

Cosa si intende con stato

Algoritmi. Pagina 1 di 5

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

1 Esercizi in pseudocodice

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Introduzione alla programmazione

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

PROBLEMI E ALGORITMI VESPIA CATERINA LICEO CLASSICO AGLI ANGELI

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Dall algoritmo al programma

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Algoritmi e diagrammi di flusso

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Introduzione al funzionamento di un calcolatore elettronico

Come ragiona il computer. Problemi e algoritmi

Dispensa di Informatica II.1

LA METAFORA DELL UFFICIO

PROGRAMMAZIONE STRUTTURATA

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

LA METAFORA DELL UFFICIO

STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:

Programmazione. Informatica. Risoluzione dei Problemi

Teoria dell Informazione

Il concetto di calcolatore e di algoritmo

Capitolo 3 L elaborazione e la strutturazione dell informazione

Elaborazione dell informazione

DESCRIZIONI RIGOROSE c7

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

Informatica Teorica. Macchine a registri

Informatica. Traccia. Algoritmi, dati e programmi. Elaborazione di informazione. informazione. rappresentazione dell informazione (dati) dati

PARTE III MACCHINE A REGISTRI

Il calcolatore. Architettura di un calcolatore (Hardware)

LINGUAGGI DI ALTO LIVELLO

Fondamenti VBA. Che cos è VBA

Algoritmi e Strutture Dati

LABORATORIO DI INFORMATICA

I Tipi di Dato Astratto

INFORMATICA. Scienza degli elaboratori elettronici (Computer. informazione

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Programmazione C Massimo Callisto De Donato

Sviluppo di programmi. E ora, finalmente. Si comincia! 1. Analizzare il problema. 2. Progettare una soluzione (1) E necessario capire:

OBIETTIVI di APPRENDIMENTO INDICAZIONI (dalle indicazioni Nazionali)

Istruzioni Condizionali

Formalismi per la descrizione di algoritmi

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Lezione 5. La macchina universale

ALGORITMI E PROGRAMMAZIONE STRUTTURATA. Prof R. Bresolin a.s

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Transcript:

Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi

Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive dello pseudocodice

Risolvere un problema Come viene risolto un problema : ingresso Elaborazione uscita Descrivono il caso in esame Manipolazione dei dati di ingresso in modo da costruire la soluzione cercata Rappresentano la soluzione del caso in esame

Risolvere un problema (2) es : riconoscere qualcuno fra la folla ingresso Elaborazione uscita Immagine della folla Ricerca nell immagine SI, NO, chi è la persona riconosciuta

Risolvere un problema (3) es : torta di carote ingresso Elaborazione uscita Ingredienti Combinazione degli ingredienti secondo una opportuna ricetta La torta!

Risolvere un problema (4) Una prima considerazione : essere capaci di risolvere un problema non significa essere capaci di spiegare esattamente come questo avviene ingresso Elaborazione uscita Immagine della folla Ricerca nell immagine Come avviene la ricerca?????? SI, NO, chi è la persona riconosciuta

Risolvere un problema (5) Seconda considerazione : vogliamo essere capaci di specificare la strategia seguita dal passo di elaborazione in modo da farla eseguire automaticamente dal computer quindi dobbiamo : riuscire a descrivere accuratamente i vari passi della soluzione attraverso azioni che il calcolatore è in grado di effettuare e con un linguaggio che è in grado di comprendere

Risolvere un problema (6) ingresso Elaborazione uscita Ingredienti Combinazione degli ingredienti secondo una opportuna ricetta La torta! Descrizione del come espressa attraverso la combinazione di azioni elementari Cuoco (che sa come ) ricetta Io (che conosco alcune azioni elementari: accendere il forno, sbattere le uova)

Problemi, algoritmi e programmi ingresso Elaborazione uscita Codificati opportunamente Trasformazione dei dati di ingresso seguendo i passi specificati da un opportuno algoritmo Ovvero la descrizione dell algoritmo secondo un linguaggio comprensibile al calcolatore Umano (che conosce l algoritmo) programma Calcolatore (che conosce alcune azioni elementari: es confrontare due numeri, eseguire semplici operazioni aritmetiche

Algoritmi e programmi (2) Algoritmo (def) : una sequenza di azioni non ambigue che trasformi i dati iniziali nel risultato finale utilizzando un insieme di azioni elementari che possono essere eseguite da un opportuno esecutore (e definiscono un processo terminante). Programma (def) rappresentazione di un algoritmo utilizzando un linguaggio non ambiguo e direttamente comprensibile dal computer

Algoritmi e Ricette Ma insomma, una ricetta è proprio un algoritmo? NO, ovvero è molto simile ma con due importanti differenze: La sequenza di azioni contiene spesso degli elementi di ambiguità risolti da un esecutore intelligente es: spesso non si specificano gli strumenti da utilizzare, confidando che l esecutore umano sbatta le uova nel posto giusto es: sale q.b. Non tutti i possibili casi vengono specificati es: è chiaro che se c e puzza di bruciato conviene spegnere il forno, anche se la ricetta non lo specifica (si confida nelle capacità deduttive dell esecutore)

Ancora una definizione di algoritmo Un'altra definizione, per ribadire il concetto: ce ne sono tante... La descrizione di un procedimento risolutivo di un problema può considerarsi un algoritmo se rispetta alcuni requisiti essenziali: Finitezza: un algoritmo deve essere composto da una sequenza finita di passi elementari Eseguibilità: il potenziale esecutore deve essere in grado di eseguire ogni singola azione in tempo finito con le risorse a disposizione Non-ambiguità: l'esecutore deve poter interpretare in modo univoco ogni singola azione

Problemi e algoritmi Un algoritmo, in generale, risolve un problema Esempi di algoritmi: addizione o moltiplicazione di più numeri a più cifre estrazione della radice quadrata complemento a due di un numero binario con NOT e +1 Un problema può essere risolto da più algoritmi quanti algoritmi conoscete per il complemento a due? altri problemi con più algoritmi di risoluzione?

Rappresentazione di algoritmi Differenza tra algoritmo (semantica) e rappresentazione (sintassi) [come per i numeri...] Lo stesso algoritmo può essere rappresentato in vari modi formula, sequenza di istruzioni, disegno, a parole... a diversi livelli di astrazione Ogni rappresentazione si basa su un insieme di primitive ben definite, comprensibili all'esecutore Un primitiva ad un livello di astrazione può essere definita da un algoritmo che usa primitive di livello di astrazione inferiore.

Esempio di algoritmo: origami

Primitive per origami

Algoritmi e linguaggi di programmazione Se l'esecutore è un computer, una collezione di primitive per decrivere un algoritmo, insieme alle regole per comporle, costituisce un linguaggio di programmazione. Es: il linguaggio macchina che abbiamo visto Primitive: istruzioni macchina (LOAD, STORE, ADD...) Regole per comporle: si scrivono in sequenza Livello di astrazione: adeguato per la CPU, non per umani Vedremo linguaggi di programmazione ad alto livello, con primitive adeguate per umani Per il momento usiamo uno pseudocodice che permette una rappresentazione informale degli algoritmi.

Lo pseudocodice Costituito da istruzioni elementari e strutture di controllo per comporle assegnamento altre istruzioni descritte informalmente (stampa,...) sequenzializzazione selezione condizionale (if... then... else) iterazione (while... do, repeat... until) possibilità di definire procedure, utilizzabili come nuove istruzioni elementari Poiché è un linguaggio informale, lo modificheremo quando conviene. Non possibile per linguaggi formali

Primitive dello pseudocodice: assegnamento.assegnamento: (anche nome := espressione) nome espressione Effetto: associa a nome il valore ottenuto valutando espressione. Successivamente nome può essere usato per richiamare quel valore. Possiamo pensare a nome come a una scatola (cella di memoria) in cui mettiamo il valore nome 50 2.50 125.0 quantità 50 prezzounitario 2.50 prezzototale quantità * prezzounitario

Primitive dello pseudocodice: selezione condizionale Serve per scegliere cosa fare in base al valore di una espressione booleana (quindi true o false) Sintassi: if condizione then azione else azione Significato: Si valuta la condizione Se il risultato è true, si esegue l'azione dopo then Se il risultato è false, si esegue l'azione dopo else if (l'anno è bisestile) then (totalegiornaliero totale/365) else (totalegiornaliero totale/366)

Primitive dello pseudocodice: iterazione Serve per ripetere un insieme di azioni per un certo numero di volte Sintassi: while condizione do attività Significato: Si valuta la condizione Se il risultato è true, si esegue l'attività, quindi si riesegue tutto il while Se il risultato è false, si termina l'esecuzione (continuando con la prossima istruzione while (ci sono esercizi da svolgere) do (svolgi il prossimo esercizio; controlla con il vicino; riposati un po')

Primitive dello pseudocodice: procedure Una procedura associa delle azioni da eseguire a un nome. E' come definire una nuova primitiva. procedure Saluti Contatore 3; while (Contatore > 0) do (stampa il messaggio Saluti ; Contatore Contatore -1) Effetto della procedura: stampa tre volte la stringa Saluti ; provare a eseguirla! Esempio di uso della procedura: if (l'ospite è simpatico) then (esegui la procedura Saluti) else (...)

Primitive dello pseudocodice: procedure con parametri Per renderle più flessibili, le procedure possono avere parametri (o nomi generici). Un parametro viene usato come se fosse un valore nella procedura. Quando si esegue la procedura va fornito un valore per il parametro. procedure SalutiBis(Contatore) while (Contatore > 0) do (stampa il messaggio Saluti ; Contatore Contatore -1) if (l'ospite è molto simpatico) then (esegui la procedura SalutiBis(5)) else (esegui la procedura SalutiBis(1))