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