You are on page 1of 3

Algortmica I - seccin C

Licenciatura en Ciencias Informticas


Prof. Alcides Acua
Ao 2014
Pg. 1/ 3
Clase # 9

ARREGLOS

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.

var tope_meses: vector [12] numerico
dias_semana: vector [7] cadena
inicio
tope_meses = {31, 28, 31, 30, 31, 31, 30, 31, 30, 31}
dias_semana = {lunes, martes, miercoles, jueves, viernes,
sabado, domingo}
fin

* 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:

Antes:
---------------------
| 3 | 2 | 7 | 6 | 5 |
---------------------
Despus:
---------------------
| 5 | 3 | 2 | 7 | 6 |
---------------------


SOLUCIONES
//Ejercicio 1

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.

Antes
---------------------
| 3 | 2 | 7 | 6 | 5 |
---------------------
Despus:
---------------------
| 2 | 3 | 5 | 6 | 7 |
---------------------



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,