Está en la página 1de 18

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

UNIDAD II FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA

2.1. ESTRUCTURA GENERAL DE UN PROGRAMA


Caractersticas De Los Programas.
Para un determinado problema se pueden construir diferentes algoritmos de resolucin o programas. La eleccin del ms adecuado se debe basar en una serie de requisitos de calidad que adquieren gran importancia a la hora de evaluar el costo de su diseo y mantenimiento. Las caractersticas generales que debe reunir un programa son las siguientes: 1. LEGI ILIDAD Ha de ser claro y sencillo de tal forma que facilite su lectura y compresin. 2. PORTA ILIDAD !u diseo debe permitir la codificacin en diferentes lengua"es de programacin as como su instalacin en diferentes sistemas. !. MODIFICA ILIDAD Ha de facilitar su mantenimiento esto es las modificaciones y actuali#aciones necesarias para adaptarlo a una nueva situacin. ". EFICIENCIA !e deben aprovechar al m$imo los recursos de la computadora minimi#ando la memoria utili#ada y el tiempo de proceso o e"ecucin siempre que no sea a costa de los requisitos anteriores. Meto#o$oga De La Programaci%& .% &s el con"unto de m'todos y t'cnicas disciplinadas que ayudan al desarrollo de unos programas que cumplan los requisitos anteriormente e$puestos. Los m'todos propuestos utili#ados tanto e$plicita como implcitamente son el m'todo de programacin modular y el de programacin estructurada. MODULARIDAD &l diseo modular descendente o mediante refinamientos sucesivos (top%do)n step)ise refinemente* se basa en la reali#acin de una serie de descomposiciones sucesivas del algoritmo inicial que describen el refinamiento progresivo del repertorio de instrucciones que van a constituir el programa. +n programa quedara formado por una serie de mdulos cada uno de los cuales reali#a una parte concreta de la tarea total.

'.

____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 12

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

() ESTRUCTURACION !e basa en el uso e$clusivo de las estructuras secuencia alternativa e iteracin para el control de flu"o de e"ecucin de las instrucciones. Los programas as diseados sern fciles de verificar depurar y mantener.

Esti$os De Programaci%&

+n programa de computadora es un con"unto de instrucciones% ordenes dadas a la mquina% que producirn la e"ecucin de una tarea determinada. &n esencia un P,-.,/0/ es un medio para conseguir un fin. &l fin ser normalmente definido como la informacin necesaria para solucionar un problema. &l proceso de Programaciones por consiguiente un proceso de solucin de problemas.

C$ari#a# * Sim+$i,icaci%& De U& Programa

1on el fin de facilitar la e$plotacin y el mantenimiento de un programa es fundamental que 'ste se acompae de una documentacin amplia clara y precisa. &n ella deben figurar desde las especificaciones obtenidas de la fase de anlisis del problema hasta los detalles acerca de cmo sacar el m$imo rendimiento del mismo.

A-to#oc-me&taci%&

Las palabras reservadas que emplean los lengua"es de alto%nivel constituyen en si mismas parte de la documentacin ya que corresponden a t'rminos (en ingles* que e$presan su cometido. 2o obstante se me"ora la documentacin interna de un programa si se siguen los criterios enumerados a continuacin: +so de identificadores adecuados para nombrar las variables constantes subprogramas etc. 3eclaracin de constantes para valores fi"os. Por e"emplo4 declarar la constante 56/ para el valor 7 89. !angrado paginacin e intercalacin de lneas en blanco para dar un aspecto agradable al programa.

I#e&taci%& * Formato
-tro aspecto a considerar es el m'todo elegido para describir los algoritmos4 empleo de identacin (sangrado o "ustificacin* en escritura de algoritmos. &n la actualidad es tan importante la escritura de programas como su posterior lectura. &llo se facilita con la identacin de las acciones interiores a las estructuras fundamentales citadas: selectivas y repetitivas. / lo largo de todo el curso la identacin o sagrado de los algoritmos ser norma constante. &n el formato se tomara en cuenta la paginacin e intercalacin de lneas en blanco para dar un aspecto agradable al programa.

Come&tarios

