vectores - webdelprofesor.ula.ve · vectores material original: prof. flor narciso modificaciones:...

Post on 24-Sep-2018

228 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

27/05/05 Programación Digital I 1

Vectores

Material Original: Prof. Flor NarcisoModificaciones: Prof. Andrés ArciaDepartamento de ComputaciónEscuela de Ingeniería de SistemasFacultad de IngenieríaUniversidad de Los Andes

Programación Digital I 227/05/05

Tipos de Datos

Simples: Son las unidades mínimas para almacenar algún valor.Las más conocidas son: enteros, reales, caracteres, apuntadores,lógicos.

Compuestos o estructurados: Almacenan uno o mas valores de unoo diversos tipos (arreglos, registros, cadenas de caracteres).

Se utilizan cuando se requiere el procesamiento de múltiplesdatos que tienen características comunes.

Ejemplos: Un conjunto de números enteros, un conjunto deestudiantes, un conjunto de temperaturas.

Programación Digital I 327/05/05

Arreglo

DefiniciónGeneralización del concepto de variable.

Variable: Puede tener como máximo un valor. Cada variable esreferenciada 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 subíndices(nùmero entero).

Tipos de arreglos: Los arreglos se clasificansegún el número dimensiones que almacenan:- Vector (arreglos unidimensionales - 1D), un subíndice- Matriz (arreglos bidimensionales - 2D), dos subíndices- Multidimensional (tres - 3D- o mas dimensiones), 3 o massubíndices

Programación Digital I 427/05/05

Vector (Arreglo Unidimensional)

Generalización del concepto de variable.Variable: Almacenar cuatro números enteros.

int num1, num2, num3, num4;

Vector: Almacenar cuatro números enteros.

num 23152

Programación Digital I 527/05/05

Vector (Arreglo Unidimensional)

• Grupo de localidades consecutivas de memoriarelacionadas por el hecho que tienen el mismo nombrey tipo. Esto implica que cada celda tenga exactamenteel mismo tamaño.

• Cada localidad (o grupo de localidades) almacena unelemento del vector.Nombre del

vector

arreglo_notas

141118121512

Programación Digital I 627/05/05

Vector (Arreglo Unidimensional)

• Cada elemento del vector es accedido mediante el nombredel vector y un subíndice que representa la posiciónnumérica (entero no negativo) de dicho elemento dentro delvector.

arreglo_notas

Nombre delvector

0 1 2 3 4 5 6

subíndices

1441118121512

Programación Digital I 727/05/05

Vector: Representación Gráfica

deudas_mes

Nombre delvector

Vector de 12 elementos cuyo nombre es deudas_mes

0 1 2 … 11

subíndices

539292135043222210004302021333302221560021300450001203020200

Programación Digital I 827/05/05

Vector: Representación Gráfica

•Note que en general un vector de n elementos tiene indices queestan numerados (por pura convension) desde 0 hasta n-1.

•Dependiendo del lenguaje que utilicemos, los subindices vannumerados desde 0 o desde 1.

Programación Digital I 927/05/05

Declaración de un Vector:Notación Algorítmica

tipo_dato nombre_vector[número_elementos]

Siendo número_elementos un valor entero constante mayor quecero (0)

Ejemplos:entero A[12] Vector A de 12 números enteroscarácter cdn[8] Vector cdn de 8 caracteresreal b[100] Vector b de 100 números reales

Programación Digital I 1027/05/05

Declaración de un Vector:Notación en C

tipo_dato nombre_vector[número_elementos];

Ejemplos:

int A[12]; // Vector A de 12 números enteroschar cdn[8]; // Vector cdn de 8 caracteresfloat b[100]; // Vector b de 100 números reales

También podemos tener declaraciones múltiples:int vector1[3], vector2[201];float x[43], y[56], z[87];char linea[80], texto[2000];

Programación Digital I 1127/05/05

Declaración de un Vector:Ejemplos

#define TAM 10#define MAXCAR 80#define NHORAS 24#define NFIL 2

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

