SlideShare a Scribd company logo
1 of 22
Problema: dati i voti di tutti gli studenti di una classe
determinare il voto medio della classe.
1)Comprendere il problema
2)Stabilire quali sono le azioni da eseguire per risolverlo
3)Stabilire la sequenza di queste azioni (per ricavare la
media devo prima sommare gli n voti)
una sequenza finita di azioni che conduce alla soluzione di
un problema si definisce ALGORITMO
2
3
Definizione: Procedimento di calcolo che permette di risolvere
un problema, partendo da dei dati iniziali ed eseguendo un
numero finito di operazioni o istruzioni
•Il termine algoritmo si fa derivare dal nome del
matematico persiano Al-Khwarizmi, vissuto nel
IX secolo, ed è quindi un concetto che è sempre
stato utilizzato nella matematica e nella logica
come sinonimo di metodo per la risoluzione di
un problema generale.
Esempi di algoritmi per la soluzione di problemi
di vita quotidiana sono:
•le istruzioni per l’uso di un elettrodomestico
•la realizzazione di una ricetta di cucina
4
1) dati iniziali e finali: sono gli elementi che vengono elaborati
dall’algoritmo (dati iniziali o di input) e i risultati prodotti dall’algoritmo
(dati finali o di output). Es. nell’algoritmo dell’addizione, i dati iniziali
sono gli addendi, il dato finale è la somma.
2) sequenza di azioni (istruzioni o passi elementari): un’azione è
un’istruzione (operazione elementare) che deve essere eseguita sui dati
in ingresso per ottenere i dati in uscita.
3) esecutore: è il soggetto che compie le azioni, cioè legge le istruzioni, le
interpreta e le esegue.
Le istruzioni quindi devono essere scritte in modo che l’esecutore possa
comprenderle ed eseguirle correttamente.
ALGORITMO +
ESECUTORE
DATI DI
INPUT
DATI DI
OUTPUT
5
FINITO: un algoritmo deve essere composto da un numero finito di
passi e deve presentare un punto di inizio e uno di fine, raggiunto il
quale si interrompe l’esecuzione delle operazioni.
DETERMINISTICO: l’algoritmo a fronte degli stessi dati di input
deve produrre gli stessi risultati (es. l’istruzione “moltiplica 2x5”
produce sempre il medesimo risultato, mentre l’istruzione “tira una
freccia contro il bersaglio” può avere risultati diversi anche se è
rivolta al medesimo arciere munito del suo solito arco).
NON AMBIGUO: i passi che compongono l’algoritmo devono
essere interpretati in modo chiaro dall’esecutore, senza lasciar dubbi
(es. “se il numero è abbastanza grande allora dividilo per 3 
istruzione ambigua!)
L'algoritmo può essere rappresentato in:
◦ PSEUDOCODIFICA:PSEUDOCODIFICA: descrizione di un algoritmo
utilizzando termini del linguaggio comune. Non si tratta di un
vero e proprio linguaggio di programmazione (non è
direttamente interpretabile dal computer), ma di un
linguaggio sintetico che descrive la soluzione logica del
problema.
◦ DIAGRAMMI A BLOCCHI:DIAGRAMMI A BLOCCHI: linguaggio formale di tipo
grafico per rappresentare l’ordine di esecuzione delle
istruzioni negli algoritmi.
6
Utilizzando la pseudocodifica, il programmatore
esprime le proprie idee attraverso frasi elementari della
lingua italiana (o inglese).
Le regole generali della pseudocodifica sono:
Le parole chiave che aprono e chiudono il testo di un algoritmo
sono: INIZIO e FINE  (BEGIN e END)
Le istruzioni LEGGI e SCRIVI (READ e WRITE) vengono
utilizzate per descrivere le operazioni input ed output dei dati.
Ogni istruzione è indicata con una frase del linguaggio corrente e
può essere un‘operazione oppure può indicare una decisione da
prendere
7
8
Problema:Problema: Calcola la media di 3 numeri interi
Analisi del problema:Analisi del problema:
Dati di INPUT: 3 numeri inseriti da tastiera.
Dati di OUTPUT: La media mostrata su monitor.
Pseudocodifica:Pseudocodifica:
INIZIO
LEGGI (n1, n2, n3);
somma (n1+n2+n3);
media (somma/3) ;
SCRIVI (media);
FINE
Un algoritmo può essere rappresentato anche
attraverso un diagramma a blocchi (o flow
chart) :
Un particolare simbolo grafico detto blocco
elementare è associato a ciascun tipo di
istruzione dell’algoritmo.
I blocchi sono collegati fra loro tramite frecce che
indicano il susseguirsi delle istruzioni.
9
10
INIZIO
FINE
questi simboli indicano il punto di partenza e
di terminazione dell’algoritmo
è il simbolo dell’elaborazione e contiene l’istruzione da eseguire
è il simbolo per le operazioni di Input / Output
condizione
VF
è il simbolo di decisione ed è usato per stabilire se
una proposizione è vera (V) o falsa (F)
11
INIZIO
LEGGI (n1, n2, n3);
somma (n1+n2+n3);
media (somma/3) ;
SCRIVI (media);
FINE
Pseudocodifica:Pseudocodifica:
INIZIOINIZIO
FINEFINE
Leggi(n1, n2, n3)Leggi(n1, n2, n3)
Scrivi(media)Scrivi(media)
somma=(n1+n2+n3)somma=(n1+n2+n3)
media=(somma/3)media=(somma/3)
Problema:Problema: Calcola la media di 3 numeri interi
Analisi del problema:Analisi del problema:
Dati di INPUT: 3 numeri inseriti da tastiera.
Dati di OUTPUT: La media mostrata su monitor.
Diagramma a blocchiDiagramma a blocchi
Un diagramma a blocchi descrive un algoritmo se:
 ha un blocco iniziale e uno finale;
 è costituito da un numero finito di blocchi azione
