Dal problema all’ algoritmo
1
Analisi e programmazione
Tramite un elaboratore si possono risolvere problemi di
varia natura. Il problema deve essere formulato in
modo opportuno, perché sia possibile utilizzare un
elaboratore per la sua soluzione.
Per analisi e programmazione si intende l’insieme delle
attività preliminari atte a risolvere problemi utilizzando
un elaboratore, dalla formulazione del problema fino
alla predisposizione dell’elaboratore
Scopo dell’analisi: definire un algoritmo
Scopo della programmazione: tradurre l’algoritmo in
un programma utilizzando un linguaggio di
programmazione
2
Definizione di Algoritmo
Un algoritmo è sequenza finita di azioni elementari che
descrivono la soluzione di un problema in modo
completo
Ogni algoritmo è un insieme finito di azioni e deve
terminare dopo un numero finito di istruzioni.
Completo: deve considerare tutti i casi possibili che si
possono verificare durante l’esecuzione e per ogni caso
può indicare la soluzione da seguire.
3
Programma=algoritmo + dati
Un algoritmo non può essere eseguito direttamente dall’elaboratore
Programma  insieme di istruzioni (o comandi) che traducono
l’algoritmo in un linguaggio comprensibile ed eseguibile da parte di un
elaboratore
Un programma è strutturato in:
- una parte di dichiarazione in cui si dichiarano tutte le variabili
del programma e il loro tipo (intero, reale, stringa, ecc.)
- una parte che descrive l’algoritmo risolutivo utilizzato
Linguaggio di programmazione  linguaggio che permette la
formalizzazione di un algoritmo in un programma traducendolo con un
insieme di istruzioni (codice)
4
Le fasi del procedimento di analisi
e programmazione
Problema
ANALISI
Algoritmo
PROGRAMMAZIONE
Programma
ELABORAZIONE
Dati
Risultati
5
Dati su cui opera un Algoritmo:
Costanti e variabili
I dati su cui opera un algoritmo sono costanti e variabili
Una costante è una locazione (cella) di memoria che
mantiene lo stesso valore per tutta la durata dell'esecuzione
del programma.
Una variabile identifica una locazione (cella) di memoria
destinata a contenere dei dati, che possono essere
modificati nel corso dell'esecuzione di un programma.
Una variabile è caratterizzata da un nome (una sequenza di
caratteri e/o cifre) e da un tipo di variabile numerica,
alfabetica o alfanumerica
(in Visual Basic: integer,
double, string).
Valore
Nome
Rappresentazione di una
variabile
6
Assegnazione
L’istruzione di assegnazione definisce il valore di una
variabile, che resta inalterato fino all’assegnazione
successiva Es. A  5 (a=5)
L’assegnazione si rappresenta con il simbolo “”
nome di variabile  espressione
Es. A  5 si legge “assegna alla variabile A il valore di 5
I nomi delle variabili possono essere scelti in modo
arbitrario, ma è opportuno selezionare nomi significativi
del contenuto della variabile (senza spazi o caratteri
speciali)
7
Assegnazione
Esempi
a = b*c
a  b*c
24
a
6
4
b
c
6
4
b
x = x+3
14
x  x+3
17
x
x
c
Prima dell’assegnazione
Dopo l’assegnazione
Prima dell’assegnazione
Dopo l’assegnazione
8
Le istruzioni
Le Istruzioni operative in un programma possonono essere:
Istruzioni di controllo, che controllano il verificarsi di
condizioni specificate e, in base al risultato del controllo,
determinano il flusso di istruzioni da eseguire
Esistono tre tipi di istruzioni di controllo: sequenza,
selezione (alternativa), ripetizione (ciclo)
Istruzioni di ingresso/uscita, che specificano come debba
essere effettuata una trasmissione di dati tra l’algoritmo
risolutivo e l’ambiente esterno
Istruzioni di inizio/fine esecuzione, che indicano l’inizio/la
fine dell’algoritmo
9
I diagrammi a blocchi (flowchart)
Il linguaggio dei diagrammi a blocchi è un possibile
formalismo per la descrizione di algoritmi; il diagramma a
blocchi, o flowchart, è una rappresentazione grafica
dell’algoritmo
Un diagramma a blocchi definisce il flusso sequenziale di
operazioni da eseguire per realizzare la soluzione del
problema, descritta nell’algoritmo
Ogni istruzione è rappresentata all’interno di un blocco la cui
forma grafica è determinata dal tipo di istruzione (blocco di
elaborazione, di lettura o di scrittura, di scelta, ecc.)
I blocchi sono collegati tra loro da linee di flusso, munite di
frecce, che indicano il susseguirsi di azioni elementari
10
I diagrammi a blocchi
inizio
leggi x
Blocco iniziale
Blocco di lettura (input)
fine
Elaborazione
Blocco di elaborazione
vero
scrivi xX
scrivi
Blocco finale
Condizione
falso
Blocco di controllo
Blocco di scrittura
(output)
Blocchi elementari
11
I diagrammi a blocchi
Un diagramma a blocchi è un insieme di blocchi elementari
composto da:
un blocco iniziale
un blocco finale
un numero finito di blocchi di elaborazione e blocchi di
lettura/scrittura
un numero finito di blocchi di controllo
12
maggiore
13
Costanti e variabili
Il valore di una variabile deve appartenere all’insieme di
definizione, su cui si opera (numeri interi, reali o stringhe).
Una variabile è caratterizzata dal nome e dal suo valore che
è = 0 in fase di definizione dell’algoritmo, ma assume poi
valori ben precisi durante ogni esecuzione
Esempio: Nell’algoritmo di risoluzione delle equazioni di 2°
grado, a, b, c non corrispondono a nessun valore finché non
si esegue l’algoritmo per trovare le soluzioni di una specifica
equazione:
ad esempio x29x4=0: in fase di esecuzione il valore delle
variabili a,b,c sarà:
a=1, b=9, c=4 e
nell’istruzione =b24ac viene calcolato il valore della variabile
 (discriminante)
