14
UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN GDAyP pág. 1 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, que permite almacenar en la memoria principal del computador un conjunto finito de elementos que tienen el mismo tipo de dato. Para hacer referencia a cualquiera de las celdas del arreglo es necesario el nombre del arreglo y el valor de uno de los índices asignados al arreglo, esto permite tener acceso aleatorio. Declaración Un arreglo se declara de la siguiente manera: Pseudocódigo C++ Arreglo <identificador> de <tipo de dato> [Li .. Ls]; <tipo de dato> <identificador>[tamaño]; En pseudocódigo Li y Ls representan los límites superior e inferior respectivamente. En C++ sólo se indica el tamaño del arreglo, ya que el límite inferior siempre es cero (0) y el límite superior es el tamaño menos uno (tamaño - 1). Operaciones Al igual que en pseudocódigo, C++ permite realizar la operación constructora y la selectora. En el siguiente ejemplo se puede ver cómo se aplican estas operaciones: Pseudocódigo C++ //Se declara un arreglo de enteros // y se aplica la operación constructora Arreglo a de Entero[1..4] = {10, 15, 20, 25}; //Se cambia el valor de la segunda posición //utilizando la operación selectora a[2] = 14; //Se muestran algunos valores utilizando //la operación selectora Escribir(a[2]); Escribir(a[4]); //Se declara un arreglo de enteros // y se aplica la operación constructora int a[4] = { 10, 15, 20, 25 }; // Se cambia el valor de la segunda posición //utilizando la operación selectora a[1] = 14; //Se muestran algunos valores utilizando //la operación selectora cout << a[1] << endl; cout << a[3] << endl; Recorrido secuencial Se utiliza cuando se necesita hacer una operación sobre todos los elementos del arreglo, para ello se utiliza una estructura de control iterativa (por lo general se utiliza un Para). Una de las operaciones que se

Laboratorio 5 Tema 7. Tipos de Datos Estructurados ...€¦ · Utilizando el registro y las variables declaradas en ejemplo anterior, se pueden aplicar las siguientes ... que residen

  • Upload
    lamhanh

  • View
    224

  • Download
    0

Embed Size (px)

Citation preview

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN

GDAyP pág. 1

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, que permite almacenar en la memoria principal del computador un conjunto finito de elementos que tienen el mismo tipo de dato.

Para hacer referencia a cualquiera de las celdas del arreglo es necesario el nombre del arreglo y el valor de uno de los índices asignados al arreglo, esto permite tener acceso aleatorio.

Declaración

Un arreglo se declara de la siguiente manera:

Pseudocódigo C++

Arreglo <identificador> de <tipo de dato> [Li .. Ls]; <tipo de dato> <identificador>[tamaño];

En pseudocódigo Li y Ls representan los límites superior e inferior respectivamente. En C++ sólo se indica el tamaño del arreglo, ya que el límite inferior siempre es cero (0) y el límite superior es el tamaño menos uno (tamaño - 1).

Operaciones

Al igual que en pseudocódigo, C++ permite realizar la operación constructora y la selectora. En el siguiente ejemplo se puede ver cómo se aplican estas operaciones:

Pseudocódigo C++

//Se declara un arreglo de enteros

// y se aplica la operación constructora

Arreglo a de Entero[1..4] = {10, 15, 20, 25};

//Se cambia el valor de la segunda posición

//utilizando la operación selectora

a[2] = 14;

//Se muestran algunos valores utilizando

//la operación selectora

Escribir(a[2]);

Escribir(a[4]);

//Se declara un arreglo de enteros

// y se aplica la operación constructora

int a[4] = { 10, 15, 20, 25 };

// Se cambia el valor de la segunda posición

//utilizando la operación selectora

a[1] = 14;

//Se muestran algunos valores utilizando

//la operación selectora

cout << a[1] << endl;

cout << a[3] << endl;

Recorrido secuencial

Se utiliza cuando se necesita hacer una operación sobre todos los elementos del arreglo, para ello se utiliza una estructura de control iterativa (por lo general se utiliza un Para). Una de las operaciones que se

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN

GDAyP pág. 2

puede hacer al recorrer secuencialmente es leer los valores que se quieren almacenar en el arreglo. Esto se puede hacer de la siguiente manera:

Pseudocódigo C++

//Se declara el arreglo

Arreglo a de Entero[1..10];

//Se recorre para leer los valores

