Algoritmi, dati e programmi



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

Descrizione di un algoritmo

Fasi di creazione di un programma

Lezione 8. La macchina universale

Come ragiona il computer. Problemi e algoritmi

Nozione di algoritmo. Gabriella Trucco

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

Appunti di Sistemi Elettronici

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

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Gli algoritmi: definizioni e proprietà

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

Algoritmi. Maurizio Palesi. Maurizio Palesi 1

Laboratorio di Informatica

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

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Laboratorio di Informatica

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

Introduzione. Informatica B. Daniele Loiacono

ALGEBRA DELLE PROPOSIZIONI

Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi.

Introduzione al MATLAB c Parte 2

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

Informatica. Traccia. Algoritmi, dati e programmi. Elaborazione di informazione. informazione. rappresentazione dell informazione (dati) dati

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Linguaggi e Paradigmi di Programmazione

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

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

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Introduzione alla programmazione in C

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

Corso di Informatica

Fondamenti di Informatica Ingegneria Clinica Lezione 16/10/2009. Prof. Raffaele Nicolussi

I sistemi di numerazione

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

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira

ISTITUTO TECNICO ECONOMICO MOSSOTTI

RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI

Programmi. Algoritmi scritti in un linguaggio di programmazione

Funzionalità di un Algoritmo

Metodologie di programmazione in Fortran 90

MAPPE DI KARNAUGH. Nei capitoli precedenti si è visto che è possibile associare un circuito elettronico o elettrico ad una funzione logica.

Architettura hardware

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Cos è un Calcolatore?

LINGUAGGI DI PROGRAMMAZIONE

Informatica. Informatica. Problema - soluzione. Algoritmi, dati e programmi. Introduzione ai concetti di: Distinguiamo tra: problema

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

Problemi, Algoritmi e Programmi

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

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

Strumenti di modellazione. Gabriella Trucco

Corso di Matematica per la Chimica

Algoritmi, dati e programmi

Mete e coerenze formative. Dalla scuola dell infanzia al biennio della scuola secondaria di II grado

L INNOVAZIONE SCIENTIFICO-TECNOLOGICA NEI PROCESSI PRODUTTIVI

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

Informatica per le discipline umanistiche 2 lezione 14

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

Linguaggi di programmazione

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Prova Finale di Livello Base Compito n.21

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Corso di Laurea in INFORMATICA

CPU. Maurizio Palesi

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

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

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

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

Alcune nozioni di base di Logica Matematica

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Progetto MIPS/SPIM. Descrizione. Questa tipologia di progetto consiste in

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

4 3 4 = 4 x x x 10 0 aaa

Elementi di Informatica

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

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

Architettura di un calcolatore

ISTITUTO COMPRENSIVO MONTEGROTTO TERME SCUOLA PRIMARIA DISCIPLINA: MATEMATICA - CLASSE PRIMA OBIETTIVI DI APPRENDIMENTO

Algebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa.

Elementi di Algebra Relazionale

PIATTAFORMA DOCUMENTALE CRG

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch.

Appunti sulla Macchina di Turing. Macchina di Turing

Alcune regole di base per scrivere un programma in linguaggio C

Dispensa di Informatica I.1

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

Calcolatori: Algebra Booleana e Reti Logiche

PROGETTO EM.MA PRESIDIO

Il calcolatore - Applicazioni

Teoria in sintesi 10. Attività di sportello 1, 24 - Attività di sportello 2, 24 - Verifica conclusiva, 25. Teoria in sintesi 26

Linguaggi di programmazione

Elementi di semantica operazionale

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI

Corso di Esercitazioni di Programmazione

FONDAMENTI di INFORMATICA L. Mezzalira

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

E F G H I

Anno 3. Funzioni: dominio, codominio e campo di esistenza

Transcript:

1 Algoritmi, dati e programmi

2 Informatica Informatica: Scienza che studia l informazione e la sua elaborazione. informazione rappresentazione dell informazione (dati) dati elaborazione dei dati tramite mezzi fisici calcolatori procedure programmi

3 Traccia Introduzione ai concetti di: problema dato algoritmo linguaggio di programmazione programma diagramma di flusso

