You are on page 1of 34

Vectores

Material Original: Prof. Flor Narciso Modificaciones: Prof. Andrs Arcia Departamento de Computacin Escuela de Ingeniera de Sistemas Facultad de Ingeniera Universidad de Los Andes
1

27/05/05

Programacin Digital I

Tipos de Datos
Simples: Son las unidades mnimas para almacenar algn valor. Las ms conocidas son: enteros, reales, caracteres, apuntadores, lgicos. Compuestos o estructurados: Almacenan uno o mas valores de uno o diversos tipos (arreglos, registros, cadenas de caracteres). Se utilizan cuando se requiere el procesamiento de mltiples datos que tienen caractersticas comunes. Ejemplos: Un conjunto de nmeros enteros, un conjunto de estudiantes, un conjunto de temperaturas.

27/05/05

Programacin Digital I

Arreglo
Definicin
Generalizacin del concepto de variable.
Variable: Puede tener como mximo un valor. Cada variable es referenciada por un nombre. Arreglo: Representa un conjunto de valores (caracteres, enteros, reales, etc.) donde todos comparten el mismo nombre. Cada valor es referenciado utilizando uno o mas subndices (nmero entero).

Tipos de arreglos: Los arreglos se clasifican segn el nmero dimensiones que almacenan:
27/05/05

Vector (arreglos unidimensionales - 1D), un subndice Matriz (arreglos bidimensionales - 2D), dos subndices Multidimensional (tres - 3D- o mas dimensiones), 3 o mas subndices Programacin Digital I

Vector (Arreglo Unidimensional)


Generalizacin del concepto de variable.
Variable: Almacenar cuatro nmeros enteros. int num1, num2, num3, num4; Vector: Almacenar cuatro nmeros enteros.

num

23

27/05/05

Programacin Digital I

Vector (Arreglo Unidimensional)


Grupo de localidades consecutivas de memoria relacionadas por el hecho que tienen el mismo nombre y tipo. Esto implica que cada celda tenga exactamente el mismo tamao. Cada localidad (o grupo de localidades) almacena un elemento del vector. Nombre del
vector

arreglo_notas 12
27/05/05

15

12

18

11

14
5

Programacin Digital I

Vector (Arreglo Unidimensional)


Cada elemento del vector es accedido mediante el nombre del vector y un subndice que representa la posicin numrica (entero no negativo) de dicho elemento dentro del vector.
Nombre del vector

arreglo_notas 12
0

15
1

12
2

18
3

11
4

4
5

14
6

subndices
27/05/05 Programacin Digital I 6

Vector: Representacin Grfica


Nombre del vector

deudas_mes
20200 12030 45000 21300 15600 30222 21333 43020 21000 43222 21350 53929

2
subndices

11

Vector de 12 elementos cuyo nombre es deudas_mes


27/05/05 Programacin Digital I 7

Vector: Representacin Grfica


Note que en general un vector de n elementos tiene indices que estan numerados (por pura convension) desde 0 hasta n-1. Dependiendo del lenguaje que utilicemos, los subindices van numerados desde 0 o desde 1.

27/05/05

Programacin Digital I

Declaracin de un Vector: Notacin Algortmica


tipo_dato nombre_vector[nmero_elementos]
Siendo nmero_elementos un valor entero constante mayor que cero (0)

Ejemplos:
entero A[12] carcter cdn[8] real b[100] Vector A de 12 nmeros enteros Vector cdn de 8 caracteres Vector b de 100 nmeros reales

27/05/05

Programacin Digital I

Declaracin de un Vector: Notacin en C


tipo_dato nombre_vector[nmero_elementos]; Ejemplos:
int A[12]; char cdn[8]; float b[100]; // Vector A de 12 nmeros enteros // Vector cdn de 8 caracteres // Vector b de 100 nmeros reales

Tambin podemos tener declaraciones mltiples:


int vector1[3], vector2[201]; float x[43], y[56], z[87]; char linea[80], texto[2000];

27/05/05

Programacin Digital I

10

Declaracin de un Vector: Ejemplos


Notacion Algoritmica Notacion en C
TAM: 10 MAXCAR: 24 NHORAS: 24 NFIL: 2 Entero v[TAM] Caracter palabra[MAXCAR] Real temp[NHORAS] Entero m[NFIL] #define #define #define #define TAM 10 MAXCAR 80 NHORAS 24 NFIL 2

int v[TAM]; char palabra[MAXCAR]; double temp[NHORAS]; int m[NFIL];


11

27/05/05

Programacin Digital I

Acceso a los Elementos de un Vector


nombre_vector[subndice] El valor del subndice o posicin numrica de un elemento dentro del vector puede expresarse como:
Constante entera o valor literal (por ejemplo 3) Variable entera (por ejemplo x) Expresin entera (por ejemplo x + y - 1). En cualquiera de los casos, el valor del subndice debe ser un entero mayor o igual a cero.

El valor del subndice puede variar de 0 a n-1, donde n es el nmero de elementos del vector. En general, para tener acceso al i-simo elemento del vector se escribe nombre_vector[i-1].
27/05/05 Programacin Digital I 12

