Laboratorio di Programmazione

Похожие документы
Capitolo 3 L elaborazione e la strutturazione dell informazione

Università degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie

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

Sviluppo di programmi

Rappresentazione con i diagrammi di flusso (Flow - chart)

Corso di Informatica di Base

Problemi, algoritmi, calcolatore

Informatica. Come si risolve un problema?

Introduzione alla programmazione

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

ALGORITMI: PROPRIETÀ FONDAMENTALI

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

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

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

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

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Il concetto di calcolatore e di algoritmo

LA METAFORA DELL UFFICIO

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

MODULO 1. Prof. Onofrio Greco. Prof. Greco Onofrio

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

Cosa si intende con stato

Concetti Introduttivi. Il Computer

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

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

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Cosa è l Informatica?

Algoritmi e Linguaggi

FONDAMENTI DI INFORMATICA

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

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

Formalismi per la descrizione di algoritmi

Linguaggi, Traduttori e le Basi della Programmazione

LABORATORIO DI INFORMATICA

Dal problema all algoritmo

LA METAFORA DELL UFFICIO

CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

I.3 Porte Logiche. Elisabetta Ronchieri. Ottobre 13, Università di Ferrara Dipartimento di Economia e Management. Insegnamento di Informatica

Algoritmi e basi del C Struttura di un programma

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

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Studio degli algoritmi

Algoritmi e Programmi

PROBLEMI ALGORITMI E PROGRAMMAZIONE

FONDAMENTI DI INFORMATICA

Dall algoritmo al programma

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

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science)

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Lezione 5. La macchina universale

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

Programmazione C Massimo Callisto De Donato

Elementi di programmazione

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

Informatica Generale 1 - Esercitazioni Flowgraph, algebra di Boole e calcolo binario

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Il linguaggio di programmazione Python

MODULO 07. La soluzione dei problemi mediante gli algoritmi

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

LINGUAGGI DI PROGRAMMAZIONE!

DESCRIZIONI RIGOROSE c7

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Laboratorio di Python

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Diagrammi a blocchi 1

Lezione2: Circuiti Logici

Unità di apprendimento 6. Dal problema al programma

Istruzioni Condizionali

Teoria dell Informazione

Correttezza (prima parte)

Транскрипт:

Laboratorio di Programmazione Laurea in Bioinformatica Docente: Carlo Drioli Web: www.scienze.univr.it/fol/main?ent=oi&id=39990

Programmazione: Dati Strutture di controllo Algoritmi Materiale tratto dai lucidi ufficiali a corredo del testo: D. Sciuto, G. Buonanno e L. Mari Introduzione ai sistemi informatici 2005 - McGrawHill

Problemi e algoritmi

Definire il problema Eliminare le ambiguità nella formulazione del problema Individuare il risultato che si vuole ottenere, gli obiettivi da raggiungere Evidenziare le regole da rispettare i vincoli interni ed esterni i dati espliciti ed impliciti Eliminare i dettagli inutili ed ambigui

Procedura effettiva Si dice procedura effettiva per un esecutore una successione di azioni tale che: tutte le azioni della successione sono elementari per l esecutore, che è in grado di eseguire ciascuna di esse in un tempo finito e in modo deterministico, cioè ottenendo sempre gli stessi risultati a parità di input; è fissato l ordine di esecuzione delle azioni; è esplicitamente specificato il modo in cui un azione utilizza i risultati delle azioni che la precedono.

Algoritmo (definizione informale) Sequenza finita di istruzioni, comprensibili da un esecutore (si può trattare di uno strumento automatico), che descrive come realizzare un compito (come risolvere un problema ). Alcuni esempi Istruzioni di montaggio di un elettrodomestico Uso di un terminale Bancomat Calcolo del massimo comune divisore di numeri naturali

Esecutori e linguaggi Un esecutore è definito in base a tre elementi: l insieme delle operazioni che è capace di compiere; l insieme delle istruzioni che capisce (sintassi); quali operazioni associa ad ogni istruzione che riconosce (semantica). Il calcolatore capisce le istruzioni che fanno parte del linguaggio macchina istruzioni primitive semplici (e.g. max 2 operandi) attenzione all efficienza (costi, complessità, velocità) difficile e noioso da utilizzare per un programmatore La soluzione si dice effettiva se l esecutore è in grado di: interpretarla compiere le azioni (in un tempo finito!)

Dal problema alla soluzione automatica Specifiche dei requisiti: descrizione precisa e corretta dei requisiti (verificabilità) ---> cosa? Progetto: procedimento con cui si individua la soluzione ---> come? Soluzione: algoritmo

