Informatica CdL Scienze e Tecniche Psicologiche a.a

Slides:



Advertisements
Presentazioni simili
Introduzione alla programmazione ll
Advertisements

Introduzione alla programmazione lll
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
ALGORITMI E PROGRAMMAZIONE STRUTTURATA
Strutture di controllo in C -- Flow Chart --
ELEMENTI DI PROGRAMMAZIONE
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
Lezione 6 Strutture di controllo Il condizionale
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Programmazione Strutturata
1 Parte 2 Fondamenti di programmazione. 2 Definizione intuitiva di algoritmo Elenco finito di istruzioni che specificano una serie di operazioni, eseguendo.
Diagrammi a blocchi.
Strutture di controllo
GLI ALGORITMI Appunti preparati dalla prof.ssa Maria D’Angelo.
Istruzioni e algoritmi. Istruzioni Operative I passi elementari che compongono l’algoritmo sono le istruzioni. Distinguiamo: Istruzioni di input Istruzioni.
2a + 10b abx2 3a + 1 y 2 a + 1 x + 2y a − Espressioni algebriche
Unità di apprendimento 6 Dal problema al programma.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
Programmazione: Iterazione Esistono tre tipi di iterazione fondamentali e vedremo la corrispondenza dei relativi diagrammi a blocchi e la loro traduzione.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
INFORMATICA ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE.
CONTROLLO DELLA CONCORRENZA
Dal problema all’ algoritmo
© 2007 SEI-Società Editrice Internazionale, Apogeo
Dal problema all’ algoritmo
LA PROGRAMMAZIONE: Algoritmi e programmi
La rappresentazione degli algoritmi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
DAL DIAGRAMMA AL CODICE
MASSIMO COMUNE DENOMINATORE (M.C.D)
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
Dal problema al processo risolutivo
7. Strutture di controllo Ing. Simona Colucci
I DIAGRAMMI DI FLUSSO Vantaggi e svantaggi.
IL CONCETTO DI ALGORITMO
Dal problema al processo risolutivo
7. Strutture di controllo
Unità di apprendimento 7
Insiemi di punti: altre caratteristiche
Strutture di controllo
Programmazione strutturata
Forme per rappresentare l’algoritmo:
CICLO DO – WHILE LINGUAGGIO C.
Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora
I MONOMI.
I DIAGRAMMI DI FLUSSO Vantaggi e svantaggi.
IL CONCETTO DI ALGORITMO
Programmare.
Linguaggio C++ Selezione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Strutture di Controllo
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
Vari e semplici programmi.
A = InputBox("Immetti un numero")
Ricorsione 16/01/2019 package.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Definizione di linguaggio di programmazione
Esercitazione su Instruction Level Parallelism
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Backtracking Lezione n°17 Prof.ssa Rossella Petreschi
Il Diagramma di Flusso Docente: Maria Savina Rossi Alunne:
APPUNTI SUL LINGUAGGIO C
Unità D2 Dal problema all’algoritmo
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Lezione Terza Primi passi di programmazione
Informatica CdL Scienze e Tecniche Psicologiche a.a
La programmazione strutturata
Algoritmi.
Process synchronization
Transcript della presentazione:

Informatica CdL Scienze e Tecniche Psicologiche a.a. 2018-2019 Diagrammi di flusso

Sommario Diagramma a blocchi Analisi strutturata Esercizi Informatica Andrea Frosini Informatica a.a. 06/07

Diagrammi a blocchi E’ un linguaggio formale di tipo grafico per rappresentare gli algoritmi Attraverso il diagramma a blocchi (o flow chart) si può indicare l’ordine di esecuzione delle istruzioni. Un particolare simbolo grafico detto blocco elementare è associato ad ogni tipo di istruzione elementare I blocchi sono collegati tra loro tramite frecce che indicano il susseguirsi delle istruzioni Informatica Andrea Frosini

Diagrammi a blocchi begin leggi x A C scrivi x end I blocchi elementari sono: begin leggi x A blocco iniziale blocco di lettura blocco di azione C scrivi x vero falso end blocco finale blocco di scrittura blocco di controllo Informatica Andrea Frosini