!on frases e$plicitas que se insertan en cualquier lugar del programa fuente y que son ignoradas por el compilador (no son traducidas al lengua"e ob"eto y por tanto no ocupan memoria adicional*.
____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 13

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

!e deben incluir tantos comentarios como sean necesarios para aclarar el significado del as lneas de cdigo que no son obvias especialmente respecto a: Las variables y estructuras de datos declarados. Las estructuras de control (bucles alternativas*. Los subprogramas y su s parmetros. Las secciones confusas.

2.2. TIPOS DE DATOS * OPERADORES


2.2.1. TAMAO, DECLARACIN, MODIFICADORES

Los 53&2:5;51/3-,&! son palabras creadas por el programador para dar nombre a los ob"etos y dems &L&0&2:-! que necesita declarar en un programa4 variables constantes tipos estructuras de datos archivos subprogramas etc. !e denominan 3/:-! a las caractersticas propias de cualquier identidad. Por e"emplo la edad y el domicilio de una persona forman parte de sus datos. Los programas procesan datos a fin de obtener resultados o informacin <tiles. 1ada variable constante o e$presin lleva asociado un tipo de datos que determina el con"unto de valores que pueden tomar. Los tipos de datos pueden ser !50PL&! o elementales y &!:,+1:+,/! 3& 3/:-! o estructurados ver la siguiente figura:

NUMERICOS SIMPLES NO NUMERICOS

ENTERO REAL CAR.CTER OOLEANO USUARIO ESTATICAS /ECTOR MATRI0 POLIEDRO LISTA PILA COLA AR OL SECUENCI AL DIRECTO INDE2ADO DE

TIPOS DATOS

DE

INTERNAS DINAMICAS ESTUCTUR A DE DATOS

FIC1EROS E2TERNAS ASE

____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 14

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

DATOS

/ continuacin estudiaremos los tipos simples. &n una primera clasificacin los tipos simples se dividen en num'ricos y no num'ricos. &n los primeros se incluyen las cantidades o magnitudes y en los segundos el resto de datos posibles. +na clasificacin mas detallada es la e$puesta a continuacin:

Ti+o N-m3rico E&tero

&s un subcon"unto de los n<meros enteros cuyo rango o tamao dependen del lengua"e y computadora utili#ada. Los datos de este tipo se e$presan mediante una cadena de dgitos que pueden ir precedidos de sigo = o %. &>&0PL-!: 8?@A %8B =9977

Ti+o N-m3rico Rea$

&s un subcon"unto de los n<meros reales limitado no solo en cuanto a cuyo tamao sino tambi'n en cuanto a la precisin. !e e$presan de do maneras diferentes denominadas notacin de punto fi"o y notacin e$ponencial. &n la primera un valor consiste en una cadena de dgitos que puede llevar ir precedidos de sigo = o C y un punto decimal intermedio. &>&0PL-!: ?A.@D %8B.77 =7.E

+n valor en notacin e$ponencial tiene la forma mantisa & e$ponente donde mantisa es un n<mero real y e$ponente un n<mero entero y representa la cantidad mantisa multiplicado por 87 al e$ponente. &>&0PL-!: 7.?A@D&B (F7.?A@D $ 87 B F ?A.@D* %8B7777&%D =7.777Ee=9

Ti+o Car4cter

&s un con"unto formado por todos los caracteres o smbolos de que dispone la computadora. !e e$presan mediante el carcter colocado entre comillas o apostrofes. &l con"unto de los caracteres est formado por: Los caracteres alfab'ticos may<sculas4 G/H GIH G1H G3H ... GJH. Los caracteres alfab'ticos min<sculas4 GaH GbH GcH GdH ... G#H. Los caracteres dgitos4 G8H GBH G9H GDH ... G?H. Los caracteres especiales4 G H G=H G%H GKH ... GLH. &n algunos lengua"es de programacin se considera tambi'n como tipo de datos simples el de los literales o cadenas de caracteres de longitud variable (string en ingles*: &>&0PL-!: G/L1/L/H GB@79EH

____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 15

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

G1M Pe# n<m. 8BH

Ti+o

oo$ea&o 5L%gicos6

&s el con"unto formado por los valores ;/L!- y 6&,3/3&,-. !e e$presan con su nombre. &l resultado de las operaciones lgicas est determinado por las tablas de verdad correspondientes a cada una de ellas.

-P&,/3-, 2/ ; 1 no / 1 ; 1 F 15&,:- ; F ;/L!-

-P&,/3-, N / ; ; 1 1 I ; 1 ; 1 /yI ; ; ; 1

-P&,/3-, / ; ; 1 1 I ; 1 ; 1 /oI ; 1 1 1

Co&sta&tes

!on ob"etos cuyo valor permanece invariablemente a lo largo de la e"ecucin de un programa. +na constante es la determinacin de un valor concreto de tal forma que se utili#a su nombre cada ve# que se necesita referenciarlo. &>&0PL-!: P5 F 9.8D8E?B P5 3.141592 & F B.A8@B@8 & 2.718281

____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 16

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

/aria7$es

!on los ob"etos cuyo valor puede ser modificado a lo largo de la e"ecucin de un programa. &>&0PL-!: O 7 O 0 O es una variable de tipo num'rico O O 1 O=8

E8+resio&es

+na e$presin es la representacin de un calculo necesario para la obtencin de un resultado. !e define una e$presin de la siguiente forma: 8. +n valor es una e$presin: &>&0PL-!: 8.BE G/L1/L/H B. +na constante o variable es una e$presin: &>&0PL-!: P5 & O. 9. +na funcin es una e$presin: &>&0PL-!: 1-!(O* !P,(BE* D. +na combinacin de valores constantes variables funciones y operadores que cumplen determinadas reglas de construccin es una e$presin: &>&0PL-!: 1-!(P5KO* = 8.BE BK P5KO 2FG/L1/L/H

Ti+os De E8+resio&es
Las e$presiones seg<n el resultado que producen se clasifican n: 2+0Q,51/!.% !on las que producen resultados de tipo num'rico. !e construyen mediante los operadores aritm'ticos. &>&0PL-!: P5K!P,(O* /L;/2+0&,51/!.% !on las que producen resultados de tipo alfanum'rico. !e construyen mediante los operadores alfanum'ricos. &>&0PL-!: G/L1/L/H = 2 I--L&/2/!.% !on las que producen resultados de tipo 15&,:- o ;/L!-. !e construyen mediante los operadores relacionales y lgicos. &>&0PL-!: /R7 ISE

____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 17

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

O+eracio&es Aritm3ticas.

Para poder reali#ar operaciones aritm'ticas necesitamos de operadores aritm'ticos. &stos operadores permitirn reali#ar operaciones aritm'ticas entre operandos: n<meros constantes o variables. &l resultado de una operacin aritm'tica ser un n<mero.

O+era#or Aritm3tico. ;; ; > @ ) mo# #i?


&"emplos: ? = AK@ C 9T M E ? = ET C 9T M E ? = ET C A.B TE C A.B EA.@

OPERADORES ARITM9TICOS. O+eraci%&. E:em+$o. Pote&cia M-$ti+$icaci%& Di?isi%& S-ma Resta M%#-$o 5resi#-o6 Di?isi%& e&tera ";;! <.2';= 1'>" 12'.=< @ (2.'A ('.!A B !2.!! 1' mo# = 1= #i? !

Res-$ta#o. (" '=.=' !.=' 1<<.2' !2.C= 1 '

A K @ K (8T7 mod 9 KK9* div E K 9 C B@ A K @ K (8T7 mod BA* div E K 89 C B@ A K @ K BE div E K 89 C B@ ET K BE div E K 89 C B@ 8D77 div E K 89 C B@ B@7 K89 C B@ 9TD7 C B@ 9T8B 8E M B K (A = (T@ C 8E K 99 = (DE KK B M 8T* M 9* M 8E* = 8? 8E M B K (A = (T@ C 8E K 99 = (B7BE M 8T* M 9* M 8E* = 8? 8E M B K (A = (T@ C 8E K 99 = (8BT.ETBE* M 9* M 8E* = 8? 8E M B K (A = (T@ C D?E = 8BT.ETBE M 9* M 8E* = 8? 8E M B K (A = (T@ C D?E = DB.8@AE* M 8E* = 8? 8E M B K (A = (%DBA = DB.8@AE* M 8E* = 8? 8E M B K (A = (%9@D.@8BE* M 8E* = 8? 8E M B K ( A C BE.TED* = 8? 8E M B K (%8@.TED8* = 8? A.E K %8@.TED8 = 8? %89?.?7TB = 8? %8B7.?7TB /l evaluar e$presiones que contienen operadores aritm'ticos debemos respetar la "erarqua en el orden de aplicacin. &s decir si tenemos en una e$presin ms de un
____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 18

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

operador debemos duplicar primero el operador debemos aplicar primero el operador de mayor "erarqua resolver esa operacin y as sucesivamente.

DERAREUFA DE LOS OPERADORES ARITM9TICOS OPERADOR DERAREUFA OPERACIGN ;; maHor Pote&cia ;I >I mo#I #i?. M-$ti+$icaci%&I #i?isi%&I m%#-$oI #i?isi%& e&tera. @I ) Me&or S-maI resta. E8+resio&es L%gicas.

Las e$presiones lgicas o booleanas llamadas as en honor del matemtico .eorge Ioole estn constituidas por n<meros constantes o variables y operadores lgicos o relacionales. &l valor que pueden tomar estas e$presiones es el de verdadero o falso. !e utili#an frecuentemente en las estructuras selectivas (dependiendo del resultado de la evaluacin se toma por un determinado camino alternativo* y en las estructuras repetitivas ( dependiendo del resultado de la evaluacin se contin<a con el ciclo o se interrumpe el mismo*. Los operadores relacionales son operadores que permiten comparar dos operandos. Los operandos pueden ser n<meros alfanum'ricos constantes o variables. Las constantes o variables a su ve# pueden ser del tipo entero real carcter o cadena de caracteres. &l resultado de una e$presin con operadores relacionales es verdadero o falso.

OPERADOR. J OP O P OJ PJ
&>&0PL-: OFT I F A.@

OPERADORES RELACIONALES. OPERACIGN. EDEMPLO. Ig-a$ K-e LMo$aN J L$o$aN Di,ere&te a LaN O P L7N Me&or K-e = O 1' MaHor K-e 22 P 11 Me&or o ig-a$ 1'OJ22 K-e MaHor o ig-a$ !'PJ2A K-e

RESULTADO. FALSO /ERDADERO /ERDADERO /ERDADERO FALSO /ERDADERO

(O K E = I KK 9 M D* SF (O KK 9 div I* (O K E = DAD.EEB M D* SF (O KK 9 div I* (97 = DAD.EEB M D* SF (O KK 9 div I* (97 = 88@.T9@* SF (O KK 9 div I* (8D@.T9@* SF (O KK 9 div I* 8D@.T9@ SF (B8T div I* 8D@.T9@ SF BA.T?B9 ;/L!-.

____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 19

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

2.!. FUNCIONES

I LIOTECA

2.3.1. FUNCIONES DE ENTRADA Y SALIDA.


;+215-2&! 3& L5I,&,U/ .% !on subprogramas que efect<an pequeas tareas se rigen por la definicin propia del subprograma conocido como funcin el cual deber devolver un valor al lugar en donde fue mandado a e"ecucin las funciones de librer a son lo que le da potencialidad al lengua"e pues hay una gran cantidad de ellas se han ido incorporando al lengua"e para facilitar el desarrollo de los programas pues nos ahorran tiempo debido a que muchas rutinas ya e$isten en esas libreras y son fciles de incorporar a nuestra funcin principal ( main ( ** o programa principal estas libreras estn agrupadas en archivos en subdirectorio del turbo 1 == llamada 521L+3& para hacer uso de una o ms de estas funciones en el programa principal se deber de declarar la o las libreras que las contienen la manera de hacer lo anterior ser como se muestra a continuacin. Vinclude Snombre de la libreria hR

Vinclude Wnombre de la libreria W


1omo e"emplo se mostrara la declaracin de varias libreras e& un programa.

VincludeSstdio.hR VincludeSconio.hR VincludeSstdlib.hR VincludeSmath.hR


+na de las libreras ms comunes de emplearse y que se consideran de cabecera son stdio.h y conio.h ya que estas contienen dentro de sus funciones las funciones printf( * y scanf( * / continuacin se da la lista de los archivos contenidos e& e$ subdirectorio include del turbo 1 ==.

/LL-1.H /!!&,:.H CD.1 I5-!.H 1-0PL&O.H 1-25-.H 1:NP&.H 35,.H DOS.1 &,,2-.H ;12:L.H ;L-/:.H ;!:,&/0.H .&2&,51.H .,/PH81!H 5-.H 5-0/25P.H 5-!:,&/0.H L505:!.H L-1/L&.H 0/:H.H 0&0.H P,-1:!! H !&:>0PH !H/,&H !:3/,..H !:33&;.H !:35- H !:35-!:,.H !:3L5I.H !:,&/0.H !:,82..H !:,!:,0/H :50&.H
____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 20

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

6/L+&!.H
/lgunas de los archivos no contienen funciones ya &!:-! contienen constantes variables clases de datos estructuras algunas funciones estn definidas en dos o ms archivos de libreras a continuacin se proporcionan algunas de las libreras de uso ms com<n y asi como las funciones contenidas en ellaX L5I,&,U/ !:35-.H % 1ontiene las funciones estndar de enirada Y salida leer del teclado desplegar en pantalla mane"o de archivos lectura y desplegado de datos num'ricos y de ca#e&aI H funciones de entrada M salida de formato especial a continuacin se da la lista de las funciones contenidas en ella clearen% fflush flushall fread f)rite telse fgetc topen freopen getc fcloseall fgetchar tprintt tscant getchar fdopen fuetpos 5pulc tseeZ geis feof fgets tputchar fsetpos get) ferror fileno fputs ftell perror

+ri&t, re&ame ssca&, -&$i&S ?ssca&,

+-to reQi&# strerro ?,+ri&t,

+-tcMar sca&, strerror ?,sca&,

+-ts set7-, tm+,i$e ?+ri&t,

+-tQ set?7-, tiri+&am ?sca&,

remo s+ri&t R&get ?s+ri

L5I,&,U/ 1-25-.H .% &sta libreria contiene as funciones de entrada y salida de consola ( 0onitor * entre las funciones contenidas estn la que permiten desplegar te$to en color para capturar el cdigo del teclado configuracin del color de l te$to y color de fondo mane"an cadenas y caracteres limpiado de pantalla ventanas de te$to locali#acin de caracteres en la pantalla o para posicionar te$to en lugares especficos a continuacin se proporcionan las funciones contenidas en la libreria.

cgets #e$$i&e goto8H &orm te8tco$

cireot getcM MigM?i# +-tcM te8tmo#

cirscr getcMe i&s$i&e +-tte8t -&getcM

c+ri&t, get+ass S7Mit setc-rsort QMere8

c+-ts TT gette8t $oQ?i# te8tatt QMereH

csca&, gette8ti&, Umo?ete8t te8t7acSgr Qi&#oQ

L5I,&,U/ 1:NP& H .% &sta libreria contiene las funciones que permiten identificar o detectar si un carcter es num'rico alfanum'rico de control de impresin etc. adems contiene las funciones que permiten convertir caracteres alfanum'ricos de min<sculas a may<sculas y viceversa.

isai&- isa$+Ma isascii ise&tri is#igit isgra+M is$oQe Vs+ri&t is+-&ct iss+ace is-++er is8#igit toascii to$oQ to$oQe to-++er to-++er
____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 21

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

2.3.2.

FUNCIONES MATEMTICAS

L5I,&,U/ 0/:H.H .% &sta librera contiene las (unciones matemticas a emplearse en $os programas funciones trigonom'tricas trigonom'tricas inversas logartmicas trigonom'tricas hiperblicas valor absoluto redondeo de cantidades elevar un numero a una potencia ra# cuadrada de un numero.

a7s cei$ ,re8+ mo#, ta&

acos eos MH+ot +o$H ta&M T IW

As& cosM $a7s +oQ

ata& e8+ I#e8+ +oQ$O

ata&2 ,a7s $og si&

ato, ,$oor $og$O si&M

ca7s ,mo# matMe sKrt

2.". FUNCIONES GENERADAS POR EL USUARIO


2.4.1. ARGUMENTOS Y PARAMETROS FOR MALES
La forma ms ra#onable de encarar el desarrollo de un programa complicado es aplicar lo que se ha dado en llamar WProgramacin :op % 3o)nW. &sto implica que luego de conocer cual es la meta a alcan#ar se subdivide esta en otras varias tareas concurrentes por e"emplo: Leer un teclado procesar datos mostrar los resultados. Luego a estas se las vuelve a dividir en otras menores: N as se contin<a hasta llegar a tener un gran con"unto de pequeas y simples tareas del tipo de Wleer una teclaW Wimprimir un carcterW. Luego slo resta abocarse a resolver cada una de ellas por separado. 3e esta forma el programador slo se las tendr que ver con diminutas pie#as de programa de pocas lneas cuya escritura y correccin posterior es una tarea simple. :al es el criterio con que est estructurado el lengua"e 1 donde una de sus herramientas fundamentales son las funciones. :odo compilador comercial trae una gran cantidad de Libreras de toda ndole matemticas de entrada % salida de mane"o de te$tos de mane"o de grficos etc que solucionan la mayor parte de los problemas bsicos de programacin . !in embargo ser inevitable que en alg<n momento tenga que crear mis propias funciones las reglas para ello son las que desarrollaremos en este captulo . 1omencemos con algunos conceptos bsicos: para hacer que las instrucciones contenidas en una funcin se e"ecuten en determinado momento no es necesario ms que
____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 22

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

escribir su nombre como una lnea de sentencia en mi programa. 1onvencionalmente en 1 los nombres de las funciones se escriben en min<scula y siguen las reglas dadas anteriormente para los de las variables pero deben ser seguidos para diferenciarlas de aquellas por un par de par'ntesis .

3entro de estos par'ntesis estarn ubicados los datos que se les pasan a las funciones. &st permitido pasarles uno ninguno una lista de ellos separados por comas por e"emplo: po)87( a * getch(* strcmp( s8 sB * . +n concepto sumamente importante es que los argumentos que se les envan a las funciones son los 6/L-,&! de las variables y 2- las variables mismas. &n otras palabras cuando se invoca una funcin de la forma po)87( a * en realidad se est copiando en el WstacZW de la memoria el valor que tiene en ese momento la variable a la funcin podr usar este valor para sus clculos pero est garanti#ado que los mismos no afectan en absoluto a la variable en s misma. 1omo veremos ms adelante es posible que una funcin modifique a una variable pero para ello ser necesario comunicarle la 35,&115-2 &2 0&0-,5/ de dicha variable . Las funciones pueden no devolver valores al programa invocante. Hay funciones que tan slo reali#an acciones como por e"emplo clrscr(* que borra la pantalla de video y por lo tanto no retornan ning<n dato de inter's4 en cambio otras efect<an clculos devolviendo los resultados de los mismos. La invocacin a estos dos tipos de funciones difiere algo por e"emplo escribiremos : clrscr(* 4 c F getch(* 4 donde en el segundo caso el valor retornado por la funcin se asigna a la variable c. -bviamente 'sta deber tener el tipo correcto para alo"arla .

Dec$araci%& De F-&cio&es

/ntes de escribir una funcin es necesario informarle al 1ompilador los tamaos de los valores que se le enviarn en el stacZ y el tamao de los valores que ella retornar al programa invocante . &stas informaciones estn contenidas en la 3&1L/,/15-2 del P,-:-:5P- 3& L/ ;+215-2. ;ormalmente dicha declaracin queda dada por : tipo del valor de retorno nombre[de[la[funcin(lista de tipos de parmetros* Pongamos algunos e"emplos : float mi[funcion(int i double " * 4 double otra[funcion(void* 4 otra[mas(long p* 4

____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 23

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

void la[ultima(long double # char y int $ unsigned long )* 4 &l primer t'rmino del prototipo da como hemos visto el tipo del dato retornado por la funcin4 en caso de obviarse el mismo se toma por omisin el tipo int. !in embargo aunque la funcin devuelva este tipo de dato para evitar malas interpretaciones es conveniente e$plicitarlo . Na que el WdefaultW del tipo de retorno es el int debemos indicar cuando la funcin 2retorna nada esto se reali#a por medio de la palabra 6-53 ( sin valor*. 3e la misma manera se act<a cuando no se le enviarn argumentos. 0s adelante se profundi#ar sobre el tema de los argumentos y sus caractersticas. La declaracin debe anteceder en el programa a la definicin de la funcin. &s normal por ra#ones de legibilidad de la documentacin encontrar todas las declaraciones de las funciones usadas en el programa en el H&/3&, del mismo "unto con los include de los archivos K.h que tienen los prototipos de las funciones de Librera.

!i una ms de nuestras funciones es usada habitualmente podemos disponer su prototipo en un archivo de te$to e incluirlo las veces que necesitemos seg<n se vio en captulos previos.

De,i&ici%& De Las F-&cio&es

La definicin de una funcin puede ubicarse en cualquier lugar del programa con slo dos restricciones: debe hallarse luego de dar su prototipo y no puede estar dentro de la definicin de otra funcin ( incluida main(* *. &s decir que a diferencia de Pascal en 1 las definiciones no pueden anidarse.

2-:/: no confundir definicin con llamada4 una funcin puede llamar a tantas otras como desee .

La definicin debe comen#ar con un encabe#amiento que debe coincidir totalmente con el prototipo declarado para la misma y a continuacin del mismo encerradas por llaves se escribirn las sentencias que la componen4 por e"emplo: Vinclude Sstdio.hR float mi[funcion(int i double " *4 MK 3&1L/,/15-2 observe que termina en W4W KM main(* \ float Z 4 int p 4
____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 24

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

double # 4 ........... Z F mi[funcion( p # *4 ........... ] MK fin de la funcin main(* KM float mi[funcion(int i double " * MK 3&;52515-2 observe que 2- lleva W4W KM \ float n ................... printf(W^dW i *4 ................... return ( B K n *4 MK ,&:-,2- devolviendo un valor float KM MK LL/0/3/ a otra funcin KM MK LL/0/3/ a la funcin KM

] Pasemos ahora a describir ms puntualmente las distintas modalidades que adoptan las funciones .

2.4.2. FUNCIONES CON Y SIN ARGUMENTOS

F-&cio&es E-e No Retor&a& /a$or Ni Reci7e& Par4metros

6eamos como e"emplo la implementacin de una funcin WpausaW Vinclude Sstdio.hR void pausa(void* 4 main(* \ int contador F 84 printf(W6/L-, 3&L 1-2:/3-, 3&2:,- 3&L )hile _nW*4 )hile (contador SF 87* \ if(contador FF E * pausa(*4 printf(W^d_nW contador==*4 ] pausa(* 4 printf(W6/L-, 3&L 1-2:/3-, L+&.- 3& !/L5, 3&L )hile: ^dW contador* 4 return 74 ] void pausa(void* \
____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 25

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

char c 4 printf(W_n/P,5&:& &2:&, P/,/ 1-2:52+/, W* 4 )hile( (c F getchar(** `F Y_nY* 4 ] /nalicemos lo hecho en la segunda lnea hemos declarado la funcin pausa sin valor de retorno ni parmetros. Luego esta es llamada dos veces por el programa principal una cuando contador adquiere el valor de E (antes de imprimirlo* y otra luego de finali#ar el loop. Posteriormente la funcin es definida. &l bloque de sentencias de la misma est compuesto en este caso particular por la definicin de una variable c la impresin de un mensa"e de aviso y finalmente un )hile que no hace nada solo espera recibir un carcter igual a S&2:&,R. &n cada llamada el programa principal transfiere el comando a la funcin e"ecutndose hasta que 'sta finalice su propia secuencia de instrucciones. /l finali#ar la funcin esta retorna el comando al programa principal continundose la e"ecucin por la instruccin que sucede al llamado. !i bien las funciones aceptan cualquier nombre es una buena t'cnica de programacin nombrarlas con t'rminos que representen aunque sea vagamente su operatoria . !e puede salir prematuramente de una funcin void mediante el uso de ,&:+,2 sin que este sea seguido de ning<n parmetro valor .

2.4.3. FUNCIONES QUE REGRESAN VALORES

F-&cio&es E-e Retor&a& /a$or

/nalicemos por medio de un e"emplo dichas funciones :

Vinclude Sstdio.hR Vinclude Sconio.hR Vdefine ;/L!- 7 Vdefine 15&,:- 8 int finali#ar(void*4 int lea[char(void* 4 main(* \ int i F 74 int fin F ;/L!-4 printf(W&"emplo de ;unciones que retornan valor_nW*4 )hile (fin FF ;/L!-* \
____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 26

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

i==4 printf(Wi FF ^d_nW i*4 fin F finali#ar(*4 ] printf(W_n_n;52 3&L P,-.,/0/........W*4 return 74 ] int finali#ar(void* \ int c4 printf(W-tro n<mero a (sMn* W*4 do \ c F lea[char(* 4 ] )hile ((c `F YnY* bb (c `F YsY**4 return (c FF YnY*4 ] int lea[char(void* \ int " 4 if( (" F getch(** RRF Y/Y bb " SSF YJY * return( " = ( YaY % Y/Y* * 4 else return " 4 ] /nalicemos paso a paso el programa anterior4 las dos primeras lneas incluirn en el programa los prototipos de las funciones de librera usadas ( en este caso printf(* y getch(* *. &n las dos siguientes damos nombres simblicos a dos constantes que usaremos en las condiciones lgicas y posteriormente damos los prototipos de dos funciones que hemos creado. Podran haberse obviado en este caso particular estas dos <ltimas declaraciones ya que ambas retornan un int (default* sin embargo el hecho de incluirlas har que el programa sea ms fcilmente comprensible en el futuro. 1omien#a luego la funcin main(* iniciali#ando dos variables i y fin donde la primera nos servir de contador y la segunda de indicador lgico. Luego de imprimir el rtulo del programa entramos en un loop en el que permaneceremos todo el tiempo en que fin sea ;/L!-. 3entro de este loop incrementamos el contador lo imprimimos y asignamos a fin un valor que es el retorno de la funcin finali#ar(* .
____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 27

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

&sta asignacin reali#a la llamada a la funcin la que toma el control del flu"o del programa e"ecutando sus propias instrucciones. !altemos entonces a anali#ar a finali#ar(*. &sta define su variable propia c (de cuyas propiedades nos ocuparemos ms adelante* y luego entra en un do%)hile que efect<a una llamada a otra funcin lea[char(* y asigna su retorno a c iterando esta operativa si c no es YnY YsY note que: c `F YnY bb c `F YsY es equivalente a: `( c FF YnY cc c FF YsY * . La funcin lea[char(* tiene como misin leer un carcter enviado por el teclado ( lo reali#a dentro de la e$presin relacional del 5; * y salvar la ambigdedad del uso de may<sculas min<sculas en las respuestas convirtiendo las primeras en las segundas. &s fcil de ver que si un carcter esta comprendido entre / y J se le suma la diferencia entre los /!155 de las min<sculas y las may<sculas ( ?A % TE F 9B * para convertirlo y luego retornarlo al invocante. &sta conversin fu' incluida a modo de e"emplo solamente ya que e$iste una de Librera tolo)er(* declarada en ctype.h que reali#a la misma tarea. 1uando lea[char(* devuelva un carcter n s se saldr del do%)hile en la funcin finali#ar(* y se retornar al programa principal el valor de la comparacin lgica entre el contenido de c y el /!155 del carcter n. !i ambos son iguales el valor retornado ser 8 (15&,:-* y en caso contrario 7 ( ;/L!- * . 0ientras el valor retornado al programa principal sea ;/L!- este permanecer dentro de su )hile imprimiendo valores sucesivos del contador y llamadas a las funciones hasta que finalmente un retorno de 15&,:- ( el operador presion la tecla n* hace terminar el loop e imprimir el mensa"e de despedida. 2ota: preste atencin a que en la funcin finali#ar(* se ha usado un do%)hile .L1mo modificara el programa para usar un )hile a. &n la funcin lea[char se han usado dos returns de tal forma que ella sale por uno u otro. 3e esta manera si luego de finali#ado el else se hubiera agregado otra sentencia esta "ams sera e"ecutada. &n el siguiente e"emplo veremos funciones que retornan datos de tipo distinto al int. 3ebemos presentar antes otra funcin muy com<n de entrada de datos: scanf(* que nos permitir leer datos completos (no solo caracteres* enviados desde el teclado su e$presin formal es algo similar a la del printf(* scanf(Wsecuencia de controlW direccin de la variable *4 3onde en la secuencia de control se indicar que tipo de variable se espera leer por e"emplo : ^d si se desea leer un entero decimal ^o W W ^$ W W ^c W W W W W W W W W W W octal W W (int*

he$adecimal

W W caracter

^f leer un flot ^ld leer un long int ^lf leer un double


____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 28

FUNDAMENTOS DE PROGRAMACION ESTRUCTURADA UNIDAD II ____________________________________________________________________________________________________

^Lf leer un long double Por Wdireccin de la variableW deber entenderse que se debe indicar en ve# del nombre de la variable en la que se cargar el valor leido la direccin de su ubicacin en la memoria de la mquina. &sto suena sumamente apabullante pero por ahora solo diremos (ms adelante abundaremos en detalles * que para ello es necesario simplemente anteponer el signo b al nombre de la misma . /s si deseo leer un entero y guardarlo en la variable Wvalor[leidoW escribir': scanf(W^dW bvalor[leido*4 en cambio si deseara leer un entero y un valor de punto flotante ser: scanf(W^d ^fW bvalor[entero bvalor[punto[flotante* 4 &l tipo de las variables deber coincidir &O/1:/0&2:& con los e$presados en la secuencia de control ya que de no ser as los resultados son impredecibles.

____________________________________________________________________________________________________ FUNDAMENTOS DE PROGRAMACN ING. OSORNIO 29

También podría gustarte