e/o blocchi lettura/scrittura e/o blocchi di controllo;
Vediamo un esempio di diagramma a blocchi per
un semplice problema di geometria…
 
12
Pseudocodifica: Diagramma a
blocchi:
13
INIZIOINIZIO
FINEFINE
Leggi(base,Leggi(base,
altezza)altezza)
Scrivi(area)Scrivi(area)
area=base*altezzaarea=base*altezza
14
INIZIO
FINE
area = raggio * raggio * π
raggio
I
area
O
INIZIO
FINE
area = raggio * raggio * π
raggio
I
area
O
raggio = 0
VF
area = 0
Cosa calcola questo
algoritmo?
PROBLEMAPROBLEMA ALGORITMO PROGRAMMAALGORITMO PROGRAMMA
 
1.1. Analisi del problema e identificazione di una
soluzione;
2.2. Stesura dell’algoritmo risolutivo;
3.3. Programmazione, cioè scrittura dell’algoritmo
in un linguaggio adatto al computer;
4.4. Esecuzione del programma sul computer e
verifica del suo funzionamento
Attenzione: l’algoritmo è indipendente dal
linguaggio di programmazione!
15
11 22 33 44
I computer usano il sistema binario costitutito dai
simboli (0,1) e di conseguenza non possono
interpretare e comprendere il nostro linguaggio. Il
linguaggio del computer, basato sui simboli binari (bit)
si chiama LINGUAGGIO MACCHINA (codice macchina o
linguaggio di basso livello) ed è costituito da una serie
di istruzioni direttamente eseguibili per il computer.
Per permettere la comunicazione tra “uomo” e
“macchina” sono stati creati i LINGUAGGI DI
PROGRAMMAZIONE (linguaggi ad alto livello o
procedurali).
16
I LINGUAGGI DI
PROGRAMMAZIONE permettono di
scrivere i programmi, cioè di “tradurre”
un algoritmo in un linguaggio più
comprensibile al computer, ma non
direttamente eseguibile.
Il programma scritto in linguaggio di
programmazione si chiama
programma sorgente e per essere
eseguito da una macchina deve essere
compilato, cioè trasformato in
LINGUAGGIO MACCHINA.
Questa trasformazione viene fatta da
un programma che si chiama
COMPILATORE.
17
Linguaggio naturale
Linguaggio macchina
Linguaggio di
programmazione
COMPILATORE
PROGRAMMA SORGENTE
18
19
MAX=N2
MIN=N1
MAX=N1
MIN=N2
20
Esecizio1:
Consideriamo una classe di 20 alunni, scrivere un
algoritmo che conti quanti alunni sono stati
promossi e quanti bocciati ad un esame
universitario (promosso se voto >=18)
22
Alunno= 1
Prom= 0
Resp= 0
leggi (Voto)
Alunno=Alunno+1
ALUNNO<=20
F
V
Scrivi(Prom)
Scrivi(Resp)
FINE
INIZIO
Voto>=18
Prom=Prom+ 1 Resp=Resp+1
Dati input: voti dei 20 alunni (usiamo la variabile
Alunno per contare l’inserimento dei diversi voti
e la variabile Voto per inserire il voto)
Dati output: totale dei promossi e dei bocciati
(usiamo le variabili Prom e Resp per contare i
promossi e i bocciati)
FV

