ASIGNATURA: COMPUTACIÓN II

Documentos relacionados
Funciones Definición de función

Elementos de un programa en C

Programación MODULAR: Subalgoritmos - funciones y procedimientos

TEMA 5: Subprogramas, programación modular

GENERALIDADES DEL LENGUAJE C

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Estructuración del programa en partes más pequeñas y sencillas

Tema: Funciones, Procedimientos y Recursividad en C#.

funciones printf scanf

Paso de Parámetros a una Función

USO DE SUBRUTINAS, TRANSMISIÓN DE PARÁMETROS Y COMPILACIÓN CONDICIONAL EN C++

Funciones. Parámetros por valor

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Funciones en Lenguaje C

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Ejercicios Tema 6. Funciones

Funciones como Subprogramas en C++

Funciones Tipos de funciones y Recursividad

TEMA 4: Programación estructurada

Estructuras de Datos Declaraciones Tipos de Datos

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos

Programación en Lenguaje C

REPRESENTACIÓN DE DATOS

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

TEMA 3: EL LENGUAJE C: PRESENTACIÓN

Escribir programas a partir de un diagrama de flujo

Guía práctica de estudio 05: Diagramas de flujo

Introducción a C++ y Code::Blocks

Lenguaje de programación C. Introducción

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

SUBPROGRAMAS FUNCIONES

Tema: Clases y Objetos en C#. Parte II.

Introducción rápida a la programación (estructurada ) con C++

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Prof. Dr. Paul Bustamante

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

LENGUAJE. Tema 2 Elementos de un programa

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Tema: Estructuras de Selección en C#.

Desarrollo de Programas. Prof. Lisbeth C. Pérez Rivas

Versatilidad de la estructura de repetición for

TEMA 8: Gestión dinámica de memoria

Programación estructurada (Introducción a lenguaje C)

Tema 10: Tipos de datos definidos por el usuario

RECORDAR TIPOS DE DATOS

Java Avanzado Facultad de Ingeniería. Escuela de computación.

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

PASO DE PARÁMETROS O ARGUMENTOS EN C. POR DEFECTO, POR VALOR O POR REFERENCIA. SIZEOF MEMORIA (CU00550F)

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

Expresiones Aritméticas

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Principios de Computadoras II

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Programación Básica Estructuras de Datos y Funciones en C

Estructuras de Repetición (Hacer-Mientras)

Programación: Estructuras de Control

Distinguir las diferentes estructuras de repetición utilizadas en problemas con bucles: mientras, repetir mientras, para.

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

Procesos e Hilos en C

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

GUIA DE EJERCICIOS N 1 LENGUAJE C# Página 1 de 5. Instructor: Ing. Néstor Raúl Suarez Perpiñan

Tema: Arreglos de Objetos en C++.

PROGRAMACION MODULAR FUNCIONES

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

UNIDAD 1. Algoritmo se define como un conjunto de instrucciones que la computadora debe seguir para resolver un problema.

LENGUAJE. Tema 3 Elementos de un programa II

Hoja de ejercicios del Tema 3

UNIVERSIDAD NACIONAL DE SALTA Sede Regional Orán AÑO: 2013 Carreras: TIG - TUP

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

Estructuras de Repetición (Repita para)

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

Programación Estructurada

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

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

ANEXO XVII DE LA RESOLUCION N

Preliminares. Tipos de variables y Expresiones

EXAMEN PARCIAL TRABAJO INTEGRADOR (TI) EVALUACIÓN CONTINUA PESO PORCENTUAL PESO PORCENTUAL 1 30% 06-MAY-14 30% 03-MAY-14 20% 20%

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

Manual de turbo pascal

Universidad Autónoma del Estado de México Facultad de Medicina

TEMA 4. ESTRUCTURAS DE CONTROL

Tema: Repaso sobre uso de Funciones, Arreglos y Punteros en C++.

1 Estructura básica de un programa C++

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

Funciones y paso de parámetros

Tema 13: Apuntadores en C

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

Fundamentos de programación

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones.

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Transcripción:

UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA ANTONIO JOSÉ DE SUCRE VICERECTORADO PUERTO ORDAZ DEPARTAMENTO DE INGENIERÍA ELECTRÓNICA SECCIÓN DE COMPUTACIÓN ASIGNATURA: COMPUTACIÓN II UNIDAD 2: TÉCNICAS DE PROGRAMACIÓN. PROGRAMACIÓN PROCEDIMENTAL. Uno de los problemas habituales del programador ocurre cuando los programas alcanzan un tamaño considerable en cuanto a líneas de códigos se trata. El problema se puede volver tan complejo que fuera inabordable. Para mitigar este problema apareció la Programación Procedimental. En ella el programa se divide en módulos de tamaño manejable. Cada módulo realiza una función muy concreta y se pueden programar de forma independiente. Se basa en concentrar los esfuerzos en resolver problemas sencillos y una vez resueltos, el conjunto de esos problemas soluciona el problema original. En definitiva, la Programación Procedimental implementa el paradigma divide y vencerás, tan importante en la programación. El programa se descompone en módulos. Los módulos se puede entender que son pequeños programas. Reciben datos y a partir de ellos realizan un cálculo o una determinada tarea. Una vez el módulo es probado y validado se puede utilizar las veces que haga falta en el programa sin necesidad de tener que volver a programar. En C++ los módulos se llaman Funciones. Anteriormente se ha usado algunas funciones implementadas en las librerías del lenguaje C++ (cin, cout y pow por ejemplo). El lenguaje C++ proporciona diversas funciones ya preparadas (se les llama funciones estándar) para evitar que el programador tenga que codificar absolutamente todo el funcionamiento del programa. Las funciones son invocadas desde el código utilizando su nombre. Cuando desde el código se invoca a una función, entonces el flujo del programa salta hasta el código de la función invocada. Después de ejecutar el código de la función, el flujo del programa regresa al código siguiente a la invocación. Las funciones contienen varias sentencias bajo un mismo nombre, que un programa puede utilizar una o mas veces para ejecutar dichas sentencias. Ahorran espacio, reduciendo repeticiones y haciendo más fácil la programación, proporcionando un medio de dividir un proyecto grande en módulos más manejables. Si se agrupan varias funciones en bibliotecas, otros programas pueden reutilizar las funciones; por esta razón se puede ahorrar tiempo de desarrollo. Y dado que las bibliotecas contienen rutinas presumiblemente comprobadas, se incrementa la fiabilidad del programa completo. 1

Las funciones pueden existir de modo autónomo. Como ya se ha trabajado anteriormente, se sabe que cada programa en C++ tiene al menos una función main(); sin embargo, cada programa C++ consta de muchas funciones en lugar de una función main() grande. La división del código en funciones hace que las mismas se puedan reutilizar en su programa y en otros programas. Después de que escriba, pruebe y depure su función, ésta se puede utilizar nuevamente una y otra vez. Para reutilizar una función dentro de su programa, sólo se necesita llamar a la función. 1. FUNCIONES. Al escribir un programa largo en C++, se busca dividirlo en varios módulos o funciones, entonces, dicho programa en C++ se compondrá de varias funciones, cada una de las cuales realiza una tarea principal. Cada función realiza una determinada tarea y cuando se ejecuta la sentencia return o termina el código de la función, se retorna al punto en que fue llamada desde la función principal (main()) o desde otra función. 1.1.Definición. Una función es un conjunto de líneas de código que realizan algo en particular; específicamente una función debe retornar un valor que haya calculado o que se defina en el código. 1.2.Declaración y Estructura. El conjunto de líneas que conforman a la función tienen una estructura bien definida, ésta está dividida en dos partes principales: el prototipo y el cuerpo de la función. C++ requiere que una función se declare o defina antes de su uso, por lo tanto esta se ubicará antes de la función main. tipo_devuelto Nombre_Funcion (tipo nomb_parámetro1,, tipo nomb_parámetron) Declaración de Variables Locales //(Propias de la Función) Conjunto de Instrucciones de la Función Devolver (Expresión o Valor) Código 1. Declaración de una Función en Pseudocódigo. tipo_devuelto Nombre_Función (tipo nomb_parámetro1,..., tipo nomb_parámetron) Declaración de Datos; Conjunto de Instrucciones de la Función; return(expresión o Valor); Código 2. Declaración de una Función en C++. 2