Para i=1 hasta 10 hacer

Escribir(“Introduzca el valor ”+i+“:”);

Leer(a[i]);

FinPara

//Se declara el arreglo

int a[10];

//Se recorre para leer los valores

for(int i=0; i < 10; i++){

cout << “Introduzca el valor ”<<i<<“:”;

cin >> a[i];

}

PARTE 2. Arreglos Bidimensionales o Matrices

Una matriz es un arreglo bidimensional. Para localizar o almacenar un valor en una matriz se deben especificar dos subíndices, uno para la fila y otro para la columna. Los arreglos pueden ser n-dimensionales, por lo tanto cuando se agrega una nueva dimensión se debe localizar cada posición utilizando un subíndice adicional.

Declaración

Una matriz se declara de la siguiente manera:

Pseudocódigo C++

Arreglo <identificador> de <tipo de dato> [Lifil..Lsfil ,Licol..Lscol]; <tipo de dato> <identificador>[n][m];

En pseudocódigo Li y Ls representan los límites superior e inferior, para las filas y para las columnas. En C++ sólo se indica la cantidad de filas y columnas, ya que el límite inferior para filas y columnas siempre es cero (0) y el límite superior es el cantidad menos uno (n-1 y m-1).

Operaciones

En el siguiente ejemplo se puede ver cómo se pueden inicializar y seleccionar los elementos en una matriz:

Pseudocódigo C++

//Se declara una matriz m de enteros

Arreglo m de Entero[1..2 , 1..3];

//Se inicializa la primera fila

m[1,1] = 0; m[1,2] = 1; m[1,2] = 3;

//Se inicializa la segunda fila

//Se declara una matriz m de enteros

int m[2][3];

//Se inicializa la primera fila

m[1][1] = 0; m[1][2] = 1; m[1][2] = 3;

//Se inicializa la segunda fila

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN

GDAyP pág. 3

m[2,1] = 4; m[2,2] = 2; m[2,2] = 8;

//Se cambia el valor de la fila 2 columna 1

m[2,1] = 3;

//Se toma un valor de la matriz y se asigna a

una variable

Entero a;

a = m[1,3];

m[2][1] = 4; m[2][2] = 2; m[2][2] = 8;

//Se cambia el valor de la fila 2 columna 1

m[2][1] = 3;

//Se toma un valor de la matriz y se asigna a

una variable

int a;

a = m[1][3];

Recorrido secuencial

Se utiliza cuando se necesita hacer una operación sobre todos los elementos de la matriz, para ello se utilizan dos estructuras iterativas anidadas (por lo general se utilizan dos Para). Una de las operaciones que se puede hacer al realizar un recorrido secuencial es leer los valores de la matriz. Esto se puede hacer de la siguiente manera:

Pseudocódigo

//Se declara la matriz de 10 filas y 5 columnas

Arreglo mat de Entero[1..10,1..5];

//Un PARA que recorre las 10 filas

Para i=1 hasta 10 hacer

//Un PARA que recorre las 5 columnas

Para j=1 hasta 5 hacer

Escribir(“Introduzca el valor ” + i + “,” + j + “:”);

Leer(mat[i,j]);

FinPara

FinPara

C++

//Se declara la matriz de 10 filas y 5 columnas

int mat[10][5];

//Un FOR que recorre las 10 filas

for(i=1; i<10; i++)

{ //Un FOR que recorre las 5 columnas

for(j=1; j<10; j++)

{

cout << “Introduzca el valor ” << i << “,” << j << “:”;

cin >> mat[i][j];

}

}

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN

GDAyP pág. 4

Pase de parámetros

Para pasar un arreglo como parámetro a una acción o función se puede hacer de la siguiente manera:

C++

//AL DEFINIR LA ACCIÓN O FUNCIÓN:

void proc(int arr[], int n){

//arr es el arreglo y n es el tamaño

//Cuerpo de la acción

}

//AL INVOCAR A LA ACCIÓN:

//se debe tener el arreglo declarado

int a[3];

//se invoca a la acción

proc(a,3);

Como se ve en el ejemplo anterior, los arreglos unidimensionales se pueden pasar como parámetro a una acción pasando como parámetro su tamaño. Sin embargo, con las herramientas vistas hasta el momento, al utilizar matrices se debe indicar la cantidad de columnas que posee la matriz. Por ejemplo:

C++

//AL DEFINIR LA ACCIÓN O FUNCIÓN:

