Vectores. 27/05/05 Programación Digital I 1



Documentos relacionados
Tipo de Dato: Arreglos

Introducción al tipo de dato ARRAY

Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Tema 9. Vectores y Matrices

Arrays y Cadenas en C

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda. Lenguaje C++ Contadores y Acumuladores

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

ESTRUCTURA DE DATOS: ARREGLOS

Tema 2: La clase string

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Estructuras de repetición hacer-mientras y repita hasta

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática

Segundo Taller Final de PROGRAMACIÓN ORIENTADO A OBJETOS. INGENIERÍA DE SISTEMAS. Docente y Administrativo: Luz Esperanza Espitia Preciado

Tema 5 Sentencias de control de flujo. Fundamentos de Informática

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

Hoja de problemas Estructuras de Control

Introducción a los Computadores Arreglos en C

promedio = nint((notas(1) + notas(2) + notas(3) + & notas(4) + notas(5) + notas(6)) / 6.0) print *, 'Su promedio es', promedio

Curso 0 de Informática

EJEMPLOS DE PROGRAMACIÓN DE FUNCIONES EN C: Página 1 de 5

Arreglos. // Incluir E/S y Librerías Standard #include <stdlib.h> #include <stdio.h>

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

Modulo 1 El lenguaje Java

#include <stdio.h> /* Factorial de un número - versión 1- */

Academia técnica de computación A.T.C.

Resumen Lenguaje Java

Preliminares. Tipos de variables y Expresiones

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8

TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR: Estructuras CONTENIDOS

El concepto de función en programación se fundamenta en el concepto de función matemática 1

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Estructuras de Repetición Repita Mientras

Contenido. Capítulo 1. Introducción a lenguaje C 1

Herramientas computacionales para la matemática MATLAB: Arreglos

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

Clases y Objetos. Informática II Ingeniería Electrónica

Prof. Dr. Paul Bustamante

GUÍA DE TRABAJO N 2 ARREGLOS EN C# Ing. Néstor Raúl Suarez Perpiñan Página 1 de 8. Tema: ARREGLOS (ARRAYS) LENGUAJE C#

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

Se guardan en archivos con extencion c y los cabezales con extension h

Tema: Arreglos de Objetos en C++.

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

Entrada y salida de datos en C y C++

1 Estructura básica de un programa C++

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Lenguaje C Bucles, Condicionales, operadores y Algoritmos.

Prof. Dr. Paul Bustamante

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

Informática FACULTAD DE FÍSICAS

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */

SERIE DE EJERCICIOS 3

Examen escrito de Programación 1

FACULTAD DE INGENIERÍA

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008

APUNTES JAVA ARRAYS (ARREGLOS) Un arreglo es un grupo de posiciones de memoria contiguas. Todas las cuales tienen el mismo nombre y el mismo tipo.

Tema 4: Estructuras de Control Estructura y Contenidos

11. Algunas clases estándar de Java (II)

Introducción a la programación orientada a objetos

Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria.

Programación. Ejercicios Tema 4 Estructuras de Control Repetitivas

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Practicas de Programación Estructurada. Clave: 12125

