Este documento describe el uso de subprogramas en C++, incluyendo procedimientos, funciones, variables globales y locales. Explica cómo crear subprogramas que calculen el cuadrado de un número y la hipotenusa, además de pasar argumentos y usar variables entre subprogramas.
0 calificaciones0% encontró este documento útil (0 votos)
89 vistas10 páginas
Este documento describe el uso de subprogramas en C++, incluyendo procedimientos, funciones, variables globales y locales. Explica cómo crear subprogramas que calculen el cuadrado de un número y la hipotenusa, además de pasar argumentos y usar variables entre subprogramas.
Este documento describe el uso de subprogramas en C++, incluyendo procedimientos, funciones, variables globales y locales. Explica cómo crear subprogramas que calculen el cuadrado de un número y la hipotenusa, además de pasar argumentos y usar variables entre subprogramas.
Este documento describe el uso de subprogramas en C++, incluyendo procedimientos, funciones, variables globales y locales. Explica cómo crear subprogramas que calculen el cuadrado de un número y la hipotenusa, además de pasar argumentos y usar variables entre subprogramas.
Descargue como DOC, PDF, TXT o lea en línea desde Scribd
Descargar como doc, pdf o txt
Está en la página 1/ 10
UdeMM Docente:
Universidad de la Marina Mercante Mg. Prof. Carlos Desmaras
Informtica II / Algoritmos y Estructura de Datos carlosdesmaras@yaoo.com Subprogramas usando Visual C++ Los subprogramas pueden ser: Procedimientos (void, que no devuelve ningn valor). Funciones del programador (tipo y return, ya que devuelven un solo valor). Funciones de biblioteca, que las provee el lenguaje C. Funciones !P", que las provee #indo$s. %eremos los dos primeros tipos de subprogramas: los procedimientos y &unciones del programador. !dem's del (ec(o que una &unci)n devuelve un valor y los procedimientos ninguno, en los dos casos mencionados anteriormente, podemos trabajar con variables globales con las que compartiremos valores entre distintos subprogramas (lo veremos m's adelante). %entajas del uso de los subprogramas: *irven para trabajar en grupo. *e trabaja con m)dulos. +'s &'cil de encontrar el error. ,l c)digo es reutili-able. Programas m's cortos. Programas m's entendibles. P'gina . UdeMM Docente: Universidad de la Marina Mercante Mg. Prof. Carlos Desmaras Informtica II / Algoritmos y Estructura de Datos carlosdesmaras@yaoo.com %eremos un ejemplo: // programa principal que llama a un subprograma que // calcule el cuadrado y llamamos a una funcin que // calcula la hipotenusa #include "stdafx.h" #include "Math.h" //este es el prototipo de la funcin cuadrado //el prototipo puede ser lo mismo que aparece al principio //de la funcin, pero terminando con un punto y coma int cuadrado(int z); //no es necesario en el prototipo ponerle la ariable, //sino, con el tipo basta //por e!emplo" //int cuadrado#int$; oid main #oid$ % int x,y; float hipotenusa; printf#"ingrese x e y "$; scanf #"&i &i",'x,'y$; //llamamos ( eces a la funcin cuadrado, //pero con distintos argumentos" //la primera ez con x y la segunda con y hipotenusa ) sqrt# cuadrado(x) * cuadrado(y) $; printf#"+n,ados"+nx ) &i+ny ) &i", x, y$; printf#"+n -ipotenusa ) &.(f+n", hipotenusa$; . int cuadrado#int z$% ///sta es una funcin //antes del nombre del par0metro #tambi1n llamado //argumento$ anteponemos un tipo, que nuestro //e!emplo es int, el que se hace equialente al //alor eniado, que en nuestro e!emplo es x //y luego y. int cua; cua)z2z; //3a funcin debe retornar un alor. return cua; . La &unci)n puede ser simpli&icada de la siguiente manera int cuadrado#int z$% return z2z; . P'gina / UdeMM Docente: Universidad de la Marina Mercante Mg. Prof. Carlos Desmaras Informtica II / Algoritmos y Estructura de Datos carlosdesmaras@yaoo.com *i el programa 0main1 est' al &inal de todos los subprogramas, no son necesarios los prototipos. ,l siguiente ejemplo es el mismo programa que el anterior, sin prototipo, pero los subprogramas est'n antes que el programa principal (0main1).
#include "stdafx.h" #include "Math.h" int cuadrado(int z)% int cua; cua)z2z; return cua; . oid main #oid$ % int x,y; float hipotenusa; printf#"ingrese x e y "$; scanf #"&i &i",'x,'y$; hipotenusa ) sqrt# cuadrado(x) * cuadrado(y) $; printf#"+n,ados"+nx ) &i+ny ) &i", x, y$; printf#"+n -ipotenusa ) &.(f+n", hipotenusa$; . P'gina 2 UdeMM Docente: Universidad de la Marina Mercante Mg. Prof. Carlos Desmaras Informtica II / Algoritmos y Estructura de Datos carlosdesmaras@yaoo.com ,jemplo de una &unci)n adentro de otra. // /l programa principal llama a una funcin que // calcula la hipotenusa // y este a su ez a uno que calcula el cuadrado #include "stdafx.h" #include "Math.h" int cuadrado(int z); //prototipo float hipo(int h, int i); //prototipo oid main #oid$ % int x,y; int a,b; float hipotenusa; printf#"ingrese x e y "$; scanf #"&i &i",'x,'y$; a ) cuadrado(x); b ) cuadrado(y); hipotenusa ) hipo(x, y); printf#"+nel cuadrado de x es"+nx ) &i+ny ) &i", a, b$; printf#"+n-ipotenusa ) &.(f+n", hipotenusa$; . int cuadrado(int z)% return z2z; . float hipo#int h, int i$% float hipotenusa; hipotenusa ) sqrt# cuadrado(h) * cuadrado(i) $; return hipotenusa; . P'gina 3 UdeMM Docente: Universidad de la Marina Mercante Mg. Prof. Carlos Desmaras Informtica II / Algoritmos y Estructura de Datos carlosdesmaras@yaoo.com Variables globales y locales 4na variable global es usada por los distintos subprogramas y mantiene su valor. 4na variable local es una variable de&inida dentro de un subprograma, y tendr' vida y valores solamente dentro de ese subprograma. *i (ubiera una variable local con el mismo nombre que una variable global, realmente son dos variables di&erentes, por m's que tengan el mismo nombre. ,jemplo de variables globales: ///l programa principal llama a una funcin que calcula la //hipotenusa y este a su ez a uno que calcula el cuadrado #include "stdafx.h" #include "Math.h" float hipo(); //prototipo int cuadrado(int z); //prototipo //definimos a x e y como ariables globales int x ,y ; oid main# oid $ % float h; printf# "ingrese x e y " $; scanf # "&i &i", 'x, 'y $; h ) hipo(); printf# "+n-ipotenusa ) &.(f+n", h $; . int cuadrado( int z )% return z2z; . float hipo()% float hipotenusa; hipotenusa ) sqrt# cuadrado(x) * cuadrado(y) $; return hipotenusa; . 5Cuales son las variables globales y cuales son las locales6 Las variables globales son x e y. La variable local del main es h. 7o (ay variables locales en la &unci)n cuadrado, ya que z es un par'metro o argumento. La variable local de la &unci)n hipo es hipotenusa. P'gina 8 UdeMM Docente: Universidad de la Marina Mercante Mg. Prof. Carlos Desmaras Informtica II / Algoritmos y Estructura de Datos carlosdesmaras@yaoo.com ,jercicio: ,n el siguiente programa ingresamos dos valores pero nos devuelve un valor que no corresponde. Por ejemplo ingresamos 2 y 3 y no devuelve 8. 9escubra el error y justi&:quelo ,n la siguiente p'gina encontrara la respuesta. #include "stdafx.h" #include "Math.h" float hipo(); int cuadrado(int z); //definimos a x e y como ariables globales int x ,y ; oid main #oid$ % float hipotenusa; printf#"ingrese x e y "$; scanf #"&i &i",'x,'y$; hipotenusa ) hipo(); printf#"+n-ipotenusa ) &.(f+n", hipotenusa$; . int cuadrado(int z)% return z2z; . float hipo()% int x, y; float hipotenusa; hipotenusa ) sqrt# cuadrado(x) * cuadrado(y) $; return hipotenusa; . P'gina ; UdeMM Docente: Universidad de la Marina Mercante Mg. Prof. Carlos Desmaras Informtica II / Algoritmos y Estructura de Datos carlosdesmaras@yaoo.com <espuesta del ejercicio de la p'gina anterior. ,l error es que las variables x e y (an sido de&inidas como variables globales y dentro de la &unci)n 0(ipo1 (an vuelto a ser de&inidas, pero en este caso como variables locales a esta &unci)n. Cuando se lo invoca, se usan las variables locales, y como no se le asignaron valores tienen asignado 0basura1, por lo que vemos un valor e=tra>o. ,n otras versiones de C++, como por ejemplo Visual C++, este programa no compila porque nos da un error. P'gina ? UdeMM Docente: Universidad de la Marina Mercante Mg. Prof. Carlos Desmaras Informtica II / Algoritmos y Estructura de Datos carlosdesmaras@yaoo.com @tro ejemplo: ,sta ve- usaremos una matriz global. ,l enunciado del ejercicio es: ingrese n valores y mustrelos en forma contraria al orden ingresado (los primeros sern los ltimos), o LIFO (Last In First Out). La variable n se ingresa desde la &unci)n 0fLeoN1. La matri- se carga desde el procedimiento 0proCarga1. La salida se e&ectua desde el procedimiento 0proLIFO1. #include "stdafx.h" #include "Math.h" int fLeoN#$; oid proCarga#int$; oid proLIFO#int$; //definimos una matriz global sobredimensionada int mat!""#; oid main #oid$ % int n; n ) fLeoN#$; proCarga#n$; proLIFO#n$; . int fLeoN#$ % int z; printf#"4ngrese 5" "$; scanf#"&i",'z$; return z; . oid proCarga#int n$% int i; for#i)6;i7n;i**$% printf#"+n4ngrese un alor para la posicion &i" ",i*8$; scanf#"&i",'mat9i:$; . . oid proLIFO#int n$% int i; for# i)n;8 ; i<)6 ; i;; $% printf#"+n&i",mat9i:$; . printf#"+n"$; . P'gina A UdeMM Docente: Universidad de la Marina Mercante Mg. Prof. Carlos Desmaras Informtica II / Algoritmos y Estructura de Datos carlosdesmaras@yaoo.com @bserve que vemos listados los subprogramas. P'gina B UdeMM Docente: Universidad de la Marina Mercante Mg. Prof. Carlos Desmaras Informtica II / Algoritmos y Estructura de Datos carlosdesmaras@yaoo.com ,n el siguiente ejemplo, pasamos todo un vector a un subprograma, en el que lo mostraremos por pantalla. ,n otras palabras, el vector esta ve- no va a ser global, sino ser' pasado como argumento #include "stdafx.h" oid procedimiento# int =9: $ ; //>rototipo oid main #oid$ % int ector9: ) % 8, (, ?, @ .; procedimiento# vector $; . oid procedimiento# int $# $ % int i; for# i)6 ; i7)? ; i** $ printf# "+n>osicion &i" &i", i, =9i: $; printf# "+n" $; . Pasamos al procedimiento el vector llamado 0vector1, y lo recibimos en el subprograma como 0$#1. @bserve que a 0$#1 no se le especi&ica la dimensi)n. La salida es: 8 ( ? @ P'gina .C