Risoluzione di un problema

Documenti analoghi
L ELABORATORE ELETTRONICO

Introduzione agli Algoritmi

Sviluppo di programmi

CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1

Formalismi per la descrizione di algoritmi

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

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

L ELABORATORE ELETTRONICO!

Sviluppo di programmi

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

ELEMENTI DI INFORMATICA L. Ing. Claudia Chiusoli

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

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Elaboratore Elettronico

L ELABORATORE ELETTRONICO

ALGORITMI: PROPRIETÀ FONDAMENTALI

Introduzione alla programmazione

Introduzione all informatica

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

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

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

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

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

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

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

Diagrammi di flusso - Flowcharts. E un formalismo che consente di rappresentare graficamente gli algoritmi

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»

CORSO DI INFORMATICA Maria Grazia Celentano

Rappresentazione degli algoritmi

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p.

Caratteristiche di un calcolatore elettronico

Fasi di creazione di un programma

Programmazione. Informatica. Risoluzione dei Problemi

Dichiarazione di variabili

Cosa è l Informatica?

Sviluppo di programmi

Rappresentazione con i diagrammi di flusso (Flow - chart)

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Istruzioni Condizionali

Programmazione Procedurale in Linguaggio C++

Rappresentazione degli algoritmi

Introduzione all Informatica e alla Programmazione. Fondamenti di Informatica T

le operazioni base per la realizzazione di un algoritmo sono 4: visualizzazione risultati intermedi, scrittura risultati finali

Il Concetto di Algoritmo Corso di Informatica Laurea in Fisica

Istruzioni Condizionali

Algoritmi e Programmi

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

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

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

PROGRAMMAZIONE: Le strutture di controllo

Introduzione agli Algoritmi 4

Javascript: il browser

