Sistemi di Elaborazione delle Informazioni

Documenti analoghi
Il calcolatore. Architettura di un calcolatore (Hardware)

Corso di Informatica di Base

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi

Algoritmi e diagrammi di flusso

Programmazione: Sommario

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Sistemi Web per il turismo - lezione 3 -

Informatica. Come si risolve un problema?

Fondamenti VBA. Che cos è VBA

Concetti di base dell ICT

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Concetti Introduttivi. Il Computer

Il concetto di calcolatore e di algoritmo

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

Sommario. Problema computazionale Sviluppo software Algoritmi. Istruzioni Sequenziali, Condizionali, Cicliche; Javascript

Algoritmi e soluzione di problemi

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Cosa è l Informatica?

Rappresentazione con i diagrammi di flusso (Flow - chart)

Algoritmi e Linguaggi

Fondamenti di Algoritmi

Come ragiona il computer. Problemi e algoritmi

Algoritmi. Pagina 1 di 5

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 25/02/2016/ Foglio delle domande / VERSIONE 1

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

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

I.4 Rappresentazione dell informazione

Lezione 1. Problemi Algoritmi Programmi

Dispensa di Informatica II.1

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Le aree dell informatica

Informatica, Algoritmi, Linguaggi

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:

FONDAMENTI DI INFORMATICA

La codifica digitale

Programmazione strutturata

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

Rappresentazione dell Informazione

Le aree dell informatica

Corso di Linguaggi di Programmazione + Laboratorio

Primi passi col linguaggio C

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

INFORMATICA GENERALE Prof. Alberto Postiglione. Università degli Studi di Salerno. UD 3.1a: Gli Algoritmi

Informatica Generale 1 - Esercitazioni Flowgraph, algebra di Boole e calcolo binario

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio

MODULO 1. Punto 1.0 del Syllabus 5.0 Fondamenti. Prof.ssa Francesca Lascialfari

Informatica! appunti dalle lezioni dal 18/09/2012 al 28/09/2012!!

RISOLVERE I TEMI D ESAME

Informatica per le discipline umanistiche 2 lezione 15

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Università degli Studi di Palermo Dipartimento di Ingegneria Informatica. Informatica ed Elementi di Statistica 3 c.f.u. Anno Accademico 2010/2011

Esempio di Patto Formativo per la classe terza

Informatica Generale Andrea Corradini I linguaggi di programmazione

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI

Informatica e Bioinformatica: Algoritmi

Rappresentazione generale del problema e fasi di progettazione

DESCRIZIONI RIGOROSE c7

CONOSCERE IL LINGUAGGIO DEL COMPUTER

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo

Linguaggi di alto livello, compilatori e interpreti

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande / VERSIONE 1

Programmazione C Massimo Callisto De Donato

Diagrammi a blocchi 1

Ma il programma in Fig. 8.2 del libro? Stampa hello, world, dato un input n se e solo se l equazione

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

Elementi di informatica

Informatica di Base - 6 c.f.u.

Introduzione ai Calcolatori Elettronici

Corso di Informatica Modulo T1 1 - Il concetto di problema

Introduzione alla programmazione. Walter Didimo

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

Cosa si intende con stato

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

Introduzione al Calcolo Scientifico

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

Fasi della programmazione. Gabriella Trucco

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

LINGUAGGIO MACCHINA e ASSEMBLER. Una CPU MINIMA Il linguaggio macchina di MINIMA Il linguaggio Assembler per MINIMA

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

Dispensa del corso di Informatica

Sviluppo di programmi

LABORATORIO DI INFORMATICA

Corso di Architettura (Prof. Scarano) 09/04/2002

I Esercitazione: Istallazione Sistema Operativo

Fondamenti di programmazione!! Parte 2!

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Introduzione alla programmazione

Codifica binaria. Rappresentazioni medianti basi diverse

Architettura dei computer

Lezioni di Informatica di Base per la Facoltà di Lettere e Filosofia. Algoritmi

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Concetti di Base sulla Programmazione. Prof.Ing.S.Cavalieri

Transcript:

SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2016/2017 1

I linguaggi di programmazione e gli algoritmi 2

Prima Parte: A che punto siamo arrivati? La lezione di settimana scorsa è stata pesantissima: non mi ricordo nulla! 3

La volta scorsa Come funziona un computer? processore memoria programmi: serie di istruzioni elementari vengono eseguiti dal computer in linguaggio macchina (istruzioni binarie) 4

Seconda parte: Come si scrivono i programmi? Non vorrà mica farci scrivere dei programmi questa qua, vero?! 5

Linguaggio macchina Un programma è una serie di istruzioni elementari codificate in linguaggio macchina la serie è molto lunga (anche milioni di righe di codice) che prende il nome di oggetto binario ricordiamoci: un istruzione è composta da 4 byte: 10011111 00101000 00000011 01110100 Scrivere un programma direttamente in linguaggio macchina è un processo: lungo e soggetto ad errori praticamente impossibile per programmi complessi! 6