void proc(int matriz[][4], int n){

//Cuerpo de la acción

}

//AL INVOCAR A LA ACCIÓN, se debe tener el arreglo declarado

int mat[3][4];

//se invoca a la acción

proc(mat,3);

Definición de tipos de dato

C++ permite la definición de nuevos tipos de datos con la palabra reservada typedef. Esto es útil cuando se quieren declarar varios arreglos o matrices del mismo tamaño. Por ejemplo:

C++

//Se declara el tipo de dato “numeros”

typedef int numeros[3];

//ahora se puede utilizar “numeros” como un tipo de dato y declarar variables

numeros a,b;

//se utilizan a y b como arreglos de enteros de 3 posiciones

a[0] = 3; a[1] = 5; a[2] = -4;

b[0] = -1; b[1] = a[2]; b[2] = 7;

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN

GDAyP pág. 5

PARTE 3. Registros

Un registro es una estructura de datos formado por un conjunto de elementos llamados campos, no necesariamente del mismo tipo y que permiten almacenar una serie de datos relacionados entre sí bajo un nombre común.

Declaración

Un registro se declara de la siguiente manera:

Pseudocódigo C++

Tipo Registro <identificador> =

<Tipo de dato>1 <Identificador>1;

<Tipo de dato>2 <Identificador>2;

...

<Tipo de dato>N <Identificador>N;

Fregistro;

struct <identificador> {

<tipo de dato>1 <Identificador>1;

<tipo de dato>2 <Identificador>2;

...

<tipo de dato>N <Identificador>N;

} ;

En el siguiente ejemplo se declara un registro y luego variables de ese tipo de registro:

Pseudocódigo C++

//Se declara un tipo registro

Tipo Registro Producto =

String nombre;

Entero cantidad;

Real precio;

Real peso;

Fregistro;

//Se declaran las variables de tipo producto

Producto prod1, prod2;

//Se declara un tipo registro

struct producto {

string nombre;

int cantidad;

float precio;

float peso;

};

//Se declaran las variables de tipo

producto

producto prod1, prod2;

Operaciones

A los registros se le pueden aplicar varias operaciones, como aplicar la operación constructora para inicializarlos o la operación selectora para cambiar los valores de los campos.

Utilizando el registro y las variables declaradas en ejemplo anterior, se pueden aplicar las siguientes operaciones:

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN

GDAyP pág. 6

Pseudocódigo y C++

//Se inicializa prod1 utilizando la operación constructora

prod1 = {“Cámara digital”, 5, 800.0, 0.5};

//Se inicializa prod2 utilizando la operación selectora para cada campo

prod2.nombre = “Impresora inalámbrica”;

prod2.cantidad = 2;

prod2.precio = 580.0;

prod2.peso = 7.0;

//Se incrementa el campo cantidad de prod1

prod1.cantidad = prod1.cantidad + 1;

Pase de parámetros

Para pasar un registro como parámetro a una acción o función se puede hacer de la siguiente manera:

C++

//AL DEFINIR LA ACCIÓN O FUNCIÓN:

void proc(producto p){

//p es el registro de tipo producto previamente declarado

//Cuerpo de la acción

}

//AL INVOCAR A LA ACCIÓN:

//se debe tener el arreglo declarado

producto p3;

//se invoca a la acción

proc(p3);

PARTE 4. Archivos

Un archivo es una secuencia de elementos del mismo tipo, que residen generalmente en memoria auxiliar. Los archivos son utilizados cuando se desea que los datos puedan recuperarse aún después de haber apagado la máquina y también cuando se manejan grandes volúmenes de información.

Declaración

Antes de empezar a utilizar un archivo se debe declarar una variable que haga referencia al archivo con el que se va a trabajar. A continuación se muestra como se puede hacer:

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN

GDAyP pág. 7

Pseudocódigo C++

//Declaración de dos archivos

Archivo archivoEntrada, archivoSalida;

//Inclusión de bibliotecas

#include <fstream>

using namespace std;

. . .

//Declaración de dos archivos

fstream archivoEntrada, archivoSalida;

Operaciones

Al trabajar con archivos secuenciales se pueden realizar diversas operaciones tales como:

1. Abrir el archivo: se debe hacer antes de hacer otras operaciones en le archivo.

2. Cerrar el archivo: se debe hacer cuando se termina de utilizar el archivo.

