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



Documenti analoghi
Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Nozione di algoritmo. Gabriella Trucco

Come ragiona il computer. Problemi e algoritmi

L ELABORATORE ELETTRONICO

L ELABORATORE ELETTRONICO!

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Elaboratore Elettronico

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

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.

Lezione 8. La macchina universale

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

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

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

L ELABORATORE ELETTRONICO

Appunti di Sistemi Elettronici

LE FUNZIONI A DUE VARIABILI

Corso di Informatica

SOMMARIO I radicali pag I radicali aritmetici pag Moltiplicazione e divisione fra radicali aritmetici pag.

Matematica in laboratorio

4 3 4 = 4 x x x 10 0 aaa

Numeri naturali numeri naturali minore maggiore Operazioni con numeri naturali

RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

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

Fasi di creazione di un programma

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

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

Elementi di Informatica e Programmazione

Problemi, Algoritmi e Programmi

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

Dimensione di uno Spazio vettoriale

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

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

Esempi di algoritmi. Lezione III

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

Corrispondenze e funzioni

Il calcolo letterale per risolvere problemi e per dimostrare

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

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

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Informatica. Esistono varie definizioni: Scienza dei calcolatori elettronici (Computer Science) Scienza dell informazione

Le Macchine di Turing

La programmazione. Sviluppo del software

Informatica. appunti dalle lezioni del 20/09/2011 e del 27/09/2011

ELEMENTI DI INFORMATICA L. Ing. Claudia Chiusoli

Linguaggi e Paradigmi di Programmazione

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

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

Metodologie di programmazione in Fortran 90

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

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

Appunti sulla Macchina di Turing. Macchina di Turing

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme

Alcune nozioni di base di Logica Matematica

Logaritmi ed esponenziali

PROGRAMMA SVOLTO NELLA SESSIONE N.

Introduzione al MATLAB c Parte 2

Convertitori numerici in Excel

Cos è un Calcolatore?

Descrizione di un algoritmo

Gli algoritmi: definizioni e proprietà

24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2

Dispense del corso di Introduzione all Informatica della Facoltà Di Scienze Matematiche, Fisiche e Naturali dell Università della Calabria

Funzioni. Funzioni /2

4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI

Esercizi su lineare indipendenza e generatori

Origini e caratteristiche dei calcolatori elettronici

Funzionalità di un Algoritmo

