Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Por cualquiera de las dos acciones se esta creando una variable compuesta de N elementos,
organizados en posiciones de la 1 a la N. Siendo N el numero real de elementos que se
almacenan y debe ser un valor acorde con la definición que se hizo del tipo vector. Por ejemplo
si vector es declarada como una variable del tipo T1 o T2, el valor de N debe estar entre 1 y 100.
La creación de un vector nos permite almacenar valores en una única variable y tenerlos vigentes
en toda la ejecución del programa. Visto como un subprograma sus parámetros serian N de
entrada y vector de salida y su encabezado podría ser:
Agrupando estos tres procesos en uno solo podríamos generalizar de la siguiente manera:
Contador:=0;
For w:=1 to N do
If (vector [w] IN [inicio..fin]) then contador:=contador+1;
3
Donde se indica incrementar el valor de la variable contador en uno si el elemento del vector de
posición w pertenece al conjunto de todos los valores indicados en el subrango inicio..fin. Si la
búsqueda corresponde a los aprobados al momento de invocar este subprograma se indica
inicio=10, fin=20. Los reprobados, inicio=0, fin=9. Una nota en particular, tanto inicio como fin
el mismo valor
En nuestro ejemplo, que seria una aproximación a la situación real, el apuntador seria:
4 6
Si el vector de búsqueda es de tipo Array [-100..100] of byte, un vector apuntador de este
pudiera ser de tipo: Array [1..201] of -100..100 lo que significaría: Máximo 201 elementos que
pudiesen cumplir con el criterio de búsqueda pero los valores que se almacenan en cada una de
esas posiciones son los valores de las posiciones definidas para el vector original.
Como se construye este apuntador? Realicemos el mismo recorrido hecho en el vector original
cuando quisimos hallar la cantidad de aprobados
4
Begin
Contador:=0;
For X:=1 to N do
If (vector [X] in [inicio..fin] ) then contador:=contador+1;
End;
En nuestro ejemplo:
X=1 la condición del If es falsa,
X=2 la condición del If es falsa,
X=3 la condición del If es falsa,
X=4 la condición del If es cierta, esto significa que ese valor de posición debería ser almacenado
en el apuntador. En cual posición? En este caso en la primera porque es el primer valor que
cumple con la condición, pero si fuese el segundo entonces debería ser en la segunda, y si fuese
el tercero en la tercera, y así sucesivamente. Esto significa que el incremento del contador va
“abriendo” la posición que debe ser llenada en el vector apuntador y para ir creando el apuntador
debe procederse de la siguiente manera:
Begin
Contador:=0;
For X:=1 to N do
If (vector [X] in [inicio..fin] ) then begin
contador:=contador+1;
Apuntador [contador]:=X;
end;
End;
Continuando el recorrido en el vector original con el ciclo For
X=5 la condición del If es falsa,
X=6 la condición del If es cierta, ese valor de posición debería ser almacenado en el apuntador.
X=7 la condición del If es falsa.
Salida del For, cierre del ciclo, fin del procedimiento
Que tenemos? Un subprograma diseñado para obtener un vector apuntador resultado de un
proceso de búsqueda generalizada. Entrada? El vector original, la cantidad de elementos del
vector original y el rango inicio, fin de búsqueda. Salida? El vector apuntador (calidad, quienes)
y el contador (cantidad, cuantos). Muy importante es definir como parámetro de salida la
cantidad real de valores que se almacenan en el vector apuntador porque cualquier manipulación
posterior de este vector deberá hacerse sobre las posiciones efectivamente creadas, que no
necesariamente son iguales a las definidas
Contador:=0;
For X:=1 to N do
If (vector [X] in [inicio..fin] ) then begin
contador:=contador+1;
Apuntador [contador]:=X;
end;
End;
Donde:
Type
T99=Array [1..100] of 1..100;
BEGIN
:
:
:
BUSQUEDA (34,5,15,A,B,X);
:
:
END.
Se esta realizando la búsqueda en un vector llamado A que tiene 34 elementos de las personas
con rango de notas entre 5 y 15 inclusive. Se obtiene la cantidad en la variable X y las posiciones
que tienen esas personas en el vector A con el vector B que es un apuntador.
Retomando el resultado que debería escribir del proceso de búsqueda en nuestro ejemplo se
concluye que cualquier escritura de resultados debe incluir como parámetros de entrada a todas
las variables que fueron involucradas en el referido proceso.
En nuestro ejemplo
Para J=1 APUNTADOR [ 1 ] =4 se referencia a VECTOR [ 4 ] que es igual a 14
Para J=2 APUNTADOR [ 2 ] =6 se referencia a VECTOR [ 6 ] que es igual a 12
7