Академический Документы
Профессиональный Документы
Культура Документы
1 3
INTRODUCCIN
PROCEDIMIENTOS Y FUNCIONES
11
12
LISTA DE PARMETROS ACTUALES Y FORMALES ................................................................... 12 CORRESPONDENCIA DE PARMETROS ................................................................................ 13 PARMETROS POR VALOR Y POR DIRECCIN ....................................................................... 13 REGLAS SOBRE PARMETROS .......................................................................................... 13
21
SNTESIS
24
Elaboracin Gabriel F. Stancanelli Damin A. Asman Este material pertenece a la materia Programacin I, de la Carrera de Analista de Sistemas de Computacin del INSTITUTO DE TECNOLOGA ORT.
Todos los derechos reservados. No esta permitida la reproduccin total o parcial de este apunte, ni su tratamiento informtico, ni la transmisin de ninguna forma o por cualquier medio, ya sea electrnico, mecnico, por fotocopia, por registro u otros mtodos, sin el permiso previo de los titulares. 3ra edicin Junio de 2009.
Resolucin de problemas de mediana complejidad. Modularizacin. Uso de las estructuras aprendidas en el mdulo I de la materia. Definicin de Tipos de datos. Estructuras. Conceptos generales de archivos Procesamiento de archivos secuenciales
Objetivos
Acentuar los conocimientos sobre los diagramas de Nassi-Shneiderman. Realizar el anlisis de problemas de mediana complejidad. Utilizar rutinas y subrutinas. Diferenciar y utilizar procedimientos y funciones. Generar tipos de datos propios. Comprender la comunicacin entre la memoria de la computadora y los dispositivos de almacenamiento permanente. Leer y generar archivos secuenciales con informacin validada.
Usted debe tener presente que los contenidos presentados en el mdulo no ahondan profundamente en el tema, sino que pretenden ser un recurso motivador para que, a travs de la lectura del material, la bibliografa sugerida, y el desarrollo de las actividades propuestas alcance los objetivos planteados en el presente mdulo. Cada mdulo constituye una gua cuya finalidad es facilitar su aprendizaje.
Programacin I/Mdulo III 3
Introduccin
Hemos llegado al mdulo III de esta materia. A lo largo del material, fueron aprendiendo cmo encarar problemas, primero desde lo cotidiano, y luego desde el punto de vista computacional. De a poco, fuimos modificando un problema planteado y agregando herramientas, tanto de anlisis como de resolucin y generando los diagramas correspondientes para poder modelar la solucin. Los problemas planteados hasta ahora fueron cortos, con complejidad baja o media y su solucin se planteaba con un diagrama simple. Sin embargo, todos sabemos que las situaciones en la vida cotidiana como en la programacin, pueden complicarse. Para resolver este tipo de problemas explicaremos cmo modularizar un programa y generar problemas ms pequeos que, al resolver cada uno individualmente, estaremos llegando a la resolucin general del problema. Explicaremos adems cmo generar tipos de datos personalizados, haciendo uso de los ya existentes. Por ltimo, explicaremos brevemente cmo utilizar archivos, tanto para almacenar informacin o bien utilizarlos como datos de entrada de nuestro programa.
Modularizar
Definicin
Uno de los mtodos ms conocidos para resolver un problema es dividirlo en problemas ms pequeos, llamados subproblemas. De esta manera, en lugar de resolver una tarea compleja y tediosa, resolvemos otras ms sencillas y a partir de ellas llegamos a la solucin. Por ejemplo, podemos dividir una tarea llamada mudanza, en tareas ms pequeas como: 1. 2. 3. 4. Conseguir un departamento Firmar el contrato Conseguir una empresa de mudanza Realizar la mudanza.
De sta forma, me podra ocupar en resolver cada uno de estos pasos, realizando la mudanza al terminar con el ltimo de ellos. Esta tcnica se usa mucho en programacin ya que programar no es ms que resolver problemas, y se le suele llamar diseo descendente, metodologa del divide y vencers o programacin top-down1.
1 Top-Down: Esta metodologa se considera de las ms eficientes en la resolucin de problemas. La tarea de subdividir un problema en otros ms pequeos, permite al programador generar soluciones a problemas ms sencillos en lugar de uno complejo. Es posible repetir el paso de subdividir los nuevos problemas las veces que sea necesaria. El proceso de romper el problema en nuevos sub problemas y expresar cada paso en forma ms detallada se denomina refinamiento sucesivo.
Es evidente que si esta metodologa nos lleva a tratar con subproblemas, entonces tambin tengamos la necesidad de poder crear y trabajar con subprogramas para resolverlos. A estos subprogramas se les suele llamar mdulos, de ah viene el nombre de programacin modular. En C++, as como en otros lenguajes de programacin, es posible generar subrutinas. En las siguientes pginas vamos a aprender qu son, cmo se definen y cmo se utilizan.
Necesidad de uso
Cuando adoptamos la tcnica propuesta (identificar subproblemas dentro de un problema), encontramos que existen un conjunto de estos tems que estn incluidos en ms de un programa. Hasta podramos pensar que algunos estn en la mayora de los programas. Por ejemplo, realizar una funcin que, dada una fecha, nos indique si es vlida o no. Por lo tanto, si logramos identificar a estos procesos comunes, y desarrollamos los subprogramas, obtendremos una solucin que nos brinda algunas ventajas: La posibilidad de volver a utilizarlos cada vez que se necesite. Hacer pruebas para que funcione una sola vez y luego confiar en ella. Concentrarse en los subproblemas an no resueltos.
Todas estas ventajas que provienen de la posibilidad de usar nuevamente una solucin ya generada, nos dan como resultado un mejor aprovechamiento del tiempo de programacin. Tambin hemos podido observar en los ejemplos y la ejercitacin propuesta en las prcticas anteriores, que determinadas acciones se repiten ms de una vez en el mismo programa y a veces en ms de uno, por ejemplo: pedir un nmero y validarlo; calcular el importe a abonar a cada empleado de una empresa, etc. En los casos en que se repite el cdigo varias veces en el programa, si detectamos un error en la ejecucin (una vez desarrollado el mismo), corremos con la desventaja de tener que buscar en todo el cdigo las mltiples repeticiones y corregirlo en cada una de stas. A su vez, es conveniente dividir un programa en mdulos para una mayor facilidad de lectura del mismo. Lgicamente vern que esto es as a medida que sus propios programas crezcan en cantidad de lneas y complejidad. Entonces, para subsanar estos problemas es que debemos pensar en describir subprogramas que resuelvan las situaciones repetidas. Y por supuesto utilizarlos toda vez que resulte necesario.
Anlisis de casos
Para comenzar a tratar los conceptos de modularizacin, hemos elegido entre las situaciones cotidianas (aquellas conocidas por todos), una que consideramos til para no iniciar con ejemplos matemticos o de computacin que puede dificultar el aprendizaje de estos nuevos conceptos. Luego plantearemos varios casos matemticos, ya que pensar solamente una nica vez dichos problemas (en general de difcil solucin para la mayora de los programadores), har mucho ms fcil, y amena la tarea de programar.
Por ltimo trataremos problemas computacionales clsicos (para programadores principiantes), algunos de los cuales se trataron en los mdulos anteriores. Entonces comencemos con el desarrollo de situaciones cotidianas y as trataremos de comprender el mecanismo para particionar problemas en subproblemas.
Ejemplo 1
Seguramente conocemos de qu se trata cuando hablamos de construir una pared, ahora bien, indudablemente no todos sabemos cmo se realiza esta actividad. Por lo tanto si aguardamos un poco, vamos a aprender los rudimentos bsicos de la construccin. Enunciado del Problema Levantar una pared de ladrillos a la vista cuyas medidas son 20 metros de longitud x 5 metros de altura. Debe realizarse en el patio trasero de mi casa. Para poder realizarlo cuento con la cantidad necesaria de ladrillos de 20cm de largo x 7 cm de alto. Hiptesis El largo es lineal, es decir, un ladrillo al lado del otro sin hacer zigzag. La altura que utiliza la mezcla es de 3cm sobre cada ladrillo. Esto nos servir para calcular la altura de una hilera. Datos provistos Largo, alto, ubicacin, cantidad de ladrillos disponibles (nos especifican que tenemos suficientes), medidas del ladrillo que nos servirn para realizar el clculo de cuntos tendremos que utilizar. Vamos a suponer adems, que contamos con todos los materiales y herramientas de construccin que necesitamos: Materiales: ladrillos, cemento, cal, arena y agua. Herramientas: baldes, palas, cucharas, hilo, nivel, etc.
Si dividiramos el problema en tareas: Cules son las tareas que hay que resolver para levantar la pared?
Para responder adecuadamente a esta pregunta primero deberamos conocer cmo es el proceso de construccin y luego qu se debe hacer para construir la pared pedida. Como podemos imaginar para la construccin, adems de conocer las tcnicas adecuadas que nos permitan concluir la obra cuanto menos decorosamente, debemos saber que necesitamos materiales, esto es: cal, arena, cemento y agua, mezclados en determinadas proporciones, y hasta una consistencia determinada. Acabamos de definir la primera tarea a tener en cuenta para la construccin preparar mezcla
Adems sabemos que una pared consiste en un conjunto superpuesto de hileras de ladrillos, unidas entre s mediante la mezcla. Cada una de las hileras se conforman colocando la mezcla y sobre la misma un ladrillo junto al otro (separados por 2 centmetros aproximadamente). Acabamos de definir la segunda tarea a tener en cuenta para la construccin Programacin I/Mdulo III construir hilera 6
Para poder comenzar a levantar la pared, debemos preparar adecuadamente el lugar (limpiar, alisar, preparar el lugar mojar, etc.), obteniendo as la tercer tarea Y por ltimo suponemos que no vamos a dejar el lugar y las herramientas sucias, por lo cual debemos limpiar las herramientas y el lugar realizar la cuarta tarea Tenemos qu averiguar la cantidad de hileras que debemos construir para cumplir con la medida calcular solicitada, para esto debemos realizar algunos clculos, obteniendo una quinta tarea cantidad de hileras Pongamos ahora manos a la obra. Recordemos que debemos construir una pared con una longitud de 20 metros, y una altura de 5 metros, segn las especificaciones.
1 hilera 10 hileras
10 centmetros 1 metro
1 metro 5 metros
10 hileras 50 hileras
Este mismo proceso que estamos realizando para calcular la cantidad de hileras, debemos realizarlo dentro de la resolucin del ejercicio. Aprovechando que ya conocemos el uso de variables y constantes, utilicemos algunas para realizar correctamente los clculos.
/*Declaracin de constantes*/ const const const const const int int int int int LARGO_ESPERADO = 20;//utilizada para indicar el largo de la pared expresada en metros ALTO_ESPERADO = 5; //utilizada para indicar la altura de la pared expresada en metros ALTO_LADRILLO = 0.07; //Alto estndar de un ladrillo expresado en metros. ALTO_MEZCLA = 0.03; //Alto estndar de la mezcla sobre el ladrillo LARGO_LADRILLO = 0.20; //Largo estndar de un ladrillo expresado en metros.
/*Declaracin de variables */ int int int int iCantLadrillosxHilera; iCantHileras; i; j; // // // // Almacenar la cantidad de ladrillos que se necesitan para una hilera Almacenar la cantidad de hileras que hay que construir. contador utilizado para el ciclo FOR de cantidad de hileras a construir contador utilizado para el ciclo FOR de cantidad de ladrillos a poner
Si pensamos el proceso de construccin utilizando el pseudocdigo que ya conocemos, una posible solucin podra ser:
Preparar el lugar Limpiar el lugar Alisar el lugar. Mojar el lugar. Realizar clculos Almacenar en iCantLadrillosxHilera el resultado de: LARGO_ESPERADO \ LARGO_LADRILLO 2.2. Almacenar en iCantHileras el resultado de: ALTO_ESPERADO \ (ALTO_LADRILLO + ALTO_MEZCLA) 3. Repetir desde i = 1 a iCantHileras: (inicio ciclo FOR de hileras) 3.1. Preparar mezcla para una hilera 3.1.1. Tomar Balde Vaco 3.1.2. Repetir 3.1.2.1. Agregar Cal 3.1.2.2. Agregar Arena 3.1.2.3. Agregar Agua 3.1.2.4. Agregar Cemento 3.1.2.5. Mezclar 3.1.3. mientras que la consistencia no sea la adecuada 3.2. Construir hilera 3.2.1. Repetir desde j=1 hasta iCantLadrillosxHilera: (inicio ciclo FOR de cada hilera) 3.2.1.1. Poner mezcla en el lugar correspondiente. 3.2.1.2. Colocar un ladrillo 3.2.2. Fin-Repetir(fin ciclo FOR de cada hilera) 4. Fin-Repetir (fin ciclo FOR de hileras) 5. Limpiar herramientas y lugar 6. Poner un cartel que diga: El material est fresco 7. Guardar herramientas
Ya se explic en el Mdulo I, cuando empezamos a utilizar algoritmos, que una tarea puede dividirse en otras ms pequeas, por ejemplo, preparar el lugar, implica realizar tres acciones enumeradas desde el 1.1 al 1.3. Como todas comienzan con 1 y estn indentadas, se entiende que es la tarea 1 la que est compuesta por estas 3. Programacin I/Mdulo III 8
Notemos que para entender mejor cmo esta resuelto un pseudocdigo, podemos dividirlo y quitarle la mayor cantidad de lneas posibles, pero siempre realizando todas las tareas. De esta forma, crearemos un pseudocdigo por cada una de las tareas que habamos encontrado en la resolucin. As la nueva representacin de la solucin quedara de la siguiente forma:
Pseudocdigo principal 1. Preparar el lugar 2. Realizar Clculos 3. Repetir desde i = 1 a iCantHileras: (inicio ciclo FOR de hileras) 3.1. Preparar mezcla para una hilera 3.2. Construir hilera 4. Fin-Repetir (fin ciclo FOR de hileras) 5. Limpiar herramientas y lugar 6. Poner un cartel que diga: El material est fresco 7. Guardar herramientas
Noten que ahora, solo expresamos el encabezado de las tareas, clarificando la lectura del pseudocodigo y de la resolucin del problema.
1. limpiar el lugar. 2. alisar el lugar. 3. mojar el lugar. Vemos como generamos un algoritmo para la tarea Preparar el lugar, detallando los pasos a seguir para cumplirla. No caben duda que la tarea Limpiar el lugar, es ms simple que Preparar el lugar, la cul es compuesta y ms
1. Almacenar en iCantLadrillosxHilera el resultado de: LARGO_ESPERADO \ LARGO_LADRILLO 2. Almacenar en iCantHileras el resultado de: ALTO_ESPERADO \ (ALTO_LADRILLO + ALTO_MEZCLA)
Tomar balde vaco Repetir Agregar Cal Agregar Arena Agregar Agua Agregar Cemento Mezclar Mientras que la consistencia no sea la adecuada
1. Repetir desde j=1 hasta iCantLadrillosxHilera: (inicio ciclo FOR de cada hilera) 1.1. Poner mezcla en el lugar correspondiente. 1.2. Colocar un ladrillo 2. Fin-Repetir(fin ciclo FOR de cada hilera)
La solucin que proponemos no es ni ms ni menos que el desarrollo mediante pseudocdigo de la descripcin del proceso indicado en la consigna.
Actividad
Realizar el algoritmo modularizado en pseudocdigo del siguiente problema:
El Instituto Hidrogrfico de la provincia necesita saber, de las ltimas cuatro semanas, la cantidad de lluvia cada en todo el perodo, ms el porcentaje de das sin lluvias en las cuatro semanas y el promedio semanal y total de precipitaciones (en milmetros). Se le pedir a un usuario que ingrese da por da la cantidad total de precipitaciones (en milmetros). Consejo: Pueden comenzar a analizar este ejercicio buscando los datos de entrada, los datos de salida y que procedimientos podran separarse del resto. Una vez planteada la estrategia, realicen el algoritmo del procedimiento principal y todos los mdulos.
10
Procedimientos y funciones
Definicin
Acabamos de aprender a dividir un programa en tareas, y a su vez dividir esas tareas en pasos o subtareas. Lo que estamos haciendo es generar los diferentes procesos por los cuales debemos pasar para solucionar el problema general. Anlogamente a la palabra procesos, para modularizar los programas, utilizaremos dos tipos diferentes de rutinas: los procedimientos y las funciones. La diferencia entre un procedimiento y una funcin pasa ms por lo conceptual que por su estructura. Entonces, conceptualmente, un procedimiento es utilizado cuando se quieren procesar ciertos datos, pudiendo modificar el contenido de diferentes variables en el proceso, y devolviendo todos estos cambios en los contenidos al programa principal, o desde dnde haya sido llamado. Una funcin, en cambio, es pensada para resolver algo en particular y que nos devuelva un nico resultado.
Declaracin
La declaracin de un procedimiento o funcin en C/C++ est compuesta por las siguientes partes:
Actividad
1. Escribir 5 ejemplos de procedimientos y 5 de funciones. 2. Intercambiar lo escrito en el punto 1 con algn compaero/a, verificando que ste clasifique tus 10 del mismo modo en que vos lo hiciste. 3. Discutir entre uds. sobre los resultados obtenidos.
11
Los parmetros actuales pa1, pa2, pa3... tienen que tener valores que se pasan al procedimiento NombreRutina. En la declaracin de una rutina, cuando se incluyen parmetros, stos se denominan parmetros formales o ficticios (pf1, pf2...). Ellos sirven para contener los valores de los parmetros actuales cuando se invoca el procedimiento.
El valor de los parmetros actuales no se conoce cuando se declara la rutina; sin embargo, cuando se ejecuta la sentencia de llamada a la rutina es preciso que tengan valores asignados, ya que en caso contrario se producir un error.
12
Correspondencia de parmetros
Los parmetros actuales en la invocacin de la rutina debe coincidir en nmero, orden y tipo con los parmetros ficticios de la declaracin del procedimiento. Es decir, debe existir una correspondencia entre parmetros actuales y ficticios.
Ejemplos
Pongamos como primer ejemplo un procedimiento que le daremos como datos de entrada, la fecha de nacimiento de una persona y la edad mnima para votar en el pas. Este procedimiento nos indicara, a travs de dos parmetros de salida, la edad de la persona y si es apto o no para votar. Cul es el tipo de dato que se utilizar para declarar un procedimiento? Programacin I/Mdulo III 13
Recordamos que el tipo de dato para declarar un procedimiento es conocido como void y en C/C++ debe escribirse en minsculas. Este es el encabezado del procedimiento. void EsApto (int iDia, int iMes, int iAo, int iEdadMin, int &iEdad, bool &bPuedeVotar ) Noten que los parmetros de Salida en este caso indican que estos parmetros van a devolver un valor al programa principal o la rutina desde donde utilizamos el procedimiento EsApto.
La llamada a este procedimiento requiere de 6 parmetros. Es importante notar que los primeros 4 son por valor, de modo que podemos enviarle los datos a travs de una variable o bien con datos explcitos, por ejemplo:
Con formato: Fuente: 10 pt
Pseudocdigo Principal:
. .. . ..
En este ejemplo las variables iEdadReal y bPude fueron previamente declaradas y en el momento de la llamada puede que tengan o no un valor asignado, lo cual no es importante ya que ambas variables actan como parmetro de salida, es decir que cuando se termine de ejecutar el procedimiento, estas variables contendrn los datos asignados a los parmetros formales iEdad y bPuedeVotar dentro del procedimiento. EDAD_MINIMA es una constante. Otro ejemplo vlido es utilizando variables que ya contienen datos:
Pseudocdigo Principal:
. .. . ..
14
Este otro ejemplo nos muestra cmo utilizar variables para la llamada del procedimiento. Es importante volver a aclarar que el parmetro iDia de la llamada es una variable diferente al declarado en el encabezado de la funcin. Uno es el parmetro actual y otro el formal (ver explicacin detallada anteriormente en este mdulo) El diagrama de la llamada al procedimiento se representa de este modo:
Las lneas oblicuas a los costados indican que es una llamada a un procedimiento
Si nos envan una fecha de nacimiento, deberamos validarla Verdad? Para esto podramos realizar una funcin, como habamos indicado anteriormente en un ejemplo y cuyo encabezado sera el siguiente: bool FechaValida(int iDia, int iMes, int iAo)
Recuerden que, al ser una funcin, no debe tener parmetros de salida, ya que el resultado se devuelve desde la misma. En este caso, la funcin debera devolver TRUE si la fecha enviada por parmetros es vlida y FALSE en caso de que no lo sea. Veamos este ejemplo para hacer la llamada a la funcin:
Con formato: Fuente: 10 pt
Pseudocdigo Principal:
. .. . .. bValida . .. . .. . .. . ..
15
Como la funcin devuelve un valor de tipo bool, es correcto asignarle el resultado de la funcin a una variable del mismo tipo. El diagrama de esta asignacin es as,
Al ser un valor lgico, tambin puede utilizarse directamente como condicin lgica, por ejemplo:
Con formato: Fuente: 10 pt
Pseudocdigo Principal:
. .. . ..
16
Diagrama modularizado 1
Enunciado Se leen 30 valores enteros (comprendidos entre 5 y 40) que representan la temperatura mxima de cada de unos de los das de un mes, se pide hallar e informar: La temperatura mxima del mes y el da que se produjo (se supone nico). Cuantos das la temperatura super los 25. El promedio de las temperaturas mximas del mes.
Hagamos primero un pequeo anlisis de qu es lo que debemos hacer para realizar este problema. Datos de entrada Temperatura mxima (valor entero) de un da. La ingresarn 30 veces (una por cada da del mes). La temperatura no puede estar por debajo de 5 y por encima de 40 (datos importantes para validar.
Datos de salida Temperatura mxima del mes. Que da se produjo la temperatura mxima del mes. Cantidad de das que la temperatura supero los 25. El promedio de las temperaturas mximas del mes (es decir, de todas las temperaturas que nos ingresen.
Al necesitar buscar un mximo, debo inicializar alguna variable con un nmero muy chico, para que el primer dato que me ingresen pase a ser el mximo. Empecemos por hacer la declaracin de las variables. /*Declaracin de constantes*/ const const const const int int int int CANT_DIAS = 30; MINIMA = 5; MAXIMA = 40; LIMITE = 25; //Por la cantidad de das del mes. Es el divisor para el promedio. //Estos datos son los indicados para realizar la validacin //constante para buscar los valores que la superen segn enunciado 17
/*Declaracin de variables */ int int int int int int iTemp; iTempMax; iDiaMax; iCantDiasSupero; iSumaTemp; i; //Para guardar la temperatura ingresada por el usuario. //Para guardar la temperatura mxima del mes. //Para guardar el da dnde se registro la mxima del mes. //Para guardar la cant de dias que supero la temp. Lmite. //Suma las temperaturas para el clculo del promedio //Para ciclo repetitivo exacto.
iTempMax
-9999
iCantDiasSupero
iSumaTemp S
Ingrese la temperatura mxima del da, i E iTemp ! ( (iTemp>=MINIMA) y (iTemp<=MAXIMA) ) iTemp > iTempMax Si i = 1..CANT_DIAS; i++ iTempMax iTemp No
iDiaMax
Si iCantDiasSupero iCantDiasSupero + 1
No
iSumaTemp S
iSumaTemp + iTemp
La temp. mxima fue de, iTempMax , y sucedi el da nro: , iDiaMax S Una cantidad de , iCantDiasSupero ,das la temperatura super , LIMITE S El promedio de temperaturas fue de , iSumaTemp/CANT_DIAS
Este ejemplo permite realizar varios procedimientos y, por ejemplo, una funcin. Vamos a ir deduciendo cuales son los usos ms comunes de los procedimientos. Programacin I/Mdulo III 18
Las primeras sentencias se refieren a la inicializacin de las variables. Es de uso habitual realizar todas las inicializaciones en un mdulo aparte. Por otra parte, cada vez que ingresa al ciclo, pide el ingreso de los datos. Esto tambin podra separarse en un procedimiento de ingreso de datos. Los otros dos procedimientos pueden ser los que procesan la informacin de iTemp, para cumplir con los dos primeros objetivos del enunciado. Finalmente, podramos realizar una funcin para el promedio y un procedimiento final para las salidas. Si furamos a utilizar estos mdulos que nombramos, el diagrama principal quedara de este modo:
19
20
Declaracin
La forma de declarar una estructura en C/C++ para definir las caractersticas de un vehculo es la siguiente: /*Declaracin de tipos*/ typedef struct DatosAuto { string sMarca; string sTipo int iModelo; int iCantPuertas; int iNroChasis; string sPatente; bool bAireAcondicionado; bool bFrenosABS; bool bLevantaVidriosAuto; };
typedef: indica que vamos a declarar un tipo de datos nuevo. struct: aclara que el nuevo tipo de datos sera una estructura, compuesta por variables. DatosAuto: Es el Nombre de la estructura. Es el nexo entre todas las variables que la componen. 21
Como podemos ver en el ejemplo, hemos declarado un tipo nuevo basado en una estructura con variables de diferentes tipos. Todas estas variables tienen en comn ser caractersticas de una Auto, es por eso que, conceptualmente, es lgico querer tenerlas unidas y no declaradas por separado. Para utilizar una de las variables dentro de la estructura, debemos declarar una variable de tipo DatosAuto e indicar, dentro del programa, el nombre de las dos variables la general y la particular unidas por un punto. /*Declaracin de variables*/ DatosAuto Auto; //declaro una variable Auto del tipo DatosAuto (el tipo definido por mi) Por ejemplo, si quisiera utilizar en el programa la variable iModelo para asignarle un valor, debera 2005 utilizarla del siguiente modo: Auto.iModelo
Actividades
1. Realiza la definicin de constantes, tipos y variables del siguiente enunciado:
Una casa de venta y remate de antigedades desea una evaluacin del ltimo remate realizado. Conociendo de c/u de las 100 piezas rematadas las siguientes caractersticas:
Autoevaluacin
Completar Verdadero o Falso. Justificar.
1. Modular es elegir los correctos ciclos repetitivos para tener el diagrama bien separado y legible. 2. Una funcin no debe recibir parmetros de salida 3. Un parmetro de entrada puede ser tambin de entrada/salida 4. Los procedimientos y las funciones no pueden convivir en un mismo programa. 5. La metodologa TOP-DOWN indica que la forma correcta de modularizar es realizando un refinamiento sucesivo.
Indicar cul de las siguientes llamadas son correctas para este procedimiento: void NombreProcedimiento(char Letra, int &Num, float fNum)
1. NombreProcedimiento(A, iContador, 4+5) 2. NombreProcedimiento(cLetra, 8, fPromedio) 3. NombreProcedimiento(cLetra, iContador, fPromedio) Programacin I/Mdulo III 22
Cuadro de resultados
Nro
VF
Justificacin
b-1
b-2
b-3
23
Sntesis
En este mdulo se ha explicado la importancia de la modularizacin. Se han introducido los conceptos de Procedimiento y Funcin y como utilizar los parmetros. Hemos realizado ejemplos variados sobre la utilizacin de las rutinas para que los alumnos puedan generar diagramas de problemas de mediana complejidad, sentando las bases para abarcar problemas ms complejos en las prximas unidades. A lo largo del material se han encontrado con diferentes ejercicios prcticos basados en los temas explicados, de manera de poder llevar un autocontrol de los conocimientos y permitir al tutor llevar estadsticas del curso. A travs de la instruccin typedef de C/C++, hemos mostrado como generar tipos de datos propios, creando estructuras de datos asociados. Por ltimo, se le propuso al alumno completar una autoevaluacin, que le dar la pauta de la necesidad de acentuar el estudio sobre ciertos temas.
24