Dal problema al programma

Slides:



Advertisements
Presentazioni simili
Il Software.
Advertisements

Analisi e progettazione
Scomposizione funzionale
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
Linguaggi algoritmici
Evoluzione dei linguaggi di programmazione
Procedure e funzioni A. Ferrari.
I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI
Modulo 8 – Dal Problema Al Programma
I linguaggi di programmazione
Inizio… Linguaggi Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi Formali Linguaggi.
Le Informazioni e la loro Rappresentazione nei calcolatori
Algoritmi e Programmazione
Fondamenti di Informatica
Sommario Gli algoritmi I linguaggi per la formalizzazione di algoritmi
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Il computer ragiona? Problemi e algoritmi.
1 Le competenze di base dell'asse matematico Utilizzare le tecniche e le procedure del calcolo aritmetico ed algebrico, rappresentandole anche sotto forma.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Introduzione alla programmazione l
Linguaggi di Programmazione 1 docente: Maurizio Tucci Lezione 0.1 Concetti di Base.
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
Unità Didattica 1 Algoritmi
Unità Didattica 2 I Linguaggi di Programmazione
Primi Elementi di Programmazione in C++
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica Algoritmi
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Gli algoritmi.
Problemi e algoritmi. I problemi È un quesito che attende una risposta detta soluzione Ma come trovare la soluzione? Spesso si ricorre a tentativi fino.
Elementi di Informatica
Elementi di Informatica
Da Problema a Programmazione
ELEMENTI DI PROGRAMMAZIONE
Algoritmi e Programmazione strutturata
INFORMATICA MATTEO CRISTANI.
PROGRAMMAZIONE: linguaggi
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Dal problema al programma
CONCETTI DI BASE 1.0 FONDAMENTI 1.1 HARDWARE 1.2 SOFTWARE 1.3 RETI
ECDL Patente europea del computer
1 Nuovo Obbligo Scolastico: Gli Assi Culturali. 2 Asse dei Linguaggi Asse Matematico Asse Scientifico-Tecnologico Asse Storico Sociale.
Linguaggi per COMUNICARE
Dal problema al programma
Programma di Informatica Classi Prime
COME RAGIONA UN COMPUTER
Dal problema all’ algoritmo
la traduzione dei programmi
Rappresentazione degli algoritmi
LINGUAGGI DI PROGRAMMAZIONE Per comunicare comandi e dati ad un computer occorre un particolare linguaggio detto LINGUAGGIO MACCHINA, che è un insieme.
Algoritmi.
Vincenza Ferrara - Dicembre 2007 Fondamenti di Matematica e Informatica Laboratorio Informatica I anno a.a
Realizzazione software
Il software Claudia Raibulet
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
Dal problema al programma
Il computer ragiona? Problemi e algoritmi. Paola Pianegonda2 Cos’è un problema?  Problema è qualsiasi situazione della quale non conosciamo la soluzione.
Programmazione dei Calcolatori Elettronici
Dal problema al programma
GLI ALGORITMI Appunti preparati dalla prof.ssa Maria D’Angelo.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Unità di apprendimento 6 Dal problema al programma.
Dal problema al programma – ciclo di sviluppo del software La scrittura del programma è solo una delle fasi del processo di sviluppo di un'applicazione.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Istruzioni e algoritmi. Istruzioni Operative I passi elementari che compongono l’algoritmo sono le istruzioni. Distinguiamo: Istruzioni di input Istruzioni.
Unità di apprendimento 6
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Transcript della presentazione:

Dal problema al programma

Introduzione intuitiva al concetto di problema Il problema è una situazione che pone delle domande alle quali si devono dare delle risposte. Risolvere il problema vuol dire uscire dalla situazione

Problemi e algoritmi Un problema consta dei seguenti elementi Dati: ossia ciò che è noto e che indichiamo col termine input Risultati: gli elementi incogniti che si devono determinare e che indicheremo con output Condizioni: le limitazioni cui devono soggiacere i risultati