Acceso a los Elementos de un Vector


altura_personas

1.39
0

1.57
1

1.56
2

2.02
3

1.89
4

1.66
5

Primer elemento: altura_personas[0] == 1.39 Segundo elemento: altura_personas[1] == 1.57 Tercer elemento: altura_personas[2] == 1.56 . Sexto y ultimo elemento: altura_personas[5] == 1.66

27/05/05

Programacin Digital I

13

Vector: Instrucciones Vlidas


A[1] = 3; X = A[4]; cin >> A[6]; cout << A[10]; A[1] = A[b+2]; Y = Suma (A[i], b, c); b = A[6] / 2;
Notese que cada elemento de un vector puede usarse como una variable cualquiera.

27/05/05

Programacin Digital I

14

Inicializacin de un Vector: Ejemplo 1


Inicializar con valores constantes Inicializar los elementos de un vector de N elementos enteros en cero. #define N 100 //Declaracin del vector y del subndice int vector[N], i; for (i = 0; i < N; i++) vector[i] = 0; // Inicializacin de cada // elemento del vector en 0

0
0
27/05/05

0
1

0
2

0
3

0
4

0
5

0
6

0 0
7 99
15

Programacin Digital I

Inicializacin de un Vector: Ejemplo 2


Inicializar usando variables
Inicializar los elementos de un vector de 10 elementos enteros con valores del 1 al 10. int v1[10], i; // Declaracin del vector y del subndice for (i = 0; i < 10; i++) v1[i] = i + 1; // Inicializacin de cada // elemento del vector 1
0
27/05/05

2
1

3
2

4
3

5
4

6
5

7
6

8
7

9
8

10
9
16

Programacin Digital I

Inicializacin de un Vector: Ejemplo 3


Inicializar mediante lectura
Inicializar los elementos de un vector de 30 elementos de tipo carcter con valores introducidos por el usuario
char frase[30]; int indice; char car; // Declaracin del vector // Declaracin del subndice

for (indice = 0; indice < 30; indice++) { printf(Introduzca una frase\n); scanf(%c, car); frase[indice] = car; }

f r a s e c o r t a 0 1 2 3 4 5 6 7 8 9 10
17

27/05/05

Programacin Digital I

Inicializacin de un Vector: Ejemplo 4


// Leer una linea de un texto en minusculas y escribirla en mayusculas #include <iostream.h> #include <ctype.h> #define TAMANO 80 int main() { char letrasMinusculas[TAMANO], letrasMayusculas[TAMANO]; int cont; for (cont = 0; cont < TAMANO; cont++) { letrasMinusculas[cont] = getchar(); letrasMayusculas[cont] = toupper(letrasMinusculas [cont]); } for (cont = 0; cont < TAMANO; cont++) putchar(letrasMayusculas[cont]); return 0; }
27/05/05 Programacin Digital I 18

Inicializacin de un Vector en la Declaracin


Existen varias formas de predefinir los valores que puede contener un vector:
int a[8] = {0}; a[0] = a[1] = a[2] = a[3] = a[4] = a[5] = a[6] = a[7] = 0 float n[5] = {0.25, 0.50, 0.75, 1.00, 1.25}; n[0] = 0.25 n[3] = 1.00 cdn[0] = S cdn[3] = a cdn[6] = I
27/05/05

n[1] = 0.50 n[4] = 1.25 cdn[1] = I cdn[4] = l cdn[7] = ,


Programacin Digital I

n[2] = 0.75

char cdn[8] = {S, I, , a, l, l, i, ,}; cdn[2] = cdn[5] = l


19

Inicializacin de un Vector en la Declaracin


Todos los elementos del vector no tienen asignado valores iniciales:
int a[8] = {1, 2, 3}; a[0] = 1 a[4] = 0 a[1] = 2 a[5] = 0 a[2] = 3 a[6] = 0 a[3] = 0 a[7] = 0

float n[5] = {0.25, 0.00, 0.30}; n[0] = 0.25 n[3] = 0.00 n[1] = 0.00 n[4] = 0.00 n[2] = 0.30

char cadena[11]=Una Cadena;

27/05/05

Programacin Digital I

20

Inicializacin de un Vector en la Declaracin: Ejemplo 1


#include <iostream.h> void EscribirVector( ) { int n[9] = {32, 27, 64, 18, 95, 14, 90, 70, 60}, j; for (j = 0; j < 9; j++) printf(Elemento %i = %i \n,j,n[j]); }

27/05/05

Programacin Digital I

21

Vectores: Ejemplo 1
Inicializar los elementos de un vector s con los nmeros pares del 2 al 20
void inicializarVectorPares() { int j; int s[10]; for (j = 0; j < 10; j++) s[j] = 2 + 2 * j; }

27/05/05

Programacin Digital I

22

Vectores: Ejemplo 2
Calcular la suma de los elementos de un vector
Algoritmo entero funcin sumVector ( ) entero a[8] = {1, 3, 5, 4, 7, 2, 99, 16} entero i entero total 0. Inicio 1. total = 0 2. Repita para (i = 0; i < 8; i = i + 1) total = total + a[i] fin-RP 3. devolver total 4. fin_funcin
27/05/05 Programacin Digital I 23

