Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica

Documenti analoghi
L ELABORATORE ELETTRONICO

L ELABORATORE ELETTRONICO!

ELEMENTI DI INFORMATICA L. Ing. Claudia Chiusoli

Elaboratore Elettronico

L ELABORATORE ELETTRONICO

Introduzione all informatica

INFORMATICA (Computer Engineering o

L informatica comprende: INFORMATICA. Varie definizioni: Definizione proposta: ELABORATORE ELETTRONICO ( COMPUTER ) L ELABORATORE

INFORMATICA. Scienza degli elaboratori elettronici (Computer. informazione

La Programmazione particolare insieme di azioni particolare tipologia di dati risolvere un problema

CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1

Scienza dei calcolatori elettronici (Computer Science) Scienza dell informazione. è uno strumento in grado di eseguire insiemi di azioni elementari.

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science)

Cosa è l Informatica?

A lezione sono stati presentati i seguenti passi per risolvere un problema:

Dall algoritmo al calcolatore: concetti introduttivi. Algoritmo. Problema: consumo medio 9/27/2018. Fondamenti di Programmazione 3

Risoluzione di un problema

ALGORITMI: PROPRIETÀ FONDAMENTALI

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

Introduzione agli Algoritmi

Algoritmi e Programmi

Strumento per la rappresentazione e l elaborazione delle informazioni

Metodi per la rappresentazione delle informazioni Metodi per la rappresentazione delle soluzioni Linguaggi di programmazione Architettura dei

L ELABORATORE ELETTRONICO

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

Concetti Introduttivi. Il Computer

Scienza dei calcolatori elettronici (Computer Science) Scienza dell informazione. È uno strumento in grado di eseguire insiemi di azioni elementari.

L ELABORATORE ELETTRONICO

Il Concetto di Algoritmo Corso di Informatica Laurea in Fisica

CORSO DI INFORMATICA Maria Grazia Celentano

Programmazione. Informatica. Risoluzione dei Problemi

Che cos è l Informatica?

Elementi di informatica

ESERCITAZIONI DI LABORATORIO DI CALCOLO NUMERICO. Introduzione: Algoritmi e Programmazione strutturata

Introduzione all Informatica e alla Programmazione. Fondamenti di Informatica T

Problemi, algoritmi, calcolatore

Che ruolo ha il linguaggio di programmazione?

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Unità di apprendimento 6. Dal problema al programma

Università degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie

Il concetto di calcolatore e di algoritmo

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Algoritmi. Andrea Passerini Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Lezione 1. Algoritmi, Informatica e Informazione. Università degli Studi della Calabria. Facoltà di Ingegneria. INTRODUZIONE ALL INFORMATICA corso F

Algoritmi. Strutture dati. Strumenti del linguaggio di programmazione

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

INFORmazione+autoMATICA. Perché saperne di piu? Le fasi della programmazione. Cosa intendiamo per programmazione

Informatica, Algoritmi, Linguaggi

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

1 Esercizi in pseudocodice

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

Lezione 1: Concetti introduttivi. Informatica Algoritmo Programma

Introduzione agli Algoritmi 4

Lezione 1. Problemi Algoritmi Programmi

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica

ALGORITMI E SOLUZIONI DI PROBLEMI

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

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

Introduzione al Corso

Dall algoritmo al calcolatore: concetti introduttivi. Fondamenti di Programmazione

3. Programmi e algoritmi

Corso di Informatica di Base

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

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

Caratteristiche di un calcolatore elettronico

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi

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

Introduzione al Corso

Laboratorio di Programmazione

Fondamenti di Algoritmi

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Fondamenti di Informatica 1 (I Modulo) Introduzione agli algoritmi. Roberto Basili a.a

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 20 ottobre Corso di laurea in Economia

Le fasi della programmazione

Laboratorio di Calcolo di Aerodinamica: II Lezione

LABORATORIO DI INFORMATICA

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo

Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria. Docente : Ing. Secondulfo Giovanni Anno Accademico

Elementi di informatica

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI Algoritmi e programmazione Prof. Andrea Borghesan

ALGORITMI. Obiettivo: risolvere problemi mediante l uso di un elaboratore elettronico. Elaboratore elettronico

Transcript:

Programmazione Dipartimento di Matematica Ing. Cristiano Gregnanin Corso di laurea in Matematica 29 febbraio 2016 1 / 33

INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, bisogna conoscere un metodo risolutivo, cioè un metodo che a partire dai dati ingresso fornisce i risultati attesi. Per calcolare una moltiplicazione si possono usare diversi metodi: addizione 13x12 = 13 + 13 +... + 13 calcolo di 13x12 in colonna. 2 strade per giungere al medesimo risultato 2 / 33

INTRODUZIONE AGLI ALGORITMI Attraverso un esempio è possibile spiegare come fare una moltiplicazione, però si è spiegato solamente come fare una moltiplicazione particolare e non tutte le moltiplicazioni. Per spiegare un metodo che valga per tutti i numeri occorre definire per quali valori di ingresso funziona questo metodo 3 / 33

INTRODUZIONE AGLI ALGORITMI Si potrebbe cercare di dire al calcolatore di eseguire A + A + A +... + A per B volte. Problematiche: Cosa vuol dire una somma con B termini? Cosa vuol dire 0 termini? Quale istruzione deve essere ripetuta B volte? 4 / 33

INTRODUZIONE AGLI ALGORITMI Per codificare un meccanismo di risoluzione di un problema bisogna adottare accorgimenti ben precisi: non deve essere ambiguo occorre esplicitare i prerequisiti ovvero le istruzioni di base che che l esecutore deve saper compiere. Ad esempio per capire questo algoritmo bisogna sapere come si calcola un addizione occorre esplicitare su quali valori di ingresso si può applicare il metodo. Ad esempio i numeri naturali. 5 / 33

INTRODUZIONE AGLI ALGORITMI Esempio: calcolo del più piccolo numero reale > 0 1. Assegna ad R il valore 1 2. dividi R per 2 e metti il risultato in R 3. vai al passo 2 4. stampa R 6 / 33

INTRODUZIONE AGLI ALGORITMI Esempio: calcolo di Pigreco Formula di Leibniz per PI: 1. Assegna a P il valore 0 2. Assegna a S il valore 1 3. Assegna a D il valore 1 Π 4 = 1 1 3 + 1 5 1 +... (1) 7 4. Calcola S D, sommalo a P e metti il risultato in P 5. Cambia segno a S 6. Somma 2 a D e metti il risultato in D 7. Vai al passo 4 8. Moltiplica P per 4 9. Stampa P 7 / 33

RISOLUZIONE DEI PROBLEMI La risoluzione di un problema è un processo che, dato un problema ed individuato un opportuno metodo risolutivo, trasforma i dati iniziali nei corrispondenti dati finali. Affinché la risoluzione di un problema possa essere realizzata attraverso l uso del calcolatore, tale processo deve poter essere definito come sequenza di azioni elementari. Il termine algoritmo deriva dal nome del matematico persiano Muhammad ibn musa al-khwarizmi. 8 / 33

ALGORITMO Definizione è una sequenza finita di mosse che risolve in un tempo finito una classe di problemi. L esecuzione delle azioni nell ordine specificato dall algoritmo consente di ottenere, a partire dai dati di ingresso, i risultati che risolvono il problema. L esecutore è una macchina astratta capace di eseguire le azioni specificate nell algoritmo 9 / 33

ALGORITMO Proprietà Eseguibilità: ogni azione deve essere eseguibile dall esecutore in un tempo finito Non ambiguità: ogni azione deve essere univocamente interpretabile dall esecutore Finitezza: il numero totale delle azioni da eseguire, per ogni insieme di dati di ingresso, deve essere finito. 10 / 33

ALGORITMO Proprietà Quindi, l algoritmo deve: Essere applicabile a qualsiasi insieme di dati di ingresso appartenenti al dominio di definizione dell algoritmo Essere costituito da operazioni appartenenti ad un determinato insieme di operazioni fondamentali Essere costituito da regole non ambigue, cioè interpretabili in modo univoco qualunque sia l esecutore (persona o macchina) che le legge 11 / 33

ALGORITMO Dopo aver deciso l algoritmo Occorre fare in modo che l elaboratore sia in grado di eseguirlo Le mosse elementari devono essere eseguibili dal calcolatore (quindi devo sapere quali istruzioni il calcolatore può eseguire) Le istruzioni vengono eseguite sui dati e forniscono dei risultati L algoritmo deve essere scritto in maniera formale: codificato in un preciso linguaggio di programmazione 12 / 33

ALGORITMO e PROGRAMMA Passi per la risoluzione di un problema: Individuazione di un procedimento risolutivo Scomposizione del procedimento in un insieme ordinato di azioni (algoritmo) Rappresentazione dei dati e dell algoritmo attraverso un formalismo comprensibile dal calcolatore (linguaggio di programmazione) Si può affermare che: Quando per un problema si definisce un metodo risolutivo (avente le proprietà viste in precedenza) si sta generando un algoritmo. In seguito, quando l algoritmo viene codificato attraverso un linguaggio di programmazione allora si genera un programma. Il programma(reale) attua l algoritmo(astratto) 13 / 33

ALGORITMO e PROGRAMMA 14 / 33

PROGRAMMA Un programma è un testo scritto in accordo alla sintassi e alla semantica di un linguaggio di programmazione Un programma è la formulazione testuale di un algoritmo che risolve un dato problema 15 / 33

ESEMPIO DI UN PROGRAMMA # This program adds two numbers # S t o r e i n p u t numbers num1 = input ( Enter f i r s t number : ) num2 = input ( Enter second number : ) # Add two numbers sum = f l o a t (num1) + f l o a t (num2) # D i s p l a y the sum p r i n t (sum) 16 / 33

ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni elementari Le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti (risultati) L esecuzione di azioni viene richiesta all elaboratore attraverso frasi scritte in qualche linguaggio 17 / 33

PROGRAMMAZIONE L attività con cui si predispone l elaboratore a eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema 18 / 33

ALCUNE DOMANDE FONDAMENTALI Quali istruzioni esegue un elaboratore? Quali problemi può risolvere un elaboratore? Esistono problemi che un elaboratore non può risolvere? Che ruolo ha il linguaggio di programmazione? 19 / 33

PROBLEMI DA RISOLVERE I problemi che siamo interessati a risolvere con l elaboratore sono di natura molto varia. Esempi: Dati due numeri trovare il maggiore Dato un elenco di nomi e relativi numeri di telefono trovare il numero di telefono di una persona Dati a e b, risolvere ax + b = 0 Stabilire se una parola viene alfabeticamente prima di un altra Somma di 2 numeri interi Ordinare una lista di elementi Calcolare il massimo comun divisore fra 2 numeri reali Calcolare il massimo in un insieme 20 / 33

RISOLUZIONE DEI PROBLEMI La descrizione del problema non fornisce (in generale) un metodo per risolverlo. Affinché un problema sia risolvibile è però necessario che la sua definizione sia chiara e completa. Non tutti i problemi sono risolvibili attraverso l uso del calcolatore. Esistono classi di problemi per le quali la soluzione automatica non è proponibile. Ad esempio: se il problema presenta infinite soluzioni per alcuni dei problemi non è stato trovato un metodo risolutivo per alcuni problemi è stato dimostrato che non esiste un metodo risolutivo automatizzabile 21 / 33

RISOLUZIONE DEI PROBLEMI Pare essere ragionevole concentrarsi su problemi che ammettono un metodo risolutivo, ovvero su funzioni calcolabili. Tecnologie e metodi di programmazione: Tecnologie: strumenti per lo sviluppo di programmi Metodologie: metodi per l utilizzo corretto ed efficace delle tecnologie di programmazione. 22 / 33

ALGORITMI E PROGRAMMI Ogni elaboratore è una macchina in grado di eseguire azioni elementari su oggetti detti dati L esecuzione delle azioni è richiesta all elaboratore tramite comandi elementari chiamati istruzioni espresse attraverso un opportuno formalismo: il linguaggio di programmazione La formulazione testuale di un algoritmo in un linguaggio comprensibile a un elaboratore è detta programma 23 / 33

ALGORITMI: ESEMPI Soluzione dell equazione ax + b = 0 leggi i valori di a e b calcola -b dividi quello che hai ottenuto per a e chiama x il risultato stampa x Osservazione: Per denotare dati nell algoritmo si utilizzano variabili ossia nomi simbolici 24 / 33

ALGORITMI: ESEMPI Calcolo del massimo di una sequenza di numeri a 1...a n Scegli il primo elemento come massimo provvisorio: max = a 1 Per ogni elemento a i dell insieme valuta: se a i > max allora eleggi a i come nuovo massimo provvisorio max = a i Il risultato è max 25 / 33

ALGORITMI: ESEMPI Stabilire se una parola P viene alfabeticamente prima di una parola Q Leggi P,Q Ripeti quanto segue: 1. se prima lettera di P < prima lettera di Q 2. allora scrivi vero 3. altrimenti se prima lettera di P > Q 4. allora scrivi falso 5. altrimenti 6. togli da P e Q la prima lettera fino a quando hai trovato le prime lettere diverse 26 / 33

ALGORITMI: ESEMPI Somma degli elementi dispari in un insieme: Detto INS l insieme di elementi considero un elemento X di INS alla volta senza ripetizioni. Se X è dispari, sommo X a un valore S inizialmente posto uguale a 0. Se X è pari non compio alcuna azione. Somma di due numeri X e Y Si supponga di avere a disposizione come mossa elementare solo l incremento e non la somma di interi. 27 / 33

ALGORITMI: ESEMPI Soluzione: Somma di due numeri X e Y. Incrementare il valore di Z, inizialmente posto uguale a X per Y volte. Ovvero: poni Z = X poni U = 0 finché U è diverso da Y 1. incrementa Z (Z = Z + 1) 2. incrementa U (U = U + 1) il risultato è Z 28 / 33

ALGORITMI EQUIVALENTI Due algoritmi si dicono equivalenti quando: hanno lo stesso dominio di ingresso hanno lo stesso dominio di uscita in corrispondenza degli stessi valori del dominio di ingresso producono gli stessi valori nel dominio di uscita 29 / 33

ALGORITMI EQUIVALENTI Due algoritmi equivalenti forniscono lo stesso risultato possono avere diversa efficienza possono essere profondamente diversi 30 / 33

ALGORITMI EQUIVALENTI Esempio: calcolo del MCD fra due interi M,N algoritmo 1 1. Calcola l insieme A dei divisori di M 2. Calcola l insieme B dei divisori di N 3. Calcola l insieme C dei divisori comuni 4. Il risultato è il massimo dell insieme C algoritmo 2 (di Euclide) 1. Se M = N allora M (oppure N) 2. Se M > N allora MCD(M-N,N) 3. Se M < N allora MCD(M,N-M) 31 / 33

ALGORITMI EQUIVALENTI Algoritmo 2 (di Euclide) Finché M!= N 1. Se M > N allora sostituisci a M il valore M-N 2. altrimenti sostituisci a N il valore N-M Il MCD è il valore finale ottenuto quando M e N diventano uguali 32 / 33

ALGORITMI EQUIVALENTI Gli algoritmi 1 e 2 sono equivalenti... Ma hanno efficienza ben diversa. Perchè? Esempio: provare a calcolare l MCD di 324543324 e 654345432 33 / 33