3. Verificar el fin del archivo (FDA o EOF).

4. Leer del archivo.

5. Escribir en el archivo.

A continuación se muestran ejemplos de estas operaciones utilizando los archivos declarados anteriormente.

Ejemplo de abrir archivos:

Pseudocódigo C++

//Abrir archivo de texto para lectura

AbrirArchivo(archivoEntrada,

“prueba1.txt”, Lectura y Texto);

//Abrir archivo de texto para escritura

AbrirArchivo(archivoSalida,

“prueba2.txt”, Escritura y Texto);

//Abrir archivo de texto para lectura

archivoEntrada.open(“prueba1.txt”, ios::in);

//Abrir archivo de texto para escritura

archivoSalida.open(“prueba2.txt”, ios::out);

Ejemplo de lectura de un archivo caracter por caracter (asumiendo que el archivo está abierto y es de lectura):

Pseudocódigo C++

//Se declara un caracter

Caracter c;

//Mientras no sea el fin del archivo

Mientras NO FDA(archivoEntrada)

//Se declara un caracter

char c;

//Mientras no sea el fin del archivo

while(!archivoEntrada .eof()){

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN

GDAyP pág. 8

//se lee una línea y se guarda en c

LeerArchivo(archivoEntrada, c);

//se muestra el caracter leído

Escribir(c);

Fmientras

//Se cierra el archivo

CerrarArchivo(archivoEntrada);

//se lee una línea y se guarda en c

archivoEntrada >> c;

//se muestra el caracter leído

cout << c;

}

//Se cierra el archivo

archivoEntrada.close();

Ejemplo de escritura en un archivo (asumiendo que el archivo está abierto y es de escritura):

Pseudocódigo C++

//Se declara un String y se inicializa

String cad;

cad = “segunda línea de escritura”;

//Se escribe la primera línea

EscribirArchivo(archivoSalida,“primera

escritura”);

//Se escribe la segunda línea

EscribirArchivo(archivoSalida, cad);

//Se cierra el archivo

CerrarArchivo(archivoSalida);

//Se declara un string y se inicializa

string cad;

cad = “segunda linea de escritura”;

//Se escribe la primera línea

archivoSalida << “primera escritura” << endl;

//Se escribe la segunda línea

archivoSalida << cad << endl;

//Se cierra el archivo

archivoSalida.close();

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN

GDAyP pág. 9

1

5 2

9 6 3

13 10 7 4

14 11 8

15 12

16

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

EJERCICIOS A PROGRAMAR PARA EL LABORATORIO 5

En este laboratorio debes desarrollar programas capaces usar acciones, funciones y pase de parámetros y tipos de datos estructurados (arreglos, registros y archivos), utilizando lenguaje C++ y creando programas que compilen y corran en el entorno Linux.

EJERCICIOS: todos deben agregarse en el mismo archivo .cpp, el cual debe compilar

NOTA: en todos los ejercicios debe solicitarse los valores de entrada al usuario, leerlos, realizar las validaciones necesarias en los datos de entrada y mostrar resultados del procedimiento. Todos deben agregarse en el mismo archivo .cpp

1. Inicialice un arreglo A con n=12 números enteros suministrados por el usuario con valores

entre 1 y 10.

1.1. Escriba un algoritmo que guarde en un arreglo B la secuencia de sumas parciales de los factoriales (función fact) de los valores de A.

B = ( fact( S[1] ), fact( S[1]+S[2] ), fact( S[1]+S[2]+S[3] ), fact( S[1]+S[2]+S[3] +S[4] ), ... )

1.2. Calcule y muestre la media de los valores del arreglo B.

1.3. Muestre el mayor valor y el menor valor del arreglo B, indicando también la posición en donde se encuentra.

1.4. Muestre los divisores de cada valor guardado en el arreglo A.

2. Dada una matriz de dimensión NxN, cuyos elementos son números enteros, construya un programa que imprima los valores de las diagonales secundarias de la matriz según la distribución en forma de rombo y espacios que observa en el siguiente ejemplo:

Entrada Salida del programa

Los valores de la matriz Entrada deben ser llenados mediante un ciclo.

3. Dado un arreglo A de enteros de N posiciones, construya un algoritmo para crear arreglos de apuntadores a las posiciones de A. Se desea generar el arreglo apuntador para cada uno de los siguientes casos:

3.1. Orden descendente utilizando el Método de Selección.