C++ Pseudocódigo Prototipo. Las declaraciones de funciones en C++ comienzan con el prototipo de éstas. El prototipo de una función es sencillo, y está incluido al principio del código del programa para notificar al compilador el tipo y número de argumentos que va a usar la función. Al prototipo también se le es conocido como cabecera. De qué tipo es el valor que retorna la función? Listado de Parámetros Formales o Argumentos de la Función, se debe especificar el tipo de dato y el nombre de la variable. tipo_devuelto Nombre_Función ( tipo Nomb_Parámetro1,, tipo Nomb_ParámetroN) Cuerpo de la Función. Cómo se llama la Función? Figura 1. Prototipo de la Función. El cuerpo de la función se dispone, bien sea entre las palabras y para pseudocódigo o dentro de un conjunto de llaves, en C++. En esta sección se escribirán las líneas de código, de los distintos tipos de instrucciones (declaración, entrada/salida, asignación y cálculo y control) que darán vida a la función. Diseñe una función que calcule una expresión de potencia ( ), donde la Ejemplo 01. base y el exponente se asuman números enteros positivos. entero pot (entero base, entero exponente) entero i, potencia potencia= 1 Repetir desde i= 1 hasta i<= exponente potencia= potencia*base _Repetir_Desde Devolver (potencia) int pot (int base, int exponente) int i, potencia; potencia= 1; for (i= 1; i<= exponente; i++) potencia= potencia*base; return (potencia); Es importante recalcar que dentro del cuerpo de la función se encontrará una instrucción llamada Devolver (pseudocódigo) o return (C++), la cual, como su nombre lo 3

C++ Pseudocódigo indica es la que retornará el valor calculado dentro de la función, cuando dicha función es utilizada. 1.3.Llamada de una Función. Una vez que hemos declarado la función, la idea es hacer uso de ésta. El proceso de utilizar o emplear a la función que hemos creado se denomina llamar a la función. Este proceso no es algo nuevo, de manera inconsciente desde que comenzamos a programar en C++ hemos utilizado funciones propias de este lenguaje de programación, para refrescar un poco la memoria, analicemos el código del Ejemplo 02. Diseñe un programa que calcule el área de una circunferencia, cuyo radio Ejemplo 02. es introducido por el usuario. Algoritmo Área de Circunferencia entero Radio real Area Mostrar ( Ingrese el Radio de la Circunferencia ) Leer(Radio) Area = 3,1416*Radio^2 Mostrar ( El Área es:, Area) #include <iostream.h> #include <math.h> // Libreria que contiene la función pow #define PI 3.1416 void main() int Radio; float Area; cout<< Ingrese el Radio de la Circunferencia: ; cin>>radio; Area = PI * pow(radio,2); cout<< El Área es: <<Area; system( PAUSE ); La instrucción pow, no es más que una función que calcula la potencia de un número elevado a un exponente. Su definición se encuentra en la librería math.h, es por eso que si no agregamos dicha librería, el compilador no reconoce a la función, arrojando un resultado como el de la figura 2. Figura 2. Error del Depurador por no incluir la Librería Math.h y usar la función pow en el código. 4

C++ Pseudocódigo Ahora bien, en el Ejemplo 01 hemos creado nuestra propia función pow, en el Ejemplo 03 utilizaremos la función pot creada por nosotros mismos. Diseñe un programa que utilice la función pot del Ejemplo 01, para calcular Ejemplo 03. el área de una circunferencia, cuyo radio es introducido por el usuario. Algoritmo Área de Circunferencia //Función pot entero pot (entero base, entero exponente) entero i, potencia potencia= 1 Repetir desde i= 1 hasta i<= exponente potencia= potencia*base _Repetir_Desde Devolver (potencia) //Algoritmo Principal entero Radio real Area Mostrar ( Ingrese el Radio de la Circunferencia ) Leer(Radio) Area = 3,1416* pot(radio, 2) Mostrar ( El Área es:, Area) #include <iostream.h> #define PI 3.1416 int pot (int base, int exponente) int i, potencia; potencia= 1; for (i= 1; i<= exponente; i++) potencia= potencia*base; return (potencia); //Programa Principal void main() int Radio; float Area; cout<< Ingrese el Radio de la Circunferencia: ; cin>>radio; Area = PI * pot(radio,2); cout<< El Área es: <<Area; system( PAUSE ); 5

