TEMA 6: Tipos de datos estructurados
|
|
|
- María del Pilar Vega Sosa
- hace 9 años
- Vistas:
Transcripción
1 TEMA 6: Tipos de datos estructurados 6.1. Introducción Los tipos de datos estructurados o tipos compuestos son agrupaciones de otros tipos de datos. Los tipos de datos estructurados más comunes son: vectores y matrices (array), cadenas de caracteres (string), registros y uniones, aunque estos últimos no los vamos a ver en este curso Vectores y Matrices Vectores Sirve para agrupar variables de un mismo tipo con un único nombre. Supongamos que queremos declarar 10 variables de tipo entero (por ej. contadores). La única forma de hacerlo hasta ahora sería declararlos como variables individuales: int a0, a1, a2, a3, a4, a5, a6, a7, a8, a9; Y si quisiésemos inicializarlos a 0, habría que escribir 10 asignaciones. Otra forma de hacerlo es utilizando un vector (o array). Forma de declarar un vector: Tipo Nombre[NumElementos] Donde Tipo indica el tipo de datos de los elementos del vector. El tipo puede ser cualquier tipo de dato, sea simple o estructurado. NumElementos es el número de elementos que contiene el vector. Tiene que ser siempre una constante de tipo entero. Ejemplo: int a[10]; De esta forma tenemos los 10 enteros agrupados y se pueden tratar como una única variable. Fernando Barber y Ricardo Ferrís 72
2 Podemos acceder a cada uno de los elementos de un vector utilizando un índice. A esta operación se la denomina indexación. El índice indica la posición del elemento dentro del vector. En C++ El primer elemento es siempre el 0. Ejemplo: 1º entero del vector: a[0] 2º entero del vector: a[1] 3º entero del vector: a[2]... Último entero del vector: a[9] Hay que tener presente que cuando indexamos un vector, el resultado es un elemento del vector y tendrá por tanto el tipo de este elemento. En nuestro ejemplo, a[2] es de tipo int, y se podrá utilizar por tanto en cualquier lugar del programa donde se admita una variable de tipo int. La estructura más adecuada para manejar vectores es un bucle for, debido a que siempre conocemos el número de elementos del vector. Ejemplo: si tenemos un vector de 10 enteros que representan contadores, para inicializar todos los contadores a 0 sería: int a[10]; int i; for(i = 0; i < 10; i++) a[i] = 0; Para escribir en pantalla todos los elementos: for(i = 0; i < 10; i++) cout << a[i]; Aunque una variable de tipo vector se puede declarar directamente, lo más recomendable para evitar errores es declarar un tipo de dato nuevo mediante un typedef. Además, para facilitar la realización de bucles y evitar también cometer errores, el número de elementos del vector tiene que ser una constante declarada previamente. Fernando Barber y Ricardo Ferrís 73
3 Ejemplo: const int MAX = 10;... typedef int VectorInt[MAX];... VectorInt a;... for(i = 0; i < MAX; i++) a[i] = 0;... NO se pueden realizar asignaciones entre vectores. La siguiente asignación no se debe realizar NUNCA: VectorInt a, b;... a = b; // MAL Matrices Al igual que podemos crear vectores de cualquier tipo simple (enteros, reales,...), podemos crear vectores tomando como tipo base otro vector. De esta manera lo que tendremos será una matriz. Ejemplo: typedef int Vector[10]; typedef Vector Matriz[20]; Matriz a; a[19][3] = 0; Esta declaración de la matriz se puede abreviar de la siguiente manera: typedef int Matriz[20][10]; Matriz a; Fernando Barber y Ricardo Ferrís 74
4 O directamente declarar la variable (aunque es más recomendable declarar siempre un tipo): int a[20][10]; Se pueden declarar matrices no sólo de dos dimensiones, sino de cualquier número de dimensiones. La estructura más adecuada para manejar matrices serán bucles for anidados. Ejemplo: Visualizar una matriz. const int MAX_X, MAX_Y; typedef int Matriz[MAX_X][MAX_Y]; Matriz a; int i, j; for(i = 0; i < MAX_X; i++) for(j = 0; j < MAX_Y; j++) cout << a[i][j]; Paso de arrays como parámetros Los arrays, como cualquier otro tipo de datos, se pueden pasar como parámetros a una función. Sin embargo, en C++ no es posible pasarlos por valor. Siempre que se pasa un array a una función, se pasa por referencia, aunque no pongamos nada especial en el parámetro. Fernando Barber y Ricardo Ferrís 75
5 Ejemplo: Una función para leer un vector por teclado se haría de la siguiente manera: const int MAX = 10; typedef int Vector[MAX]; void LeerVector(Vector v) int i; for(i = 0; i < MAX; i++) cin >> v[i]; return; El vector v en este ejemplo está pasado por referencia, no es necesario escribir el &. Al pasarse exclusivamente por referencia, el paso de arrays como parámetros es más eficiente, puesto que no hay que copiar cada vez toda la matriz (que normalmente son bastante grandes). El inconveniente es que dentro de la función se puede modificar el array aunque no se quisiera. Para evitar esto, en C++ existen los parámetros constantes. Son parámetros que se declaran como constantes, de manera que no pueden ser modificados. Ejemplo: Mostrar un vector. void MostrarVector(const Vector v) int i; for(i = 0; i < MAX; i++) cout << v[i]; return; En la función anterior, si intentamos realizar una asignación del tipo: a[0] = 1; nos dará un error de compilación. Fernando Barber y Ricardo Ferrís 76
6 Por último, una función no debe devolver valores de tipo array, es decir, no hay que declarar funciones de tipo array. Si se quiere devolver un array, se debe hacer utilizando un parámetro como en la función LeerVector Representación en memoria de un array Los elementos de un vector se almacenan en memoria de forma contigua, es decir, uno al lado del otro. Ejemplo: int Vector[10]; //Si empieza en la dirección de memoria 10: Por lo tanto, para calcular la posición en memoria de un elemento se utiliza la fórmula: d = d o + Ind * sizeof (Elemento) donde d o es la dirección de memoria donde empieza el vector Ind es el índice del elemento del vector del que queremos saber su dirección, y Elemento es el tipo de elementos que contiene el vector sizeof devuelve el tamaño en bytes de una variable o tipo de dato. sizeof(char), por ejemplo devolverá 1. Puesto que una matriz no es más que un vector de vectores, el almacenamiento en memoria es también contiguo: Ejemplo: int Matriz[20][10]; //Si empieza en 10: Matriz[0] Matriz[1] Fernando Barber y Ricardo Ferrís 77
7 Matriz[19] Para calcular la posición del elemento Matriz[19][1], lo que hay que hacer es primero resolver el primer índice (Matriz[19]), que tiene como elementos vectores enteros de 10 elementos, y después el segundo tomando como dirección inicial la que resulta del calculo anterior. Así, si el vector empieza por ejemplo en la posición 10, la fórmula será: d = * sizeof(int [10]) + 1 * sizeof(int) = = Uso de arrays con número de elementos variable Como ya se ha comentado, el tamaño de un array ha de ser una constante, por lo tanto no es posible modificar el tamaño de un array después de haber compilado el programa. Para solucionar esto existen dos posibilidades: la primera es utilizar memoria dinámica, que veremos en el Tema 8, la segunda es declarar un array lo suficientemente grande y utilizar sólo una parte de este array. Por ejemplo, si vamos a realizar un programa para sumar vectores matemáticos y sabemos que en ningún caso vamos a tener vectores de un tamaño mayor de 10, podemos declarar todos los vectores de tamaño 10 y después utilizar sólo una parte del vector. Para ello necesitaremos utilizar también una variable entera extra para saber el tamaño actualmente utilizado por el vector, puesto que todas las operaciones se realizarán considerando el tamaño actual del vector y no el total. Los inconvenientes de este método son que estamos desperdiciando memoria y además que no siempre hay un límite conocido al tamaño del array. Ejemplos de suma de vectores con tamaño fijo: /************************************************/ /* Programa para la suma de vectores de enteros */ /************************************************/ #include<iostream.h> const int MAX = 3; // Tamanyo del vector typedef int Vector[MAX]; void MostrarVector(const Vector v); void LeerVector(Vector v); Fernando Barber y Ricardo Ferrís 78
8 void SumarVector(const Vector v1, const Vector v2, Vector vr); int main() Vector v1, v2, vr; cout << "Introduce el primer vector:" << endl; LeerVector(v1); cout << "Introduce el segundo vector:" << endl; LeerVector(v2); SumarVector(v1, v2, vr); cout << "El vector suma es:" << endl; MostrarVector(vr); return 0; void MostrarVector(const Vector v) int i; for(i = 0; i < MAX; i++) cout << v[i] << " "; cout << endl; return; void LeerVector(Vector v) int i; for(i = 0; i < MAX; i++) cin >> v[i]; return; void SumarVector(const Vector v1, const Vector v2, Vector vr) int i; for(i = 0; i < MAX; i++) vr[i] = v1[i] + v2[i]; return; Ejemplos de suma de vectores con tamaño fijo y con tamaño variable (hasta un máximo de 10): Fernando Barber y Ricardo Ferrís 79
9 /***************************************************************/ /* Programa para la suma de vectores de enteros de */ /* tamanyo variable */ /***************************************************************/ #include<iostream.h> const int MAX = 10; // Tamanyo maximo del vector typedef int Vector[MAX]; void MostrarVector(const Vector v, int tam); void LeerVector(Vector v, int tam); void SumarVector(const Vector v1, const Vector v2, Vector vr, int tam); int main() Vector v1, v2, vr; int tam; // Tamanyo real del vector cout << "Introduce tamanyo del vector (Max. " << MAX << "):"; cin >> tam; cout << "Introduce el primer vector:" << endl; LeerVector(v1, tam); cout << "Introduce el segundo vector:" << endl; LeerVector(v2, tam); SumarVector(v1, v2, vr, tam); cout << "El vector suma es:" << endl; MostrarVector(vr, tam); return 0; void MostrarVector(const Vector v, int tam) int i; for(i = 0; i < tam; i++) cout << v[i] << " "; cout << endl; return; void LeerVector(Vector v, int tam) int i; for(i = 0; i < tam; i++) cin >> v[i]; return; Fernando Barber y Ricardo Ferrís 80
10 void SumarVector(const Vector v1, const Vector v2, Vector vr, int tam) int i; for(i = 0; i < tam; i++) vr[i] = v1[i] + v2[i]; return; Búsqueda secuencial Cuando se utilizan arrays, surge muy frecuentemente la necesidad de buscar un elemento concreto dentro del array. Para ello existen dos algoritmos muy utilizados: la búsqueda secuencial y la búsqueda dicotómica o binaria. En este Tema sólo veremos el primero de ellos. La búsqueda secuencial es el tipo de búsqueda más sencilla y consiste en ir comparando el elemento buscado con todos los elementos del array, desde el primero hasta el último. /************************************************/ /* Busqueda secuencial en un vector */ /************************************************/ #include<iostream.h> const int MAX = 10; typedef int TipoBase; typedef TipoBase Vector[MAX]; bool BusquedaSec(const Vector v, TipoBase buscado, int & pos); Fernando Barber y Ricardo Ferrís 81
11 int main() int pos; TipoBase elem; Vector v = 1, 3, 2, 5, 8, 2, 1, 3, 9, 2; cout << "Introduce el elemento a buscar:"; cin >> elem; if (BusquedaSec(v,elem, pos)) cout << "Elemento encontrado en posición " << pos << endl; else cout << "Elemento no encontrado" << endl; return 0; /********************************************************** * Funcion BusquedaSec * * Parametros: * Nombre E/S Descripcion * * v E Vector donde buscar * buscado E Elemento a buscar * pos S Posicion del elemento * * Valor devuelto: * bool Cierto si encuentra el elemento, falso si no ***********************************************************/ bool BusquedaSec(const Vector v, TipoBase buscado, int & pos) pos = 0; while((pos < MAX - 1) && (v[pos]!= buscado)) pos++; return (v[pos] == buscado); Si el vector en el que buscamos está ordenado, la busqueda se puede hacer más eficiente parando en cuanto lleguemos a un elemento que sea mayor que el buscado. Para ello, la función anterior se debería modificar de la siguiente manera: Fernando Barber y Ricardo Ferrís 82
12 bool BusquedaSecOrd(const Vector v, TipoBase buscado, int & pos) pos = 0; while((pos < MAX - 1) && (v[pos] < buscado)) pos++; return (v[pos] == buscado); Además, si no encontramos el elemento, esta función nos devolverá en el parámetro pos la posición donde debería ir colocado Inserción ordenada En ocasiones interesa tener un vector con los elementos ordenados. Para ello, lo más sencillo es que cada vez que se introduzca un elemento en el vector, se introduzca ya en su posición correcta. Los pasos a seguir serán: 1. Encontrar la posición correcta del elemento utilizando una función de búsqueda (la función BusquedaSecOrd). 2. Hacer sitio al elemento moviendo todos los elementos posteriores una posición hacia arriba. 3. Insertar el elemento en su posición. /************************************************/ /* Inserción ordenada en un vector */ /************************************************/ #include<iostream.h> const int MAX = 10; typedef int TipoBase; typedef TipoBase Vector[MAX]; bool BusquedaSecOrd(const Vector v, TipoBase buscado, int & pos, int tam); bool InsercionOrd(Vector v, TipoBase elemento, int pos, int & tam); Fernando Barber y Ricardo Ferrís 83
13 int main() int pos; TipoBase elem; Vector v; int tam = 0; // Numero de elementos del vector bool encontrado, correcto; cout << "Elemento a introducir en el vector (-1 para acabar):"; cin >> elem; while(elem >= 0) encontrado = BusquedaSecOrd(v, elem, pos, tam); correcto = InsercionOrd(v, elem, pos, tam); if(!correcto) cout << "Vector lleno!!!" << endl; cout << "Elemento a introducir (-1 para acabar):"; cin >> elem; return 0; bool BusquedaSecOrd(const Vector v, TipoBase buscado, int & pos, int tam) pos = 0; /* Permitimos que pos tome el valor de la primera posicion * libre */ while((pos < tam) && (v[pos] < buscado)) pos++; return (v[pos] == buscado && pos < tam); Fernando Barber y Ricardo Ferrís 84
14 bool InsercionOrd(Vector v, TipoBase elemento, int pos, int & tam) int i; bool insertado = false; if(tam < MAX) for(i = tam; i > pos; i--) v[i] = v[i 1]; v[pos] = elemento; tam ++; insertado = true; return insertado; 6.3. Cadenas de caracteres Una cadena de caracteres es una secuencia de caracteres que es tratada como un único dato. Por ello la forma más lógica de implementar este tipo es con un vector de caracteres. typedef char cadena[10]; cadena str1, str2; El inconveniente de este vector es que, como ya hemos visto, la única forma de manejar un vector es elemento a elemento y esto hace que manejar la cadena de caracteres sea bastante incómodo. Por ello, casi todos los lenguajes definen un tipo nuevo para manejar cadenas de caracteres. Este tipo es básicamente un vector de caracteres que lleva asociado un entero y un conjunto de funciones que permiten realizar operaciones de cadenas. El entero representa la longitud actual de la cadena, al igual que sucedía con los vectores de tamaño variable que ya hemos visto. En C++ este tipo se denomina string, y está implementado como una clase de C++. Declaración: Fernando Barber y Ricardo Ferrís 85
15 La forma de declarar y asignar un string es: string s; string s2 = "Hola"; Asignación: Al contrario que con los vectores, si que se pueden realizar asignaciones sin ningún problema. s = s2; s = "Adios"; s2 = 'a'; Acceso a caracteres: Se puede acceder a las componentes del string mediante indexación, exactamente igual que en cualquier vector. s = "Hola"; s[1] = 'a'; cout << s; -> "Hala" Paso de string a funciones: También se pueden pasar a funciones como parámetros y su comportamiento es como el de cualquier tipo simple (por defecto se pasa por valor). También es posible devolverlo como resultado de una función. string saluda() string s = "Hola"; return s;... Fernando Barber y Ricardo Ferrís 86
16 cout << saluda(); -> "Hola" Comparaciones: Se pueden comparar mediante los operadores de comparación: string s = "Adios"; s < "Hola" -> true s < "Ae" -> true "aa" < s -> false Longitud: La longitud actual del string se puede consultar con length: s = "Hola"; cout << s.length(); -> 4 s = "Adios"; cout << s.length(); -> 5 Para realizar operaciones sobre el string carácter a carácter, habrá que utilizar bucles for hasta la longitud del string: // Función para cambiar todas las apariciones de un carácter string cambia(string s, char ch, char nuevo_ch) int i; for(i = 0; i < s.length(); i++) if (s[i] == ch) s[i] = nuevo_ch; return s; Fernando Barber y Ricardo Ferrís 87
17 Lectura por teclado: La introducción de datos de tipo string se puede realizar mediante el operador >>: cin >> s; Sin embargo tiene el problema de que sólo lee palabras, en cuanto llega a un separador (espacio, salto de línea, etc...) se acaba el string. Si por ejemplo, en la sentencia anterior introducimos "Hola Pepe", el valor que tomará s será "Hola". Para leer una línea entera se puede usar getline: getline(cin, s); Otras operaciones: Inserta palabra en la posición 3 de frase frase.insert(3, palabra); Concatena (une) palabra y "hola" y almacena el resultado en frase frase = palabra + "hola"; Concatena (añade al final) palabra a frase frase += palabra; Borra 7 caracteres de frase desde la posición 3 frase.erase(3,7); Sustituye (reemplaza) 6 caracteres de frase, empezando en la posición 1, por la cadena palabra frase.replace(1, 6, palabra); Busca palabra como una subcadena dentro de frase, devuelve la posición donde la encuentra. Si no lo encuentra devuelve un valor imposible. i = frase.find(palabra); Devuelve la subcadena formado por 3 caracteres desde la posición 5 de frase palabra = frase.substr(5,3); Fernando Barber y Ricardo Ferrís 88
18 Representación en memoria de cadenas de caracteres Para representar cadenas de caracteres en memoria existen dos métodos básicos: 1) Guardar la longitud actual de la cadena en una variable de tipo entero asociada al vector de caracteres: s = "HOLA"; H O L A... 4 Este método se utiliza por ejemplo en Pascal o C++. 2) Poner un carácter especial para indicar el final de la cadena: H O L A \0 Este método se utiliza por ejemplo en C, donde se emplea el carácter \0 como final, o también al leer por teclado, donde el final de la línea se indica mediante el carácter \n Estructuras Es una agrupación de elementos de tipos diferentes. También se denomina en ocasiones registro. Cada elemento se denomina campo, y se representa mediante un identificador propio. Cada campo puede ser de cualquier tipo. struct Nombre Tipo Nombre_campo1; Tipo Nombre_campo2;... La declaración de estructura ya define un tipo (al igual que pasaba con enum) por lo tanto no es necesario utilizar typedef. struct complejo float re; float im; Fernando Barber y Ricardo Ferrís 89
19 complejo c; c.re = 0; c.im = 0 struct Fecha int dia; int mes; int anyo; Fecha f = 1, 1, 2001; // (No funciona con componentes string) Las estructuras también se pueden anidar, es decir, uno de los campos de una estructura puede ser a su vez otra estructura: struct Alumno string nombre; Fecha nacimiento; int curso; Asignación de estructuras: Las estructuras sí se pueden asignar, al igual que los strings o cualquier tipo simple. Una asignación de estructuras es equivalente a una asignación de cada uno de los componentes. Complejo c1, c2; c1 = c2; Paso de parámetros: Las estructuras se pasan como parámetros exactamente igual que cualquier otro tipo simple. Las funciones también pueden devolver estructuras. Fernando Barber y Ricardo Ferrís 90
20 // Suma de complejos Complejo SumaC(Complejo c1, Complejo c2) Complejo cres; cres.re = c1.re + c2.re; cres.im = c1.im + c2.im; return cres; Vectores de estructuras: Uno de los usos más comunes y útiles de las estructuras es como elementos de un vector. (Ejemplo de guía de estilo) 6.5. Equivalencia de tipos Hay ciertos tipos de operaciones que sólo se pueden realizar entre tipos de datos que sean equivalentes. Estas son por ejemplo la asignación o el pase de parámetros. Por ello resulta necesario definir el criterio de equivalencia de tipos de datos que sigue un lenguaje determinado. Normalmente, los criterios de equivalencia utilizados son dos: equivalencia estructural y equivalencia por nombre. Equivalencia estructural: Dos tipos de datos son equivalentes cuando la estructura de la información que contienen es la misma. Ejemplo: typedef int Vector[10]; typedef int Vector2[10]; Vector v1; Vector v2; Vector2 v3; Fernando Barber y Ricardo Ferrís 91
21 int v4[10]; int v5[10]; // Todos equivalentes Este criterio de equivalencia es utilizado sobre todo en el lenguaje C. Equivalencia por nombre: Dos variables son equivalentes únicamente cuando se han definido utilizando el mismo nombre de tipo. Si en el ejemplo anterior utilizásemos equivalencia por nombre, únicamente serían equivalentes entre sí las variables v1 y v2. Este criterio de equivalencia se utiliza en lenguajes como Pascal y Ada. En C++ el criterio de equivalencia utilizado depende de los datos. Para vectores y matrices se utiliza criterio de equivalencia estructural. Sin embargo para estructuras se utiliza un criterio de equivalencia por nombre. Ejemplo: typedef int Vector[10]; typedef int Vector2[10]; struct Complejo float re; float im; ; struct Complejo2 float re; float im; ; void f1(vector2 x); void f2(complejo2 x); Fernando Barber y Ricardo Ferrís 92
22 int main() Vector v; Complejo c; f1(v); f2(c); // Correcto // Error return 0; Fernando Barber y Ricardo Ferrís 93
TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero
TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando
TEMA 8: Gestión dinámica de memoria
TEMA 8: Gestión dinámica de memoria 8.1.-Tipo de datos puntero Hasta ahora, los tipos de datos que hemos visto (a excepción de strings y ficheros) eran estructuras de datos estáticas, es decir, estructuras
Programación 1 Tema 3. Información, datos, operaciones y expresiones
Programación 1 Tema 3 Información, datos, operaciones y expresiones Índice Datos y tipos de datos Datos primitivos en C++ Expresiones e instrucción de asignación Datos y tipos de datos Problema información
Apuntadores en C y C++
Apuntadores en C y C++ Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Prof. Marcos A. Gil T. 8 de diciembre de 2004 1. Introducción Los apuntadores en C y C++ son una herramienta
Introducción a las sentencias de control
INSTRUCCIONES DE CONTROL CONTENIDOS 1. Introducción a las sentencias de control. 2. Instrucciones o sentencias condicionales: IF, IF-ELSE, SWITCH. 3. Instrucciones o sentencias repetitivas o iterativas:
FUNDAMENTOS DE INFORMÁTICA
FUNDAMENTOS DE INFORMÁTICA Tema 3 Estructuras de datos Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática.
Prof. Dr. Paul Bustamante
Prácticas de C++ Practica Nº 4 Fundamentos de Programación Informática II Prof. Dr. Paul Bustamante Practica Nº 4 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Números Perfectos....
TEMA 7. ARRAYS (LISTAS Y TABLAS).
TEMA 7. ARRAYS (LISTAS Y TABLAS). En capítulos anteriores se han descrito las características de los tipos de datos básicos o simples (carácter, entero y coma flotante). Asimismo, se ha aprendido a definir
Problemas de Recursividad
Problemas de Recursividad Problema 1. El factorial de un número entero n 0, denotado como n!, se define! como!!! i = 1 2 n cuando n > 0, y 0! = 1. Por ejemplo 6! = 1 2 3 4 5 6 = 720 Diseñad una método
Tema 1. Programación modular. Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas
Tema 1. Programación modular Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas 1.1. Objetivos Repasar brevemente mediante ejemplos los elementos principales del lenguaje
Tema 2: La clase string. Índice. Notas. Programación 2. Curso Notas. Definición Declaración Entrada / salida Métodos Operaciones
: string Programación 2 Curso 2013-2014 Índice 1 Cadenas de caracteres en C 2 Entrada / salida 3 entre vectores de caracteres y string 4 5 Cadenas de caracteres en C En C, las cadenas de caracteres tienen
EJEMPLOS DE EJERCICIOS RESUELTOS
EJEMPLOS DE EJERCICIOS RESUELTOS Veamos algunos ejemplos que utilicen los que ya sabemos de C++. Pero antes introduciremos, sin explicarlo en profundidad, dos elementos que nos permitirán que nuestros
TEMA 5: Subprogramas, programación modular
TEMA 5: Subprogramas, programación modular 5.1.-Definición de módulo. Programación modular La programación modular está basada en la técnica de diseño descendente, que como ya vimos consiste en dividir
Laboratorio 5 Tema 7. Tipos de Datos Estructurados: Arreglos, Registros y Archivos
Laboratorio 5 Tema 7. Tipos de Datos Estructurados: Arreglos, Registros y Archivos PARTE 1. Arreglos Unidimensionales o Vectores Un arreglo es una estructura de datos conformada por una sucesión de celdas,
UNIDAD I. ALGORITMOS
UNIDAD I. ALGORITMOS 1.1 Definición Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema específico. 1.2 Tipos Cualitativos: Son aquellos
APLICACIÓN DE ÁRBOLES BINARIOS
PRÁCTICA Nº 6: 2 sesiones (del 22 al 31 de Mayo de 2002) APLICACIÓN DE ÁRBOLES BINARIOS A LA COMPRESIÓN DE FICHEROS DE TEXTO MEDIANTE LA UTILIZACIÓN DE LOS CÓDIGOS DE HUFFMAN 0.- OBJETIVOS El objetivo
Estructura de datos y de la información Boletín de problemas - Tema 10
Estructura de datos y de la información Boletín de problemas - Tema 10 1. En el caso de que sea posible, dar un ejemplo de los siguientes puntos. Si no, explicar por qué no lo es. Considerar un valor genérico
Índice. Estructuras de datos en Memoria Principal. Vectores. Matrices. Cadenas de caracteres. Estructuras. Estructuras de datos en Memoria Externa
Índice Estructuras de datos en Memoria Principal Vectores Matrices Cadenas de caracteres Estructuras Estructuras de datos en Memoria Externa Ficheros Tema: Estructuras de Datos 2 Estructuras Una estructura
Introducción al lenguaje C
Introducción al lenguaje C Programación 2 Instituto de Computación, Facultad de Ingeniería, Universidad de la República, Uruguay 2 de marzo de 2016 Programación 2 Introducción al lenguaje C 2 de marzo
TEMA 8. ESTRUCTURAS Y UNIONES.
TEMA 8. ESTRUCTURAS Y UNIONES. Este capítulo examina estructuras, uniones, enumeraciones y s definidos por el usuario que permite a un programador crear nuevos s de datos. La capacidad para crear nuevos
Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas
Tema 9 Algoritmos sobre listas Programación 2015-2016 Programación - Tema 9: Algoritmos sobre listas 1 Tema 9. Algoritmos sobre listas Algoritmos sobre Arrays. Búsqueda. Inserción. Ordenación. Programación
Vectores y Matrices. Dept. Ciencias de la Computación e I.A. Universidad de Granada
TEMA Vectores y Matrices Dept. Ciencias de la Computación e I.A. Universidad de Granada 1 VECTORES Y MATRICES Motivación. Operaciones Básicas. Ejemplos Paso de vectores como parámetros. Matrices Ejemplos
INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS
CONTENIDOS 1. Introducción a las cadenas 2. Definición 3. Declaración de cadenas 4. Inicialización de cadenas 5. Escritura y Lectura de datos tipo cadena 6. Funciones de manipulación de cadenas 7. Arrays
Estructura de datos y de la información Boletín de problemas - Tema 2
Estructura de datos y de la información Boletín de problemas - Tema 2 1. Definir un tipo de datos diassemana capaz de contener cualquier día de la semana y las operaciones diasiguiente, diaanterior y escribedia.
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. TRUJILLO 1.- Resumen de Prog1 Comentarios es C++ Declaraciones de variables.
2. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS
2. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS 2.1 Tipos De Datos Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como b, un valor entero tal como
Cadenas de Caracteres
Cadenas de Caracteres Modificaciones: Andrés Arcia Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes Cadena de Caracteres
INDICE Capitulo 1. El Turbo C++ y el Lenguaje C Capitulo 2. Declaración e inicialización de variables Capitulo 3. Funciones de entrada y salida
INDICE Capitulo 1. El Turbo C++ y el Lenguaje C 1 Introducción 1 Introducción al turbo C++ 2 Instalación de la versión 3 del turbo C++ 4 Carga del editor turbo C++ para crear programas 6 Opciones: File,
Algoritmos y Programación I
Algoritmos y Programación I ARREGLOS Y ESTRUCTURAS EN C Arreglos Un arreglo o vector es un conjunto de datos del mismo tipo, almacenados de forma contigua (es decir uno al lado del otro) en memoria principal.
Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2
Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2 Contenidos: 1. Definición de clases 2. Implementación de los métodos 3. Constructores y destructores 4. Objetos
Elementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
Unidad IV Arreglos y estructuras. M.C. Juan Carlos Olivares Rojas
Unidad IV Arreglos y estructuras M.C. Juan Carlos Olivares Rojas 4.1 Concepto de arreglo Agenda 4.2 Manejo de cadenas 4.3 Concepto de estructuras 4.4 Concepto de unión 4.5 Empleo de apuntadores 4.1 Concepto
Introducción a MATLAB
Introducción a MATLAB Sistemas Conexionistas - Curso 07/08 MATLAB es un sistema interactivo basado en matrices para cálculos científicos y de ingeniería. Se pueden resolver problemas numéricos relativamente
Introduc)on to Programming (in C++) Ejemplos de tratamiento de secuencia de secuencias. Emma Rollón Departament of Computer Science
Introduc)on to Programming (in C++) Ejemplos de tratamiento de secuencia de secuencias Emma Rollón Departament of Computer Science Ejemplo 1: recorrido con recorrido Input: La entrada consiste en un número
Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom
Tema 05: Tablas hash M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Tablas hash o de dispersión Función
Tipos de Datos Estructurados
- Unidad 3 Tipos de Datos Estructurados 1 Tipos de Datos Compuestos en C 2 Arreglos (1) Un arreglo (array) una colección homogénea de datos simples ó compuestos, que se referencian con un nombre comú,
ALGORITMOS Y PROGRAMACIÓN I Unidad 3
ALGORITMOS Y PROGRAMACIÓN I Unidad 3 Tipos de Datos Estructurados Prof. Jaime Soto Sección (007) Material original de Prof. AURELY LEAL Introducción a las Estructuras de Datos Una estructura de datos es
DIAGRAMAS DE FLUJOS. Qué son Los Diagramas de Flujo y Para qué se Usan?
DIAGRAMAS DE FLUJOS Los diagramas de flujo representan la secuencia o los pasos lógicos para realizar una tarea mediante unos símbolos. Dentro de los símbolos se escriben los pasos a seguir. Un diagrama
Algoritmos y estructuras de datos
Algoritmos y estructuras de datos Estructuras, apuntadores y memoria dinámica Francisco Javier Zaragoza Martínez Universidad Autónoma Metropolitana Unidad Azcapotzalco Departamento de Sistemas 11 de mayo
INGENIERIA DE SISTEMAS 1 ESTRUCTURAS DE DATOS (Listas simples) INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS
INGENIERIA DE SISTEMAS 1 ESTRUCTURAS DE DATOS (Listas simples) 1. INTRODUCCIÓN INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS Las computadoras fueron diseñadas o ideadas como una herramienta mediante la cual
Estructuras y Uniones
1 Estructuras y Uniones Estructuras. Las estructuras ( struct ) son agrupaciones de una o más variables de tipos posiblemente diferentes, agrupadas bajo un mismo nombre. Esto permite un manejo más cómodo
El lenguaje C. 1. Estructuras. Principios de Programación. 1.1. Definicion de estructuras
Principios de Programación El lenguaje C 1. Estructuras Las estructuras son colecciones de variables relacionadas bajo un nombre. Las estructuras pueden contener variables de muchos tipos diferentes de
324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2
324 MR Versión 1 Prueba Integral 1/3 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA MODELO DE RESPUESTA ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Prueba Integral FECHA DE APLICACIÓN:
Programación 1 Tema 5. Instrucciones simples y estructuradas
Programación 1 Tema 5 Instrucciones simples y estructuradas Índice Instrucciones simples Instrucciones estructuradas 2 Instrucción ::= 3 Instrucciones.
INFORMATICA II PRIMER PARCIAL
Grupo 1 INFORMATICA II PRIMER PARCIAL Hacer un programa en C o C++ que realice lo siguiente: a. Almacenar en un archivo binario 100 juegos de valores compuestos por un valor entero, un número real y una
Tema 3 Constantes, Variables y Tipos
Tema 3 Constantes, Variables y Tipos Contenidos 1. Definiciones. 1.1 Variables y Constantes. 1.2 Identificadores. 2. Declaración de Variables en un Programa en C. 3. Tipos de Datos. 3.1 Clasificación.
Ficheros: texto y binarios
Ficheros: texto y binarios Fundamentos de Programación Fundamentos de Programación I Trabajar con ficheros texto No olvidar incluir la cabecera #include Clase para definición de un objeto fichero
La sintaxis básica para definir una clase es la que a continuación se muestra:
DEFINICIÓN DE CLASES Y OBJETOS EN C# Sintaxis de definición de clases La sintaxis básica para definir una clase es la que a continuación se muestra: class nombreclase miembros De este modo se definiría
El lenguaje C. if (a>3) { printf("hola"); // bloque printf("%d",a); // de getch(); //código } Partes de un programa en C.
El lenguaje C El lenguaje C es uno de los lenguajes de programación estructurada más utilizados en nuestros días. El principal componente estructural de C es la función. En C, las funciones son bloques
Programación. Test Autoevaluación Tema 6
Programación Test Autoevaluación Tema 6 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordóñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.
Fundamentos de Informática
Tema 8: 8: Estructuras datos. Fundamentos Informática 1º Ingeniería Industrial Escuela Superior Ingenieros Universidad Sevilla Ismael Alcalá Torrego José Ángel Acosta Rodríguez Fernando Dorado Navas Fabio
Prof. Dr. Paul Bustamante
Nombre: Carné: Examen C++ - Junio Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Examen Grupo B Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción.... 1 1.1 Ejercicio 1:
Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy. Febrero 2009
Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy Febrero 2009 Índice Elementos básicos Ejecución de un programa Estructuras de control Ciclos Ejercicios 2 Elementos Básicos
Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos
Tema 2 Memoria Dinámica 2.1 Datos estáticos y dinámicos Datos estáticos: su tamaño y forma es constante durante la ejecución de un programa y por tanto se determinan en tiempo de compilación. El ejemplo
Declaración de variables (integer, single, double, boolean, etc.) en Visual Basic. Dim. Ejemplos. (CU00309A)
aprenderaprogramar.com Declaración de variables (integer, single, double, boolean, etc.) en Visual Basic. Dim. Ejemplos. (CU00309A) Sección: Cursos Categoría: Curso Visual Basic Nivel I Fecha revisión:
REPASO ARRAYS MULTIDIMENSIONALES EN JAVA. DECLARACIÓN Y USO. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00905C)
APRENDERAPROGRAMAR.COM REPASO ARRAYS MULTIDIMENSIONALES EN JAVA. DECLARACIÓN Y USO. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00905C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I
media = ( temp0 + temp1 + temp2 + temp3 + temp temp23 ) / 24; printf( "\nla temperatura media es %f\n", media );
Arrays en el lenguaje C Introducción Una posible definición de array sería: Un conjunto de datos del mismo tipo, identificados por el mismo nombre, y que se pueden distinguir mediante un número de índice.
Complejidad de Algoritmos
Complejidad de Algoritmos Tema 5 Introducción Un algoritmo es una secuencia de instrucciones que resuelve un problema Puede tener diferentes implementaciones Para comparar las diferentes formas (algoritmos)
Programación I. Práctica parcial: el juego de los barquitos (ENTREGA OBLIGATORIA)
Programación I Práctica parcial: el juego de los barquitos (ENTREGA OBLIGATORIA) El objetivo de esta práctica es implementar una variedad del juego de los barquitos o hundir la flota. Como sabréis el juego
Clase adicional 2. Estructuras básicas de control. Temas
Clase adicional 2 Temas Estructuras de control Sentencia condicional Iteración Clases Definir una clase Crear una instancia de una clase Campos estáticos Problemas de la clase adicional Problema de diseño
Datos Elementales y formato de un programa en Java
Datos Elementales y formato de un programa en Java PROGRAMACION I Grado en Matematicas Informática Programación I - 2015/2016 Datos, variables y mi primer programa 1 Introducción a la programación o Programa:
Introducción general al Lenguaje C (2010/2011)
Luis Valencia Cabrera [email protected] (http://www.cs.us.es/~lvalencia) Ciencias de la Computacion e IA (http://www.cs.us.es/) Introducción general al Lenguaje C (2010/2011) Universidad de Sevilla Índice
Introducción a MATLAB
Introducción a MATLAB Sistemas Conexionistas - Curso 08/09 MATLAB es un sistema interactivo basado en matrices que se utiliza para cálculos científicos y de ingeniería. Puede resolver problemas numéricos
TEMA 4: Programación estructurada
TEMA 4: Programación estructurada 4.1.-Introducción. Teorema de la programación estructurada El principio fundamental de la programación estructurada es que en todo momento el programador pueda mantener
FUNDAMENTOS DE PROGRAMACIÓN C#
Pág. N. 1 FUNDAMENTOS DE PROGRAMACIÓN C# Familia: Editorial: Autor: ISBN: Físico Digital TIC Macro Ricardo Walter Marcelo Villalobos 978-612-304-234-9 978-612-304-381-0 N. de páginas: 296 Edición: 2. a
Escuela Politécnica Superior de Elche
EXAMEN DE SISTEMAS INFORMÁTICOS INDUSTRIALES ((SOLUCIÓN) (TEORÍA)jUJ jhshshs SEPTIEMBRE 2015 1. Indicar si las siguientes afirmaciones son verdaderas o falsas: (a) En C++, una clase derivada puede acceder
E/S POR CONSOLA DE C++ Parte I. Elementos Básicos Dr. Oldemar Rodríguez R.
E/S POR CONSOLA DE C++ Parte I. Elementos Básicos Dr. Oldemar Rodríguez R. Dado que C++ es un superconjunto de C, todos los elementos del lenguaje C están contenidos en el lenguaje C++. Esto implica que
DEFINICIONES BÁSICAS DE LAS ESTRUCTURAS DE DATOS
DEFINICIONES BÁSICAS DE LAS ESTRUCTURAS DE DATOS En programación, una estructura de datos es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulación Un dato
Programación estructurada (Introducción a lenguaje C)
Programación estructurada (Introducción a lenguaje C) M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 15-I Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada
GUIA PRACTICA PARA LA APLICACIÓN DE MS EXCEL TECNOLOGIA/ INFORMATICA
Fórmulas y funciones De la barra de menú seleccionmos la opción insertar y haciendo clic en la opción f x se desplegará el siguiente cuadro de diálogo a partir del cual escogeremos la función adecuada
Lenguajes de programación LPSI EUI UPM CADENAS DE CARACTERES
CADENAS DE CARACTERES Arrays unidimensionales de caracteres \0 es el carácter nulo Toda cadena debe acabar en \0 Lo que hay después de \0 en el array no se considera parte de la cadena Las cadenas constantes
Introducción a C++ y Code::Blocks
Introducción a C++ y Práctica Imperativo Clase 1 Luis Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 28 de mayo de 2010 Menu de esta Tarde Funcional Vs. Imperativo (Intérprete