Proprietà degli algoritmi Correttezza L algoritmo perviene alla soluzione del compito cui è preposto, senza difettare di alcun passo fondamentale Efficienza L algoritmo perviene alla soluzione del problema usando la minima quantità di risorse fisiche tempo di esecuzione, memoria,

Alcuni concetti Algoritmo = descrizione di come si risolve un problema Programma = algoritmo scritto in modo che possa essere eseguito da un calcolatore (linguaggio di programmazione) Linguaggio macchina = linguaggio effettivamente compreso da un calcolatore, caratterizzato da istruzioni primitive semplici (e.g. max 2 operandi) attenzione all efficienza (costi, complessità, velocità) difficile e noioso da utilizzare per un programmatore Due aspetti rilevanti: produrre algoritmi (cioè capire la sequenza di passi che portano alla soluzione di un problema) codificarli in programmi (cioè renderli comprensibili al calcolatore)

Algoritmi Formalizzazione

Codifica degli algoritmi Algoritmo formulato per essere comunicato tra esseri umani sintetico e intuitivo codificato in linguaggi informali o semi-formali (linguaggio naturale, diagrammi di flusso, ) Algoritmo formulato per essere eseguito automaticamente preciso ed eseguibile codificato in linguaggi comprensibili dagli esecutori automatici (linguaggio macchina o linguaggio di programmazione di alto livello)

Algoritmi e variabili Gli algoritmi sono parametrici: producono un risultato che dipende da un insieme di dati di partenza; descrivono la soluzione non di un singolo problema, ma di una intera classe di problemi strutturalmente equivalenti. Esempi: l algoritmo per la moltiplicazione di due numeri specifica come effettuare il prodotto di tutte le possibili coppie di numeri; l algoritmo per la ricerca di un libro nello schedario della biblioteca vale per tutti i possibili libri; Le istruzioni dell algoritmo fanno riferimento a variabili,, il cui valore non è fissato a priori ma cambia a seconda della situazione elaborativa in cui l esecutore si trova.

Uso delle variabili All interno di espressioni, l esecutore usa il valore contenuto nelle variabili per calcolare il risultato dell espressione, per esempio op1 + op2 op3 oppure op1 / op2 op3, in istruzioni di assegnamento introdurre nel contenitore identificato dal nome della variabile il valore specificato a destra dell assegnamento; per esempio r 35 (assegna 35 alla variabile il cui nome è r), pi 3,14, in istruzioni di assegnamento combinate con espressioni assegna a una variabile il risultato ottenuto dalla valutazione di un espressione, per esempio in circ 2 r pi il risultato dell espressione 2 r pi viene calcolato utilizzando i valori contenuti nelle variabili r e pi e il risultato viene poi assegnato alla variabile circ; la stessa variabile può comparire in entrambi i lati dell istruzione di assegnamento, per esempio in k k + 1 1 il valore contenuto in k viene utilizzato per trovare il valore dell espressione k + 1 che viene memorizzato come nuovo valore di k.

Assegnamento di valori a variabili Il valore assegnato a una variabile si sostituisce a quello che era presente in precedenza: il vecchio valore non potrà più essere recuperato. Esempio: si ipotizzi di voler scambiare i valori contenuti in due variabili x e y. Soluzione proposta: doppio assegnamento del tipo x y y x per indicare che il valore di y deve essere copiato in x e che, nello stesso tempo, il valore di x sia trasferito in y. Le istruzioni però vengono eseguite in sequenza!! Quindi l assegnamento x y viene completato prima di iniziare y x. x y; y x; x y 7 9 7 9 9 9 9 9 9 9 t 0 t 1 t 2 t 3 t 4 x y tempo

