Introduzione Alla Programmazione
Introduzione Alla Programmazione
Algoritmo
Esempi di Algoritmo?
Algoritmo
Alla base di ogni algoritmo c’è un modello, cioè una rappresentazione astratta, semplificata, del
problema reale che si vuole affrontare
IMPO
In generale, per un dato problema NON esiste un unico algoritmo risolutivo: se ne possono
formulare diversi, basati su modelli differenti.
IMPO
Per formulare algoritmi NON è necessario conoscere i linguaggi di programmazione al computer
Attraversamento pedonale
1. Osserva il semaforo
2. Se è accesa la luce rossa stai fermo e riprendi dal punto 1
3. Se la luce è verde, attraversa
Attraversamento pedonale
1. Osserva il semaforo
2. Se è accesa la luce rossa stai fermo e riprendi dal punto 1
3. Se il semaforo è verde non muoverti e osserva i veicoli
4. Se qualche veicolo si sta muovendo non muoverti e ricomincia dal punto 1
5. Altrimenti (se tutti i veicoli sono fermi) attraversa.
Immaginate di essere all’interno di questo labirinto. Riesci a vedere solo la porzione di labirinto
più vicina a te e non hai altre informazioni.
Che cosa ti conviene fare per trovare l’uscita?
Immaginate di essere all’interno di questo labirinto. Riesci a vedere solo la porzione di labirinto
più vicina a te e non hai altre informazioni.
Che cosa ti conviene fare per trovare l’uscita?
La soluzione trovata sicuramente non è ottimale. Se si dispone della mappa del labirinto e si ha la
possibilità di studiarla si può trovare una soluzione migliore
1. Identifica la base
5. Moltiplica la lunghezza della base per quella del segmento, poi dividi per 2: il
risultato è l’area del triangolo
1. Identifica la base
5. Moltiplica la lunghezza della base per quella del segmento, poi dividi per 2: il
risultato è l’area del triangolo
1. Identifica la base
5. Moltiplica la lunghezza della base per quella del segmento, poi dividi per 2: il
risultato è l’area del triangolo
1. Identifica la base
5. Moltiplica la lunghezza della base per quella del segmento, poi dividi per 2: il
risultato è l’area del triangolo
L’algoritmo in questione non potrà dare un unico risultato, come invece vogliamo che gli algoritmi
facciano.
Come rimediamo?
1. Identifica la base
5. Moltiplica la lunghezza della base per quella del segmento, poi dividi per 2: il
risultato è l’area del triangolo
NON AMBIGUITÀ: le istruzioni devono essere espresse in modo preciso e NON ambiguo
EFFICIENZA: l’algoritmo deve portare al risultato nel minor tempo possibile, richiedere la
memorizzazione di pochi dati
Immaginate di dover cercare un libro (ad esempio La divina commedia di Dante), in una biblioteca formata da
una stanza con tutte le pareti ricoperte di scaffali
Immaginate di dover cercare un libro (ad esempio La divina commedia di Dante), in una biblioteca formata da
una stanza con tutte le pareti ricoperte di scaffali
IMPO
È importante ricordare che il requisito della finitezza si applica anche ai dati in ingresso dell’algoritmo (input o
stato iniziale) e ai risultati cioè ai dati in uscita (output o stato finale)
Un algoritmo è efficiente quando porta al risultato nel modo più rapido e richiede di registrare il minor
numero di dati durante l’esecuzione.
INIZIO e FINE
▪ Le istruzioni
INIZIO
chiedi(base, altezza)
leggi(base, altezza)
area=base*altezza
scrivi(area)
FINE
INIZIO
chiedi(a, b, c)
leggi(a, b, c)
somma=a+b+c
media= somma/3
scrivi(media)
FINE
I blocchi sono collegati da linee che terminano con una freccia e indicano il flusso di
controllo dell’algoritmo (cioè il percorso da eseguire nell’esecuzione delle
istruzioni)
FINE
INIZIO
Dati di input: i tre numeri a,b,c
Dati di output: media chiedi(″Inserisci tre
Variabili di lavoro: somma numeri″)
INIZIO leggi(a, b, c)
chiedi(″Inserisci tre numeri″)
leggi(a, b, c) somma=a+b+c
somma=a+b+c
media= somma/3
scrivi(media) media=somma/3
FINE
scrivi(media)
FINE
I nomi delle variabili NON devono contenere spazi bianchi e non possono iniziare con una
cifra ma possono contenere cifre. (possiamo chiamare una variabile num1 e num_1 ma NON
1num)
• Un tipo, cioè l’insieme dei valori che il dato può assumere, per esempio valori interi, reali,
ecc. e non può cambiare nel corso del programma
Per poter utilizzare una variabile in un programma bisogna assegnarle un valore. Questa operazione
è detta inizializzazione.
Possiamo inizializzare una variabile nel momento stesso in cui la dichiariamo oppure in un secondo
momento.
int num = 5;
Oppure
int num;
num= 5;
int x = 3;
int y = 2;
x= x+y;
x = x*x;
y = y+x;
• Dati iniziali
• Soluzione adottata
• Risultati finali
Ne consegue che un esecutore che provvede a compiere le azioni richieste dalle istruzioni di
un algoritmo deve essere in grado di acquisire i dati iniziali, su cui attivare il processi di
elaborazione, e deve essere in grado di comunicare all’esterno i risultati
I dati di output sono quelli che vengono comunicati all’esterno, come risultato della soluzione del
problema
Ci sono poi altre variabili, che non sono né di input né di output, ma che sono comunque
necessarie all’attività di elaborazione per ottenere risultati parziali, e che vengono chiamate
variabili di lavoro, temporanee o di calcolo.
Le misure dei due cateti devono essere fornite dall’esterno perché sono necessarie per il
calcolo richiesto.
L’ipotenusa è una variabile di lavoro perché non viene fornita dall’esterno, ma per calcolare il
perimetro serve la sua misura.
Il perimetro è il valore da comunicare come risultato finale ed è perciò di output
In informatica un tipo di dato indica l’insieme di valori che una variabile può assumere.
Ad esempio dire che la variabile x è di tipo intero significa affermare che x può assumere
come valori solo numeri interi.
<tipo> <variabile> ;
Operatori aritmetici
+ Addizione
- Sottrazione
* Moltiplicazione
/ Divisione
Operatori di relazione
= uguale
< minore
<= minore uguale
> maggiore
>= maggiore uguale
!= diverso
Docente: Rossi Daniela
Gli operatori
Operatori logici
• Sequenza
• Selezione
• Iterazione
Le istruzioni vengono scritte una dopo l’altra, e verranno poi eseguite nell’ordine
con cui sono scritte.
Esercizio:
Questo costrutto permette di effettuare una scelta fra due possibili alternative.
Per effettuare una scelta, però, dobbiamo valutare una condizione.
V F
condizione
SE (condizione)
ALLORA
B1 B1
FINESE
ESERCIZIO
FINE
ESERCIZIO
INIZIO
LEGGI(N)
SE (N>0)
ALLORA
SCRIVI(«il numero è positivo»)
ALTRIMENTI
SE (N<0)
ALLORA
SCRIVI(«il numero è negativo»)
ALTRIMENTI
SCRIVI(«il numero è nullo»)
FINESE
FINESE
FINE
La SELEZIONE
Leggi(N)
V F
N>0
«il numero è
positivo» V F
N<0
FINE
ESERCIZIO 1:
Scrivere un algoritmo che legge un voto scolastico e dice se tale voto è insufficiente o
sufficiente
ESERCIZIO 2:
La prima volta che l’uomo è andato sulla Luna è stato il 1969, creare un algoritmo che
chiede l’anno di nascita all’utente e gli risponde se è nato l’anno in cui l’uomo è andato
sulla Luna o quanti anni prima o quanti anni dopo.
Se avessimo dovuto fare la somma di 100 numeri utilizzando le strutture viste fino
ad ora avremmo utilizzato 100 variabili e le avremo sommate.
Non è la soluzione ottimale
Dal punto di vista informatico si tratta di utilizzare una variabile che viene
aggiornata per ogni prezzo acquisito: ogni nuovo prezzo acquisito non deve
sostituire il precedente ma aggiungersi ai prezzi già acquisiti.
IMPORTANTE
I contatori devono essere INIZIALIZZATI prima del loro utilizzo
l’aggiornamento del valore viene effettuato all’interno di un ciclo
INIZIO
MENTRE (condizione) F
condizione
ESEGUI
B1
V
FINEMENTRE
B1
F
condizione
INIZIO
MENTRE (condizione) V
ESEGUI
B1 B1
FINEMENTRE
ESERCIZIO
INIZIO
Conta 0
Somma 0
SCRIVI(″quanti numeri vuoi sommare?″)
LEGGI (N)
MENTRE (Conta < N)
ESEGUI
SCRIVI(″Inserisci un numero″)
LEGGI(Num)
Somma = Somma+Num
Conta Conta+1
FINEMENTRE
SCRIVI(″La somma è″, Somma)
FINE
Docente: Rossi Daniela
INIZIO
ITERAZIONE PRE-CONDIZIONALE
scrivi(″quanti numeri vuoi
sommare? ″)
ESERCIZIO
Somma =0
INIZIO
Conta 0
Conta =0
Somma 0
SCRIVI(″quanti numeri vuoi sommare?″)
LEGGI (N) F
MENTRE (Conta < N) Conta<N
ESEGUI
SCRIVI(″Inserisci un numero″) V
LEGGI(Num) scrivi(″Inserisci un numero″)
Somma = Somma+Num Scrivi(Somma)
Conta Conta+1
leggi(Num)
FINEMENTRE
SCRIVI(Somma) FINE
FINE Somma =Somma+Num
Conta = Conta +1
INIZIO
B1
RIPETI
B1
FINCHE’(Condizione)
F
FINE condizione
V
Scrivi(Somma)
FINE
Docente: Rossi Daniela