14
Esempio  Radici di equazioni di 2° grado
Problema: Calcolo delle radici reali dell’equazione di secondo
grado ax2+bx+c=0
Algoritmo:
1)
2)
3)
4)
5)
6)
7)
Acquisire i coefficienti a,b,c
Calcolare  = b24ac
Se <0 non esistono radici reali, eseguire l’istruzione 7)
Se = 0, x1= x2 = b/2a, poi eseguire l'istruzione 6)
Calcolare x1 = (b +)/2a x2 = (b )/2a
Comunicare i valori x1, x2
Fine
15
I diagrammi a blocchi
inizio
Diagramma a blocchi dell’algoritmo per
il calcolo delle radici dell’equazione di
2° grado ax2 + bx + c = 0
Leggi a,b,c
delta  b2  4ac
Algoritmo (pseudocodifica):
Vero
1. Acquisire i coefficienti a,b,c
2. Calcolare  = b24ac
3. Se <0 non esistono radici reali,
eseguire l’istruzione 7
4. Se = 0, x1= x2 = b / 2a, poi
eseguire l'istruzione 6
5. Calcolare x1 = (b +) / 2a
Calcolare x2 = (b ) / 2a
6. Stampare i valori x1, x2
scrivi
“non ci sono radici reali”
7. Fine
Falso
delta<0
Falso
Vero
delta=0
x1 b/2a
x1 (b+sqrt(delta))/2a
x2 b/2a
x2 (bsqrt(delta))/2a
scrivi
x1 e x2
16
fine
ALGORITMI e PROGRAMMI
Algoritmo
 Un algoritmo non può essere eseguito direttamente
dall’elaboratore
Codifica dell’algoritmo  Programma
 Programma: sequenza ordinata di istruzioni, scritte in un
determinato linguaggio di programmazione, che specificano le
azioni da compiere dall’esecutore (il computer).
Algoritmo
Programma
17
Programma = algoritmo + dati
Un programma è strutturato in:
- una parte dichiarativa in cui si dichiarano tutte le variabili
del programma e il loro tipo (intero, reale, stringa, ecc.)
- una parte che descrive l’algoritmo risolutivo utilizzato
Linguaggio di programmazione  linguaggio che permette
la formalizzazione di un algoritmo in un programma
traducendolo con un insieme di istruzioni (codice)
18
ALGORITMI e PROGRAMMI
PROBLEMA
metodo
risolutivo
ALGORITMO
PROGRAMMA
linguaggio di
programmazione
19
LINGUAGGI: SINTASSI E SEMANTICA
Sintassi: l’insieme delle regole che consentono di scrivere
parole e frasi riconoscibili come appartenenti ad un
determinato linguaggio.
(collegamento ordinato delle parole nel discorso)
Semantica : la disciplina che studia il significato delle
parole e delle frasi.
20
LINGUAGGI a BASSO e ALTO LIVELLO
Linguaggi di Programmazione a basso livello impostano la soluzione di
un problema a partire da “passi elementari”: risolvono il problema con
efficienza ma sono molto vasti per risolvere algoritmi complesssi.
Esempio: Assembly
Linguaggi di Programmazione ad alto livello (di astrazione)


