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

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

Dall algoritmo al programma

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

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

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

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Rappresentazione con i diagrammi di flusso (Flow - chart)

ALGORITMI: PROPRIETÀ FONDAMENTALI

MODULO 07. La soluzione dei problemi mediante gli algoritmi

Introduzione agli Algoritmi

Programmazione. Informatica. Risoluzione dei Problemi

L ELABORATORE ELETTRONICO

Introduzione alla programmazione

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

Formalismi per la descrizione di algoritmi

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

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

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Teoria dell Informazione

Algoritmi e Programmi

Risoluzione di problemi con l uso dell elaboratore elettronico

Introduzione all Informatica e alla Programmazione. Fondamenti di Informatica T

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

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Il Software programmabili programma algoritmo

Il linguaggio di programmazione Python

Algoritmi e Linguaggi

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

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

Università degli Studi di Brescia INFORMATICA. Dipartimento di Ingegneria Meccanica e Industriale

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

LINGUAGGI DI ALTO LIVELLO

L ELABORATORE ELETTRONICO!

Unità di apprendimento 6. Dal problema al programma

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

3. Programmi e algoritmi

Sistemi di Elaborazione delle Informazioni

Cosa è l Informatica?

Elaboratore Elettronico

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

CONCETTI FONDAMENTALI

LINGUAGGI DI ALTO LIVELLO

Elementi di programmazione

Come ragiona il computer. Problemi e algoritmi