3.2. Orden ascendente utilizando el Método de Burbuja.

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN

GDAyP pág. 10

4. Cree un archivo de texto, llamado datosEj4.txt y escriba en él “ a los últimos ”, guarde y cierre el archivo.

Utilice las operaciones de manipulación de archivos de C++ para agregar al inicio de

datosEj4.txt la expresión “Ya nos acercamos” y agregarle al final la expresión “temas de la

materia”. Debe modificar el contenido del archivo sin borrar el contenido ya existente.

5. Dada un archivo llamado gente.bin que contiene: nombre, cédula, sexo y edad de un grupo de por lo menos 10 personas, se desea generar otro archivo llamado menores.bin que

contenga sólo la información de las personas menores en edad que la primera persona del archivo. La cédula de identidad no deben repetirse en el archivo gente.bin, ya que es un

dato de identificación único a cada persona.

La estructura de datos que almacena la información de cada persona es la siguiente:

Tipo Registro Persona =

String Nombre;

Entero Cédula;

Entero Edad;

Carácter Sexo; // sexo ‘M’ ó ‘F’, correspondiente a masculino y femenino

Fregistro;

5.1. Mostrar del archivo gente.bin todas las personas que están en un rango de edad

suministrado por el usuario.

5.2. Ordenar el archivo gente.bin ascendentemente por número de cédula. Puede utilizar

estructuras auxiliares como un arreglo de registros.

5.3. Indican cuántas mujeres y cuántos hombres hay en el archivo menores.bin, así como el porcentaje que representan cada uno del total de personas en el archivo.

5.4. Solicitar un número de cédula al usuario e indicar si la persona se encuentra en el archivo menores.bin. Si se encuentra, mostrar su nombre, cédula, edad y sexo; de lo contrario indicar que no está incluida en el archivo de menores.

ARCHIVOS DE DATOS A UTILIZAR:

Para los ejercicios 4 y 5 el estudiante debe crear los archivos de texto con los datos de entrada, a fin de realizar su procesamiento y obtener los resultados solicitados en cada ejercicio. Los nombres a utilizar para los archivos será: datosEj4.txt y gente.bin

Para crear cada archivo de entrada puede utilizar un editor de texto como el Bloc de notas o el WordPad, también puede usar un editor de código como el Dev C++, o se puede crear a través de un programa que inicialice o llene almacene los datos de entrada en un archivo con extensión.txt

Los datos en cada línea del archivo deben tener un separador, el cual puede ser la coma o el espacio en blanco.

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN

GDAyP pág. 11

Ejemplo de la estructura y datos del archivo datosEj4.txt

// este texto ya estaría guardado en el archivo, no debe eliminarse al realizar la actualización

a los últimos

Ejemplo de la estructura y datos del archivo gente.bin

// estos datos reflejan la estructura para los datos:

Nombre Cédula Edad Sexo

Carlos Castro 920000 8 M

Betty Díaz 850000 16 F

Ana Lara 1900000 5 F

Víctor Salazar 1100000 75 M

… otras filas, al menos los datos de 10 personas

RESTRICCIONES

El laboratorio debe ser desarrollado en C++, bajo el sistema operativo Ubuntu. Sugerimos la utilización de geany como ambiente de desarrollo en Linux y en Windows sugerimos el uso de Dev C++.

Se debe usar lectura y escritura estándar. Se permite usar tipos de datos básicos,

operaciones aritméticas, estructuras de control condicional, estructuras iterativas o ciclos, procedimientos (acciones, funciones y pase de parámetros), además de tipos de datos estructurados. Se permite el uso de elementos de la Librería Estándar de C++ (stdio, iostream, string, cmath, math, entre otras).

Cualquier copia será penalizada para todos los involucrados con la nota de CERO (0)

puntos, además del reporte respectivo al Profesor de la Sección y a la Coordinadora de la Materia.

Se debe seguir estrictamente el formato de entrada de datos y mensajes de salida cuando se indique en los enunciados, de lo contrario esto repercutirá en su nota.

IMPORTANTE:

Archivos de laboratorios o proyectos que no cumplan con este formato de nombre NO SERÁN CORREGIDOS. No se aceptarán envíos posteriores con el nombre corregido.

NO SE ACEPTARÁN ENVÍOS posteriores a la fecha y hora indicada, correos que no respeten el formato del asunto y del nombre de archivo, o archivos enviados a un correo-e que no sea el del preparador.