le istruzioni corrispondono ad operazioni più complesse
esempi: Pascal, Basic, C, C++, Java, Visual Basic
ASTRAZIONE: processo di aggregazione di informazioni e dati per
costruire un modello del mondo esterno.
21
Linguaggi di
programmazione
Problema
Algoritmo
Programma
sorgente
Risultati
Dalla
formulazione del
problema alla
sua soluzione
Programma
traduttore
Elaborazione
Programma
oggetto
22
Evoluzione dei Linguaggi
Esistono numerosi linguaggi

differenti per funzionalità e tecnologia
anni ‘60 metà anni ’60
BASIC
COBOL
metà anni ’50
FORTRAN
1968
Pascal
Linguaggi di
Programmazione
Imperativa
1974
C
1991
VB
1990
C++
Linguaggi
Ibridi
1994
Java
2000
Java
Linguaggi
Orientati
agli Oggetti
23
Programma sorgente
Programma sorgente
Istruzioni di
dichiarazione
Descrivono le
variabili utilizzate
dal programma,
definendone tipo e
struttura
Istruzioni di
assegnazione
Consentono di
assegnare alle
variabili un valore
L’algoritmo risolutivo viene
trasformato in un programma
che può contenere:
Istruzioni di
input e output
Richiedono l’ingresso
o l’uscita di una
Strutture
informazione da una
alternativa e
periferica alla
strutture di
ripetizione o cicli memoria centrale e
viceversa
Istruzioni
di controllo
24
Programma
La traduzione da Linguaggio di programmazione a
Linguaggio macchina viene fatta da un
programma traduttore di linguaggio
Due diversi approcci alla traduzione


basata su interprete
basata su compilatore
I linguaggi di programmazione che richiedono un
interprete sono definiti linguaggi interpretati,
mentre quelli che richiedono un compilatore sono
chiamati linguaggi compilati
25
Programma
Linguaggi Interpretati




La traduzione avviene per mezzo di un interprete, che traduce una riga del
programma per volta, ed la esegue immediatamente,
Analogia: gli interpreti simultanei nelle trasmissioni televisive o nei
congressi
Vantaggi: controllo del codice è immediato
Svantaggi: i programmi scritti con linguaggi interpretati, per essere eseguiti,
hanno bisogno dell'interprete (es. Visual Basic, Java)
Linguaggi Compilati




La traduzione avviene per mezzo di un compilatore, che traduce per intero
il programma in un nuovo oggetto
Analogia: i traduttori di libri o riviste
Vantaggi: generano un eseguibile, che può essere eseguito senza bisogno di
altri supporti (es. C)
Svantaggi: correggere gli errori richiede più tempo
26
Linguaggi compilati

C, C++, Fortran
Linguaggi interpretati

Perl, PHP, Visual Basic
Linguaggi interpretati e compilati

Java
27
Compilazione
codice
sorgente
es:primo.c
Compilazione
Compilatore
librerie
esterne
precompilate
es: stdio.h
codice
oggetto
(ling. macchina)
es: primo.obj
Collegamento
codice
eseguibile
es: primo.exe
Linker
28
Ambiente di sviluppo
E’ necessario disporre di vari strumenti
Scrittura del codice del programma

editor di testi (es: Blocco Note, Kate, Emacs)
Ambiente di sviluppo:
Compilatore e Linker delle librerie
DevC++, CodeBlocks
 Linux gcc (C), g++ (C++)

29
Struttura di Base di un Programma
#include <stdio.h>
<altre eventuali direttive>
int main(){
<dichiarazioni>
<operazioni>
}
30
Calcolo area rettangolo
#include <stdio.h>
int main()
{ int base, altezza, area;
printf("AREA RETTANGOLO\n\n");
printf("Valore base: ");
scanf("%d", &base);
//Input
printf("Valore altezza: ");
scanf("%d", &altezza);
//Input
area = base*altezza;
printf("Base: %d\n", base);
printf("Altezza: %d\n", altezza);
printf("Area: %d\n", area); // Output
}
31
Direttive di preprocessore
servono ad “includere” nel programma codice già
scritto (librerie)
 in particolare: #include <stdio.h>
include il codice relativo alle operazioni di lettura
e stampa dei dati da console
 è necessaria un’operazione di collegamento tra le