Assegnamento di valori a variabili Soluzione corretta: uso di una variabile aggiuntiva (tmp( tmp), come strumento di memorizzazione temporanea ( buffer buffer ) del valore originariamente contenuto in x tmp x x y y tmp tmp x y?? 7 9 tmp x; 7 7 9 7 7 9 x y; 7 7 9 7 9 9 y tmp; 7 9 9 t 0 t 1 t 2 t 3 t 4 t 5 In questo modo lo scambio avviene senza perdere i valori originari 7 tmp 9 7 x y t 6 tempo

Dati e istruzioni Tipi di dati Numeri naturali o interi o reali (1, -2, 0.34) Caratteri alfanumerici (A, B,..) Dati logici o booleani (Vero, Falso) Array o vettore di n elementi ({1,2,3}) Istruzioni Operazioni di Input/Output (es. leggi, scrivi) Operazioni Aritmetico-logiche (es. max = A + B) Strutture di controllo (es. SE, RIPETI )

Operazioni elementari Operazioni aritmetiche e assegnamenti di valori a singole variabili Es. C (A + B) Condizioni sul valore di singole variabili se (A > B) allora altrimenti Lettura e scrittura di variabili Lettura e scrittura di variabili Leggi A oppure Stampa B

Rappresentazione degli algoritmi Linguaggio naturale Diagramma a blocchi Pseudo codice Linguaggio di programmazione

Rappresentazione degli algoritmi Linguaggio Naturale Diagramma di flusso Inizio Leggi due numeri Confrontali Leggi x e y P 1 e P 2 Stampa un messaggio che dica quale dei due numeri e il massimo Sì d x y d > 0? No P 3 P 4 Scrivi max è x P 5 Scrivi max è y P 6 Fine P 7

Rappresentazione degli algoritmi Pseudo Codice leggi x, y d x - y SE d > 0 ALLORA stampa il max e' x ALTRIMENTI FINESE stampa il max e' y

Operazioni Logiche (Algebra Booleana)

Algebra di Boole L algebra di Boole (dal suo inventore G. Boole) serve a descrivere le operazioni logiche. Componenti dell algebra di Boole: Operatori booleani Regole di trasformazione ed equivalenza tra operatori booleani Gli operandi booleani assumono solo due valori: Vero/ ero/falso True/ rue/false 1/0 Sì/No

Operatori e tavole di verità A not A 0 1 1 0 A B A and B 0 0 0 0 1 0 1 0 0 1 1 1 A B A or B 0 0 0 0 1 1 1 0 1 1 1 1 A B A xor B 0 0 0 0 1 1 1 0 1 1 1 0 A B A B 0 0 1 0 1 0 1 0 0 1 1 1 A B A nand B 0 0 1 0 1 1 1 0 1 1 1 0 A B A nor B 0 0 1 0 1 0 1 0 0 1 1 0

Notazione Esistono convenzioni diverse: Negazione not A A A! A Congiunzione A and B A B A & B A B Disgiunzione A or B A B A B A + B Disgiunzione esclusiva A xor B A ^ B A B [ equivale a (A and (not B)) or ((not A) and B) ] Implicazione A B A B A B (se... allora) Doppia implicazione A B A B A B (se e solo se)

I programmi

Alcuni concetti Algoritmo = descrizione di come si risolve un problema Programma = algoritmo scritto in modo che possa essere eseguito da un calcolatore (linguaggio di programmazione) Linguaggio macchina = linguaggio effettivamente compreso da un calcolatore, caratterizzato da istruzioni primitive semplici (e.g. max 2 operandi) attenzione all efficienza (costi, complessità, velocità) difficile e noioso da utilizzare per un programmatore Due aspetti rilevanti: produrre algoritmi (cioè capire la sequenza di passi che portano alla soluzione di un problema) codificarli in programmi (cioè renderli comprensibili al calcolatore)

Parti fondamentali di un programma Identificazione del programma Dichiarazione delle variabili utilizzate, di cui sono indicati tipo e nome Specificazione della parte esecutiva del programma, detta anche corpo del programma

Le istruzioni Istruzioni di ingresso/uscita Istruzioni aritmetico logiche Istruzioni di controllo

Le strutture di controllo

Selezione semplice Pseudocodice... SE condizione ALLO RA blocco istruzioni FINESE... Java... if( condizione ) { blocco istruzioni }...

Selezione a due vie Pseudocodice... SE condizione ALLO RA blocco 1 ALTRIM ENTI blocco 2 FINESE... Java... if( condizione ) { blocco 1 } else { blocco 2 }...

Selezione a più vie Pseudocodice... SE cond 1 ALLO RA blocco 1 ALTRIM ENTI SE cond 2 ALLORA blocco 2 ALTRIM ENTI FINESE FINESE... Java... if( cond1 ) { blocco 1 } else { if( cond2) { blocco 2 } else... }...

Ciclo a condizione iniziale Pseudocodice... Q UANDO condizione ESEG UI blocco istruzioni RIPETI... Java... while ( condizione ) { blocco istruzioni }...

Ciclo a condizione finale Pseudocodice... ESEG UI blocco istruzioni QUANDO condizione... Java... do { blocco istruzioni } while ( condizione )...

Esempi di algoritmo (in pseudocodice)

Numeri pari e dispari Pseudocodice variabilin,resto:interi leggin resto = n % 2 SE resto == 0 ALLO RA scrivi pari ALTRIM ENTI scrivi dispari FINESE % :operatore m odulo

Somma di una sequenza di numeri Pseudocodice variabilisom m a,num ero,quanti,cont:interi leggiquanti som m a = 0 cont= 0 Q UANDO cont< quantieseg UI legginum ero som m a = som m a + num ero cont+ cont+ 1 RIPETI scrivisom m a