More Related Content

What's hot

Presentacion de algoritmos
Presentacion de algoritmosPresentacion de algoritmos
Presentacion de algoritmossistemas2011
 
Lecture 5 - Structured Programming Language
Lecture 5 - Structured Programming Language Lecture 5 - Structured Programming Language
Lecture 5 - Structured Programming Language Md. Imran Hossain Showrov
 
Diagramas de Flujo
Diagramas de FlujoDiagramas de Flujo
Diagramas de Flujoastaroth97
 
Programming Terminology
Programming TerminologyProgramming Terminology
Programming TerminologyMichael Henson
 
Sintaxis en java
Sintaxis en javaSintaxis en java
Sintaxis en javapbcanessa
 
Introduction to IPython & Jupyter Notebooks
Introduction to IPython & Jupyter NotebooksIntroduction to IPython & Jupyter Notebooks
Introduction to IPython & Jupyter NotebooksEueung Mulyana
 
Manual de practicas de dev c++
Manual de practicas de dev c++Manual de practicas de dev c++
Manual de practicas de dev c++Alincita Simon
 
Unidad 06 metodología, técnica y tecnología para solucionar un problema
Unidad 06   metodología, técnica y tecnología para solucionar un problemaUnidad 06   metodología, técnica y tecnología para solucionar un problema
Unidad 06 metodología, técnica y tecnología para solucionar un problemaLorenzo Alejo
 
Metodos de programacion estructurada
Metodos de programacion estructuradaMetodos de programacion estructurada
Metodos de programacion estructuradaDeiver Diaz Contreras
 
Chapter 1 - An Introduction to Programming
Chapter 1 - An Introduction to ProgrammingChapter 1 - An Introduction to Programming
Chapter 1 - An Introduction to Programmingmshellman
 

What's hot (20)

Presentacion de algoritmos
Presentacion de algoritmosPresentacion de algoritmos
Presentacion de algoritmos
 
Algorithm and flowchart
Algorithm and flowchartAlgorithm and flowchart
Algorithm and flowchart
 
Lecture 5 - Structured Programming Language
Lecture 5 - Structured Programming Language Lecture 5 - Structured Programming Language
Lecture 5 - Structured Programming Language
 
Program control statements in c#
Program control statements in c#Program control statements in c#
Program control statements in c#
 
Diagramas de Flujo
Diagramas de FlujoDiagramas de Flujo
Diagramas de Flujo
 
Clase de algoritmos
Clase de algoritmosClase de algoritmos
Clase de algoritmos
 
Programming Terminology
Programming TerminologyProgramming Terminology
Programming Terminology
 
Programming Fundamentals
Programming FundamentalsProgramming Fundamentals
Programming Fundamentals
 