librerie incluse ed il codice del programma
(linker)

32
Elementi Sintattici di Base
Il codice è composto di istruzioni
 dichiarazioni dei dati (costanti, variabili e loro tipo)
 operazioni sui dati
 In C e C++ tutte le istruzioni si concludono con il punto
e virgola ;
33
Commenti
Testi che forniscono informazioni sul programma
ignorati dal compilatore
Esempi:
1. // primo esercizio
2. /* ----------------------------------Dichiarazioni su più righe
----------------------------------- */
3. // ----------------------------------// Dichiarazioni
// -----------------------------------
34
Variabili e costanti
Parole chiave:
int
float
double
char
bool
string
Dichiarazione di variabili
Esempi:
int x, y;
float a;
double b;
char a;
Dichiarazione di costanti
Parola chiave: const
Esempio:
const int N=10;
const float pigreco = 3.14;
35
Operatori e Funzioni Predefinite
Principali operatori:
Aritmetici : + - * / %
Logici: && ||
!
(AND,OR,NOT)
Relazionali o di confronto
== > >= < <= !=
Principali funzioni predefinite: (#include <math.h>
pow() sqrt() exp() log()
36
Istruzioni di Assegnazione
Esempio:
int x,y;
x = 3;
x = x+1;
x = pow(y,2);
z = (x>y) && (y <=10);
char segno = ‘X’;
37
Fine
38
Esempio di diagramma a blocchi
inizio
Somma di una
sequenza di N
numeri
N
S=
A
S= S+A
N=N-1
NO
N= 
SI
S
FINE
39
40
41
42
La programmazione
strutturata
È stato dimostrato (Teorema fondamentale della programmazione
strutturata di Jacopini e Böhm) che ogni programma può essere
codificato attenendosi esclusivamente a tre strutture fondamentali:
1. Sequenziale
2. Condizionale o alternativa
3. Iterativa o di ripetizione
v
f
43
Le strutture di controllo
• La sequenza
• Struttura condizionale o alternativa
• Il ciclo con controllo alla fine
• Il ciclo con controllo all'inizio
• Il ciclo con contatore
44
La sequenza
È una struttura di controllo che permette di inserire una successione di
elaborazioni che saranno eseguite una di seguito all'altra.
Sintassi
Le istruzioni vengono scritte una di seguito all'altra, una per riga:
istruzione1
istruzione2
... ….
45
Strutture di controllo
Mediante i blocchi fondamentali, è possibile costruire delle strutture
tipicamente utilizzate per il controllo del flusso di esecuzione
dell’algoritmo:
• Selezione
• Iterazione o cicli
Selezione
Esprime la scelta tra due possibili azioni
46
La Struttura alternativa
• È una struttura di controllo che permette di inserire una scelta tra due
possibilità, che porteranno a due elaborazioni distinte (ovvero due distinti
percorsi nel diagramma di flusso).
•Se la condizione risulterà vera, saranno eseguite le istruzioni del ramo VERO, se
invece risulta falsa, saranno eseguite le istruzioni del ramo FALSO.
47
Struttura di controllo iterativa o ciclo
Il ciclo con controllo alla fine
È una struttura di controllo che permette di ripetere un blocco di
istruzioni finché la condizione indicata è falsa. L'uscita dal ciclo si ha
solo quando la condizione diventa vera.
In questo tipo di ciclo il blocco delle istruzioni viene sempre eseguito
almeno una volta.
48
Ciclo Enumerativo
Un ciclo è detto enumerativo quando è noto a priori il numero di volte che
deve essere eseguito si usa la tecnica del contatore per controllarne
l’esecuzione: si usa cioè una variabile detta contatore del ciclo che viene
incrementata (o decrementata) fino a raggiungere un valore prefissato
Ciclo Indefinito
Un ciclo è indefinito quando non è noto a priori il numero di volte che deve
essere eseguito Questo accade quando la condizione di fine ciclo dipende
dal valore di una o più variabili contenute nell’interazione.
49
Struttura di controllo iterativa o ciclo
Il ciclo con controllo all'inizio
È una struttura di controllo che permette di ripetere un blocco di istruzioni
fintanto che la condizione indicata risulta vera. L'uscita dal ciclo si ha solo
quando la condizione diventa falsa.
In questo tipo di ciclo il blocco delle istruzioni può non essere mai eseguito, a
seconda della condizione impostata.
50
Strutture di controllo
Strutture di ripetizione o cicli
Esprime la ripetizione di una sequenza di istruzioni.
Nel caso piu` generale, e` costituita da:
 Inizializzazione: assegnazione dei valori iniziali alle variabili
caratteristiche del ciclo (viene eseguita una sola volta);
 Corpo: esecuzione delle istruzioni fondamentali del ciclo che
devono essere eseguite in modo ripetitivo;
 Modifica: modifica dei valori delle variabili che controllano
l'esecuzione del ciclo (eseguito ad ogni iterazione);
 Controllo: determina se il ciclo deve essere ripetuto o meno.
può essere svolto in testa o in coda alle istruzioni
51
Schema di iterazione
E’costituito da una sequenza di azioni di assegnazione dette istruzioni
di inizializzazione e una iterazione (ripetizione) di una sequenza di
azioni per un numero specificato di volte
52
Struttura di ripetizione (ciclo) con controllo in coda
Do ... While
/* File: media_numeri.c */
#include <stdio.h>
int main()
{
int numero ;
int conta ;
float somma ;
float media ;
somma = 0 ; /* INIZIALIZZA LE VARIABILI */
conta = 0 ;
printf("Inserire una serie di numeri. Zero per finire \n") ;
53
Struttura di ripetizione (ciclo) con controllo in coda
Do ... While
printf("Inserisci numero: ") ;
scanf ("%d", &numero) ;
do
{somma += numero; //somma=somma + numero;
conta = conta + 1 ;
printf("Inserisci numero: ") ;
scanf ("%d", &numero);
}while ( numero != 0 );
media = somma/conta ;
printf("\nNumeri inseriti %d, Somma %.2f, Media %.2f \n",
conta, somma, media);
}
54
Struttura di ripetizione (ciclo) con controllo in testa
While
/* File: media_numeri.c */
#include <stdio.h>
int main()
{
int numero ;
int conta ;
float somma ;
float media ;
somma = 0 ; /* INIZIALIZZA LE VARIABILI */
conta = 0 ;
55
Struttura di ripetizione (ciclo) con controllo in testa
While
printf("Inserire una serie di numeri. Zero per finire \n") ;
printf("Inserisci numero: ") ;
scanf ("%d", &numero) ;
while ( numero != 0 )
{somma = somma + numero ;
conta = conta + 1 ;
printf("Inserisci numero: ") ;
scanf ("%d", &numero);
}
media = somma/conta ;
printf("\nNumeri inseriti %d, Somma %.2f, Media %.2f \n",
conta, somma, media);
}
56
Il ciclo con contatore FOR
I=0
ISTRUZIONI
I=0
I<NUM
È una struttura di controllo che
permette di ripetere un blocco di
istruzioni un numero prestabilito di
volte.
I=I+1
La variabile contatore verrà
inizializzata con il valore minimo
(I=0) e, alla fine di ogni ripetizione
(NEXT), la variabile verrà
incrementata di uno.
ISTRUZIONI
I>NUM
I=I+1
Solo quando la variabile assume un
valore superiore al massimo previsto
si uscirà dal ciclo.
57
Struttura di sequenza
Fra tutti i possibili schemi di flusso ne esistono alcuni che
sono detti schemi fondamentali di composizione
Schema di sequenza: è uno schema elementare o uno schema
di sequenza
inizio
A
fine
58
Struttura di selezione
Schema di selezione: un blocco di controllo subordina
l’esecuzione di due possibili schemi di flusso al verificarsi di
una condizione
Nel primo caso, lo schema S viene eseguito solo se la condizione
C è vera; se C è falsa, non viene eseguita alcuna azione
Nel secondo caso, viene eseguito solo uno dei due schemi Sv o
Sf, in dipendenza del valore di verità della condizione
59
Struttura iterativa o di ripetizione
Il ciclo o loop è uno schema di flusso per descrivere, in modo conciso,
situazioni in cui uno gruppo di operazioni deve essere ripetuto più volte
La condizione di fine ciclo viene
verificata ogni volta che si
esegue il ciclo; se la condizione
assume valore vero (falso), le
istruzioni
vengono
reiterate,
altrimenti si esce dal ciclo
La condizione di fine ciclo può
essere verificata prima o dopo
l’esecuzione dell’iterazione
Le istruzioni di inizializzazione,
assegnano valori iniziali ad
alcune variabili (almeno a quella
che controlla la condizione di fine
Ciclo con controllo in testa
Ciclo con controllo in coda
ciclo)
60
Gli algoritmi iterativi
Problema: Calcolare la somma di tre
interi consecutivi( es. 13+14+15)
Note:
La fase di inizializzazione riguarda la
somma e l’indice del ciclo
Il controllo di fine ciclo viene
effettuato in coda
61
Gli algoritmi iterativi  4
Un ciclo è definito quando è noto a priori il numero di iterazioni:
un ciclo definito è detto anche enumerativo
Un contatore del ciclo tiene memoria di quante iterazioni sono
state effettuate; può essere utilizzato in due modi:
incremento del contatore: il contatore viene inizializzato ad un
valore minimo (ad es. 0) e incrementato ad ogni esecuzione
del ciclo; si esce dal ciclo quando il valore del contatore
eguaglia il numero di iterazioni richieste
decremento del contatore: il contatore viene inizializzato al
numero di iterazioni richiesto e decrementato di uno ad ogni
iterazione; si esce quando il valore del contatore raggiunge 0
62
Gli algoritmi iterativi  5
Un ciclo è indefinito quando non è possibile conoscere a
priori quante volte verrà eseguito
La condizione di fine ciclo controlla il valore di una o più
variabili modificate da istruzioni che fanno parte
dell’iterazione
Comunque, un ciclo deve essere eseguito un numero finito
di volte, cioè si deve verificare la terminazione
dell’esecuzione del ciclo
63
Gli algoritmi iterativi
Problema: Calcolo della media di
un insieme di numeri; non è noto
a priori quanti sono i numeri di
cui deve essere calcolata la media
I numeri vengono letti uno
alla volta fino a che non si
incontra un x = 0, che segnala
la fine dell’insieme
64
Fine
65
I vettori
v(1)
v(2)
v(3)
v(4)
Vettore v, costituito dai 4 elementi v(1), v(2), v(3), v(4)
L’utilizzo di variabili vettoriali, in un algoritmo, presuppone la
dichiarazione esplicita della loro dimensione
La dimensione del vettore costituisce un limite invalicabile
per la selezione delle componenti del vettore
Esempio: v(100) asserisce che il vettore v è costituito da 100
elementi; possono essere selezionati v(12), v(57), v(89), ma
non v(121) o v(763), che non esistono
66
I vettori
Esempio: Calcolare il vettore somma di due vettori di uguale
dimensione n
5
7
a(1)
a(2)
6
9
0
a(3)
1
3
a(4)
5
b(1)
b(2)
b(3)
b(4)
11
16
1
8
c(1)
c(2)
c(3)
c(4)
67
I vettori
Esempio: algoritmo per calcolare
il vettore somma di due vettori
Note:
L'utilità dei vettori consiste nell’impiego della tecnica iterativa
in modo da effettuare la stessa
operazione su tutti gli elementi
del vettore
Usando la variabile contatore di
un ciclo come indice degli
elementi di un vettore è
possibile considerarli tutti, uno
alla volta, ed eseguire su di essi
l’operazione desiderata
68
I vettori
Esempio: Algoritmo
per il calcolo del
massimo elemento di
un vettore
vero
69
Esempio  Radici di equazioni di 2° grado
Problema: Calcolo delle radici reali dell’equazione di secondo
grado ax2+bx+c=0
Algoritmo:
1)
2)
3)
4)
5)
6)
7)
Acquisire i coefficienti a,b,c
Calcolare  = b24ac
Se <0 non esistono radici reali, eseguire l’istruzione 7)
Se = 0, x1= x2 = b/2a, poi eseguire l'istruzione 6)
Calcolare x1 = (b +)/2a x2 = (b )/2a
Comunicare i valori x1, x2
Fine
70
I diagrammi a blocchi
inizio
Diagramma a blocchi dell’algoritmo per
il calcolo delle radici dell’equazione di
2° grado ax2 + bx + c = 0
Leggi a,b,c
delta  b2  4ac
Algoritmo (pseudocodifica):
Vero
1. Acquisire i coefficienti a,b,c
2. Calcolare  = b24ac
3. Se <0 non esistono radici reali,
eseguire l’istruzione 7
4. Se = 0, x1= x2 = b / 2a, poi
eseguire l'istruzione 6
5. Calcolare x1 = (b +) / 2a
Calcolare x2 = (b ) / 2a
6. Stampare i valori x1, x2
scrivi
“non ci sono radici reali”
7. Fine
Falso
delta<0
Falso
Vero
delta=0
x1 b/2a
x1 (b+sqrt(delta))/2a
x2 b/2a
x2 (bsqrt(delta))/2a
scrivi
x1 e x2
71
fine