4 Elaborazione di informazione Ogni problema di elaborazione di informazione è caratterizzato da Competenze distinte un insieme di dati di partenza un risultato cercato Ogni sua soluzione è una procedura che genera il risultato (GIUSTO) sulla base dei dati indicati Distinguiamo tra: conoscenza di come si risolve un problema: analisi del problema identificazione di una soluzione descrizione della soluzione effettiva capacità di risolvere un problema interpretazione della soluzione attuazione della soluzione (sviluppo di un programma) ci permette di sviluppare un programma. Il programma sarà poi interpretato ed eseguito da un esecutore (essere umano, calcolatore,...)

5 Elaborazione di informazione Per la descrizione della soluzione si utilizza: linguaggio naturale italiano, inglese, sono linguaggi ambigui linguaggio formale formalismo matematico pseudo-codice diagramma di flusso (flow-chart) linguaggio di programmazione codice macchina sono linguaggi non ambigui

6 Elaborazione di informazione La descrizione della soluzione può essere fatta a diversi livelli di dettaglio: Esempio: cucinare le lasagne al forno preparare il ragù preparare la besciamella setacciare 50g di farina e stemperarla con 10cc di latte aggiungere 30cc di latte e 50g di burro a pezzetti. bollire le lasagne mettere a strati nella teglia e cuocere in forno

