Definicin: Es una estructura que contiene una cantidad finita de elementos contiguos del mismo tipo.
Declaracin: La declaracin de vectores en SL es muy sencilla, se declara como una variable ms, indicando al compilador los datos adicionales que necesita: cantidad de elementos que tendr de qu tipo sern los datos o elementos var a : vector [4] numerico <identificador> : vector [ <nro_elementos>] <tipo_elemento>
Tipo de elemento puede ser de tipo simple (cadena, logico, numerico) o de tipo estructurado (registro, vector). Ejemplo: declarar un vector de 10 posiciones con elementos de tipo numerico.
var v1 : vector [10] numerico
Acceso a componentes. Para acceder a los componentes se usan los corchetes con un nmero que indica el ndice o posicin dentro del vector. Ejemplo: acceder a la posicin 10 del vector array_1 sera: array_1[10]
Operaciones necesarias con vectores: a) Cerar los elementos de un vector desde k = 1 hasta 100 { v_1[k] = 0 }
b) Leer desde teclado los elementos de un vector desde k = 1 hasta 10 { leer(v_1[k]) }
c) Imprimir la posicin y el valor de cada elemento de un vector desde k=1 hasta 1000 { imprimir ( "pos[", k, "]=", v_1[k], "\n") }
d) Inicializar los arreglos La inicializacin de arreglos es una asignacin, por tanto, el valor previo del arreglo se pierde.
* Si a partir de cierto punto, el resto de los elementos de un arreglo tiene el mismo valor, puede utilizarse la siguiente notacin:
var vec: vector [100] numerico inicio vec = {120, 40, 73, 6, 0, ... } // todo cero desde el 6 elemento Algortmica I - seccin C Licenciatura en Ciencias Informticas Prof. Alcides Acua Ao 2014 Pg. 2/ 3 Clase # 9
Funciones para el manejo de arreglos alen() - retorna la cantidad de elementos de un arreglo. Ejemplo: array_2 : vector [10]
cant = alen(array_2) // cant = 10 desde k=1 hasta alen(array_2) { imprimir(El vector contiene , array_2[k] ) }
Ejercicios con ARREGLOS
Problema #1) Leer un vector de 25 elementos y hallar el promedio de los nmeros que no son ceros.
Problema #2) Leer un vector de dimensin N y desplazarla cclicamente en una unidad, hacia la derecha, As:
programa hallapromedio var i, acu, cont, prom : numerico v : vector[25] :numerico inicio acu = 0 cont = 0 prom = 0 desde i = 1 hasta 25 { leer(v[i]) } desde i = 1 hasta 25{ si ( v[i] <> 0 ){ acu = acu + v[i] cont = cont + 1 } } si ( cont <> 0 ){ prom = acu / cont imprimir('el promedio es = ', prom) } fin
//Ejercicio 2
programa desplazamientoCiclico const N = 200 var i,n, valor, h : numerico v : vector [N] numerico inicio desde i = 1 hasta N{ leer v[i] } valor = v[N] h = 1 desde i = N-1 hasta h paso -1 { v[i+1] = v[i] } v[1] = valor desde i = 1 hasta N{ imprimir(v[i]) } fin
Algortmica I - seccin C Licenciatura en Ciencias Informticas Prof. Alcides Acua Ao 2014 Pg. 3/ 3 Clase # 9
ORDENAR un arreglo Para ordenar un arreglo, se utilizan DOS ciclos de repeticin DESDE y una variable auxiliar.
subrutina ordenarASC() const N = 5 var X: vector [N] numerico aux: numerico j, k: numerico inicio //ordenar ASCENDENTEMENTE desde j=1 hasta N-1 { desde k=j+1 hasta N { si( X[k] < X[j]) { aux= X[j] X[j]= X[k] X[k] = aux } } } fin subrutina ordenarDES() const N = 5 var X: vector [N] numerico aux: numerico j, k: numerico inicio //ordenar DESCENDENTEMENTE desde j=1 hasta N-1 { desde k=j+1 hasta N { si( X[k] > X[j]) { aux= X[j] X[j]= X[k] X[k] = aux } } } fin
Ejercicios para tarea
1. Llenar un vector de 20 elementos, imprimir la posicin y el valor del elemento mayor almacenado en el vector. Suponga que todos los elementos del vector son diferentes.
2. Disee un algoritmo que lea un nmero cualquiera y lo busque en el vector X, el cual tiene almacenados 80 elementos. Escribir la posicin donde se encuentra almacenado el nmero en el vector o el mensaje NO si no lo encuentra.
3. Disee un algoritmo que almacene en un vector llamado FIB[100] los 100 primeros nmeros de la serie fibonacci. La serie de Fibonacci es la siguiente: 1,1,2,3,5,8,13,21,34,55,89,144,233,377,