Cuando se ejecuta el programa principal del Ejemplo 03, se llama a la función pot en la instrucción donde se calcula el área de la circunferencia, cuando el computador interpreta dicha instrucción se da cuenta que es una función y salta a la declaración de esa función, allí ejecuta las instrucciones que pertenecen a ésta y cuando consigue una instrucción return, sale de la función, retornando el valor que se indique en el punto donde fue llamada la función en un principio. Para comprender un poco este proceso visualice la figura 3. 1.4.Parámetros de una Función. Figura 3. Ejecución de una Función. Para visualizar los parámetros de una función sea propia del usuario o pertenezca a C++, el software de programación despliega una pestaña indicando los argumentos de la función al escribir el paréntesis de apertura luego del nombre de la función. Lo anterior se observa en la figura 4. Figura 4.Ayuda del C++ Builder para visualizar los Parámetros de una Función. Existen dos métodos para pasar variables (parámetros) al llamar funciones. Una función puede utilizar paso de parámetros por valor o parámetros por referencia, así como también puede no tener parámetros. 6

Paso por Valor. También llamado paso por copia, significa que cuando se compila la función y ocurre la llamada de la misma, sus parámetros formales reciben una copia de los valores de los parámetros actuales. En la siguiente figura se muestra un ejemplo de un programa que utiliza una función llamada funcion1 con paso por valor. void main () int x=6; cout<<x<<endl; funcion1(x); cout<<x<<endl; system( PAUSE ); 6 void funcion1 (int y) cout<<y<<endl; y++; cout<<y<<endl; Paso por Referencia. 6 6 7 6 Figura 5. Función con Paso de Parámetros por Valor. Trabajando las funciones como se ha hecho hasta ahora, se tiene una importante limitación en cuanto a retornar valores al programa principal se trata, ya que la función devolver o return está limitada a retornar un solo valor. El método de paso por referencia permite solventar este inconveniente, ya que permite modificar directamente los valores que están el programa principal. El método de paso de parámetros por referencia también se conoce como paso por dirección, en este caso los parámetros formales de la función (los que están en el prototipo), se deben declarar incluyendo el símbolo & cómo primer carácter del identificador, y al usar la función el parámetro actual (argumento que se pasa cuando se llama a la función) se sigue pasando de la misma manera, es decir, con su correspondiente nombre. En la siguiente unidad se estudiará más a fondo este tipo de paso, pero utilizando variables puntero. Cuando se modifica el valor del parámetro formal de un parámetro por referencia (la variable local), este valor queda almacenado en la misma dirección de memoria, por lo que al retornar la función llamadora la dirección de la memoria donde se almacenó el parámetro contendrá el valor modificado. Veamos el Ejemplo 04. 7

Diseñe un programa a través de una función o procedimiento calcule la Ejemplo 04. superficie y el volumen de una esfera cuyo radio es introducido por el usuario. Pseudocódigo Algoritmo Superficie y Volumen de Esfera //Subrutina para calcular la superficie y el volumen Procedimiento sup_vol (real radio, real &vol, real &sup) vol=(4/3)*3.1416*radio^3 sup=4*3.1416*radio^2 //Algoritmo Principal real Radio, Volumen, Superficie Mostrar ( Ingrese el Radio de la Esfera ) Leer(Radio) Llamar a sup_vol( Radio, Volumen, Superficie) Mostrar ( El Volumen es:, Volumen) Mostrar ( La Superficie es:, Superficie) C++ #include <iostream.h> #include <math.h> #define PI 3.1416 void sup_vol (float radio, float &vol, float &sup) vol=(4/3)*pi*pow(radio,3); sup=3*pi*pow(radio,2); //Programa Principal void main() float Radio, Volumen, Superficie; cout<< Ingrese el Radio de la Circunferencia: ; cin>>radio; sup_vol(radio, Volumen, Superficie); cout<< El Volumen es: <<Volumen; cout<< La Superficie es: <<Superficie; system( PAUSE ); En el ejemplo 04, los valores para las variables Volumen y Superficie no son retornados, sino que al ser modificadas dentro de la función, su valor cambia indirectamente. 8