7 Algoritmo algoritmo [al-go-rìt-mo] s.m. Dal Dal nome del matematico arabo Al-Khuwa rizmi (sec. IX): 1 (mat.) procedimento sistematico di calcolo: algoritmo algebrico, euclideo. 2 nel Medioevo, il calcolo basato sull'uso delle cifre arabiche. 3 in logica matematica, procedimento meccanico che permette la risoluzione di problemi mediante un numero finito di passi 4 in informatica, serie di operazioni logiche e algebriche, espresse in linguaggio comprensibile all'elaboratore, la cui sequenza costituisce un programma. Fonte: Dizionario Garzanti on-line (http://www.garzantilinguistica.it)

8 Algoritmo La descrizione rigorosa di un metodo che consente di ottenere un risultato attraverso passi elementari si chiama algoritmo. Definizione di algoritmo: un insieme ordinato di passi eseguibili e non ambigui che determinano un procedimento atto a risolvere un problema o una classe di problemi utilizzando dati iniziali e ottenendo dei risultati in un tempo finito.

Esempi di algoritmi 9 Algoritmo gli algoritmi per eseguire le 4 operazioni che ci sono stati insegnati alle elementari in un linguaggio adatto ai bambini la ricetta per fare le lasagne linguaggio dei libri di cucina livello di dettaglio diverso a seconda delle competenze dell esecutore Es.: Algoritmo per accedere a un PC del laboratorio Accendere lo schermo se è spento Scrivere il proprio <username> nella riga in cui compare la scritta login: Scrivere la propria <password> nella riga in cui compare la scritta password Se il sistema risponde con la frase: «utente non abilitato», chiamare il tutor

10 Esempi di algoritmi (2) 12317 7 53 1759 41 67 4

11 Esempi di algoritmi (3)

12 Linguaggio Un linguaggio è costituito da: un vocabolario; una sintassi, cioè un insieme di regole che specificano come comporre i vocaboli per ottenere costrutti ben formati (sintatticamente corretti); una semantica, che associa un significato ad ogni costrutto linguistico sintatticamente corretto.

13 Sintassi e semantica Sintassi Semantica Esempi Girare la carta Un lato grigio Distinguere tra i due lati Piegare a monte rappresenta Piegare a valle Ripiegare Piegare internamente rappresenta produce produce

14 Esecutore di algoritmi Un esecutore èun soggetto in grado di attuare le azioni specificate in un algoritmo Nei casi esemplificati, noi Differenti esecutori possono usare algoritmi diversi per risolvere uno stesso problema Nel caso della divisione, un computer NON userebbe l algoritmo proposto nell esempio. Un esecutore è quindi caratterizzato da: il linguaggio che è in grado di interpretare l insieme di azioni che è in grado di compiere l insieme delle regole che ad ogni costrutto linguistico sintatticamente corretto associano le relative azioni da compiere.

15 Programmi I programmi sono sequenze finite di istruzioni, ognuna scritta in un fissato linguaggio (di programmazione) I programmi eseguibili da un computer devono essere scritti usando un linguaggio che il computer è in grado di comprendere. Programmi e algoritmi Un algoritmo può essere quindi specificato sotto forma di programma eseguibile da un calcolatore

16 Dal problema al programma Per costruire un programma conviene procedere con metodo passando da un analisi del problema da risolvere all algoritmo di soluzione rappresentato in un linguaggio adatto all uomo ma non troppo lontano dai linguaggi di programmazione e infine al programma scritto nel linguaggio di programmazione prescelto

17 Dal problema al programma Il processo di sviluppo di un programma prevede le seguenti fasi: analisi del problema e specificazione dei dati in ingresso e in uscita; identificazione e formalizzazione di una soluzione; definizione dell algoritmo risolutivo; programmazione in un linguaggio di programmazione ad alto livello ; traduzione in linguaggio macchina; verifica (testing).

18 Dal problema al programma Approccio top-down alla progettazione: si parte da una descrizione ad alto livello della soluzione, in cui si individuano sotto-problemi si definiscono le soluzioni dei sotto-problemi in termini di operazioni più elementari e così via, fino ad esprimere tutto in termini di problemi elementari. Due aspetti da gestire: i dati da utilizzare la successione di operazioni da compiere

19 Linguaggi di programmazione Un linguaggio di programmazione è costituito da: un vocabolario un insieme di regole sintattiche che specificano come comporre istruzioni ben formate una semantica che associa un significato alle istruzioni ben formate, cioè l azione denotata da ciascuna istruzione. Rispetto ad una qualsiasi lingua parlata da esseri umani, un linguaggio di programmazione è molto più semplice, perché la sua sintassi è molto semplice. La teoria dei linguaggi formali fornisce una classificazione dei linguaggi in base alla loro semplicità.

20 LINGUAGGI DI BASSO LIVELLO Linguaggi di programmazione le cui istruzioni corrispondono ad azioni molto elementari. Richiedono uno sforzo di codifica maggiore da parte di un programmatore. LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione alle cui istruzioni corrisponde un insieme di azioni più articolato. Richiedono uno sforzo di codifica inferiore da parte di un programmatore.

21 Esempio Il linguaggio L1 mette a disposizione i comandi: Leggi dato A Leggi dato B Aggiungi_una_unità al dato A Esegui per <numero di volte> Il linguaggio L2 mette a disposizione i comandi: Leggi dato A Leggi dato B Somma <addendo1, addendo2>

22 Esempio (2) Vogliamo scrivere un programma per sommare due numeri A e B: In L1 Leggi dato A Leggi dato B Esegui per B volte: Aggiungi _una_unità al dato A In L2 Leggi dato A Leggi dato B Somma (A, B) L2 è un linguaggio di livello più alto rispetto a L1, perché offre al programmatore la possibilità di usare istruzioni che sono meno vicine al modo in cui lavora il processore e più vicine al modo in cui lavoriamo noi.

23 LINGUAGGIO MACCHINA Il processore è in grado di riconoscere (e quindi di eseguire) solo programmi scritti in un proprio linguaggio di basso livello (linguaggio macchina). Ogni modello di processore (es: Intel, Pentium, Motorola, PowerPC) ha un proprio linguaggio macchina diverso da quello degli altri processori. LINGUAGGI DI ALTO LIVELLO Un programma scritto in un linguaggio diverso dal linguaggio macchina deve essere quindi tradotto nel linguaggio che il processore sa riconoscere. I soggetti preposti a questa traduzione sono a loro volta dei programmi (interpreti e compilatori).

24 Confronti Linguaggio macchina Linguaggi di alto livello Velocità Portabilità Complessità NOTA SULLA VELOCITA Molti linguaggi di alto livello vengono tradotti (compilati) in linguaggio macchina da un apposito traduttore (detto compilatore), ottenendo in questo modo delle ottime prestazioni anche in termini di velocità. Esempi: C, PASCAL Altri linguaggi sono più lenti poiché vengono tradotti in linguaggio macchina (interpretati) al momento dell esecuzione. Esempi: Matlab

25 Linguaggi di programmazione: I contenitori di dati Un contenitore dati è un astrazione della nozione di area di memoria contenente dei dati, è detto anche variabile di programma. Un contenitore dati ha un tipo, che caratterizza un insieme di elementi, cioè l insieme dei valori ammessi per quel contenitore le operazioni possibili su di essi Es.: tipo intero insieme: insieme dei numeri interi rappresentabili operazioni: +, -, *, /, ecc.

26 Rappresentazione grafica dei contenitori di dati pippo: intero 54 Nome del contenitore: pippo tipo : intero Contenuto = dato (appartenete al tipo di dati associato al nome, infatti 54 è un numero intero, e su di esso sono ammesse le usuali operazioni aritmetiche)

27 Tipi di dati I linguaggi di programmazione ad alto livello (ma anche Excel e Access) prevedono la tipizzazione dei dati. I dati possono essere di tipo semplice o di tipo strutturato I dati di tipo semplice hanno un solo valore, ed i tipi comunemente previsti sono: Intero (Es.: -158 0 32) Reale (Es.: 1,414213562373-56,133) Logico (vero / falso) Testo (Es.: a, pippo, Mario_Rossi, casa)

28 I dati di tipo strutturato contengono più valori, ad esempio: vettori e matrici strutture uniformi, cioè più valori dello stesso tipo (Es.: vettore di interi [2,5,7,3,12,43]) Record strutture non uniformi, cioè più valori non necessariamente dello stesso tipo Es.: studente cognome : caratteri Rossi nome : caratteri Mario matricola : intero 656565..

29 Istruzioni Tre categorie: istruzioni di ingresso e uscita (lettura e scrittura) istruzioni aritmetico-logiche (assegnamento) istruzioni di controllo (selezione, iterazione)

30 Istruzioni di ingresso/uscita Le istruzioni di ingresso / uscita permettono di acquisire dati e di presentare risultati Esempi: read a acquisisci un dato da tastiera e mettilo nel contenitore a print 'La media dei valori dati in ingresso è ', media stampa il contenuto di media preceduto da un commento

31 Istruzioni di assegnamento Le istruzione di assegnamento modificano lo stato di memoria, cioè i valori dei contenitori dati (variabili). Sono della forma: CONTENITORE = ESPRESSIONE metti ESPRESSIONE in CONTENITORE Es.: a = b + 3 ESPRESSIONE può essere: una costante, una variabile, un espressione vera e propria, una funzione CONTENITORE è il nome di una variabile l esecutore valuta l ESPRESSIONE e mette il valore così calcolato in CONTENITORE, sostituendone il valore precedente.

32 Espressioni Le espressioni aritmetiche esprimono calcoli numerici somma, sottrazione, prodotto divisione elevamento a potenza, radice, logaritmo, esponenziale, ecc. Es.: b^2 4 * a * c Le espressioni sui caratteri modificano parole e testi. concatenazione Es.: auto&mobile (risultato: automobile)

33 Espressioni Le espressioni logiche (o booleane) esprimono calcoli logici e possono quindi assumere solo i valori vero o falso. Operatori logici relazionali: confronto fra due valori, ad es.: x < y (x + 5) == y ecc. Operatori logici AND, OR, NOT, ecc. per comporre, ad es.: (x < y) AND (y < z) Un valore booleano (vero, falso) è rappresentabile con un bit. Convenzionalmente si assegna 1 a vero, 0 a falso. Le espressioni di tipo booleano assumono particolare importanza perché, usate nelle istruzioni di controllo, ci permettono di prendere delle decisioni.

34 Istruzioni di controllo Le istruzioni di controllo permettono di modificare il flusso di esecuzione delle istruzioni all interno di un programma, altrimenti puramente sequenziale. Selezione if, case,... Iterazione while, repeat for Si basano sull uso di espressioni booleane Es. se x > 0, calcola la radice quadrata di x

35 Diagrammi di flusso Blocchi di elaborazione: contengono sequenze di azioni metti x+y in y metti x-1 in x

36 Diagrammi di flusso Blocchi decisionali: contengono una condizione booleana; se vera, si segue la freccia vero, se falsa si segue la freccia falso. vero x = 0 falso

37 Diagrammi di flusso Un diagramma di flusso si ottiene collegando le frecce uscenti dai blocchi di elaborazione e decisionali.

38 Strutture di controllo principali sequenza selezione vero falso

39 Strutture di controllo principali iterazione falso vero

40 Esempio di decomposizione modulare

41 Simboli principali inizio o fine elaborazione decisione connessione

42 ESEMPIO: Programma che legge due numeri a e b e calcola la loro somma, usando un linguaggio con le istruzioni: -Lettura -Scrittura -Somma\sottrazione di una unità per volta Start a=0; b=0; Leggi a; Leggi b b>0? Si No Scrivi a; a=a+1; b=b-1; End

43 Esempio di programma strutturato procedura programma principale chiamata di procedura