LA PROGRAMMAZIONE: Algoritmi e programmi
Obiettivo Imparare a PROGRAMMARE Imparare a costruire PROGRAMMI che permettano, tramite l’uso di computer, di risolvere problemi di diverso tipo.
Algoritmo Sequenza di passi che devono essere eseguiti secondo un ordine prefissato per raggiungere l’obiettivo desiderato Deve essere ben chiaro l’OBIETTIVO da raggiungere (DATI DI OUTPUT) e si devono conoscere i dati disponibili in partenza (DATI DI INPUT) Esempi : Telefonata Ricetta di cucina Indicazione di un percorso stradale Quando si identificano chiaramente i passi da eseguire per risolvere un problema si puo’ costruire l’ALGORITMO risolutivo.
ESEMPI Obiettivo : cucinare spaghetti al pomodoro Input : ingredienti Output : spaghetti al pomodoro Algoritmo: descrizione della preparazione Esecutore dell’Algoritmo : cuoco Obiettivo : calcolo area del quadrato attraverso un programma Dati di Input : lato del quadrato Dati di Output : area del quadrato Algoritmo : procedimento di calcolo: - richiedere all’utente la misura del lato - calcolare l’area ( = lato*lato) - comunicare il risultato Esecutore dell’Algoritmo : computer
Caratteristiche di un algoritmo Finito Deve essere composto da un numero finito di passi che devono essere compiuti un numero finito di volte. Deterministico A fronte degli stessi dati di input deve fornire gli stessi dati di output Non ambiguo I passi dell’algoritmo devono essere interpretabili in modo univoco dall’esecutore Generale Deve fornire la soluzione per tutti i problemi di una certa classe Un ALGORITMO e’ un insieme finito di passi che permette di risolvere tutti i problemi di una determinata classe
Metodologie per affrontare i problemi TOP-DOWN Il problema viene diviso in tanti sottoproblemi piu’ semplici, che avranno quindi minore complessita’ saranno piu’ facilmente risolvibili Si procede dal generale al particolare Esempio. Problema : Organizzare un pranzo. Sottoproblemi: - preparare Antipasti - preparare Primo Piatto - preparare Secondo Piatto - preparare Dessert
Metodologie per affrontare i problemi BOTTOM-UP Si risolvono prima i dettagli caratteristici del problema, che in un secondo momento verranno integrati per ottenere la soluzione del problema. Si procede dal particolare al generale Esempio Problema : Confezionare un maglione. Si preparano i vari “pezzi” (maniche, davanti, dietro), che poi verranno uniti.
Componenti di un algoritmo ALGORITMO = DATI + ISTRUZIONI Oggetti su cui operare Passi elementari che devono essere eseguiti
DATI
DATI Classificazioni possibili: Ad ogni dato viene associato un Nome (Identificatore) che permetta di identificarlo e che sia significativo Classificazioni possibili: in base all’uso (modo in cui interagiscono con il computer) in base al tipo (alle informazioni che rappresentano) in base alla possibilita’ di cambiare valore
DATI Classificazione in base all’interazione con il computer Dati di INPUT Forniti al computer dall’esterno Dati di OUTPUT Risultati comunicati all’esterno dal computer Dati INTERNI ( di LAVORO) Utilizzati nelle operazioni effettuate dall’algoritmo, ma non visibili all’utente
DATI Classificazione in base al TIPO Dati Numerici INTERI REALI (Numeri con virgola o interi molto grandi) Dati ALFANUMERICI Lettere dell’alfabeto, caratteri speciali
DATI Classificazione in base alla possibilita’ di cambiare valore Costanti Il valore del dato rimane immutato nel corso dell’elaborazione Variabili Il valore del dato puo’ cambiare nel corso dell’elaborazione.
Nome = significato (tipo) DATI VARIABILI Ogni dato variabile (chiamato semplicemente variabile), deve essere documentato, specificandone nome e tipo: Nome = significato (tipo) classificandolo come Dato di Input, Dato di Output o Variabile di Lavoro.
DATI Esempio Problema Calcolo area del cerchio di raggio R Dati di Input: R = raggio del cerchio (numerico reale) (dato variabile) Dati di Output: AREA = area del cerchio (numerico reale) (dato variabile Costanti: 3.14
Valore inserito dall’utente da tastiera DATI Algoritmo risolutivo. Richiedi raggio R all’utente AREA = R * R * 3.14 Comunica il valore di AREA all’utente R Valore inserito dall’utente da tastiera Area R * R *3.14
ISTRUZIONI
TIPI DI ISTRUZIONI Istruzione di LETTURA (di INPUT) Permette di attribuire un valore ad una variabile tramite digitazione su tastiera
Istruzione di SCRITTURA TIPI DI ISTRUZIONI Istruzione di SCRITTURA (di OUTPUT) Permette di visualizzare sul video, o stampante, il contenuto di una variabile o un messaggio.
TIPI DI ISTRUZIONI Istruzione di ASSEGNAZIONE Permette di attribuire (assegnare) un valore ad una variabile. Simbolo dell’istruzione: oppure =
TIPI DI ISTRUZIONI Modalita’ di utilizzo istruzione di Assegnazione 1^ modo: Identificatore Valore Es.: A 5 NomePersona ‘Anna’ 2^ modo: Identificatore1 Identificatore2 Es.: A B (dove A e B sono variabili) Il valore contenuto in B viene assegnato ad A Il contenuto di B non viene perso Il contenuto di A precedente viene perso 3^ modo: Identificatore Espressione matematica Es.: A ((K+3)/2) Viene calcolata l’espressione a destra ed il risultato viene assegnato ad A
TIPI DI ISTRUZIONI Osservazioni Variabili non inizializzate (alle quali non e’ stato assegnato un valore iniziale) con operazioni di lettura o assegnazione non hanno un valore definito. Una variabile puo’ apparire alla destra in un’istruzione di assegnazione, solo se prima e’ stata inizializzata. Es: TOTALE 0 leggi(PREZZO) TOTALE TOTALE + PREZZO Operatori aritmetici utilizzabili in algoritmi: + , - , * , / (divisione reale), DIV (divisione intera), MOD (resto)
Modalita’ di rappresentazione degli algoritmi
Modalita’ di rappresentazione algoritmi Modello grafico DIAGRAMMA A BLOCCHI (FLOW CHART) Le operazioni sono rappresentate con simboli grafici ed il flusso delle operazioni viene indicato da frecce Modello descrittivo PSEUDOCODIFICA Le operazioni sono rappresentate con frasi convenzionali
Modalita’ di rappresentazione algoritmi Operazioni Diagramma Pseudocodifica Inizio algoritmo INIZIO Fine algoritmo FINE Operazione Var espressione Istruzione di Input Leggi(Variabile) o Ricevi(Variabile) Istruzione di output Scrivi(Variabile) Comunica(Variabile)
L’ALGORITMO - i simboli del flow chart
Modalita’ di rappresentazione algoritmi Diagramma a blocchi Pseudocodifica Inizio Inizio Leggi(L); A L*L; Scrivi(‘Areaquadrato =‘, A) Fine. L A L*L ‘Area quadrato=’ A Fine
Metodologia per la soluzione di problemi
Metodologia per la soluzione di problemi Seguire le seguenti fasi: Analisi del problema Dati di Input Dati di Output 1a. Architettura di progetto scomposizione TOP-DOWN 1b. Analisi di dettaglio (se il problema e’ complesso)
Metodologia di lavoro per la soluzione di problemi 2. Stesura del procedimento risolutivo (con opportuna modalita’ di rappresentazione) 3. Codifica in linguaggio di programmazione (IMPLEMENTAZIONE)
Metodologia di lavoro per la soluzione di problemi Viene creato il programma sorgente che verra’ poi eseguito dall’elaboratore Il prodotto ottenuto dalle 3 fasi rappresenta la DOCUMENTAZIONE relativa alla soluzione proposta