Problemi di ottimizzazione Problemi e algoritmi Tipi di problemi Problemi di decisione Problemi di ricerca Problemi di ottimizzazione

Strategie per la risoluzione dei problemi Problema Verifica dei risultati Interpretazione Esecuzione Procedimento risolutivo (algoritmo) Modello

Strategie per la risoluzione dei problemi Interpretazione TOP DOWN GRAFICO Inserire pulsante di ritorno alla diapositiva 7 Utilizza uno schema grafico a segmenti Suddivide il problema in tanti piccoli sottoproblemi

Strategie per la risoluzione dei problemi Algoritmo Insieme delle istruzioni che definiscono una sequenza di operazioni mediante le quali si risolve il problema Deve essere : finito (numero limitato di passi ); definito (ogni istruzione deve consentire un’interpretazione univoca); eseguibile ( la sua esecuzione deve essere eseguibile con gli strumenti a disposizione); deterministico ( ad ogni passo deve essere definita una operazione successiva ).

Strategie per risoluzione dei problemi Rappresentazioni grafiche e formalizzate di un algoritmo La descrizione delle fasi esecutive del problema può avvenire mediante la formalizzazione dei passi elementari da effettuare che può essere realizzata con: Pulsante per la 14 Diagramma a blocchi o flow-chart e/o Pseudocodifica

Diagrammi a blocchi INPUT CONDIZIONI ISTRUZIONI OUTPUT Diagramma a blocchi o flow-chart Ha il pregio di evidenziare visivamente l’avanzamento in sequenza e le varie strutture che compongono l’algoritmo, presenta istruzioni di input, calcolo e/o di elaborazione, condizioni e output. INPUT CONDIZIONI ISTRUZIONI OUTPUT

Esempio di diagramma a blocchi inizio Somma di una sequenza di numeri N S =  A S= S+A Ritorno alla diapositiva 10 N=N-1 NO SI N=  S FINE

Automi esecutori La risoluzione di un problema è un processo di manipolazione di informazioni per generare nuove informazioni . Per risolvere un problema ci sono due tipi di attività : “intelligenti”di elaborazione “routinarie” di esecuzione

Caratteristiche di un automa Automi Sono macchina che compiono attività complesse in cui sono riconoscibili elementi propri delle attività superiori del comportamento umano. Possono essere programmate per svolgere diverse mansioni e per modificare le proprie azioni in relazione ai mutamenti ambientali. (Es: lavatrici, sistemi di controlli ascensori, bancomat…computer) Un automa è un sistema : Dinamico Passa da uno stato all’altro secondo gli input che riceve Invariante Se le condizioni iniziali sono le stesse il comportamento del sistema è invariato Discreto Le variabili, d’ingresso, di stato e d’uscita possono assumere solo valori discreti

Il concetto di automa Grafi e tabelle di transizione Servono a rappresentare il comportamento logico-funzionale di un automa Es. tabella e grafo di un automa a stati finiti di un ascensore S\i T 1 2 pt Pt/ fermo 1p/ su 2p/ su 1p Pt/ giù 1p/ fermo 2p 1p/ giù 2p/ fermo 1/ su 1/fermo T / fermo T/giù 1P PT 2/ fermo 1/ giù 2P 2/su 2/su

Automi e classi di problemi Un sistema automatico o automa è un sistema nel quale la componente umana è completamente eliminata nell’ambito dei processi, che sono ben determinati e prevedibili: Lavatrice, lavastoviglie, computer (automa a programma) Un sistema umano, al contrario, presenta un carattere probabilistico, poiché l’uomo può assolvere a funzioni impreviste , utilizzando il ragionamento, la creatività e l’intuito.

Problemi e algoritmi ESERCITAZIONI Un bambino ha costruito una torre di tre blocchi colorati così disposti dall’alto in basso: ROSSO-GIALLO-VERDE. IL bambino vuole capovolgerla in modo da avere VERDE-GIALLO-ROSSO.Può spostare solo un blocchetto alla volta. Individuare il numero minimo di stati per i quali si arriva alla configurazione desiderata. Cercare una chiave in un mazzo di 100 chiavi con il minor numero di prove (diagramma di flusso)

