LA METAFORA DELL UFFICIO

Documenti analoghi
Descrizione di un algoritmo

Sistemi Web per il turismo - lezione 3 -

Il calcolatore. Architettura di un calcolatore (Hardware)

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

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

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

Le aree dell informatica

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico

Appunti di Sistemi Elettronici

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

(1) (2) (3) (4) 11 nessuno/a (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

Informatica Teorica. Macchine a registri

Algoritmi e basi del C

Caratteristiche di un PC

La programmazione. Sviluppo del software

Generalità sugli algoritmi

Metodologie di programmazione in Fortran 90

Appunti del corso di Informatica 1 (IN1 Fondamenti) 2 Introduzione alla programmazione

Corso di Informatica

Fasi di creazione di un programma

Laurea triennale - Comunicazione&DAMS - UNICAL. Dr. Marco Manna 1

- Algoritmi ed esecutori di algoritmi - ALGORITMI MACCHINA DI VON NEUMANN

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Liceo Marie Curie (Meda) Scientifico Classico Linguistico PROGRAMMAZIONE DISCIPLINARE PER COMPETENZE

Algoritmi. Maurizio Palesi. Maurizio Palesi 1

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

CAPITOLO V. DATABASE: Il modello relazionale

Elementi di Informatica e Programmazione

Algoritmi, dati e programmi

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

+ / operatori di confronto (espressioni logiche/predicati) / = > < Pseudo codice. Pseudo codice

Introduzione. Informatica B. Daniele Loiacono

Programmazione Orientata agli Oggetti in Linguaggio Java

1

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

DAL DIAGRAMMA AL CODICE

Esame di Ricerca Operativa del 18/12/12. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Nozione di algoritmo. Gabriella Trucco

INFORMATICA GENERALE Francesco Cerino

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

TEORIA RELAZIONALE: INTRODUZIONE

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Architettura del calcolatore

LICEO SCIENTIFICO "LEONARDO DA VINCI" - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Prof Miritello Rita

ALGORITMI 1. GLI ALGORITMI 2. IL LINGUAGGIO DI PROGETTO

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

Architettura di un computer

RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI

Istruzioni per il controllo di ciclo - ciclo a condizione generica

PLC E AUTOMAZIONE INDUSTRIALE

PARTE III MACCHINE A REGISTRI

Come ragiona il computer. Problemi e algoritmi

Testi di Esercizi e Quesiti 1

Introduzione alle macchine a stati (non definitivo)

Ing. Paolo Domenici PREFAZIONE

Architettura di un calcolatore

C. P. U. MEMORIA CENTRALE

Programmazione Annuale di Matematica della Scuola Secondaria di Primo Grado Caccia

FONDAMENTI di INFORMATICA L. Mezzalira

Esercizi per il corso di Algoritmi e Strutture Dati

23/02/2014. Dalla scorsa lezione. La Macchina di Von Neumann. Uomo come esecutore di algoritmi

Riconoscere le caratteristiche funzionali di un Nozioni fondamentali di un sistema operativo.

Elementi di programmazione Algoritmi Flow Chart, Fasi della programmazione Linguaggi Elementi di programmazione ad oggetti

Esame di Ricerca Operativa del 19/01/2016

Architettura di un calcolatore

Gli algoritmi: definizioni e proprietà

GUIDA BASE DI PASCAL

LINGUAGGI DI PROGRAMMAZIONE

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

INFORMATICA 1 L. Mezzalira

Gli algoritmi. Gli algoritmi. Analisi e programmazione

Corso di Esercitazioni di Programmazione

I S T I T U T O T E C N I C O I N D U S T R I A L E S T A T A L E V E R O N A

Liceo Scientifico " C. CATTANEO " PIANO DI LAVORO DI INFORMATICA. CLASSE 3 LSA SEZ. B e D

Dipartimento di informatica CONTENUTI MINIMI DI INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE

Esame di Ricerca Operativa del 19/01/2016

Codifica: dal diagramma a blocchi al linguaggio C++

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Programma di Robotica[LEGO EV3]

SOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software:

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Struttura del calcolatore

DAL PROBLEMA ALL'ALGORITMO AL PROGRAMMA SCRITTO IN Come. Scopo principale dell informatica è risolvere problemi con i calcolatori.

Funzionalità di un Algoritmo

4 3 4 = 4 x x x 10 0 aaa

INFORMATICA E COMPUTER : INTRODUZIONE

PROGRAMMAZIONE DISCIPLINARE INDIVIDUALE

Transcript:

LA METAFORA DELL UFFICIO Lavagna di lavoro Lavagna di programma Sportello utenti Impiegato Capo Ufficio

LAVAGNA DI LAVORO Chiamiamo variabili le posizioni sulla lavagna, identificate ognuna da un nome distinto, e valore il loro eventuale contenuto

SPORTELLO UTENTE Modulo IN: modulo di ricezione di dati dall utente. Certificato OUT: certificato per la comunicazione di risultati all utente. Sia il modulo sia il certificato sono organizzati in posizioni (per un totale rispettivamente MIN e MOUT) di N caselle come la lavagna di lavoro, ma non hanno cornice, in quanto si suppone che le loro posizioni abbiano nomi standard IN-i e OUT-j, con i compreso tra 1 e MIN e j compreso tra 1 e MOUT.

LAVAGNA DI PROGRAMMA Su questa lavagna viene descritto, secondo un opportuna modalità che vedremo, il compito che l impiegato deve svolgere, in base a una serie di attività elementari che egli è in grado di eseguire. Il compito viene descritto sulla lavagna da un direttore dell ufficio. Un segnalino magnetico, a forma di freccia, da posizionare sulla lavagna magnetica in corrispondenza dell attività elementare che l impiegato sta per svolgere.

ATTIVITÀ ELEMENTARI DELL IMPIEGATO Istruzione di assegnamento: nome valore nome2 nome1 Istruzione di lettura: nome ( LEGGI IN-i ) nome2 ( LEGGI nome1 ) Istruzione di scrittura: ( SCRIVI OUT-i ) nome ( SCRIVI nome2 ) nome1 Operazioni aritmetiche e logiche: nome op1 + op 2 (oppure -, x, /) op1 > op2 (oppure <, =) vera se il valore di op1 è maggiore (minore, uguale) del valore di op2

ORGANIZZAZIONE DELLE ATTIVITÀ: DIAGRAMMI DI FLUSSO Viene descritta dal direttore sulla lavagna di programma utilizzando i diagrammi di flusso. Un diagramma di flusso è una struttura costituita da blocchi connessi da frecce (più formalmente, sono grafi costituiti da nodi e archi orientati che collegano coppie di nodi). Esistono quattro tipi di blocchi: un blocco di inizio, che indica l inizio del programma; è unico in un programma, e può presentare un solo arco uscente e nessuno entrante; un blocco di fine, che denota la fine del programma e quindi non avrà archi uscenti, ma solo uno o più archi entranti; possono essercene più d uno; blocchi funzionali, che contengono un istruzione elementare di tipo aritmetico, di assegnamento, di lettura e scrittura, rappresentata come descritto nel paragrafo precedente; possono avere più archi entranti, ma solo uno uscente; blocchi decisionali: possono contenere una condizione logica che assume i valori vero (V) oppure falso (F); possono avere più archi entranti, e da esso ne escono due, uno denotato con V, e l altro con F.

TIPI DI BLOCCHI Blocco di inizio Inizio Istruzione elementare Blocco decisionale Blocco funzionale Fine V Condizione F Blocco di fine

ESEMPIO DI DIAGRAMMA DI FLUSSO Start base (LEGGI IN-1) esp (LEGGI IN-2) val 1 esp esp - 1 val val x base NO esp = 0 SI (SCRIVI OUT-1) val Exit

ESEMPIO DI ATTIVITA Lavagna di lavoro Modulo IN 4 Lavagna di programma b a s e 4 3 e v s a p l 61 23 10 164 Start base (LEGGI IN-1) esp (LEGGI IN-2) val 1 esp esp - 1 val val x base NO esp = 0 SI (SCRIVI OUT-1) val Modulo OUT Exit 6 4 Calcolo di base esp

SIMILITUDINI La lavagna di lavoro e quella di programma sono l equivalente della memoria centrale del computer dove risiedono i dati ed il programma in esecuzione (dopo esser stato opportunamente decodificato per essere compreso dal computer) I moduli di input output sono l equivalente dei dispositivi di ingresso/uscita del computer (es: tastiera e video) Il segnalino è pari ad una memoria speciale che contiene il prossimo comando che deve essere eseguito (PC = program counter) L impiegato è l unità di elaborazione principale (CPU = Central Processing Unit) che manda in esecuzione le istruzioni del programma e dialoga con la memoria centrale ed i dispositivi di input/output

DIAGRAMMI DI FLUSSO STRUTTURATI (DFS) Un diagramma di flusso strutturato (DFS) è un Diagramma di Flusso (DF) composto con apposita regola in cui il BSG (Blocco Strutturato Generico) può essere a sua volta una struttura di controllo o un blocco funzionale semplice, e ha un solo arco in ingresso ed uscita. Quando la programmazione fa uso sistematico di queste strutture, si parla di programmazione struttutata START DFS STOP Le strutture di controllo sono a loro volta costituite da tre possibili costrutti: Sequenza Selezione (doppia o semplice) Iterazione

Strutture base SEQUENZA F condizione V DFS DFS DFS DFS ITERAZIONE CON CONTROLLO INIZIALE ITERAZIONE CON CONTROLLO FINALE SELEZIONE condizione V F DFS DFS V condizione F

Es: struttura di sequenza Inizio Istruzione1 Istruzione2 Fine Pseudocodifica: Inizio Fine Istruzione1; Istruzione2;

Es: struttura di selezione V condizione F Pseudocodifica: Selezione doppia SE condizione vera Istruzione1 Istruzione2 ALLORA Istruzione1 ALTRIMENTI Istruzione2 V condizione F Selezione semplice SE condizione vera Istruzione1 ALLORA Istruzione1

Es: struttura di iterazione condizione V Corpo iterazione F Pseudocodifica: Ciclo di while FINCHÈ condizione vera ESEGUI Corpo iterazione* V Corpo iterazione condizione F Ciclo di repeat RIPETI Corpo iterazione* FINCHÈ condizione vera *NB: il corpo dell iterazione deve modificare la condizione del blocco decisionale

Alcune strutture derivate SELEZIONE MULTIPLA switch 1 2 3 altri P1 P2 P3 errore NEL CASO CHE switch VALGA 1: ESEGUI P1; 2: ESEGUI P2; 3: ESEGUI P3; ALTRIMENTI: ESEGUI errore

Alcune strutture derivate CICLO CON CONTATORE FOR cont = N1 TO N2, incr P2 P1 PER cont CHE VA DAL VALORE N1 A N2 1: ESEGUI P1; INCREMENTANDO DI incr

EQUIVALENZA FRA DF Equivalenza debole: due diagrammi di flusso X e Y si dicono debolmente equivalenti se e solo se, per ogni possibile dato d ingresso, le funzioni da essi computate assumono lo stesso valore. Equivalenza forte: due diagrammi di flusso X e Y si dicono fortemente equivalenti se e solo se sono debolmente equivalenti e le sequenze di esecuzione generate sono uguali per ogni possibile dato d ingresso. Teorema di Böhm-Jacopini Per ogni diagramma di flusso esiste un diagramma di flusso strutturato debolmente equivalente. Ciò significa che con i DFS possiamo computare tutte le funzioni computabili, ma abbiamo perso in potenza espressiva, non potendo più realizzare qualsiasi algoritmo. Infatti: non per tutti i DF esiste un DFS fortemente equivalente. La soluzione è costituita da un linguaggio di diagrammi di flusso, chiamato DFBF (Diagrammi di Flusso Ben Formati). Teorema di Peterson-Kasami-Tokura Per ogni diagramma di flusso esiste un diagramma di flusso ben formato fortemente equivalente

PROBLEMI, ISTANZE Un problema è un insieme di domande omogenee. Esempio: calcolare la radice quadrata intera di un numero naturale. Per descrivere un problema in modo più preciso si possono evidenziare questi punti usando il concetto di variabile: il problema precedente potrebbe essere formulata con Calcolare la radice quadrata intera di un numero naturale X. Un istanza di un problema è uno specifico esemplare della classe di domande omogenee cioè una specifica domanda. Esempio: calcolare la radice quadrata intera di 27. Un istanza deve specificare il valore delle variabili. La soluzione di un istanza di un problema è la risposta ad una domanda.

ALGORITMO, LINGUAGGI DI PROGRAMMAZIONE E PROGRAMMI Un algoritmo è un procedimento che permette di rispondere a tutte le istanze di un certo problema. Essendo l algoritmo un concetto astratto, non può essere comunicato dal direttore all ufficio senza un passo di rappresentazione. Il diagramma di flusso è quindi la rappresentazione dell algoritmo in un certo formalismo. La rappresentazione è detta programma e il formalismo linguaggio di programmazione. Un calcolatore è quindi un esecutore universale di algoritmi: può eseguire qualsiasi algoritmo gli venga fornito, purché rappresentato nel formalismo (programma) che il calcolatore sa comprendere.

PROPRIETÀ DI UN ALGORITMO Finito: Un algoritmo deve essere composto da un numero finito di istruzioni. Non ambiguo: ogni istruzione deve essere non ambigua, interpretabile in un unico modo. Inoltre anche il modo di combinare le istruzioni deve essere non ambiguo. Deterministico: con uguali dati di ingresso e a parità di condizioni di partenza, deve produrre gli stessi risultati.

Risoluzione di un problema Esigenze Utente Analisi Problema MCD(N,M) Progettazione MCD(132,24) Istanza Algoritmo ALGORITMO DI EUCLIDE Programmazione 132,24 Dati di input Programma main() { } Esecuzione Calcolatore Risultati 12

Come affrontare un problema Analisi Dall'esigenze dell'utente e dai dati di ingresso, capire cosa ci si aspetta per la soluzione del problema (dati di uscita). Progettazione Scomporre il problema in sottoproblemi più semplici fino a giungere ad operazioni elementari (programmazione topdown). Trovare l algoritmo risolvente. Programmazione Convertire l algoritmo nel linguaggio di programmazione scelto. Esecuzione Con i dati di ingresso, verificare il buon funzionamento del programma

Errori Errori di analisi Sono dovuti all errata interpretazione delle esigenze dell utente. Normalmente comportano il rifacimento dell intero processo Errori di progettazione Portano all errata scrittura dell algoritmo. Normalmente si rivelano all esecuzione di istanze particolari e sono molto difficili da individuare Errori di programmazione Dovuti ad una errata implementazione dell algoritmo. Statici: errata scrittura del programma (di sintassi e/o grammaticali) Dinamici: si manifestano solo all esecuzione del programma Errori di esecuzione Molto rari, talvolta dovuti a malfunzionamendi hardware/software del calcolatore

Test e Debugging Test Al fine di evidenziare possibili errori di progettazione o di programmazione (errata interpretazione dell algoritmo o dinamici) normalmente si prevede una fase di test (o verifica) del programma stesso. In questa fase si controllano che i risultati ottenuti siano validi per istanze particolari del mio problema (diversi valori iniziali, dati di ingresso particolari, ecc.). Se l algoritmo darà risultati corretti per queste particolari istanze, potremmo ragionevolmente pensare che esso dia risultati corretti per ogni istanza del problema. Debugging (dall inglese spulciare ) Se i risultati ottenuti nella fase di verifica evidenziano errori, si dovrà effettuare il debugging del programma. Con questa operazione si intende la verifica passo-passo del programma scritto al fine di individuare i possibili errori fatti.