CONSULTAS:

En caso de dudas sobre el enunciado del laboratorios, consultar al Preparador II David Rojas, [email protected]. En el sitio web de la materia están publicados los horarios en que los Preparadores darán consultas de laboratorio en Sala de Micros.

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN

GDAyP pág. 12

MATERIAL DE APOYO

Tipos de datos en C++: http://www.zator.com/Cpp/E2_2_4.htm

C con Clase: tema Arreglos: http://c.conclase.net/curso/?cap=010

Tutorial Programación C++: Clase 8 Arreglos: https://www.youtube.com/watch?v=DNWa8pIpJC8

AprenderAProgramar.com: Tema 7. Registros (struct): http://www.aprendeaprogramar.com/mod/resource/view.php?id=495

C++ Language Tutorial: Data Structures. Juan Soulie. http://www.cplusplus.com/doc/tutorial/structures/

C++ Language Tutorial: Input / Output with files. Juan Soulie. http://www.cplusplus.com/doc/tutorial/files/

Trabajar con archivos: http://c.conclase.net/curso/?cap=039

Archivos: http://www.nebrija.es/~abustind/Informatica/MetodologiaI/Archivos.pdf

C++: Ejemplo de guardar texto en un archivo y leerlo: http://jsbsan.blogspot.com/2012/01/c-ejemplo-de-guardar-texto-en-un.html

Rafael Rivas y Gilberto Díaz. Universidad de Los Andes. Archivos, Archivos de texto: http://webdelprofesor.ula.ve/ingenieria/hyelitza/semestres/A2010/pr2/practicas/practica12-archivos-texto.pdf

Como programar archivos de texto en C++: https://www.youtube.com/watch?v=wqUaw0ahrGs

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN

GDAyP pág. 13

Cuestionario Laboratorio 5 Tema 7. Tipos de Datos Estructurados

1. Tanto los registros como los archivos son tipos de datos heterogéneos, esto debido a:

Permiten almacenar valores sólo de un tipo de datos en particular

Podemos almacenar una cantidad infinita de datos en ellos Permiten almacenar datos de diferentes tipos de datos Todas las anteriores Falso, ninguna de las anteriores

2. Si declaramos una matriz de N dimensiones, ¿Cuántos sub-índices son necesarios para acceder a una posición en la matriz?

N índices

N-1 índices 0 índices No se puede saber con anticipación

3. ¿El límite inferior para un arreglo en C++ siempre es cero (0)?

Verdadero

Falso

4. ¿Los arreglos son siempre pasados a las funciones por valor? Verdadero

Falso

5. ¿En qué lugar de la memoria se guardan generalmente los archivos? En la memoria principal En la memoria auxiliar En los periféricos

En todas las anteriores

ENTREGA DEL LABORATORIO

El laboratorio es de realización individual y la entrega del mismo será hasta viernes 10 de julio de 2015 a las 11:00 p.m.

Se debe enviar el código del proyecto únicamente al Preparador David Rojas, al correo [email protected]

El asunto del correo-e debe cumplir con el siguiente formato :

AyP-Lab5-Sección-Cédula

por ejemplo:

AyP-Lab5-C2-12345678

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE COMPUTACIÓN ALGORITMOS Y PROGRAMACIÓN

GDAyP pág. 14

Los archivos con la solución a enviar por correo-e (.cpp y cuestionario con sus respuestas) deben guardarse respetando el siguiente formato para su nombre, sin usar acentos o ñ:

Lab5-Seccion-NombreyApellido-Cedula.cpp

Lab5-Seccion-NombreyApellido-Cedula-cuestionario.pdf

por ejemplo, para María Angélica Peñaloza:

Lab5-C2-MariaPenaloza-12345678.cpp

Lab5-C2-MariaPenaloza-12345678-cuestionario.pdf

Enviar ambos archivos (.cpp con la solución y .pdf con el cuestionario y sus respuestas) como dos archivos anexos al correo. NO comprimirlos.

Los proyectos y laboratorios son actividades de investigación, por ello los alumnos deben iniciar el análisis, diseño y desarrollo de la solución con antelación a la fecha de entrega.

No es requisito que la materia o las herramientas a usar en la solución de los proyectos o laboratorios hayan sido vistas en clases. El alumno debe investigar en manuales y tutoriales de lenguaje C++.

GDAyP, 25 de Junio de 2015