2. PROCEDIMIENTOS. En el código del ejemplo 04 se introdujo la definición de procedimiento. Un procedimiento no es más que una función cuyo tipo_retorno (ver figura 1) es un tipo vacío, lo que es en C++ void. Procedimiento Nombre_Procedimiento (tipo nomb_parámetro1,, tipo nomb_parámetron) Declaración de Variables Locales //(Propias de la Función) Conjunto de Instrucciones de la Función Código 3. Declaración de un Procedimiento en Pseudocódigo. void Nombre_Procedimiento (tipo nomb_parámetro1,..., tipo nomb_parámetron) Declaración de Datos; Conjunto de Instrucciones del Procedimiento; Código 4. Declaración de un Procedimiento en C++. Como los procedimientos no han de retornar valores a través de la instrucción Devolver (pseudocódigo) o return (C++), estos pueden modificar con el paso por referencia el valor de alguna variable del programa principal. Este es el caso del ejemplo 04. 3. ÁMBITO DE UNA VARIABLE. El ámbito es la zona de un programa en el que es visible una variable. Existen cuatro tipos de ámbitos: programa, archivo fuente, función y bloque. Normalmente la posición de la sentencia en el programa determina el ámbito. 3.1. Variables Globales. Las variables que tienen ámbito de programa pueden ser referenciadas por cualquier función en el programa completo; tales variables se les llama variables globales. Para hacer una variable global, declárela simplemente al principio de un programa, fuera de cualquier función (inclusive la función main()), se recomienda declararlas al comienzo del programa antes de las definiciones de las funciones. El ámbito de estas variables es global, es decir, que son visibles por cualquier función y cualquiera de ellas puede modificar su valor. La vida de estas variables va ligada a la del programa, se crean cuando empieza la ejecución del programa y pueden ser utilizadas hasta que se acabe el mismo. 9

3.2. Variables Locales. Están declaradas dentro de la función, bien dentro del cuerpo o bien como parámetros formales. El ámbito de la variable se reduce al de la función y fuera de esta no tienen presencia, es decir, sólo puede ser utilizada por la función donde está declarada. Por su parte, las variables locales pueden ser: Variables Automáticas: Son eliminadas cuando se termina la ejecución de la función donde han sido declaradas, es decir, su vida se limita al tiempo que está activa la función. Los parámetros formales son variables automáticas. Variables Estáticas: A pesar de que sólo pueden ser utilizadas por la función donde han sido declaradas, no son destruidas al terminar ésta. Por lo tanto, mantienen su valor para la próxima vez en que sea llamada la función. Se declaran, precediendo el nombre del tipo por la palabra "static". 4. UTILIZACIÓN DE ARREGLOS COMO PARÁMETROS EN FUNCIONES. En C++ todos los arreglos se pasan por referencia (dirección). C++ trata automáticamente la llamada a la función como si hubiera situado el operador de dirección & delante del nombre del arreglo. La declaración de un parámetro formal de tipo arreglo puede ser: Forma 1 Tipo_Dato Nombre_Arreglo [N] Forma 2 Tipo_Dato Nombre_Arreglo [ ] Forma 3 Tipo_Dato *Nombre_Arreglo En esta unidad utilizaremos las formas 1 y 2, la forma 3 es trabajando con punteros que es el tema de la siguiente unidad. Si se utiliza la forma 2, se debe incluir otro parámetro que indique el tamaño del arreglo, como se verá en el siguiente ejemplo. Diseñe un programa que lea dos arreglos de 10 elementos, que los sume término a término y los deposite en otro arrelgo. Diseñe tres funciones, la Ejemplo 05. primera debe ingresar los datos, la segunda sumar dos arreglos y la tercera debe mostrar. Pseudocódigo Algoritmo Parámetros tipo Arreglo //Procedimiento para Leer arreglo de dimensión n Procedimiento lectura (real a[ ], entero n) Entero i Repetir desde i= 1 hasta i<= n Mostrar( Introduzca el Elemento Numero, i) Leer(a[i]) 10

_Repetir_Desde //Procedimiento para Mostrar un arreglo de dimensión n Procedimiento muestra (real a[ ], entero n) Entero i Repetir desde i= 1 hasta i<= n Mostrar(i,, a[i]) _Repetir_Desde //Procedimiento para Sumar dos Arreglos de dimensión n Procedimiento suma (real a[ ], real b[ ], real c[ ], entero n) Entero i Repetir desde i= 1 hasta i<= n c[i]=a[i]+b[i] _Repetir_Desde //Algoritmo Principal real A[10], B[10], C[10] Llamar a lectura (A, 10) Llamar a lectura (B, 10) Mostrar ( Arreglo A: ) Llamar a muestra (A, 10) Mostrar ( Arreglo B: ) Llamar a muestra (B, 10) Llamar a suma(a, B, C, 10) Mostrar ( Arreglo C: ) Llamar a muestra (C, 10) #include <iostream.h> #include <conio.h> #define N 10 C++ void lectura (float a[ ], int n) int i; for (i=0; i<n; i++) cout<<"indroduzca el Elemento "<<i+1<<" : \n"; 11