Linguaggi Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Sintassi e semantica dei linguaggi Un’informazione può : Essere acquisita direttamente tramite rilevamento di un evento reale attraverso percezione sensoriale. Essere trasmessa (messaggio) intenzionalmente da un emittente ad un ricevente per mezzo di un canale

La comunicazione Il messaggio presuppone l’utilizzo di un codice ( sistema di regole) e di un linguaggio che devono essere conosciuti sia dal emittente che dal destinatario, altrimenti la comunicazione non ha effetto ? ? ? ? emittente destinatario

Sintassi e semantica dei linguaggi La funzione del linguaggio è quella di sostituire ad oggetti o concetti dei segni/simboli per trasmettere un messaggio. Il segno è l’associazione di qualcosa di materiale e sensibile (immagine, suono…) che chiamiamo significante con qualcosa di puramente concettuale che chiamiamo significato Il codice ci consente l’interpretazione dei segni Segno = significante + significato gatto Il gruppo dei suoni o di lettere g/a/t/t/o

Sintassi e semantica dei linguaggi ELEMENTI DI UN LINGUAGGIO Alfabeto insieme finito e non vuoto di simboli convenzionali espressi con segni tipografici detti caratteri Ortografia insieme finito e non vuoto di regole per la scrittura dei suoni Sintassi insieme finito e non vuoto delle regole mediante le quali si formano le stringhe o le frasi di un linguaggio Semantica insieme finito e non vuoto di significati da attribuire alle stringhe Morfologia insieme finito e non vuoto di tuttele regole che servono per generare le forme di un linguaggio

Linguaggi nella comunicazione uomo - macchina L’uomo per comunicare all’ automa le strategie risolutive di un problema ha bisogno di un linguaggio formale che gli consenta di passare dall’ algoritmo al programma , cioè ad una sequenza di istruzioni mediante le quali si può risolvere il problema.

Linguaggi e automi Linguaggio macchina, linguaggio assemblativo (Assembler). Vicino alla logica della macchina Linguaggi non evoluti Linguaggi non orientati alla macchina , ma alla soluzione dei problemi. Vicino alla logica dell’uomo Linguaggi evoluti

Linguaggi e automi I principali software Office Automation Sistema operativo Word processor Foglio di calcolo Sistemi di gestione base dati Programmi per la realizzazione di presentazioni multimediali Programmi di grafica computerizzata Editor di suoni Editor di pagine web Software di base , controlla tutte le risorse del computer, necessita di un linguaggio più vicino al linguaggio macchina (Assembler)

Linguaggi di programmazione Problema Risultati Dalla formulazione del problema alla sua soluzione Elaborazione Algoritmo Programma sorgente Programma traduttore Programma oggetto

Linguaggi di programmazione L’algoritmo risolutivo viene trasformato in un programma attraverso un linguaggio di programmazione che può contenere: Programma sorgente Istruzioni di dichiarazione Istruzioni di input e output Istruzioni di controllo Istruzioni di assegnazione Descrivono dati e variabili utilizzati dal programma, definendone tipo e struttura Consentono di assegnare alla variabile un valore dello stesso tipo della variabile Sono istruzioni che richiedono salti di sequenza nell’esecuzione del programma Richiedono l’ingresso o l’uscita di un’informazione da una periferica alla memoria centrale e viceversa

Linguaggi di programmazione Fortran Cobol Algol Basic PHP Principali linguaggi Logo PL1 Lisp Java Pascal C /C++