INFORMATICA. Scienza degli elaboratori elettronici (Computer. informazione

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

Cos è la programmazione?

Informatica. Come si risolve un problema?

Linguaggi di Programmazione

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Laboratorio di Programmazione

Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016

Linguaggi di Programmazione

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

Linguaggi di alto livello. Barriera di astrazione. Pascal. Cobol. Fortran. Basic. Modula-2. Lisp. Simula67 Scheme. Smalltalk C++ Prolog AN

Sviluppo di programmi

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

Introduzione alla programmazione strutturata

Corso di Informatica di Base

Lezione 1. Problemi Algoritmi Programmi

Modulo 1 Concetti di base della Tecnologia dell Informazione

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI

Lezione 6 Introduzione al C++ Mauro Piccolo

Introduzione ai Calcolatori Elettronici

Fondamenti di Algoritmi

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

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

Elementi di programmazione

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo

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

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

Concetti Introduttivi. Il Computer

INFORMATICA Algoritmi come formalizzazione della risoluzione di un problema

Concetti di base dell ICT

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

IL PRIMO PROGRAMMA IN C

Introduzione alla programmazione. Walter Didimo

I Linguaggi di Programmazione

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Programmazione strutturata

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

Elaborazione dell informazione

Linguaggi di Programmazione

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI

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

Rappresentazione degli algoritmi

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Reti di Calcolatori

CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1

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

Fondamenti di programmazione!! Parte 2!

Informatica e Bioinformatica: Algoritmi

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

Sviluppo di programmi. E ora, finalmente. Si comincia! 1. Analizzare il problema. 2. Progettare una soluzione (1) E necessario capire:

Transcript:

Click to edit Algoritmo Master /tle style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

Click to edit Proprietà Master /tle style un algoritmo deve essere: non ambiguo (i risultati non devono variare in funzione della macchina o persona che esegue l'algoritmo) corretto (deve risolvere un dato problema) realizzabile (deve essere eseguibile con le risorse a disposizione) finito (deve essere composto da un numero finito di passi elementari; le operazioni sono eseguite un numero finito di volte) efficiente (deve avere un costo accettabile, se non ottimo, in termini di risorse consumate: tempo di CPU richiesto per completare, quantità di memoria utilizzata, quantità di bit trasferiti)

Click to edit Efficienza Master /tle style efficienza è il termine usato per descrivere l uso attento delle risorse da parte di un algoritmo come si misurano il tempo e lo spazio consumati da un algoritmo, in modo da determinare se è efficiente? efficienza rispetto allo spazio: si può giudicare in base alla quantità di informazioni che l algoritmo deve registrare nella memoria del computer per svolgere il proprio compito, oltre ai dati iniziali sui quali opera efficienza rispetto al tempo: è un indicazione della quantità di lavoro richiesto dall algoritmo stesso; è una misura dell efficienza implicita del metodo, indipendente dalla velocità della macchina su cui è eseguito, dai valori dei dati di ingresso elaborati ma non dalla loro quantità

Click to edit Complessità Master /tle style descrive l'efficienza dell'algoritmo numero di operazioni svolte dall'algoritmo rela/vamente alla misura dell'informazione su cui opera l'algoritmo esempio: per mebere in ordine una lista di N numeri interi un algoritmo può eseguire N*N operazioni oppure logn operazioni complessità /piche degli algoritmi, in ordine crescente: logn, N, NlogN, N 2, 2 N

Click Descrizione to edit Master di un algoritmo /tle style un algoritmo è descritto in un linguaggio il linguaggio di descrizione di un algoritmo deve essere adeguato alle caratteristiche del suo esecutore esecutore umano: linguaggio naturale linguaggio grafico (ad esempio i diagrammi di flusso) esecutore automatico (computer): linguaggio di programmazione

Click to edit Esecuzione Master /tle style 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 dallo algoritmo.

Esempio: Click to la edit preparazione Master /tle del style caffè Esecutore: essere umano corredato di caffepera "moka", cucina a gas e macina-caffè; Algoritmo: 1. svitare la caffepera; 2. se si dispone di caffè macinato: riempire il filtro con il caffè macinato e andare al punto 3 altrimen/ se si dispone di caffè in chicchi: macinarlo e tornare al punto 2 altrimen/ terminare (il caffè non si può fare..) 3. riempire la parte inferiore della caffepera con acqua 4. inserire il filtro nella macchina 5. avvitare la caffepera 6. accendere il fuoco a gas 7. collocare la moka sul fuoco 8. abendere l'uscita del caffè 9. spegnere il fuoco 10. terminare (il caffè è pronto)

Click Esempio: to edit assicurazione Master /tle auto style scrivere un algoritmo per decidere se l'assicurazione della macchina è scaduta 1. anno corrente < anno scadenza polizza? non è scaduta, fine 2. anno corrente > anno scadenza polizza? è scaduta, fine 3. mese corrente < mese scadenza polizza? non è scaduta, fine 4. mese corrente > mese scadenza polizza? è scaduta, fine 5. giorno corrente < giorno scadenza polizza? non è scaduta, fine 6. giorno corrente > giorno scadenza polizza? è scaduta, fine 7. non è scaduta ma lo sarà tra 24 ore

Click Il to concebo edit Master di variabile /tle style per eseguire una qualsiasi algoritmo, abbiamo bisogno di poter immagazzinare i risulta/ temporanei e finali dell'algoritmo concebualmente, le variabili possono essere viste come delle scatole con: un'e/cheba che ci permebe di iden/ficarne il contenuto dei pezzi di carta al loro interno su cui si possono annotare/ modificare i valori di un calcolo che si sta facendo

Click to edit Variabili Master /tle style una variabile rappresenta una zona di memoria RAM che può essere usata per memorizzare un valore analogia con una scatola di scarpe e/chebata in uno scaffale (che rappresenta la RAM): la scatola ha un'e/cheba con un nome una posizione nello scaffale un valore (le scarpe che si trovano dentro la scatola) [un /po (forma della scatola)]* (* vedremo più avan/ cos'è e a che serve il /po di una variabile)

Click to edit Variabili Master /tle style nella pra/ca: ogni variabile ha un nome mnemonico, che si usa nel programma per riferirsi alla variabile stessa. ogni variabile con/ene un valore che può essere lebo e modificato a piacimento durante l esecuzione di un programma, il sistema opera/vo man/ene una associazione tra il nome di ogni variabile e l indirizzo della cella di memoria in cui è memorizzato il suo valore in defini/va una variabile è semplicemente un'astrazione della cella di memoria fisica

Click to edit Variabili Master /tle style A = Valore oppure A Valore significa che il valore specificato a destra dell'uguale viene memorizzato nella zona di memoria RAM e/chebata con l'e/cheba "A": Valore A a3enzione: non si traba di un'equivalenza matema/ca!!!

Click to edit Variabili Master /tle style B = A oppure B A significa che un certo valore, precedentemente memorizzato nella zona di memoria e/chebata con "A", viene copiato nella zona di memoria e/chebata con "B": Valore A B

Click Esempio: to edit Master incremento /tle style A = A + 1 oppure A A + 1 (N.B.: matema/camente ciò non ha alcun senso!) in informa/ca significa "prima calcoliamo A+1 e poi memorizziamo il risultato del calcolo in A" s/amo quindi considerano il valore di A in due istan/ diversi: prima per leggerne il valore e incrementarlo e dopo per memorizzare il suo nuovo valore Valore + 1 A A

Click Diagrammi to edit Master di flusso /tle style un diagramma di flusso (flow chart) è la definizione grafica delle operazioni che cos/tuiscono un algoritmo è uno strumento efficace per la descrizione degli algoritmi i diagrammi di flusso usano forme geometriche diverse per rappresentare: trasferimento di informazioni (lebura da/, scribura risulta/, visualizzazione da/ intermedi) esecuzione di calcoli assunzione di decisioni esecuzione di iterazioni (ripe/zione di sequenze di operazioni)

Click Diagrammi to edit Master di flusso /tle style elaborazione i blocchi rebangolari rappresentano istruzioni di assegnazione di valori o una modifica dello stato globale della computazione input/output - i blocchi a forma di parallelogramma corrispondono a operazioni di input/output dei da/ (lebura da tas/era, visualizzazione su video) decisione i blocchi a forma di rombo vengono u/lizza/ per rappresentare istruzioni di salto condizionato inizio/fine i blocchi ovali vengono u/lizza/ per rappresentare l inizio e la fine dell algoritmo v ß E operation yes no condition start stop

Calcolo Click to dell area edit Master di un /tle rebangolo style leggi da input l altezza (H) leggi da input la base (B) calcola l area H*B dai in output il risultato

Calcola Click to l area edit Master di un rebangolo /tle style START Leggi Altezza Leggi Base Area = Base*Altezza Stampa Area STOP

Click Conversione to edit Master lire in /tle Euro style leggi da input l'importo in lire (an/ca moneta usata in Italia fino al secolo XX) calcola il corrispepvo in Euro dai in output il risultato

Click Conversione to edit Master lire in /tle Euro style START Leggi Lire Euro = Lire/1936,27 Stampa Euro STOP

Click to edit IF-THEN-ELSE Master /tle style selezione tra due istruzioni sulla base di una condizione Then I Else O

Click Massimo to edit tra Master due numeri /tle style leggi X leggi Y se X > Y stampa X altrimen/ stampa Y

Click Massimo to edit tra Master due numeri /tle style

Click to edit Pari Master o dispari /tle style leggi N dividi N per 2 se resto = 0 scrivi N è pari altrimen/ scrivi N è dispari

Click to edit Pari Master o dispari /tle style

Click to edit WHILE-DO Master /tle style I O

Click to edit ESEMPIO Master /tle style CALCOLO DEL FATTORIALE N!=N*(N-1)*(N-2)* *2 START Leggi N F = N N>1? no yes N=N-1 F=F*N Stampa F STOP

Click to edit DO-WHILE Master /tle style I O

Click to edit ESEMPIO Master /tle style CALCOLO DEL FATTORIALE N!=N*(N-1)*(N-2)* *2 START Leggi N F = N N=N-1 F=F*N yes N>1? no Stampa F STOP

Scambio Click to dei edit valori Master di due /tle variabili style Leggi valore prima variabile X Leggi valore seconda variabile Y Conserva X in una variabile temporanea Aux Assegna il valore di Y ad X Assegna il valore di Aux a Y Scrivi X Scrivi Y

Click Scambio to edit dei valori Master di due variabili /tle style

Click to edit Esercizi Master /tle style da/ 2 numeri in input trovare e stampare in output il max da/ 3 numeri in input trovare e stampare in output il max da/ 3 numeri in input stamparli in ordine crescente da/ 2 numeri in input stampare in output la somma sul prezzo di un prodobo viene pra/cato lo sconto del 3% se costa meno di 1.000.000 e del 5% se costa di più; dato in input il prezzo P, calcolare il prezzo da pagare secondo la regola sopra describa sul prezzo di un bigliebo di un treno viene applicato un supplemento del 7% se il treno è di /po "a", del 12% se è di /po "b" e del 18% se è di /po "c"; per gli altri treni non c'è supplemento; calcolare il prezzo totale del bigliebo, a seconda del /po di treno e comunicare il /po di treno con il prezzo calcolato

Click to edit Esercizi Master /tle style da/ in input i min, ore e sec stampare in output il totale dei secondi data in input una data verificare se è giusta dato in input 100 valori stampare in output la somma dei numeri posi/vi e la somma dei nega/vi dato in input una parola stampare in output se è una palindrome o no dato in input una parola stampare in output il numero delle vocali

Click to edit Programma Master /tle style ogni computer è una macchina in grado di eseguire azioni elementari su dati l'esecuzione delle azioni elementari viene attivata tramite sequenze di istruzioni le istruzioni sono espresse attraverso frasi di un opportuno linguaggio di programmazione un programma non è altro che la formulazione testuale di un algoritmo in un linguaggio di programmazione

Click to Algoritmo edit Master e programma /tle style problema algoritmo programma metodo risolutivo linguaggio di programmazione un programma è la formulazione, in un certo linguaggio di programmazione, di un algoritmo che risolve un dato problema

Click Algoritmi to edit Master vs. programmi /tle style calcolo del faboriale: esiste un solo algoritmo per calcolare il faboriale esistono teoricamente infinite implementazioni (e quindi programmi) per il calcolo del faboriale, una per ogni linguaggio di programmazione esistente e quindi: per ogni programma esiste un solo algoritmo per ogni algoritmo esistono infini/ programmi

Linguaggi Click to edit programmazione Master /tle style I linguaggi di programmazione ad alto livello permebono di scrivere programmi con una notazione adaba agli esseri umani, e in alcuni casi molto intui/va. Usando degli opportuni tradubori (compilatori ed interpre/) lo stesso programma può essere usato su macchine diverse Fortran, Cobol, Pascal, Ada, C, C++, Java, Lisp, ML, Prolog,...

Click to Il edit compilatore Master /tle style un programma scribo in un linguaggio ad alto livello è debo programma sorgente. per essere eseguito su un computer, va tradobo nel linguaggio macchina del computer (il linguaggio del processore) il compilatore è un programma che esegue la traduzione, producendo il programma ogge3o, ossia una sequenza di istruzioni in linguaggio macchina il compilatore segnala anche eventuali errori di sintassi nella scribura del programma sorgente

Click to Il edit compilatore Master /tle style programma P scritto nel linguaggio L compilatore per P sul computer M programma P nel linguaggio macchina di M esecuzione di P su M

Click to edit L'interprete Master /tle style in alterna/va alla compilazione, un programma sorgente può essere interpretato. un interprete è un programma che non produce alcun programma oggebo, ma legge il ogni istruzione del programma sorgente e genera le istruzioni macchina corrisponden/, che vengono passate all hardware per l'esecuzione.

Click Compilatori edit Master Vs. Interpre/ /tle style programma compilato vantaggi: la traduzione avviene una sola volta, e poi il programma oggebo può essere eseguito quanto si vuole svantaggi: la compilazione richiede un certo tempo di esecuzione programma interpretato vantaggi: il programma può essere eseguito subito senza dover abendere la fine della compilazione svantaggi: la traduzione avviene mentre si esegue il programma con conseguenze rallentamento dell'esecuzione alcuni linguaggi permebono entrambe le scelte abualmente, i computer sono così poten/ che anche la compilazione di lunghi programmi non richiede molto tempo