Programma “Ricerca2”
Relazione
Il programma “ricerca2 è un programma che attraverso una ricerca sequenziale(in informatica la
ricerca sequenziale è un algoritmo utilizzabile per trovare un elemento in un insieme non
ordinato) ci consente di individuare la posizione di un numero all’interno di un vettore effettuando
la scansione dell'array sequenzialmente.
Il programma è strutturato secondo un ciclo while e un variabile booleana che chiamiamo
“trovato”, che utilizzeremo come sentinella (una sentinella in informatica è uno speciale valore che
viene aggiunto ad una lista per indicarne esplicitamente la fine): quando il numero ricercato viene
individuato nel vettore, modifichiamo il valore della sentinella scrivendoci il valore true. Tale
sentinella verrà utilizzata nella condizione di ingresso/uscita al ciclo e quindi ci permetterà di
sospendere la ricerca segnalandoci se un valore è stato trovato.
La condizione che regola il ciclo è composta da due parti:
-(trovato=false): vera fino a che non si trova il numero;
-(indice<=20):vera finché l’indice arriva alla fine del vettore.
Se entrambe le condizioni sono verificate si procede nella scansione del vettore, non appena una
delle diventa falsa, il ciclo termina e in base al valore di “posizione”, possiamo sapere il motivo
della terminazione:
-posizione > di 0: si è trovata una cella contenente il valore cercato;
-posizione = a 0: si è arrivati alla fine del vettore senza trovare alcun elemento.
Il programma è stato anche personalizzato da parte mia con uno sfondo( textbackground) celeste
chiaro con il testo (textcolor) di colore fucsia.
Le variabili utilizzate dal programma sono:
Variabili di
input
Cerca, indice
Variabili di
output
posizione
Variabili
interne
trovato
Vettori
Tipo variabili
v
cerca,indice,posizione,v:integer;
trovato:boolean;
Programma scritto in linguaggio Pascal
program ricerca2;
uses crt;
var
cerca,indice,posizione:integer;
trovato:boolean;
v:array[1..100]of integer;
begin
clrscr;
randomize;
textbackground(11);
clrscr;
textcolor(13);
trovato:=false;
posizione:=0;
for indice:=1 to 100 do
begin
v[indice]:=random(100);
// assegna a v 100 numeri a caso compresi fra 1 e 100
write(v[indice],' ');
// stampa i numeri
end;
writeln;
writeln('inserisci il numero da cercare < 100');
readln(cerca);
indice:=1;
while(trovato=false)and(indice<=100)do
// ricerca
begin
if(v[indice]=cerca)
then
begin
posizione:=indice;
trovato:=true;
// trovato numero
end;
indice:=indice+1;
// incremento contatore
end;
if(posizione>0)
then
writeln('il numero e'' in posizione ',posizione)
else
writeln('il numero non e'' presente');
readln;
end.
Inizio
Legge in input il
numero da cercare
si incrementa
l’indice
finché il numero non
è stato trovato e
l’indice arriva alla
fine del vettore
Se
posizione>0
Stamperà in che posizione
si trova il numero
all’interno del vettore
Stamperà che il numero
non è presente
Fine