cin>>a[i]; void muestra (float a[ ], int n) int i; for (i=0; i<n; i++) cout<<"elemento "<<i+1<<": "<<a[i]<<endl; void suma (float a[ ], float b[ ], float c[ ], int n) int i; for (i=0; i<n; i++) c[i]=a[i]+b[i]; void main() float A[N], B[N], C[N]; cout<<"ingreso del Arreglo A \n"; lectura(a, N); cout<<"ingreso del Arreglo B \n"; lectura(b, N); clrscr(); cout<<"estos fueron los Arreglos que ingreso: \n"; cout<<"\n Arreglo A \n"; muestra(a, N); cout<<"\n Arreglo B \n"; muestra(b, N); suma(a, B, C, N); cout<<"\n Arreglo Resultante C \n"; muestra(c, N); getch(); 5. UTILIZACIÓN DE REGISTROS COMO PARÁMETROS EN FUNCIONES. C++ permite pasar estructuras a funciones, bien por valor o bien por referencia, utilizando el operador &. Si se trata de un arreglo de registro, se debe usar el método de paso por dirección o referencia. 12

Ejemplo 06. Diseñe un programa que permita guardar los datos de una encuesta realizada a 300 personas, sobre su índice de masa corporal. A los encuestados se les pidió su nombre, cédula, estatura y peso. El programa debe mediante un menú de opciones, realizar: [1] Ingresar los datos de la Encuesta: se deben ingresar los datos que se les pidió a los encuestados, calcular el correspondiente índice de masa corporal usando la fórmula: IMC = Peso / Estatura 2, y luego clasificar la evaluación según la tabla de Clasificación IMC (ver abajo). [2] Mostrar Datos Totales: Se debe visualizar la estructura con toda la información completa. [3] Salir del Programa. IMC [300] Nombre Cedula Estatura Peso imc eval Clasificación IMC 1 Infrapeso <18,50 2 Normal 18,50 a 24,99 : Sobrepeso 25 300 Obeso 30,00 Utilice programación procedimental, e implemente las siguientes Funciones y Procedimientos: Función Menú: Despliega el Menú y retorna la opción seleccionada. Procedimiento Validar: Asegura que la opción seleccionada este en el rango correcto. Procedimiento Cargar Datos: Carga los datos en la estructura. Procedimiento Evaluación: Carga los datos en el campo eval según la clasificación IMC. Procedimiento Mostrar: Muestra los datos cargados en la estructura. Algoritmo Parámetros Tipo Registro Registro Datos_IMC caracter nombre[20], eval[15] real peso, estatura, imc entero cedula _Registro Pseudocódigo. //Procedimiento Validación Procedimiento validacion (entero &valor, entero lim_inf, entero lim_sup) Repetir Mientras (valor<lim_inf valor>lim_sup) Mostrar ("Opcion invalida, reintroducir") Leer (valor) _Repetir_Mientras 13

//Función Menú entero menu () entero opc Mostrar ("Menu de Opciones: ") Mostrar ( 1)Ingresar Datos de la Encuesta ) Mostrar ("2)Visualizar Datos ") Mostrar ("3)Salir del Programa ") Mostrar ("Escoja una Opcion: ") Leer (opc) validacion(opc, 1, 3) Devolver (opc) //Procedimiento Ingreso Procedimiento ingreso (Datos_IMC ing_imc[ ], int n) int i Repetir Desde i=1 hasta i<=n Mostrar ("Ingrese el Nombre: ") Leer(ing_imc[i].nombre) Mostrar ("Ingrese la cedula: ") Leer(ing_imc[i].cedula) Mostrar ("Ingrese el peso: ") Leer(ing_imc[i].peso) Mostrar ("Ingrese la estatura: ") Leer(ing_imc[i].estatura) ing_imc[i].imc=ing_imc[i].peso/ing_imc[i].estatura^2 _Repetir_Desde //Procedimiento Evaluación Procedimiento evaluacion (Datos_IMC eval_imc[ ], int n) int i Repetir Desde i=1 hasta i<=n Si(eval_imc[i].imc<18.5) eval_imc[i].eval="infrapeso" _Si Si (eval_imc[i].imc>=18.5 && eval_imc[i].imc<25) eval_imc[i].eval="normal" _Si Si (eval_imc[i].imc>=25 && eval_imc[i].imc<30) eval_imc[i].eval="sobrepeso" _Si Si(eval_imc[i].imc>=30) eval_imc[i].eval="obeso" _Si _Repetir_Desde 14