Chap 6(decision making-looping)
Chap 6(decision making-looping)Chap 6(decision making-looping)
Chap 6(decision making-looping)
 
Sintaxis en java
Sintaxis en javaSintaxis en java
Sintaxis en java
 
Computer Programming - Lecture 2
Computer Programming - Lecture 2Computer Programming - Lecture 2
Computer Programming - Lecture 2
 
Introduction to IPython & Jupyter Notebooks
Introduction to IPython & Jupyter NotebooksIntroduction to IPython & Jupyter Notebooks
Introduction to IPython & Jupyter Notebooks
 
come costruire un algoritmo
come costruire un algoritmocome costruire un algoritmo
come costruire un algoritmo
 
Manual de practicas de dev c++
Manual de practicas de dev c++Manual de practicas de dev c++
Manual de practicas de dev c++
 
Unidad 06 metodología, técnica y tecnología para solucionar un problema
Unidad 06   metodología, técnica y tecnología para solucionar un problemaUnidad 06   metodología, técnica y tecnología para solucionar un problema
Unidad 06 metodología, técnica y tecnología para solucionar un problema
 
Chapter 4 interaction design
Chapter 4 interaction designChapter 4 interaction design
Chapter 4 interaction design
 
Metodos de programacion estructurada
Metodos de programacion estructuradaMetodos de programacion estructurada
Metodos de programacion estructurada
 
Chapter 1 - An Introduction to Programming
Chapter 1 - An Introduction to ProgrammingChapter 1 - An Introduction to Programming
Chapter 1 - An Introduction to Programming
 
Debugging
DebuggingDebugging
Debugging
 
C programming
C programmingC programming
C programming
 

Similar to Algoritmi

15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi15 - Programmazione: Algoritmi
15 - Programmazione: AlgoritmiMajong DevJfu
 
Modulo 1 concetti di base dell'ict
Modulo 1 concetti di base dell'ictModulo 1 concetti di base dell'ict
Modulo 1 concetti di base dell'ictAndreina Concas
 
Elaborazione automatica dei dati: computer e matlab
Elaborazione automatica dei dati: computer e matlabElaborazione automatica dei dati: computer e matlab
Elaborazione automatica dei dati: computer e matlabprofman
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiAngela Cristina
 
Laboratorio Programmazione: Overflow e switch
Laboratorio Programmazione: Overflow e switchLaboratorio Programmazione: Overflow e switch
Laboratorio Programmazione: Overflow e switchMajong DevJfu
 
Lezione 3 (29 febbraio 2012)
Lezione 3 (29 febbraio 2012)Lezione 3 (29 febbraio 2012)
Lezione 3 (29 febbraio 2012)STELITANO
 
Coding class da scratch a python
Coding class  da scratch a pythonCoding class  da scratch a python
Coding class da scratch a pythonEnrico La Sala
 
5 Strutture Iterative
5   Strutture Iterative5   Strutture Iterative
5 Strutture Iterativeguest60e9511
 
Presentazione corretta algoritmi
Presentazione corretta algoritmiPresentazione corretta algoritmi
Presentazione corretta algoritmimattuzzi
 
Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)STELITANO
 
Lezione 2 (29 febbraio 2012)
Lezione 2 (29 febbraio 2012)Lezione 2 (29 febbraio 2012)
Lezione 2 (29 febbraio 2012)STELITANO
 
01 - Programmazione: Dai Problemi ai Programmi
01 - Programmazione: Dai Problemi ai Programmi01 - Programmazione: Dai Problemi ai Programmi
01 - Programmazione: Dai Problemi ai ProgrammiMajong DevJfu
 
Cosa sono gli algoritmi?
Cosa sono gli algoritmi?Cosa sono gli algoritmi?
Cosa sono gli algoritmi?mattuzzi
 

Similar to Algoritmi (20)

1 Programmazione
1   Programmazione1   Programmazione
1 Programmazione
 
15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi
 
Presentazione,
Presentazione,Presentazione,
Presentazione,
 
Presentazione
PresentazionePresentazione
Presentazione
 
