Professional Documents
Culture Documents
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
num
23
27/05/05
Programacin Digital I
arreglo_notas 12
27/05/05
15
12
18
11
14
5
Programacin Digital I
arreglo_notas 12
0
15
1
12
2
18
3
11
4
4
5
14
6
subndices
27/05/05 Programacin Digital I 6
deudas_mes
20200 12030 45000 21300 15600 30222 21333 43020 21000 43222 21350 53929
2
subndices
11
27/05/05
Programacin Digital I
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
27/05/05
Programacin Digital I
10
27/05/05
Programacin Digital I
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
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
27/05/05
Programacin Digital I
14
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
2
1
3
2
4
3
5
4
6
5
7
6
8
7
9
8
10
9
16
Programacin Digital I
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
n[2] = 0.75
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
27/05/05
Programacin Digital I
20
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