Diagrammi a blocchi Un diagramma a blocchi descrive un algoritmo se: ha un blocco iniziale e uno finale è costituito da un numero finito di blocchi azione e/o blocchi lettura/scrittura e/o blocchi di controllo ciascun blocco elementare soddisfa le seguenti condizioni di validità: ciascun blocco azione, lettura/scrittura ha una sola freccia entrante e una sola freccia uscente ciascun blocco di controllo ha una sola freccia entrante e due uscenti ciascuna freccia entra in un blocco o si innesta su una altra freccia ciascun blocco è raggiungibile dal blocco iniziale il blocco finale è raggiungibile da qualsiasi altro blocco Informatica Andrea Frosini

Esercizio Scrivere un algoritmo e rappresentarlo tramite un diagramma a blocchi per i seguenti problemi: attraversare la strada preparare la pasta calcolare l’area del triangolo determinare le radici di una eq. di 2° grado determinare la somma di due numeri Informatica Andrea Frosini

Analisi strutturata Analisi volta alla stesura di descrizioni di algoritmi tramite diagrammi a blocchi di tipo strutturato Un diagramma a blocchi strutturato è più comprensibile e modificabile In un diagramma strutturato non apparirà mai una istruzione di salto incondizionato Teorema di Bohm-Jacopini Ogni diagramma a blocchi non strutturato è sempre trasformabile in un diagramma a blocchi strutturato ad esso equivalente Due diagrammi sono equivalenti se partendo dagli stessi dati iniziali producono gli stessi risultati Informatica Andrea Frosini

Analisi strutturata Una descrizione è di tipo strutturato se i blocchi sono collegati tramite i seguenti schemi di flusso strutturato: schema di sequenza schema di selezione schema di iterazione Informatica Andrea Frosini

Analisi strutturata: schema di sequenza due o più schemi di flusso sono eseguiti in successione begin S1 Nota: lo schema di sequenza è strutturato se e solo se lo sono i blocchi S1 e S2 S2 end Informatica Andrea Frosini

Analisi strutturata: schema di selezione begin begin Schema di selezione: esiste un blocco di controllo che permette di scegliere quale schema di flusso debba essere eseguito tra due schemi, in funzione del valore di verità del controllo C C falso vero falso vero S1 S2 S1 end end Informatica Andrea Frosini

Analisi strutturata: schema di iterazione Schema di iterazione (ciclo o loop): modo conciso per descrivere azioni che devono essere ripetute begin begin S1 S1 C C vero falso falso vero end end Informatica Andrea Frosini

Analisi strutturata: schema di iterazione Nota: I due schemi non sono equivalenti: in un caso lo schema S1 è eseguito almeno una volta e nell’altro potrebbe non essere mai eseguito La condizione vero/falso per il controllo possono essere invertite: si parla di iterazione per vero quando S1 è eseguito finché la condizione su C è vera e iterazione per falso nell’altro caso Quando è necessario eseguire lo stesso insieme di operazioni per un numero specificato di volte si adotta un particolare schema di iterazione: inizia con una sequenza di azioni di assegnazione dette istruzioni di inizializzazione possiede sequenza di azioni (iterazione) che viene ripetuta per un numero specificato di volte Informatica Andrea Frosini

Analisi strutturata inizializzazione inizializzazione iterazione condizione di fine ciclo falso condizione di fine ciclo vero falso iterazione vero Informatica Andrea Frosini

Analisi strutturata Condizione di fine ciclo: viene controllata dopo l’esecuzione di ogni blocco di iterazione, può essere con controllo in coda al ciclo o in testa Un ciclo è detto enumerativo quando è noto a priori il numero di volte che deve essere eseguito Si usa un contatore di ciclo per controllarne l’esecuzione: si usa cioè una variabile che viene incrementata (o decrementata) fino a raggiungere un valore prefissato Informatica Andrea Frosini