//Procedimiento Muestra Procedimiento mostrar (Datos_IMC most_imc[ ], int n) int i Mostrar("Resultados de la Encuesta") Mostrar (" Nombre Cedula IMC Evaluacion") Repetir Desde i=1 hasta i<=n Mostrar(most _imc[i].nombre," ") Mostrar(most _imc[i].cedula," ") Mostrar(most _imc[i].imc," ") Mostrar(most _imc[i].eval, " ") _Repetir_Desde //Programa Principal Datos_IMC Encuesta[300] entero i, opcion=1 Repetir Mientras (opcion>=1 && opcion<3) opcion= menu() // Llamada Función Menu, retorna la opción ya validada En Caso de (opcion) caso 1: Llamar a: ingreso (Encuesta, 300) Llamar a: evaluacion (Encuesta, 300) caso 2: Llamar a: mostrar (Encuesta, 300) case 3: Mostrar ( del Programa ) _En_Caso_De _Repetir_Mientras #include <iostream.h> #include <conio.h> #include <math.h> #include <iomanip.h> #define N 3 C++ 15

//Declaración de Variables Globales struct Datos_IMC char nombre[25], eval[15]; float peso, estatura, imc; int cedula; ; //Procedimiento Validación void validacion (int &valor, int lim_inf, int lim_sup) while (valor<lim_inf valor>lim_sup) cout<<"opcion invalida, reintroducir"; cin>>valor; //Función Menu int menu () int opc; clrscr(); cout<<"menu de Opciones: \n"; cout<<"1)ingresar Datos de la Encuesta \n"; cout<<"2)visualizar Datos \n"; cout<<"3)salir del Programa \n"; cout<<"escoja una Opcion: "; cin>>opc; validacion(opc, 1, 3); return (opc); //Procedimiento Ingreso void ingreso (Datos_IMC ing_imc[ ], int n) int i; for(i=0; i<n; i++) cout<<"ingrese el Nombre: (Recuerde colocar un punto al final)\n"; cin.getline(ing_imc[i].nombre, 20, '.'); cout<<"ingrese la cedula: \n"; cin>>ing_imc[i].cedula; cout<<"ingrese el peso: \n"; cin>>ing_imc[i].peso; cout<<"ingrese la estatura: \n"; cin>>ing_imc[i].estatura; ing_imc[i].imc=ing_imc[i].peso/pow(ing_imc[i].estatura,2); 16

//Procedimiento Evaluación void evaluacion (Datos_IMC eval_im[ ], int n) int i; for(i=0; i<n; i++) if(eval_imc[i].imc<18.5) strcpy(eval_imc[i].eval,"infrapeso"); else if (eval_imc[i].imc>=18.5 && eval_imc[i].imc<25) strcpy(eval_imc[i].eval,"normal"); else if (eval_imc[i].imc>=25 && eval_imc[i].imc<30) strcpy(eval_imc[i].eval,"sobrepeso"); else if(eval_imc[i].imc>=30) strcpy(eval_imc[i].eval,"obeso"); // Procedimiento Mostrar void mostrar (Datos_IMC ing_imc[ ], int n) int i; cout<<" Resultados de la Encuesta \n"; cout<<"nombre"<<setw(20)<<"cedula"<<setw(10)<<"imc"<<setw(15)<<"evaluacion"<<endl; for(i=0; i<n; i++) cout<<ing_imc[i].nombre<<" "; cout<<left<<ing_imc[i].cedula<<setw(15); cout<<left<<setprecision(2)<<ing_imc[i].imc<<setw(15); cout<<left<<ing_imc[i].eval<<endl; /*********************PROGRAMA PRINCIPAL*******************************/ void main () Datos_IMC Encuesta[N]; int i, opcion=1; while (opcion>=1 && opcion<3) opcion= menu(); switch(opcion) case 1: clrscr(); ingreso (Encuesta, N); 17

break; evaluacion (Encuesta, N); case 2: clrscr(); mostrar (Encuesta, N); getch(); break; case 3: system ("PAUSE"); break; // Switch // While // Main 18