TAM: 10MAXCAR: 24NHORAS: 24NFIL: 2Entero v[TAM]Caracter palabra[MAXCAR]Real temp[NHORAS]Entero m[NFIL]

Notacion en CNotacion Algoritmica

Programación Digital I 1227/05/05

Acceso a los Elementos de unVector

nombre_vector[subíndice]

El valor del subíndice o posición numérica de unelemento dentro del vector puede expresarse como:

Constante entera o valor literal (por ejemplo 3)Variable entera (por ejemplo x)Expresión entera (por ejemplo x + y - 1). En cualquiera de loscasos, el valor del subíndice debe ser un entero mayor o igual acero.

El valor del subíndice puede variar de 0 a n-1, donde nes el número de elementos del vector.

En general, para tener acceso al i-ésimo elemento delvector se escribe nombre_vector[i-1].

Programación Digital I 1327/05/05

Acceso a los Elementos de unVector

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

543210

1.661.892.021.561.571.39

altura_personas

Programación Digital I 1427/05/05

Vector: Instrucciones Válidas

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 unavariable cualquiera.

Programación Digital I 1527/05/05

Inicialización de un Vector:Ejemplo 1Inicializar con valores constantes

Inicializar los elementos de un vector de N elementos enteros en cero.

#define N 100//Declaración del vector y del subíndiceint vector[N], i;

for (i = 0; i < N; i++)vector[i] = 0; // Inicialización de cada

// elemento del vector en 0

99…76543210

0…00000000

Programación Digital I 1627/05/05

Inicialización de un Vector:Ejemplo 2Inicializar usando variables

Inicializar los elementos de un vector de 10 elementos enteroscon valores del 1 al 10.

int v1[10], i;// Declaración del vector y del subíndice

for (i = 0; i < 10; i++)v1[i] = i + 1; // Inicialización de cada

// elemento del vector

9876543210

10987654321

Programación Digital I 1727/05/05

Inicialización de un Vector:Ejemplo 3Inicializar mediante lecturaInicializar los elementos de un vector de 30 elementos de tipocarácter con valores introducidos por el usuario

char frase[30]; // Declaración del vectorint indice; // Declaración del subíndicechar car;

for (indice = 0; indice < 30; indice++){

printf(“Introduzca una frase\n”);scanf(“%c”, car);frase[indice] = car;

}

9

‘t’

10876543210

‘a’‘r’‘o’‘c’‘ ‘‘e’‘s’‘a’‘r’‘f’

Programación Digital I 1827/05/05

Inicialización de un Vector:Ejemplo 4

// Leer una linea de un texto en minusculas y escribirla enmayusculas

#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;

}

Programación Digital I 1927/05/05

Inicialización de un Vector en laDeclaraciónExisten varias formas de predefinir los valores quepuede 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[1] = 0.50 n[2] = 0.75n[3] = 1.00 n[4] = 1.25

char cdn[8] = {‘S’, ‘I’, ‘ ‘, ‘a’, ‘l’, ‘l’, ‘i’, ‘,’};

cdn[0] = ‘S’ cdn[1] = ‘I’ cdn[2] = ‘ ‘cdn[3] = ‘a’ cdn[4] = ‘l’ cdn[5] = ‘l’cdn[6] = ‘I’ cdn[7] = ‘,’

Programación Digital I 2027/05/05

Inicialización de un Vector en laDeclaraciónTodos los elementos del vector no tienen asignadovalores iniciales:

int a[8] = {1, 2, 3};

a[0] = 1 a[1] = 2 a[2] = 3 a[3] = 0a[4] = 0 a[5] = 0 a[6] = 0 a[7] = 0

float n[5] = {0.25, 0.00, 0.30};

n[0] = 0.25 n[1] = 0.00 n[2] = 0.30n[3] = 0.00 n[4] = 0.00

char cadena[11]=”Una Cadena”;

Programación Digital I 2127/05/05

Inicialización de un Vector en laDeclaración: 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]);

}

Programación Digital I 2227/05/05

Vectores: Ejemplo 1

Inicializar los elementos de un vector s con los númerospares del 2 al 20