Cosa e' la programmazione? La programmazione e' l'attivita' di sviluppare programmi per un calcolatore. Lo scopo della scrittura di un programma e' la risoluzione di un problema. Per risolvere un problema bisogna: Formulare il problema (specifica dei requisiti) in modo più o meno formale Capire il problema e scomporlo in parti gestibili (analisi del problema) Progettare una soluzione (algoritmo) Implementare la soluzione (scrittura del codice) Testare la soluzione e correggere eventuali errori (verifica del programma, testing e debugging) Tenere sempre aggiornato il programma (manutenzione)

L’ALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI

Informalmente, un algoritmo è una procedura ben definita che serve per risolvere un dato problema E’ una sequenza di passi che prende dei valori come input e produce altri valori come output Più precisamente, un algoritmo è un procedimento di calcolo , descrivibile con un numero finito di operazioni che conducono al risultato

IL PROGRAMMA Gli algoritmi sono astratti e per controllarne il funzionamento devono essere realizzati con un qualche strumento concreto Ad esempio la descrizione di una ricetta di cucina è un algoritmo ma la preparazione della pietanza è la realizzazione della ricetta. E’ solo allora che si vede se la ricetta “funziona” Altro esempio può essere rappresentato da una qualsiasi formula matematica, che rappresenta, nel linguaggio matematico un procedimento. Ma la bontà di tale regola può essere verificata solo con dei veri e propri calcoli, sostituendo alle variabili dei veri numeri. In ambito informatico, un algoritmo viene descritto tramite un programma, ossia un testo scritto in uno specifico linguaggio detto linguaggio di programmazione per essere eseguito da calcolatori elettronici

L’algoritmo e il programma Ogni linguaggio di programmazione ha una sua sintassi ed una propria rappresentazioni dei dati, e utilizza le proprie operazioni di manipolazione dei dati Invece: Le proprietà degli algoritmi sono talmente fondamentali, generali e robuste, da essere indipendenti dalle caratteristiche di specifici linguaggi di programmazione o di particolari calcolatori elettronici Quindi: PER RISOLVERE UN PROBLEMA E’ ASSOLUTAMENTE NECESSARIO TROVARE UN PROCEDIMENTO RISOLUTIVO DESCRIVIBILE CON UN ALGORITMO, E SOLO DOPO SI PUO’ PASSARE A SCRIVERE IL PROGRAMMA

PROGRAMMA = ISTRUZIONI + DATI Un programma può essere visto come un manipolatore di dati: a fronte di dati in ingresso che descrivono il problema producono dati in uscita come risultato del problema INPUT (dati) OUTPUT(dati) PROCESSO (istruzioni) Le operazioni sui dati sono le istruzioni. I dati sono gli oggetti su cui vengono eseguite le istruzioni. Tutti i linguaggi di programmazione prevedono un insieme di dati e istruzioni che il programmatore può utilizzare nella realizzazione dei propri programmi.

I DATI INPUT OUTPUT LAVORO NUMERICO ALFANUMERICO VARIABILE COSTANTE I dati possono essere distinti in base a : INPUT OUTPUT LAVORO Utilizzo all’interno del processo INTERO DECIMALE NUMERICO ALFANUMERICO Formato VARIABILE COSTANTE Valore assunto durante il processo Questi aspetti dei dati devono essere definiti già nell’algoritmo, in modo da poterli poi “tradurre” con la sintassi propria del linguaggio di programmazione

LE ISTRUZIONI Anche le istruzioni devono essere scritte rispettando la sintassi propria del linguaggio di programmazione Ogni linguaggio di programmazione ha le proprie istruzioni, ma tutti i linguaggi devono possedere alcune istruzioni per compiere le azioni fondamentali ·  Acquisire i dati su cui attivare il processo di elaborazione input  Comunicare all’esterno i risultati ottenuti output Azioni di tipo aritmetico assegnazione - assegnare un valore ad una variabile - utilizzare gli operatori aritmetici (+, -, /, *, %) Azioni di tipo logico confronto -  Utilizzare gli operatori di relazione( =, <, >, <=, >=, <>) per confrontare il contenuto di due variabili - Utilizzare gli operatori logici (and, or, not)