Analisi strutturata Un ciclo è indefinito quando non è noto a priori il numero di volte che deve essere eseguito Questo accade quando la condizione di fine ciclo dipende dal valore di una o più variabili che o dipendono dall’interazione con l’esterno o vengono modificate all’interno dell’iterazione in modo complesso Informatica Andrea Frosini

Esercizi Svolti: 1. Ricerca di un elemento in un vettore 2. Determinare il massimo numero in un vettore 3. Media di un vettore 4. Fare il prodotto tra due numeri in ingresso utilizzando solo la somma 5. Stampa del resto della divisione intera tra due numeri (senza la funzione mod) Da svolgere: 6. Stampa dei multipli di un numero in ingresso minori di 100 7. Stampa della massima potenza minore di 100 di un numero in ingresso 8. Approssimazione intera, per eccesso, della radice quadrata di un numero in ingresso 9. Stampa il quoziente della divisione intera tra due numeri utilizzando solo la funzione differenza 10. Preso un numero x in input, se x<10 allora stampa “ciao” 5 volte, se x>20 allora stampa “evviva” x volte, altrimenti chiedi un numero y in input e stampa “salve” x-y volte, se x>y, y-x volte altrimenti. Informatica Andrea Frosini

Soluzione esercizio 1. Passo 1: per procedere alla soluzione dell’esercizio cerchiamo di avere ben chiaro il problema che dobbiamo affrontare. In special modo dobbiamo isolare: I dati in ingresso (variabili) che sono richiesti all’utente; I dati costanti che sono propri del problema; L’output richiesto per ciascun insieme di input. Per essere sicuri di aver compreso perfettamente il problema facciamo una serie di esempi calcolando alcuni output a partire da input diversi. Informatica Andrea Frosini

Soluzione esercizio 1. Passo 2: analizziamo il modo di risolvere il problema che abbiamo utilizzato durante gli esempi, chiarendo a noi stessi quali passi ci hanno portato ad una soluzione a partire dai dati in ingresso. SE I PASSI PER LA SOLUZIONE DEL PROBLEMA NON CI SONO ANCORA SUFFICIENTEMENTE CHIARI, TORNIAMO INDIETRO FACENDO ALTRI ESEMPI!!! Passo 3: Ciascun passo da noi trovato va infine tradotto in uno o più passi elementari, cioè passi che possono essere descritti tramite i blocchi a disposizione e gli schemi descritti in precedenza. Informatica Andrea Frosini

Soluzione esercizio 1: dettagli Relativamente all’esercizio 1 abbiamo: Passo 1: 1. Dati richiesti all’utente: a. Vettore (di numeri) all’interno del quale cercare il nostro elemento; b. Elemento (numero) che deve essere cercato. 2. Dati costanti del problema: a. Eventualmente la dimensione del vettore di ingresso, altrimenti nessuno Procediamo con un esempio: Input: Vettore=(2,5,43,72,0,26,2,4) Elemento = 26 Output: “Elemento trovato” Procedura: esamino il primo elemento del vettore, se è 26 dico “Elemento trovato”, altrimenti proseguo con il secondo elemento. Se il secondo elemento è 26 dico “Elemento trovato”, altrimenti passo al terzo elemento e così via fino alla fine degli elementi del vettore. Se l’elemento non è stato trovato dico “Elemento NON trovato” Informatica Andrea Frosini

Soluzione esercizio 1:dettagli Relativamente all’esercizio 1 abbiamo: Passo 2: Analisi e caratteristiche dell’algoritmo da noi descritto nella procedura di soluzione: 1. l’algoritmo presenta una parte nella quale si richiede di controllare tutti gli elementi del vettore. Questo immediatamente ci fa pensare alla presenza di un ciclo nel quale sarà necessaria una variabile che successivamente prenderà i valori delle posizioni del vettore, per tutta la sua lunghezza. 2. Tale ciclo dovrà terminare con esito positivo quando l’elemento è stato trovato, e con esito negativo quando la variabile di ciclo ha raggiunto la fine del vettore Passo 3: Avendo in mente le considerazioni fatte, si procede infine alla formalizzazione del diagramma di flusso come segue: Informatica Andrea Frosini