void inicializarVectorPares() {int j;int s[10];

for (j = 0; j < 10; j++)s[j] = 2 + 2 * j;

}

Programación Digital I 2327/05/05

Vectores: Ejemplo 2

Calcular la suma de los elementos de un vector

Algoritmo

entero función sumVector ( )

entero a[8] = {1, 3, 5, 4, 7, 2, 99, 16}entero ientero total

0. Inicio1. total = 02. Repita para (i = 0; i < 8; i = i + 1)

total = total + a[i]fin-RP

3. devolver total4. fin_función

Programación Digital I 2427/05/05

Vectores: Ejemplo 2

Calcular la suma de los elementos de un vector

Codificación

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;}

Programación Digital I 2527/05/05

Vectores: Ejemplo 3Calcular la media de n números y después calcular ladesviación de cada número 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 procesarfor (cont = 0; cont < n; cont++) { // Lectura

cout << “Introduzca un numero << endl;cin >> numeros[cont];suma += numero[cont];// Sumar cada numero con los anteriores

}

Programación Digital I 2627/05/05

Vectores: Ejemplo 3

media = suma/n; // Calcular la mediacout << “Media = “ << media << endl;for (cont = 0; cont < n; cont++) {

d = numeros[cont] - media// Calcular la desviacion de cada numerocout << “La desviacion de x = “ << numeros[cont]

<< “es” << d << endl;}

}

Programación Digital I 2727/05/05

Vectores: Ejemplo 4

Ordenamiento de una lista de n números enteros enorden 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;

}

}

Programación Digital I 2827/05/05

Vectores: Ejemplo 4

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

0 1 4 2 4 5 0 10 2 4 2 4 5 0 10 3 2 0 4 5 2 10 4 2 0 4 5 2 11 3 4 0 2 5 4 11 4 2 0 1 5 4 22 3 5 0 1 4 5 22 4 4 0 1 2 5 43 4 5 0 1 2 4 5

Programación Digital I 2927/05/05

Recuerde.

Todos los elementos de un vector deben ser del mismo tipo.

Cada elemento de un vector se almacena en una localidad dememoria separada.

Cada elemento de un vector es accedido a través de un subíndiceúnico. El rango del subíndice varía de 0 a n-1, siendo n el númerode elementos del vector.

Un vector recibe un nombre, independientemente del número deelementos que contenga.

Antes de usar un vector, éste debe ser declarado como cualquierotra variable.

Para acceder un elemento de un vector se usa el nombre, seguidode su posición dentro del vector entre corchetes: nombre_vector[subíndice].

Programación Digital I 3027/05/05

EjerciciosEscribir una declaración apropiada para cada uno de lossiguientes problemas:

Definir un vector de 12 elementos enteros llamado c.Asignar los valores 1, 4, 7, 10, …, 34 a los elementos delvector.Definir un vector de caracteres llamado punto. Asignar loscaracteres ‘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;

}

Programación Digital I 3127/05/05

EjerciciosDeterminar el valor final de la variable valor después de laejecución 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];

Programación Digital I 3227/05/05

EjerciciosDeterminar el valor final del vector numeros después de laejecución 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--;

}

Programación Digital I 3327/05/05

Ejercicios

Escribir un programa en C que lea una línea de texto, la almaceneen un vector y la escriba al revés. La longitud de la línea no seráespecificada (terminará al pulsar la tecla Enter), pero se suponeque no excederá de 80 caracteres.

Escribir un programa en C que genere un vector con los valoresque resultan de la ecuación:

y = 2e-0.1tsen(0.5t)donde t varía entre 0 y 60. Permitir que el incremento de t seaintroducido como parámetro de entrada.

Escribir un programa en C que reciba como entrada un númeroentero construya un vector con los 10 primeros múltiplos de dichonúmero.

Programación Digital I 3427/05/05

Ejercicios

Escribir un programa en C que lea una lista de números reales, losalmacene en un vector y calcule e imprima la suma, el valormáximo, el valor mínimo y el valor medio de todos ellos. El tamañode la lista de números se conocerá de antemano, y en ningún casoexcederá de 100.

top related