Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.

Slides:



Advertisements
Presentazioni simili
Programma: main() { istruzioni } ; assegnazione condizione ciclo istruzione: ;
Advertisements

Dati, istruzione e pseudocodice
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
Linguaggio C++ Selezione.
Selezione A. Ferrari.
Procedure e funzioni ricorsive
PROGRAMMARE IN PASCAL (le basi)
3TC – 5/11/2010 Cicli while e do.. While Contatori e Totalizzatori.
Universita di Camerino
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Dipartimento di Matematica
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
Fondamenti di Informatica
INFORMATICA Strutture iterative
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Iterazione enumerativa (for)
Algebra di Boole ed elementi di logica
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA
CORSO DI PROGRAMMAZIONE II
Interpolazione ed estrapolazione
Introduzione alla programmazione lll
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Istruzioni di ripetizione in Java
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
Algoritmi su Tipi Semplici
Istruzioni Iterative Nicola Fanizzi
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica Algoritmi
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Algoritmi e diagrammi di flusso
Elementi di Informatica
PROGRAMMAZIONE: linguaggi
Lezione 6 Strutture di controllo Il condizionale
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Architettura degli Elaboratori II (canale P-Z) Istruzioni di controllo Dott. Franco Liberati.
Cicli in Fortran I cicli consentono di eseguire una sequenza di istruzioni più di una volta due tipi: Cicli iterativi Cicli while.
Programmare in Visual Basic
Massimo Comun Divisore
Laboratorio di Informatica Dott.ssa Elisa Tiezzi Dott.ssa Elisa Mori
Fondamenti di Informatica e Informatica di base Prof.ssa Elisa Tiezzi
Ripasso : Algoritmi.
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
Fondamenti di Programmazione
Introduzione a Javascript
La ricorsione.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Lez 4 (13/14)Elementi di Programmazione1 Strutture di controllo 2.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
PRIMI ELEMENTI DI PROGRAMMAZIONE
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
C++:Strutture di Controllo
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica 4 La ricorsione. Definizione di ricorsione Ricorsione è la proprietà di quei programmi che, all’interno delle istruzioni che li compongono,
ALGORITMI Dal problema al programma Definizione di algoritmo
Strutture di controllo
Rudimenti di Complessità Corso di Programmazione II Prof. Dario Catalano.
Transcript della presentazione:

Introduzione agli algoritmi

Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero finito di operazioni. Deriva dal nome del matematico arabo Al- Khuwarizmi (IX secolo) Deriva dal nome del matematico arabo Al- Khuwarizmi (IX secolo) Finitezza Finitezza Determinismo (input output) Determinismo (input output)

Esempi Come prendere il caffè al distributore Introdurre limporto necessario in monete da 5, 10, 20, 50 centesimi Introdurre limporto necessario in monete da 5, 10, 20, 50 centesimi Selezionare la quantità di zucchero Selezionare la quantità di zucchero Selezionare la bevanda desiderata Selezionare la bevanda desiderata Attendere che il distributore eroghi la bevanda Attendere che il distributore eroghi la bevanda Ritirare il resto Ritirare il resto Ritirare la bevanda Ritirare la bevanda

Fattoriale di un numero Dato un numero intero positivo n, si definisce suo fattoriale il numero Dato un numero intero positivo n, si definisce suo fattoriale il numero n! = n * (n-1) * … * 2 * 1 Esempio: 4! = 4 * 3 * 2 * 1 = 24 Similmente si può calcolare la somma dei primi n numeri interi positivi Similmente si può calcolare la somma dei primi n numeri interi positivi

La ricorsione Applicato al fattoriale, abbiamo due casistiche: 1) Caso base, (n = 0) o (n = 1). n! = 1 2) Passo ricorsivo, n > 1. Supponiamo di conoscere il valore di n!. (n+1)! = (n+1) * n! In tal modo il fattoriale si può calcolare ricorsivamente per passi successivi riconducendosi al caso base che sappiamo risolvere direttamente.