Vectores: Ejemplo 2
Calcular la suma de los elementos de un vector Codificacin
int sumVector ( ) { int a[8] = {1, 3, 5, 4, 7, 2, 99, 16}, i, total = 0; for (i = 0; i < 8; i++) total += a[i]; return total; }

27/05/05

Programacin Digital I

24

Vectores: Ejemplo 3
Calcular la media de n nmeros y despus calcular la desviacin de cada nmero respecto a la media.
#include <iostream.h> #define NRO_ELEM 100 void main () { int n, cont; float media, d, suma = 0; float numeros[NRO_ELEM]; cout << Introduzca el total de numeros a procesar << endl; cin >> n; // Leer el total de numeros procesar for (cont = 0; cont < n; cont++) { // Lectura cout << Introduzca un numero << endl; cin >> numeros[cont]; suma += numero[cont]; // Sumar cada numero con los anteriores } Programacin Digital I 27/05/05

25

Vectores: Ejemplo 3
media = suma/n; // Calcular la media cout << Media = << media << endl; for (cont = 0; cont < n; cont++) { d = numeros[cont] - media // Calcular la desviacion de cada numero cout << La desviacion de x = << numeros[cont] << es << d << endl; } }

27/05/05

Programacin Digital I

26

Vectores: Ejemplo 4
Ordenamiento de una lista de n nmeros enteros en orden creciente.
#define n 5 void main() { int elem, temp, i, x[n] = {4, 2, 5, 0, 1}; for (elem = 0; elem < n-1; elem++) for (i = elem+1; i < n; i++) if (x[i] < x[elem]) { temp = x[elem]; x[elem] = x[i]; x[i] = temp; } }
27/05/05 Programacin Digital I 27

Vectores: Ejemplo 4
elem 0 0 0 0 1 1 2 2 3 i 1 2 3 4 3 4 3 4 4 temp 4 4 2 2 4 2 5 4 5 x[0] 4 2 2 0 0 0 0 0 0 0 x[1] 2 4 4 4 4 2 1 1 1 1 x[2] 5 5 5 5 5 5 5 4 2 2 x[3] 0 0 0 2 2 4 4 5 5 4 x[4] 1 1 1 1 1 1 2 2 4 5

27/05/05

Programacin Digital I

28

Recuerde.
Todos los elementos de un vector deben ser del mismo tipo. Cada elemento de un vector se almacena en una localidad de memoria separada. Cada elemento de un vector es accedido a travs de un subndice nico. El rango del subndice vara de 0 a n-1, siendo n el nmero de elementos del vector. Un vector recibe un nombre, independientemente del nmero de elementos que contenga. Antes de usar un vector, ste debe ser declarado como cualquier otra variable. Para acceder un elemento de un vector se usa el nombre, seguido de su posicin dentro del vector entre corchetes: nombre_vector [subndice].
27/05/05 Programacin Digital I 29

Ejercicios
Escribir una declaracin apropiada para cada uno de los siguientes problemas: Definir un vector de 12 elementos enteros llamado c. Asignar los valores 1, 4, 7, 10, , 34 a los elementos del vector. Definir un vector de caracteres llamado punto. Asignar los caracteres N, O, R, T, E a los caracteres del vector. Describir la salida producida por el siguiente programa:
#include <iostream.h> void main() { int a, b = 0; int c[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; for (a = 0; a < 10; a++) if ((c[a] % 2) == 0) b +=c[a]; cout << b << endl;

27/05/05

Programacin Digital I

30

Ejercicios
Determinar el valor final de la variable valor despus de la ejecucin del siguiente segmento de programa: int alfa = {-10, 16, 19, -15, 20}; int index, valor = 0; for (index = 0; index != 5; index++) valor += alfa[index];

27/05/05

Programacin Digital I

31

Ejercicios
Determinar el valor final del vector numeros despus de la ejecucin del siguiente segmento de programa: int numeros = {5, 2, 8, 7, 0, 3}; int izq = 0, der = 5; while (izq <= der) { numeros[der] = numeros[izq]; izq++; der--; }

27/05/05

Programacin Digital I

32

Ejercicios
Escribir un programa en C que lea una lnea de texto, la almacene en un vector y la escriba al revs. La longitud de la lnea no ser especificada (terminar al pulsar la tecla Enter), pero se supone que no exceder de 80 caracteres. Escribir un programa en C que genere un vector con los valores que resultan de la ecuacin: y = 2e-0.1tsen(0.5t) donde t vara entre 0 y 60. Permitir que el incremento de t sea introducido como parmetro de entrada. Escribir un programa en C que reciba como entrada un nmero entero construya un vector con los 10 primeros mltiplos de dicho nmero.

27/05/05

Programacin Digital I

33

Ejercicios
Escribir un programa en C que lea una lista de nmeros reales, los almacene en un vector y calcule e imprima la suma, el valor mximo, el valor mnimo y el valor medio de todos ellos. El tamao de la lista de nmeros se conocer de antemano, y en ningn caso exceder de 100.

27/05/05

Programacin Digital I

34

You might also like