Modulo 1 concetti di base dell'ict
Modulo 1 concetti di base dell'ictModulo 1 concetti di base dell'ict
Modulo 1 concetti di base dell'ict
 
Elaborazione automatica dei dati: computer e matlab
Elaborazione automatica dei dati: computer e matlabElaborazione automatica dei dati: computer e matlab
Elaborazione automatica dei dati: computer e matlab
 
Modulo 1 - Lezione 1
Modulo 1 - Lezione 1Modulo 1 - Lezione 1
Modulo 1 - Lezione 1
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -Fondamenti
 
Laboratorio Programmazione: Overflow e switch
Laboratorio Programmazione: Overflow e switchLaboratorio Programmazione: Overflow e switch
Laboratorio Programmazione: Overflow e switch
 
Flow chart
Flow chartFlow chart
Flow chart
 
Lezione1 Linguaggio C
Lezione1 Linguaggio CLezione1 Linguaggio C
Lezione1 Linguaggio C
 
Lezione 3 (29 febbraio 2012)
Lezione 3 (29 febbraio 2012)Lezione 3 (29 febbraio 2012)
Lezione 3 (29 febbraio 2012)
 
Coding class da scratch a python
Coding class  da scratch a pythonCoding class  da scratch a python
Coding class da scratch a python
 
5 Strutture Iterative
5   Strutture Iterative5   Strutture Iterative
5 Strutture Iterative
 
Presentazione corretta algoritmi
Presentazione corretta algoritmiPresentazione corretta algoritmi
Presentazione corretta algoritmi
 
7 Sottoprogrammi
7   Sottoprogrammi7   Sottoprogrammi
7 Sottoprogrammi
 
Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)
 
Lezione 2 (29 febbraio 2012)
Lezione 2 (29 febbraio 2012)Lezione 2 (29 febbraio 2012)
Lezione 2 (29 febbraio 2012)
 
01 - Programmazione: Dai Problemi ai Programmi
01 - Programmazione: Dai Problemi ai Programmi01 - Programmazione: Dai Problemi ai Programmi
01 - Programmazione: Dai Problemi ai Programmi
 
Cosa sono gli algoritmi?
Cosa sono gli algoritmi?Cosa sono gli algoritmi?
Cosa sono gli algoritmi?
 

Recently uploaded

lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldivaleriodinoia35
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaStefano Lariccia
 
Corso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativoCorso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativovaleriodinoia35
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiorevaleriodinoia35
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieVincenzoPantalena1
 
CON OCCHI DIVERSI - catechesi per candidati alla Cresima
CON OCCHI DIVERSI - catechesi per candidati alla CresimaCON OCCHI DIVERSI - catechesi per candidati alla Cresima
CON OCCHI DIVERSI - catechesi per candidati alla CresimaRafael Figueredo
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaRafael Figueredo
 
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.giuliofiorerm
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaStefano Lariccia
 
Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaPierLuigi Albini
 

Recently uploaded (10)

lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldi
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
 
Corso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativoCorso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativo
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiore
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medie
 
CON OCCHI DIVERSI - catechesi per candidati alla Cresima
CON OCCHI DIVERSI - catechesi per candidati alla CresimaCON OCCHI DIVERSI - catechesi per candidati alla Cresima
CON OCCHI DIVERSI - catechesi per candidati alla Cresima
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
 
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
 
Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza cultura
 