Istruzioni di un algoritmo Assegnamento n c: assegna alla variabile n il valore c (c può essere una costante o una espressione da valutare) n c: assegna alla variabile n il valore c (c può essere una costante o una espressione da valutare) Esempi: 1. n 5. Assegna alla variabile n il valore 5 2. n Assegna alla variabile n il valore 3 3. n n + 1. Incrementa di uno il valore di n 4. n i + j. Assegna a n la somma dei valori correnti delle variabili i e j

Istruzioni di un algoritmo Condizionale if A then B (else C): se è vera la condizione A allora esegui B (altrimenti esegui C, opzionale). B e C possono rappresentare più istruzioni. if A then B (else C): se è vera la condizione A allora esegui B (altrimenti esegui C, opzionale). B e C possono rappresentare più istruzioni.Esempi: 1. if (n = 5) then n n + 1 (i.e. 6) 1. if (n = 5) then n n + 1 (i.e. 6) 2. if (n = 3 + 4) then n i + j else n i-j (se al momento corrente n vale 7 allora assegnagli la somma di i e j altrimenti assegnagli la differenza di i e j) 2. if (n = 3 + 4) then n i + j else n i-j (se al momento corrente n vale 7 allora assegnagli la somma di i e j altrimenti assegnagli la differenza di i e j)

Istruzioni di un algoritmo Ciclo while while A do B: finché è vera la condizione A allora esegui le istruzioni contenute in B (B può rappresentare più istruzioni) while A do B: finché è vera la condizione A allora esegui le istruzioni contenute in B (B può rappresentare più istruzioni) Esempi: 1. while ((5 <= n) and (n <= 10)) do n n while (n >= i + j) do { n n -1 n n -1 i i + 1 i i + 1 j j + i j j + i}

Istruzioni di un algoritmo Ciclo for for cont i to j do B: ripeti (j-i+1) volte le istruzioni contenute in B (B può rappresentare più istruzioni) for cont i to j do B: ripeti (j-i+1) volte le istruzioni contenute in B (B può rappresentare più istruzioni) Esempi: 1. for i 1 to n do n n+1 2. for i n+1 to n+10 do { j j * 2 j j * 2 j j + i j j + i}

Algoritmo (ricorsivo) per il fattoriale FATT(n) FATT(n) if ((n=0) or (n=1)) then return 1 else return n * FATT(n-1) else return n * FATT(n-1) Dove return è listruzione che dà in output il risultato

Algoritmo (iterativo) per il fattoriale FATT(n) FATT(n) fatt 1 i 2 while (i <= n) do { fatt fatt * i fatt fatt * i i i + 1 i i + 1}

Ordinamento di n numeri Input: una sequenza di n numeri, a 1, a 2, a 3, …, a n Input: una sequenza di n numeri, a 1, a 2, a 3, …, a n Output: una permutazione degli elementi a 1, a 2, a 3, …, a n tali che a 1 <= a 2 <= a 3 <= … <= a n Output: una permutazione degli elementi a 1, a 2, a 3, …, a n tali che a 1 <= a 2 <= a 3 <= … <= a n Tali numeri sono contenuti in una struttura chiamata vettore od array A in cui il numero di indice i (a i ) si trova in A[i] A

Insertion-Sort(A) Insertion-Sort(A) for j 2 to length(A) { key A[j] key A[j] i j -1 i j -1 while ((i > 0) and (A[i] > key)) do { while ((i > 0) and (A[i] > key)) do { A[i+1] A[i] A[i+1] A[i] i i - 1 i i - 1 } A[i+1] key A[i+1] key}

Merge-Sort(A,p,r) Merge-Sort(A,p,r) if (p < r) then { q int((p+r)/2) q int((p+r)/2) Merge-Sort(A,p,q) Merge-Sort(A,p,q) Merge-Sort(A,q+1,r) Merge-Sort(A,q+1,r) Merge(A,p,q,r) Merge(A,p,q,r) } Merge: mette assieme le parti A[p;q] e A[q+1;r] che sono già ordinate