Tipos de Arreglos. Notación Algoritmica de los Arreglos multidimensionales tipo_dato nombre[dim 1. , dim 2. ,..., dim n

Ejemplos de conversión de reales a enteros

Estructura de datos tipo vector.

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

ARREGLOS Y MATRICES 1. Arreglos

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Tema: Sobrecarga de Operadores.

CONCEPTOS BASICOS DEL LENGUAJE JAVA

PRÁCTICA 1: INTRODUCCIÓN A LA ALGORÍTMICA BOLETIN DE PROBLEMAS RESUELTOS. (Curso 03-04)

PRACTICA 6. VECTORES Y MATRICES.

Formato para Prácticas de Laboratorio

Prof. Dr. Paul Bustamante

MANUAL DE REFERENCIA DE C++

ARREGLOS DEFINICION GENERAL DE ARREGLO

Prof. Dr. Paul Bustamante

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Comenzando con MATLAB

Capítulo 4. Vectores y matrices. 4.1 Declaración de tablas. 4.2 Declaración estática de tablas

Examen Septiembre Curso Programación en C++ Pág. 1

TEMA 3: EL LENGUAJE C: PRESENTACIÓN

Creación de Funciones de Conducción

Computación III. Objetivo de aprendizaje del tema

Definición Dados dos números naturales m y n, una matriz de orden o dimensión m n es una tabla numérica rectangular con m filas y n columnas.

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada.

Objetivos. El alumno conocerá los elementos indispensables de un ambiente de programación y será capaz de realizar programas básicos en lenguaje C.

Fundamentos de Programción (I)

Actividades de Divulgación del Centro Atómico Bariloche. Qué hay detrás de un programa de computadora? Daniela Arnica Pablo E. Argañaras.

Fundamentos de programación

Contenidos. Archivos en C++ Archivos en C++ Introducción

Vectores y matrices. Arrays Declaración Creación Acceso a los elementos de un array Manipulación de vectores y matrices

Titulo: Suma de N primeros números

FUNDAMENTOS DE PROGRAMACIÓN

Herramientas computacionales para la matemática MATLAB: Otros tipos de datos

7.- Seleccionando funciones friend o funciones miembro para sobrecarga de operadores.

Transcripción:

Vectores Material Original: Prof. Flor Narciso Modificaciones: Prof. Andrés Arcia Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes Programación Digital I 1

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 uno o diversos tipos (arreglos, registros, cadenas de caracteres). Se utilizan cuando se requiere el procesamiento de múltiples datos que tienen características comunes. Ejemplos: Un conjunto de números enteros, un conjunto de estudiantes, un conjunto de temperaturas. Programación Digital I 2

Arreglo Definición Generalización del concepto de variable. Variable: Puede tener como máximo 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 subíndices (nùmero entero). Tipos de arreglos: Los arreglos se clasifican segú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 mas subíndices Programación Digital I 3

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 2 5 1 23 Programación Digital I 4

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 tamaño. Cada localidad (o grupo de localidades) almacena un elemento del vector. Nombre del vector arreglo_notas 12 15 12 18 11 14 Programación Digital I 5

Vector (Arreglo Unidimensional) Cada elemento del vector es accedido mediante el nombre del vector y un subíndice que representa la posición numérica (entero no negativo) de dicho elemento dentro del vector. arreglo_notas 12 15 Nombre del vector 12 18 0 1 2 3 4 5 6 11 4 14 subíndices Programación Digital I 6

Vector: Representación Gráfica deudas_mes Nombre del vector 20200 12030 45000 21300 15600 30222 21333 43020 21000 43222 21350 53929 0 1 2 11 subíndices Vector de 12 elementos cuyo nombre es deudas_mes Programación Digital I 7

Vector: Representación Gráfica 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. Programación Digital I 8

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 que cero (0) Ejemplos: entero A[12] carácter cdn[8] real b[100] Vector A de 12 números enteros Vector cdn de 8 caracteres Vector b de 100 números reales Programación Digital I 9

Declaración de un Vector: Notación en C Ejemplos: tipo_dato nombre_vector[número_elementos]; int A[12]; char cdn[8]; float b[100]; // Vector A de 12 números enteros // Vector cdn de 8 caracteres // 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 10

Declaración de un Vector: Ejemplos Notacion Algoritmica TAM: 10 MAXCAR: 24 NHORAS: 24 NFIL: 2 Entero v[tam] Caracter palabra[maxcar] Real temp[nhoras] Entero m[nfil] Notacion en C #define TAM 10 #define MAXCAR 80 #define NHORAS 24 #define NFIL 2 int v[tam]; char palabra[maxcar]; double temp[nhoras]; int m[nfil]; Programación Digital I 11

Acceso a los Elementos de un Vector nombre_vector[subíndice] El valor del subíndice o posición numérica de un elemento 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 los casos, el valor del subíndice debe ser un entero mayor o igual a cero. El valor del subíndice puede variar de 0 a n-1, donde n es el número de elementos del vector. En general, para tener acceso al i-ésimo elemento del vector se escribe nombre_vector[i-1]. Programación Digital I 12

Acceso a los Elementos de un Vector altura_personas 1.39 1.57 1.56 2.02 1.89 1.66 0 1 2 3 4 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 Programación Digital I 13

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 una variable cualquiera. Programación Digital I 14

Inicialización de un Vector: Ejemplo 1 Inicializar 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índice int vector[n], i; for (i = 0; i < N; i++) vector[i] = 0; // Inicialización de cada // elemento del vector en 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 99 Programación Digital I 15

Inicialización 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; // 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 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 Programación Digital I 16

Inicialización de un Vector: Ejemplo 3 Inicializar mediante lectura Inicializar los elementos de un vector de 30 elementos de tipo carácter con valores introducidos por el usuario char frase[30]; int indice; char car; // Declaración del vector // Declaración del subíndice 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 Programación Digital I 17

Inicialización 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; Programación Digital I 18

Inicialización de un Vector en la Declaración 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[1] = 0.50 n[2] = 0.75 n[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 19

Inicialización de un Vector en la Declaración Todos los elementos del vector no tienen asignado valores iniciales: int a[8] = {1, 2, 3}; a[0] = 1 a[1] = 2 a[2] = 3 a[3] = 0 a[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.30 n[3] = 0.00 n[4] = 0.00 char cadena[11]= Una Cadena ; Programación Digital I 20

Inicialización de un Vector en la Declaració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 21

Vectores: Ejemplo 1 Inicializar los elementos de un vector s con los números pares 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 22

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 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_función Programación Digital I 23

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 24

Vectores: Ejemplo 3 Calcular la media de n números y después calcular la desviació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 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 } Programación Digital I 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; } Programación Digital I 26

Vectores: Ejemplo 4 Ordenamiento de una lista de n números 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; } } Programación Digital I 27

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 1 0 2 4 2 4 5 0 1 0 3 2 0 4 5 2 1 0 4 2 0 4 5 2 1 1 3 4 0 2 5 4 1 1 4 2 0 1 5 4 2 2 3 5 0 1 4 5 2 2 4 4 0 1 2 5 4 3 4 5 0 1 2 4 5 Programación 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 través de un subíndice único. El rango del subíndice varía de 0 a n-1, siendo n el número de elementos del vector. Un vector recibe un nombre, independientemente del número 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 posición dentro del vector entre corchetes: nombre_vector [subíndice]. Programación Digital I 29

Ejercicios Escribir una declaración 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; Programación Digital I 30

Ejercicios Determinar el valor final de la variable valor después de la ejecució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 31

Ejercicios Determinar el valor final del vector numeros después de la ejecució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 32

Ejercicios Escribir un programa en C que lea una línea de texto, la almacene en 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 supone que no excederá de 80 caracteres. Escribir un programa en C que genere un vector con los valores que resultan de la ecuación: y = 2e -0.1t sen(0.5t) donde t varía entre 0 y 60. Permitir que el incremento de t sea introducido como parámetro de entrada. Escribir un programa en C que reciba como entrada un número entero construya un vector con los 10 primeros múltiplos de dicho número. Programación Digital I 33

Ejercicios Escribir un programa en C que lea una lista de números reales, los almacene en un vector y calcule e imprima la suma, el valor máximo, el valor mínimo y el valor medio de todos ellos. El tamaño de la lista de números se conocerá de antemano, y en ningún caso excederá de 100. Programación Digital I 34