INFORMATICA (Computer Engineering o

Flow-chart. Introduzione agli algoritmi e ai diagrammi a blocchi.

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni

Algoritmi. Andrea Passerini Informatica. Algoritmi

Problemi, algoritmi, calcolatore

Fondamenti di Informatica

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

LA METAFORA DELL UFFICIO

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

INFORMATICA. Scienza degli elaboratori elettronici (Computer. informazione

Ing. Lorenzo Vismara

Introduzione alla programmazione strutturata

Programmazione Procedurale in Linguaggio C++

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

Algoritmi. Informatica B. Daniele Loiacono

Verifica parte IIB. Grafo di controllo. Criteri di selezione per test strutturali (white box) Test. Rif. Ghezzi et al

Introduzione. Informatica Generale. Lezioni: lunedì h. 11:10-13:00 lab. Zironi martedì h. 11:10-13:00 lab. Zironi mercoledì h. 9:10-11:00 lab.

Javascript: il browser

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Algoritmi. Informatica B. Daniele Loiacono

ALGORITMI. I diagrammi a blocchi o diagrammi di flusso (flow charts) sono diagrammi a blocchi

Il concetto di calcolatore e di algoritmo

Algoritmi. Strutture dati. Strumenti del linguaggio di programmazione

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3

Descrizione di un algoritmo

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

APPUNTI DI INFORMATICA

PROGRAMMAZIONE STRUTTURATA

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.)

Elementi di Informatica. Introduzione. Cos è l informatica. Corso di Laurea in Ingegneria Biomedica aa 2003/2004. Ing.

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

Due osservazioni sulle variabili

CAPITOLO 3 - ALGORITMI E CODIFICA

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

Corso di Informatica di Base

Lab 04 Programmazione Strutturata"

Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso

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

Esercizi svolti in aula

Esercizi sugli Algoritmi numerici

Verifica parte IIB. Rif. Ghezzi et al

Algoritmi e (cenni sul) calcolatore

Transcript:

Algoritmi

Risoluzione di un problema Descrizione di un problema! Individuazione di un ALGORITMO! Metodo risolutivo (progetto) Introduzione 2

Algoritmo Sequenza finita di mosse che risolve in un tempo finito una classe di problemi ovvero Deve essere applicabile a un qualsiasi insieme di dati del dominio Deve produrre risultati appartenenti al codominio Algoritmi 3

Caratteristiche di un algoritmo Eseguibilità: ogni azione deve essere eseguibile da parte dell esecutore dell algoritmo in un tempo finito" Non-ambiguità: ogni azione deve essere univocamente interpretabile dall esecutore " Terminazione: il numero totale di azioni da eseguire, per ogni insieme di dati di ingresso, deve essere finito Determinismo: il flusso di esecuzione per lo stesso insieme di dati in input deve sempre essere lo stesso Algoritmi 4

Rappresentazione di un algoritmo Per rappresentare un algoritmo occorre rappresentare Le istruzioni necessarie La loro corretta sequenza Strumenti Linguaggio naturale Linguaggi (semi)formali þ Diagrammi di flusso (flow chart) Algoritmi 5

Cosa è un diagramma di flusso! È un formalismo che permette di rappresentare graficamente un algoritmo. Descrive le azioni da eseguire e il loro ordine di esecuzione. Ogni diagramma di flusso è un grafo Ogni nodo è un azione elementare e corrisponde ad un simbolo grafico (blocco) Gli archi ne determinano la sequenza Algoritmi 6

Esempio START F V AZIONE 2 TEST 1 AZIONE 1 OUTPUT END Algoritmi 7

Blocchi fondamentali START END Blocco START È il blocco da cui deve iniziare l algoritmo In un diagramma è presente un solo blocco START Blocco END Termina l esecuzione dell algoritmo In un diagramma è presente un solo blocco END Algoritmi 8

Blocchi fondamentali Read A, B Write BIG Blocco READ Riceve dall unità in ingresso (per esempio la tastiera) tanti valori quante sono le variabili specificate all interno del blocco Assegna alle variabili i valori inseriti Blocco WRITE Trasmette in uscita (per esempio su video) i valori delle varibili Algoritmi 9

Blocchi fondamentali Azione Esempi A = A + 1 Blocco AZIONE (o PROCESSO o MOSSA) corrisponde ad un azione elementare: o Assegnamento (=) o Operazioni aritmetiche (+, -, *, /, ) o BIG = A Algoritmi 10

Esercizio Stampare la somma di due numeri reali dati START Read A, B somma = A + B Write somma END Algoritmi 11

Altri esercizi Stampare l area/il perimetro di un cerchio di raggio dato in ingresso da tastiera Stampare l area di un triangolo isoscele data la lunghezza della base e due lati uguali Algoritmi 12

Blocchi fondamentali F Esempi F F Condizione Booleana L acqua è troppo calda? A<B V V V Blocco TEST Al blocco è associato un test il cui risultato è booleano (VERO/FALSO); Se la condizione è vera si procede sul ramo etichettato con V Se la condizione è falsa si procede sul ramo etichettato con F Algoritmi 13

Blocchi fondamentali Blocco PROCESSO Indica una sequenza di azioni per ottenere un particolare risultato. È utile per rendere più compatto il diagramma di flusso. Algoritmi 14

Esercizio Dato un orario di partenza e un tempo di percorrenza in secondi, calcolare l orario di arrivo START Read orap, minutip, secondip, secondi Calcola orario arrivo Write orario di arrivo END Algoritmi 15

Strutture condizionali IF-THEN(-ELSE) Permette di scegliere tra 2 sequenze di azioni in base ad una selezione logica Sequenza 2 F Condizione Booleana V Sequenza 1 Permette scegliere se eseguire una sequenza di azioni in base ad una selezione logica F Condizione Booleana V Sequenza Algoritmi 16

Esercizio Trovare il massimo di due valori dati START Read A, B BIG = A F A < B? V BIG = B Write BIG END Algoritmi 17

Esercizio Calcolare il valore assoluto di un numero dato START Read A F A < 0? V A = -A Write A END Algoritmi 18

Esercizi Calcolare il minimo di due numeri dati Verificare se un numero dato è pari Calcolare il massimo di tre numeri dati Algoritmi 19

Struttura iterativa WHILE Esegue la stessa sequenza di azioni fintanto che la condizione risulta vera. TEST F V Sequenza Algoritmi 20

Esercizio Calcolare la somma di N numeri forniti in input OSSERVAZIONI E necessario calcolare la somma in modo incrementale perchè i valori vengono inseriti uno alla volta DEFINIZIONE PER INDUZIONE CASO BASE: La somma di 0 numeri è 0 somma({})=0 CASO INDUTTIVO: La somma di N+1 numeri {X 1,..,X n+1 } è la somma della somma di {X 1,..,X n } e X n+1 somma({x 1,..,X n+1 })=somma({x 1,..,X n })+X n+1 Algoritmi 21

Esercizio (cont.) START Read N i=0 somma=0 F i < N? V Write somma END Read X somma= somma + X i = i+1 Algoritmi 22

Struttura iterativa DO WHILE Esegue la sequenza di azioni fino a quando la condizione risulta vera. Nota: l azione è eseguita almeno una volta. Sequenza V TEST F Algoritmi 23

Esercizio Leggere un valore numerico POSITIVO da tastiera. N.B. E necessario chiedere il valore all utente fintantoché questo non è positivo START V F Read A A < 0? Write A END Algoritmi 24

Esercizi Rappresentare tramite i flow-chart l algoritmo di Euclide Algoritmi 25

Esercizio Scrivere un algoritmo che calcoli le radici di un equazione di secondo grado Ax 2 +Bx+C=0. N.B. si supponga di disporre della funzione sqrt(.) che dato un valore in ingresso ne calcola la radice quadrata OSSERVAZIONI Dato il valore Δ = B 2 4AC si ricorda che se Δ è negativo allora non ci sono soluzioni reali altrimenti ci sono 2 soluzioni reali soluzioni = B ± 2A Δ Algoritmi 26

Esercizio START READ A,B,C DELTA = B 2-4AC F DELTA >= 0? V R1 = (-B-sqrt(DELTA))/2A WRITE Nessuna soluzione reale R2 = (-B+sqrt(DELTA))/2A WRITE R1, R2 END Algoritmi 27

Esercizio Scrivere un algoritmo che ricerchi il minimo di K numeri forniti in input. K è fornito in input dall utente ed è maggiore o uguale a 1. OSSERVAZIONI E necessario definire il minimo per induzione perchè i valori vengono inseriti uno alla volta CASO BASE: minimo({x})=x CASO INDUTTIVO: minimo({x 1,..,X n+1 })= minore tra minimo({x 1,..,X n }) e X n+1 Algoritmi 28

Esercizio START READ K, X MIN = X I = 1 I < K? NO WRITE MIN END YES READ X YES X < MIN? MIN = X NO I = I + 1 Algoritmi 29

Esercizio Scrivere un algoritmo che esegua la moltiplicazione di due numeri interi mediante somma. OSSERVAZIONI Definizione per induzione CASO BASE: A*0=0 CASO INDUTTIVO: A*(B+1) = (A*B)+A Algoritmi 30

Esercizio START READ A, B PROD = 0 I = 0 I < B? NO YES PROD = PROD + A YES WRITE PROD I = I + 1 END Algoritmi 31

Esercizio Scrivere un algoritmo per il calcolo del resto della divisione tra due valori interi START READ A, B resto = A resto >=B resto = resto - B WRITE resto END Algoritmi 32

Altri esercizi Scrivere un algoritmo che calcoli la media di N valori interi dati in input Modificare l esercizio precedente assumendo che i numeri in ingresso siano dei voti (ovvero dei numeri compresi tra 18 e 30) Scrivere un algoritmo che calcoli il quoziente e il resto di una divisione tra interi Scrivere un algoritmo che calcoli l intersezione di due intervalli [I1,S1] e [I2,S2], dati gli estremi degli intervalli stessi Scrivere un algoritmo che calcoli l unione di due intervalli intersecanti [I1,S1] e [I2,S2], dati gli estremi degli intervalli stessi Scrivere un algoritmo che calcoli i divisori di un numero dato Scrivere un algoritmo che verifichi se il numero dato in ingresso è primo Scrivere un algoritmo che calcoli il fattoriale di un numero dato Algoritmi 33

Algoritmi equivalenti Dato un problema, nella maggior parte dei casi è possibile individuare più algoritmi che lo risolvono! Due algoritmi si dicono equivalenti quando:" hanno lo stesso dominio di ingresso" hanno lo stesso dominio di uscita" in corrispondenza degli stessi valori nel dominio di ingresso producono gli stessi valori nel dominio di uscita Due algoritmi equivalenti:" forniscono lo STESSO RISULTATO" ma possono avere DIVERSA EFFICIENZA" e possono essere PROFONDAMENTE DIVERSI! Algoritmi 34

Esempio Calcolo del Massimo Comun Divisore (MCD) fra due interi M ed N Algoritmo n 1 START READ M, N F M<N V MCD = N MCD = M TROVATO = FALSE F MCD!= 1 NOT TROVATO WRITE MCD STOP V resto divisione intera M e MCD == 0 esto divisione intera M e MCD == 0 MCD = MCD - 1 TROVATO = TRUE Algoritmi 35

Esempio Algoritmo n 2 (metodo 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 " START READ M, N M N F V WRITE M M>N M=M-N N=N-M F END Algoritmi 36

Esempio (cont.) Calcolare il MCD dei numeri 12 e 21 Algoritmo 1: M 12, N 21 MCD 12 MCD 11 MCD 3 MCD = 3 Algoritmo 2: M 12, N 21 N (N-M) = 9 M (M-N) = 3 N (N-M) = 6 N (N-M) = 3 MCD = 3 Algoritmi 37

MANCA LA CODIFICA! Bisogna conoscere la sintassi di un linguaggio di programmazione Bisogna conoscere la semantica di un linguaggio di programmazione Bisogna conoscere un ambiente di programmazione! Quale linguaggio? Quale ambiente di programmazione? Algoritmi 38