Soluzione esercizio 1: diagramma begin Passo 1, 1: dati in input dall’utente INPUT Vettore , Elemento i  0 dimensione Vettore  K Passo 1, 1: costanti del problema i = K vero OUTPUT Elemento NON trovato i  i+1 falso end Vettore [i] = Elemento falso vero OUTPUT Elemento trovato Informatica Andrea Frosini

Soluzione esercizio 1: diagramma Passo 2: ad ogni passo la variabile di ciclo i viene aumentata di 1 scorrendo gli elementi di Vettore begin Passo 2: la variabile di ciclo i arriverà fino alla fine di Vettore INPUT Vettore , Elemento i  0 dimensione Vettore  K Passo 2: controllo se l’ i-esimo elemento del Vettore è quello cercato i = K vero OUTPUT Elemento NON trovato i  i+1 falso end Vettore [i] = Elemento falso vero OUTPUT Elemento trovato Informatica Andrea Frosini

Soluzione esercizio 1: diagramma begin INPUT Vettore , Elemento i  0 i = dimensione Vettore vero OUTPUT Elemento NON trovato i  i+1 falso end Vettore [i] = Elemento falso vero OUTPUT Elemento trovato Informatica Andrea Frosini

Soluzione esercizio 2: diagramma begin INPUT Vettore i  0 Max  Vettore [ i ] i  i+1 i = dimensione Vettore vero OUTPUT Max Max  Vettore [ i ] falso Vettore [ i ] > Max end falso vero Informatica Andrea Frosini

Soluzione esercizio 3: diagramma begin INPUT Vettore i  0 Media  0 K  dimensione Vettore i = K vero Media  Media / K OUTPUT Media falso Media  Media + Vettore [ i ] i  i+1 end Informatica Andrea Frosini

Soluzione esercizio 4: diagramma begin INPUT X, Y i  0 Prod  0 i = Y vero OUTPUT Prod falso Prod  Prod + X i  i+1 end Informatica Andrea Frosini

Soluzione esercizio 5: diagramma begin Qui potrebbero essere eventualmente inseriti i controlli “Y diverso da 0” “X o Y negativi” INPUT X, Y X < Y vero OUTPUT X falso end X  X - Y Informatica Andrea Frosini

Principali corrispondenze diagrammi di flusso – istruzioni VBA Blocco di azione: instanziare/aggiornare il valore di una variabile fare calcoli ecc… i <- 0 i <- i+1 V[4] <- 2*(3+5) i = 0; i = i+1; V[4]= 2*(3+5) Blocco di ingresso/uscita: prendere dati dall’esterno (l’utente li inserirà da tastiera) e memorizzarli in una variabile inviare in output a video una variabile o del testo x = inputbox (“Inserire x”) L’ingresso del vettore viene realizzato con un ciclo avente istruzione tipo Vett[i] = inputbox (“Elemento “ & i) IN x IN Vett OUT Vett[i] , x OUT “Ciao Pluto” msgbox Vett[i] & x msgbox “Ciao Pluto”

Principali corrispondenze diagrammi di flusso – istruzioni VBA Blocco di controllo: instanziare/aggiornare il valore di una variabile fare calcoli ecc… If V(i) = x*x then if i < 100 then msgbox “ciao” End if V[i] = x*x x = 8 +3 V V F F i < 100 x <- 5 OUT x F end end V OUT “ciao” If x = 8+3 then msgbox x else x = 5 End if

Principali corrispondenze diagrammi di flusso – istruzioni VBA Cicli: utilizzati tutte le volte che si deve ripetere più volte una stessa azione 1. Scorrere gli elementi di un vettore stampandoli i = k end i <- 0 k=dim Vett For i = 0 to k-1 msgbox “elemento ” & V(i) Next V F i <- i+1 OUT Vett[i] 2. Stampare i multipli di un numero in ingresso fino a 100 For i = 0 to 100/num msgbox i*num Next i*num < 100 IN num i <- 0 F V end i <- i+1 OUT i*num