INFORMATICA (Computer Engineering o

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

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

risulta (x) = 1 se x < 0.

INFORMATICA. Scienza degli elaboratori elettronici (Computer. informazione

I PROBLEMI ALGEBRICI

1 Giochi a due, con informazione perfetta e somma zero

Capitolo 2. Operazione di limite

Lezioni di Matematica 1 - I modulo

ALGEBRA DELLE PROPOSIZIONI

La selezione binaria

LA MOLTIPLICAZIONE IN CLASSE SECONDA

Algoritmi. Maurizio Palesi. Maurizio Palesi 1

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

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

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

1. PRIME PROPRIETÀ 2

Linguaggi di programmazione

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

Introduzione. Informatica B. Daniele Loiacono

Matematica generale CTF

LABORATORIO DI MATEMATICA RENDITE, AMMORTAMENTI, LEASING CON EXCEL

Funzioni in C. Violetta Lonati

STRUTTURE ALGEBRICHE

ESEMPIO 1: eseguire il complemento a 10 di 765

Schemi delle Lezioni di Matematica Generale. Pierpaolo Montana

Introduzione alla programmazione in C

Concetto di Funzione e Procedura METODI in Java

Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi.

Aritmetica: operazioni ed espressioni

Transcript:

INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi. Se voglio calcolare una moltiplicazione, posso usare diversi metodi: mi baso sull addizione: 13 x 12 = 13 + 13 + 13 + + 13 oppure faccio il calcolo in colonna 13 x 12 = ----- 26 + 13- = ----- 156 1 INTRODUZIONE AGLI ALGORITMI Se dobbiamo spiegare ad una persona come fare una moltiplicazione, possiamo fare un esempio: 13 x 12 = 13 + 13 + 13 + + 13 però così abbiamo spiegato solo come si fa una particolare moltiplicazione: 13 x 12. Vogliamo spiegare un metodo che valga sempre, per tutti i numeri. Dobbiamo innanzitutto definire per quali valori di ingresso funziona il nostro metodo 2 INTRODUZIONE AGLI ALGORITMI La persona che ci ascolta è in grado di imparare da esempi. Il calcolatore no non possiamo spiegarlo con un esempio, dobbiamo dire quali passi deve svolgere Proviamo così: A x B = A + A + A + + A INTRODUZIONE AGLI ALGORITMI La persona che ci ascolta è in grado di imparare da esempi. Il calcolatore no non possiamo spiegarlo con un esempio, dobbiamo dire quali passi deve svolgere Proviamo così: A x B = A + A + A + + A Cosa vogliono dire i puntini? Ambiguo! 3 B volte Ma cosa vuol dire una somma con B termini? Es, cosa vuol dire 0 termini? Quale istruzione deve essere ripetuta B volte? 4

INTRODUZIONE AGLI ALGORITMI Se vogliamo scrivere un libro di matematica di base, spiego come si fa una moltiplicazione. Devo scriverlo in modo che chiunque capisca il metodo non deve essere ambiguo SOLUZIONE: CALCOLO DEL PRODOTTO dobbiamo dire quali sono i prerequisiti, le istruzioni di base che l esecutore deve saper compiere per capire questo algoritmo bisogna sapere come si calcola un addizione dobbiamo dire su quali valori di ingresso si può applicare il metodo sui naturali 5 6 IL PIU` PICCOLO NUMERO REALE >0 RISOLUZIONE DI PROBLEMI 1. Assegna a R il valore 1 2. Dividi R per 2 e metti il risultato in R 3. Vai al passo 2 4. Stampa R Non stampa mai il valore R Non termina La risoluzione di un problema è il processo che, dato un problema e individuato un opportuno metodo risolutivo, trasforma i dati iniziali nei corrispondenti risultati 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. 7 8

ALGORITMO Il termine Algoritmo deriva dal nome del matematico persiano Muhammad ibn Mūsā al-khwā Khwārizmī (ca. 780-850) 850) ALGORITMO Un algoritmo è 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 DATI Esecutore Metodo Risolutivo (algoritmo) RISULTATI ESECUTORE una macchina astratta capace di eseguire le azioni specificate dall algoritmo. 9 10 ALGORITMI: PROPRIETÀ ALGORITMI: PROPRIETÀ (2) Eseguibilità: : ogni azione dev essere essere eseguibile dall esecutore in un tempo finito Non-ambiguità ambiguità: : ogni azione deve essere univocamente interpretabile dall'esecutore. L italiano è ambiguo, come si vede bene dagli indovinelli IL MESE DI MAGGIO: Ratto trascorre e a noi rose dispensa Finitezza: : il numero totale di azioni da eseguire, per ogni insieme di dati di ingresso, deve essere finito 11 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 12

UNA VOLTA DECISO L ALGORITMO Una volta che ho deciso l algoritmo, devo 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 13 ALGORITMO & 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 problema algoritmo programma metodo risolutivo linguaggio di programmazione 14 PROGRAMMA Un programma è un testo scritto in accordo alla sintassi e alla semantica di un linguaggio di programmazione. Un programma è la formulazione testuale, in un certo linguaggio di programmazione, di un algoritmo che risolve un dato problema. UN ESEMPIO DI PROGRAMMA (in linguaggio C) main() { int A, B; printf("immettere due numeri: "); scanf("%d %d", &A, &B); printf("somma: %d\n", A+B); } 15 16

L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse mosse ) elementari le azioni vengono eseguite su oggetti (dati( dati) ) per produrre altri oggetti (risultati( risultati) l esecuzione di azioni viene richiesta all elaboratore attraverso frasi scritte in qualche linguaggio (istruzioni) 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 DATI INPUT Elaboratore Elettronico RISULTATI OUTPUT 17 18 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? PROBLEMI DA RISOLVERE I problemi che siamo interessati a risolvere con l elaboratore sono di natura molto varia. Dati due numeri trovare il maggiore Dato un elenco di nomi e relativi numeri di telefono trovare il numero di telefono di una determinata persona Dati a e b, risolvere l equazione ax+b=0 Stabilire se una parola viene alfabeticamente prima di un altra Somma di due numeri interi Ordinare una lista di elementi Calcolare il massimo comun divisore fra due numeri dati. Calcolare il massimo in un insieme. 19 20

RISOLUZIONE DI PROBLEMI RISOLUZIONE DI 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 Noi ci concentreremo sui problemi che, ragionevolmente, ammettono un metodo risolutivo funzioni calcolabili. Uno degli obiettivi del corso è presentare le tecnologie e le metodologie di programmazione Tecnologie: strumenti per lo sviluppo di programmi Metodologie: metodi per l utilizzo corretto ed efficace delle tecnologie di programmazione un metodo risolutivo automatizzabile 21 22 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. 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 NOTA: per denotare dati nell algoritmo si utilizzano VARIABILI ossia nomi simbolici 23 24

ALGORITMI: ESEMPI Calcolo del massimo di una sequenza di numeri a 1 a n 1 livello di specifica Scegli il primo elemento come massimo provvisorio max a 1 Per ogni elemento a i dell insieme: se a i >max eleggi a i come nuovo massimo provvisorio: max a i Il risultato è max ALGORITMI: ESEMPI Stabilire se una parola P viene alfabeticamente prima di una parola Q leggi P,Q ripeti quanto segue: se prima lettera di P < prima lettera di Q allora scrivi vero altrimenti se prima lettera P > Q allora scrivi falso altrimenti (le lettere sono =) togli da P e Q la prima lettera fino a quando hai trovato le prime lettere diverse. 25 26 ALGORITMI: ESEMPI Somma degli elementi dispari di 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 tra interi 27 ALGORITMI: ESEMPI Somma degli elementi dispari di 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 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 incrementa Z (Z:=Z+1) incrementa U (U:=U+1) Il risultato è Z 28

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. ALGORITMI EQUIVALENTI (2) Due algoritmi equivalenti forniscono lo stesso risultato ma possono avere diversa efficienza e possono essere profondamente diversi! Dati (input) x Algoritmo Risultati (output) f(x) 29 30 ALGORITMI EQUIVALENTI (3) ESEMPIO: calcolo del M.C.D. fra due interi M, N Algoritmo 1 Calcola l'insieme A dei divisori di M Calcola l'insieme B dei divisori di N Calcola l'insieme C dei divisori comuni = A B Il risultato è il massimo dell insieme C Algoritmo 2 (di Euclide) M (oppure N) se M=N MCD (M,N) = MCD (M-N, N) se M>N MCD (M, N-M) se M<N ALGORITMI EQUIVALENTI (4) ESEMPIO: calcolo del M.C.D. fra due interi M, N Algoritmo 2 (di Euclide) Finché M N: se M>N, sostituisci a M il valore M = M-N altrimenti sostituisci a N il valore N = N-M Il Massimo Comun Divisore è il valore finale ottenuto quando M e N diventano uguali M (oppure N) se M=N MCD (M,N) = MCD (M-N, N) se M>N MCD (M, N-M) se M<N 31 32

ALGORITMI EQUIVALENTI (5) Gli algoritmi 1 e 2 sono equivalenti ma hanno efficienza ben diversa!! Es: calcolo del mcd di 324543324 e 654345432 mcd = 12 algoritmo 1: algoritmo 2: <0.1s 14.1s 33