Algoritmi

  • 1.
  • 2. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1)Comprendere il problema 2)Stabilire quali sono le azioni da eseguire per risolverlo 3)Stabilire la sequenza di queste azioni (per ricavare la media devo prima sommare gli n voti) una sequenza finita di azioni che conduce alla soluzione di un problema si definisce ALGORITMO 2
  • 3. 3 Definizione: Procedimento di calcolo che permette di risolvere un problema, partendo da dei dati iniziali ed eseguendo un numero finito di operazioni o istruzioni •Il termine algoritmo si fa derivare dal nome del matematico persiano Al-Khwarizmi, vissuto nel IX secolo, ed è quindi un concetto che è sempre stato utilizzato nella matematica e nella logica come sinonimo di metodo per la risoluzione di un problema generale. Esempi di algoritmi per la soluzione di problemi di vita quotidiana sono: •le istruzioni per l’uso di un elettrodomestico •la realizzazione di una ricetta di cucina
  • 4. 4 1) dati iniziali e finali: sono gli elementi che vengono elaborati dall’algoritmo (dati iniziali o di input) e i risultati prodotti dall’algoritmo (dati finali o di output). Es. nell’algoritmo dell’addizione, i dati iniziali sono gli addendi, il dato finale è la somma. 2) sequenza di azioni (istruzioni o passi elementari): un’azione è un’istruzione (operazione elementare) che deve essere eseguita sui dati in ingresso per ottenere i dati in uscita. 3) esecutore: è il soggetto che compie le azioni, cioè legge le istruzioni, le interpreta e le esegue. Le istruzioni quindi devono essere scritte in modo che l’esecutore possa comprenderle ed eseguirle correttamente. ALGORITMO + ESECUTORE DATI DI INPUT DATI DI OUTPUT
  • 5. 5 FINITO: un algoritmo deve essere composto da un numero finito di passi e deve presentare un punto di inizio e uno di fine, raggiunto il quale si interrompe l’esecuzione delle operazioni. DETERMINISTICO: l’algoritmo a fronte degli stessi dati di input deve produrre gli stessi risultati (es. l’istruzione “moltiplica 2x5” produce sempre il medesimo risultato, mentre l’istruzione “tira una freccia contro il bersaglio” può avere risultati diversi anche se è rivolta al medesimo arciere munito del suo solito arco). NON AMBIGUO: i passi che compongono l’algoritmo devono essere interpretati in modo chiaro dall’esecutore, senza lasciar dubbi (es. “se il numero è abbastanza grande allora dividilo per 3  istruzione ambigua!)
  • 6. L'algoritmo può essere rappresentato in: ◦ PSEUDOCODIFICA:PSEUDOCODIFICA: descrizione di un algoritmo utilizzando termini del linguaggio comune. Non si tratta di un vero e proprio linguaggio di programmazione (non è direttamente interpretabile dal computer), ma di un linguaggio sintetico che descrive la soluzione logica del problema. ◦ DIAGRAMMI A BLOCCHI:DIAGRAMMI A BLOCCHI: linguaggio formale di tipo grafico per rappresentare l’ordine di esecuzione delle istruzioni negli algoritmi. 6
  • 7. Utilizzando la pseudocodifica, il programmatore esprime le proprie idee attraverso frasi elementari della lingua italiana (o inglese). Le regole generali della pseudocodifica sono: Le parole chiave che aprono e chiudono il testo di un algoritmo sono: INIZIO e FINE  (BEGIN e END) Le istruzioni LEGGI e SCRIVI (READ e WRITE) vengono utilizzate per descrivere le operazioni input ed output dei dati. Ogni istruzione è indicata con una frase del linguaggio corrente e può essere un‘operazione oppure può indicare una decisione da prendere 7
  • 8. 8 Problema:Problema: Calcola la media di 3 numeri interi Analisi del problema:Analisi del problema: Dati di INPUT: 3 numeri inseriti da tastiera. Dati di OUTPUT: La media mostrata su monitor. Pseudocodifica:Pseudocodifica: INIZIO LEGGI (n1, n2, n3); somma (n1+n2+n3); media (somma/3) ; SCRIVI (media); FINE
  • 9. Un algoritmo può essere rappresentato anche attraverso un diagramma a blocchi (o flow chart) : Un particolare simbolo grafico detto blocco elementare è associato a ciascun tipo di istruzione dell’algoritmo. I blocchi sono collegati fra loro tramite frecce che indicano il susseguirsi delle istruzioni. 9
  • 10. 10 INIZIO FINE questi simboli indicano il punto di partenza e di terminazione dell’algoritmo è il simbolo dell’elaborazione e contiene l’istruzione da eseguire è il simbolo per le operazioni di Input / Output condizione VF è il simbolo di decisione ed è usato per stabilire se una proposizione è vera (V) o falsa (F)
  • 11. 11 INIZIO LEGGI (n1, n2, n3); somma (n1+n2+n3); media (somma/3) ; SCRIVI (media); FINE Pseudocodifica:Pseudocodifica: INIZIOINIZIO FINEFINE Leggi(n1, n2, n3)Leggi(n1, n2, n3) Scrivi(media)Scrivi(media) somma=(n1+n2+n3)somma=(n1+n2+n3) media=(somma/3)media=(somma/3) Problema:Problema: Calcola la media di 3 numeri interi Analisi del problema:Analisi del problema: Dati di INPUT: 3 numeri inseriti da tastiera. Dati di OUTPUT: La media mostrata su monitor. Diagramma a blocchiDiagramma a blocchi
  • 12. Un diagramma a blocchi descrive un algoritmo se:  ha un blocco iniziale e uno finale;  è costituito da un numero finito di blocchi azione e/o blocchi lettura/scrittura e/o blocchi di controllo; Vediamo un esempio di diagramma a blocchi per un semplice problema di geometria…   12
  • 14. 14 INIZIO FINE area = raggio * raggio * π raggio I area O INIZIO FINE area = raggio * raggio * π raggio I area O raggio = 0 VF area = 0 Cosa calcola questo algoritmo?
  • 15. PROBLEMAPROBLEMA ALGORITMO PROGRAMMAALGORITMO PROGRAMMA   1.1. Analisi del problema e identificazione di una soluzione; 2.2. Stesura dell’algoritmo risolutivo; 3.3. Programmazione, cioè scrittura dell’algoritmo in un linguaggio adatto al computer; 4.4. Esecuzione del programma sul computer e verifica del suo funzionamento Attenzione: l’algoritmo è indipendente dal linguaggio di programmazione! 15 11 22 33 44
  • 16. I computer usano il sistema binario costitutito dai simboli (0,1) e di conseguenza non possono interpretare e comprendere il nostro linguaggio. Il linguaggio del computer, basato sui simboli binari (bit) si chiama LINGUAGGIO MACCHINA (codice macchina o linguaggio di basso livello) ed è costituito da una serie di istruzioni direttamente eseguibili per il computer. Per permettere la comunicazione tra “uomo” e “macchina” sono stati creati i LINGUAGGI DI PROGRAMMAZIONE (linguaggi ad alto livello o procedurali). 16
  • 17. I LINGUAGGI DI PROGRAMMAZIONE permettono di scrivere i programmi, cioè di “tradurre” un algoritmo in un linguaggio più comprensibile al computer, ma non direttamente eseguibile. Il programma scritto in linguaggio di programmazione si chiama programma sorgente e per essere eseguito da una macchina deve essere compilato, cioè trasformato in LINGUAGGIO MACCHINA. Questa trasformazione viene fatta da un programma che si chiama COMPILATORE. 17 Linguaggio naturale Linguaggio macchina Linguaggio di programmazione COMPILATORE PROGRAMMA SORGENTE
  • 18. 18
  • 20. 20
  • 21. Esecizio1: Consideriamo una classe di 20 alunni, scrivere un algoritmo che conti quanti alunni sono stati promossi e quanti bocciati ad un esame universitario (promosso se voto >=18)
  • 22. 22 Alunno= 1 Prom= 0 Resp= 0 leggi (Voto) Alunno=Alunno+1 ALUNNO<=20 F V Scrivi(Prom) Scrivi(Resp) FINE INIZIO Voto>=18 Prom=Prom+ 1 Resp=Resp+1 Dati input: voti dei 20 alunni (usiamo la variabile Alunno per contare l’inserimento dei diversi voti e la variabile Voto per inserire il voto) Dati output: totale dei promossi e dei bocciati (usiamo le variabili Prom e Resp per contare i promossi e i bocciati) FV