Assembly E possibile scrivere istruzioni più semplici: ADD 2000 2040 2080 usiamo lettere e numeri invece che bit Ognuna di queste istruzioni viene poi trasformata in un istruzione in linguaggio macchina: il programma che effettua la trasformazione in linguaggio macchina si chiama assembler il linguaggio si chiama assembly 7

Questo l ho capito! Voi informatici siete degli scansafatiche e, al posto che scrivere direttamente in linguaggio macchina (che è l unica cosa che i computer possono eseguire), scrivete in assembly (che è un po più semplice) e poi chiedete all assembler di trasformarlo in linguaggio macchina. 8

Abbiamo detto: Tutto in assembly? l assembler trasforma un istruzione scritta in assembly in una istruzione scritta in linguaggio macchina l oggetto binario (l insieme delle istruzioni di un programma) è lungo anche milioni di istruzioni Quindi, per scrivere un programma, dovremmo scrivere migliaia (anche milioni) di istruzioni in assembly E ancora troppo difficile! 9

Linguaggi di programmazione di alto livello I linguaggi di programmazione di alto livello permettono di specificare istruzioni in linguaggi più semplici per l uomo: istruzioni più complesse rispetto alle istruzioni elementari eseguite dal processore il compilatore trasforma ogni istruzione di un programma di alto livello in una o più (spesso molte di più!) istruzioni elementari 10

Codifica del software 11

Quanta automazione? Il passaggio dal codice di alto livello al codice in linguaggio macchina è automatico E possibile semplificare ulteriormente la creazione di codice? in parte sì (ad esempio, riutilizzo del codice) in buona parte no: è un operazione che deve essere svolta manualmente dai programmatori 12

Quanto è difficile? E difficile scrivere codice di alto livello? molto meno che scrivere il codice in linguaggio macchina semplici programmi sono facili da scrivere un corso universitario è sufficiente per imparare le basi programmi complessi e/o di grandi dimensioni sono più difficili da scrivere spesso contengono errori 13

Errori dei programmi 14

Errori dei programmi (2) 15

Errori dei programmi (3) 16

Terza Parte: Cosa sono gli algoritmi Non c entrano nulla con i logaritmi! 17

Gli algoritmi che conoscete già Serie di istruzioni finalizzate a conseguire uno scopo: come si cucina una torta? come si fa una somma in colonna? come si monta un mobiletto? Queste sono procedure, non algoritmi, ora scopriamo la differenza... 18

Cos è un algoritmo Procedimento che permette di risolvere un dato problema attraverso una serie di passi eseguiti in una sequenza specificata: assume in input delle informazioni produce in output delle informazioni Problema Input Algoritmo Output 19

Algoritmo: 5 proprietà fondamentali Input specificato: bisogna specificare cosa l algoritmo assume in input Output specificato: quali risultati può generare l algoritmo Determinatezza Efficacia Terminazione 20

Determinatezza L algoritmo specifica precisamente la sequenza di operazioni Ogni operazione deve avere una sola interpretazione possibile Esempio: eseguire i passi necessari eseguire i passi 1, 2, 5 aggiungete un po di sale aggiungete 4g di sale 21

Efficacia (o calcolabilità) L algoritmo deve poter essere eseguito in modo meccanico Deve essere possibile calcolare ogni operazione Ad ogni passo si ha la conoscenza: degli input dell algoritmo dei risultati calcolati nei passi precedenti 22

Terminazione Come potrebbe non terminare una procedura? alcune operazioni possono essere ripetute se fossero ripetute all infinito, la procedura potrebbe non terminare 23

Programmi e algoritmi Un programma è un algoritmo espresso in un particolare linguaggio di programmazione: un programma implementa un algoritmo un algoritmo può essere implementato in diversi modi Gli informatici studiano principalmente gli algoritmi ma anche come possono essere implementati 24

Programmi e algoritmi Problema possono esistere più algoritmi per risolvere lo stesso problema Input Algoritmo Output Programma un algoritmo può essere implementato con linguaggi diversi Informatica di base Linea 1 25

Dal problema al programma Problema Algoritmo lavoro umano Espressi in linguaggio naturale Espressi in linguaggi formali implementazione (fatta dall uomo) Codice di alto livello Compilazione e assemblamento Codice oggetto 26

Linguaggi naturali vs formali Linguaggi naturali: es: italiano, inglese, etc... sono soggetti ad interpretazioni Linguaggi formali: es: assembly, C++, Java (2 linguaggi di alto livello) sono univocamente interpretabili 27

Terza Parte: Pensiamo in modo algoritmico! Mmm, qua diventa difficile... 28

Prendiamo un problema reale Abbiamo dei CD in una scaffalatura uno spazio per ogni CD Ogni CD ha un prezzo Vogliamo mettere il CD con il prezzo minore all inizio della scaffalatura (a sinistra) Definiamo l algoritmo MEAS (=Metti Economico A Sinistra) MEAS è un nome inventato solo per questa lezione! 29

Input e Output Input: una sequenza di CD che riempie completamente una scaffalatura orizzontale. Es: Output: al termine, i CD in input sono in un ordine tale che il CD con il prezzo minore è nella prima posizione a sinistra dello scaffale. Es: 5 2 4 1 1 5 4 2 30

Procedura MEAS 1. Sia alfa la prima posizione a sinistra 2. Sia beta la posizione appena a destra di alfa 3. Se il CD in posizione beta costa meno del CD in posizione alfa, allora scambia il CD in posizione alfa con il CD in posizione beta 4. Se c è almeno una posizione a destra di beta, sposta beta a destra di una posizione e torna al passo 3, altrimenti termina 31

Esempio Input: Passo 1: Passo 2: Passo 3: 5 2 4 1 5 2 4 1 alfa 5 2 4 1 alfa beta 2 5 4 1 alfa beta Passo 4: + torna al passo 3 2 5 4 1 alfa beta 32

Esempio (cont.) Passo 3: 2 5 4 1 alfa beta Passo 4: + torna al passo 3 2 5 4 1 alfa beta Passo 3: 1 5 4 2 alfa beta Passo 4: termina. 33

La procedura MEAS è un algoritmo? Input e un output sono definiti Ogni istruzione è deterministica Ogni istruzione può essere calcolata L algoritmo termina: perché ad ogni iterazione del ciclo (istruzioni 3 e 4) beta indica una posizione sempre più a destra e le posizioni sono finite Dunque la procedura MEAS è un algoritmo 34

Diagramma di flusso Serve per rappresentare in forma grafica i passi di un algoritmo permette di visualizzare i blocchi di istruzioni, le scelte, le iterazioni, Serve ai programmatori, non ai computer 35

Diagramma di flusso Inizio Beta è la posizione successiva Alfa è la prima posizione a sinistra CD in pos. beta costa meno CD in pos. alfa? no sì Scambia CD in pos alfa e beta Sposta beta a destra di una posizione sì C è almeno una posizione dopo beta? no Termina 36

Ordinamento dei CD Consideriamo un nuovo problema: vogliamo ordinare tutti i CD in base al loro prezzo Possiamo: trovare un metodo completamente nuovo oppure estendere il metodo precedente 37

Input e Output Input: una sequenza di CD che riempie completamente una scaffalatura orizzontale. Es: Output: al termine tutti i CD in input sono ordinati a seconda del loro prezzo, da sinistra (il più basso) a destra (il più alto). Es: 5 2 4 1 1 2 4 5 38

Idea! Eseguo MEAS una volta e metto il CD più economico a sinistra Poi eseguo MEAS un altra volta, considerando tutte le posizioni tranne la prima (il più economico è già nella prima posizione) metto il secondo più economico al secondo posto Continuo fino a quando non l ho fatto per tutti! 39

Applico MEAS a ottengo: Esempio Nella prima posizione c è il CD giusto Applico MEAS a ottengo: Nella seconda posizione c è il CD giusto Applico MEAS a ottengo: 5 2 4 1 1 5 4 2 5 4 2 2 5 4 5 4 4 5 Nella 3 e 4 posizione ci sono i CD giusti 40

MEAS Procedura OrdinaCD 1. Sia alfa la prima posizione a sinistra 2. Sia beta la posizione appena a destra di alfa 3. Se il CD in posizione beta costa meno del CD in posizione alfa, allora scambia il CD il posizione alfa con il CD in posizione beta 4. Se c è almeno una posizione a destra di beta, sposta beta a destra di una posizione e torna al passo 3 5. Se ci sono almeno due posizioni a destra di alfa, sposta alfa alla posizione appena a destra di alfa e torna al passo 2 6. Termina 41

Per capire meglio Alfa è la posizione in cui vogliamo mettere il CD più economico rimasto tra quelli da considerare all inizio è la prima posizione, poi si sposta verso destra Ogni volta che cambio il valore di alfa, beta scorre tutti quelli successivi alla ricerca del CD più economico rimasto 42

Prova tu! Inventati qualche input e prova ad eseguire a mano l algoritmo OrdinaCD: esempio: 7 2 9 3 4 Prova a disegnare il diagramma di flusso di OrdinaCD: parti dal diagramma di flusso di MEAS e modificalo 43

OrdinaCD è un algoritmo? Input e un output sono definiti Ogni istruzione è deterministica Ogni istruzione può essere calcolata L algoritmo termina: perché beta indica una posizione sempre più spostata a destra (e le posizioni sono finite!) ogni volta che beta arriva all ultima posizione, alfa viene spostato a destra (e le posizioni sono finite!) Dunque la procedura OrdinaCD è un algoritmo 44

Quinta parte: Riepilogo 45

Gli algoritmi Cos è un algoritmo Quali sono le proprietà di un algoritmo: Input definito Output definito Determinatezza Efficacia Terminazione 46

Come si ragiona in modo algoritmico? Capacità che dovete acquisire: come si può trovare un algoritmo che risolva un (semplice) problema? dato un algoritmo, sono in grado di capire cosa fa? I diagrammi di flusso possono aiutarvi a capire meglio un algoritmo 47