Vous êtes sur la page 1sur 8

Programacin I

Gua de estudio 2

Universidad Nacional Experimental de Guayana rea de Inform tica Programacin #ateria" I !arrera" Ingeniera Inform tica $emestre" II

Gua de estudio 2
I Parte: Funciones y Procedimientos Introduccin
Una de las estrategias m s efectivas en la solucin de pro%lemas comple&os es 'divide y vencer s() o en ingl*s '+ivide and con,uer-) *sta utili.a la metodologa '/op0+o1n-) o descendente) ,ue consiste en dividir un pro%lema comple&o en un con&unto de su%pro%lemas m s sencillos2 En este estilo de programacin modular) los su%programas son independientes unos de otros2 Esta metodologa permite" +ise3ar y desarrollar m s f cilmente los programas" cada mdulo se puede reali.ar por separado y de forma Independiente2 4ocali.ar m s f cilmente los errores" cada mdulo se puede pro%ar en forma independiente2

Subprogramas
Un programa en Pascal consiste de uno o m s mdulos) los cuales a su ve. tam%i*n pueden estar constituidos por otros mdulos) y as sucesivamente2 Estos mdulos ser n llamados) en t*rminos generales) $U5P67G68#8$) y en particular P67!E+I#IEN/7$ y 9UN!I7NE$2 Un su%programa es un %lo,ue de programa ,ue reali.a una tarea determinada) y ,ue al llam rsele o invoc rsele puede necesitar ,ue se le pasen P868#E/67$2 Un su%programa puede ser invocado desde cual,uier punto del programa) por medio de una instruccin IN:7!8+7682 4os par metros son canales de comunicacin ,ue proveen un mecanismo para intercam%iar informacin entre programas y su%programa) van asociados a varia%les y constantes) expresiones) etc y se identifican con los correspondientes identificadores o expresiones2 4os par metros ,ue se utili.an en la declaracin de su%programas se llaman P868#E/67$ 976#84E$ o ficticios y los ,ue se utili.an en la invocacin) se denominan P868#E/67$ 8!/U84E$) reales o argumentos2 4a cantidad de los par metros actuales y formales de%e ser igual y el tipo de%e corresponder en el orden de declaracin2

1. Procedimientos
Un procedimiento es un su%programa ,ue reali.a alguna de las tareas del programa) y ,ue no devuelve ning;n valor al su%programa ,ue lo invoc2 Un procedimiento est compuesto de un grupo de sentencias a las ,ue se asigna un nom%re <identificador= y constituye una unidad del programa2 4a tarea asignada al procedimiento se e&ecuta siempre ,ue Pascal encuentra el nom%re del procedimiento2 4a declaracin indica las instrucciones a e&ecutar2 Un procedimiento es llamado en un programa o dentro de otro procedimiento directamente por su nom%re en cual,uiera de las dos formas"

nombre_procedimiento nombre_ procedimiento (lista parmetros actuales)

Programacin I

Gua de estudio 2

En Pascal es o%ligatorio declarar los procedimientos antes de ser referenciados en el cuerpo del programa

1.1.

Declaracin de un procedimiento

4a sintaxis para declarar un procedimiento es" 9ormato 1" procedure nombre_procedimiento; declaraciones locales " pueden declararse constantes) declaraciones locales y tipos varia%les y su%programas propios del subprogramas procedimiento2 begin cuerpo del procedimiento: con&unto de instrucciones cuerpo del procedimiento ,ue reali.an las acciones ,ue de%e reali.ar el end> procedimiento 9ormato 2" procedure p1>p2>22 lista de par metros formales y su nombre_procedimiento( p1>p2>222 ); tipo declaraciones locales y su%programas %egin cuerpo del procedimiento end; 4a existencia de parmetros formales depender de la naturale.a del procedimiento) esto es) de la tarea ,ue va a reali.ar y de la forma en ,ue lo ?a estructurado su creador2 1.2. In ocacin al procedimiento

Para invocar a un procedimiento) la sintaxis es" @nombre_de_procedimiento ! "parmetros_actuales # ; 4a existencia de par metros actuales depender utili.ado par metros formales2 de si en la declaracin del procedimiento se ?an

Program #enu> AEl siguiente programa presenta las opciones de un men; y luego indica cual fue seleccionadaB :ar 7pcin" c?ar ; procedure Presentar$%pciones; %egin 1riteln <C#enu de 7pcionesC=> &riteln "'(: (brir (rc)i o '#; &riteln "'*: *errar (rc)i o '#; &riteln "'I: Imprimir (rc)i o '#; &riteln "'P: Preparar (rc)i o '#; 1riteln <C$" $alir C=> 1riteln <C$eleccione una opcin 00D C=> end> 5egin presentarEopciones> read<opcion=> Friteln<G4a opcin seleccionada fue" G)opcion=> End2

Programacin I

Gua de estudio 2

2. Funciones
Una funcin es un su%programa ,ue reci%e como argumentos o par metros) datos de tipos num*rico o no num*rico) y devuelve un ;nico resultado2 Esta caracterstica le diferencia esencialmente de un procedimiento2 4a diferencia principal entre un procedimiento y una funcin es ,ue el identificador de la funcin asume un valor) y cuando la funcin termina su tarea) devuelve ese valor al mdulo ,ue la invoc> mientras ,ue el procedimiento no devuelve ning;n valor2 Puesto ,ue el nom%re de la funcin toma un valor) dic?o nom%re de%e tener asociado un tipo de dato2 2.1. Declaracin de +unciones

4a declaracin de una funcin tiene la siguiente forma" 9ormato" function NombreF <p1;p;,... ="tipoFunction Adeclaraciones locales y su%programasB %egin <cuerpo de la funcin> Nombre ! valor de la funcin end; E&emplos" function verifica " %oolean > A 9uncin sin par metros formalesB function cam%ia<:ar valorE1) valorE2" real="real> function potencia< %ase) exponente " real ="real> declaraciones locales " pueden declararse constantes) tipos varia%les y su%programas propios de la funcin2 cuerpo de la funcin: con&unto de instrucciones ,ue reali.an las acciones ,ue de%e reali.ar el procedimiento p1,p2,... lista de par-metros +ormales y su tipo tipoFunction: tipo de dato del resultado .ue de uel e la +uncin

2.2.

In ocacin de +unciones

Una funcin es llamada por su nom%re) en una sentencia de asignacin) en una sentencia de salida o como parte de una expresin aritm*tica) lgica o relacional) seg;n sea el tipo de la funcin2 $e puede llamar o invocar una funcin en cual,uiera de las siguientes formas" id$/ar :0 @nom%reEfuncinD par metrosElocales es una lista de varia%les yJo constantes "par-metros$locales# ; separadas por comas2 4a existencia de par metrosElocales Friteln <I 1nombre$+uncin! depender de ,ue existan par metros formales en la "par-metros$locales#2 # declaracin de la funcin 34emplo de Funciones Prede+inidas en Pascal coseno de x cos<x"real= " ra6 cuadrada de 5 s.rt"5:real# : logaritmo neperiano de ln"5:real# : 5 parte decimal de 5 +rac"5:real#: sucesor de 5 succ"5:tipo ordinal#: odd"5:integer# : sin"5:real# : s.r"5:real#: abs"5:real# : int"5:real# : pi "7no args.7# si 5 es o no impar seno de 5 cuadrado de 5 alor absoluto de 5 parte entera de 5 alor de la constante pi

Programacin I

Gua de estudio 2

Program 8umeros$Pares; 93l siguiente programa imprime los n:meros pares de un con4unto de n n:meros naturales; *onst n 0 <; :ar numero) i" integer> 9unction EsEpar<num"integer="%oolean> :ar par" %oolean> %egin par"L false> if <num #7+ 2 L M= t?en par :0 true; 3s$par :0 par end; 5egin for i"L 1 to n do %egin &riteln "'3scriba un numero'#; read"numero# I+ 3s$par"numero# t)en &riteln"numero#; end 3nd. Diferencias entre procedimientos y funciones: 1 1 4as funciones normalmente) devuelven un solo valor a la unidad de programa <programa principal u otro su%programa= ,ue la referencia o llama2 4os procedimientos pueden devolver cero) uno o varios valores2 En el caso de no devolver ning;n valor) reali.an alguna tarea tal como alguna operacin de entrada J salida2 1 1 8 un nom%re de procedimiento no se puede asignar un valor) y por consiguiente ning;n tipo esta asociado con un nom%re de procedimiento2 1 1 Una funcin se referencia utili.ando su nom%re en una instruccin <de asignacin o expresin matem tica=) mientras ,ue un procedimiento se referencia por una llamada o invocacin al mismo2 Por e&emplo) calcular la ra. cuadrada de un n;mero2 4a codificacin del programa sera"

Program 6ai.Ecuadrada> AEl siguiente programa calcula la ra. cuadrada de un n;meroB :ar rai.) numero " real> A+eclaracin de la funcin rai.EcuadB function rai.Ecuad< a " real = " real > :ar x " real > %egin 5 :0 s.rt"a# ; rai6$cuad :0 5 93l resultado se asigna a nombre$+uncin; end; 5egin 6ead4n<numero= > rai."Lrai.Ecuad<numero=> AInvoca a la funcin rai.EcuadB Frite4n<G rai. es igual a " G)rai."=> End2

Programacin I

Gua de estudio 2

=. >mbito de ariables o constantes


4as varia%les se clasifican en 47!84E$ y G47584E$2 Una varia%le 47!84 es una varia%le declarada dentro de un su%programa) y el significado de dic?a varia%le se limita a ese su%programa y a los mdulos ,ue *ste contiene2 !uando otro su%programa utili.a el mismo nom%re de varia%le) se crea una varia%le diferente en otra posicin de la memoria2 Por eso) si un su%programa asigna un valor a una de las varia%les locales) tal valor no es accesi%le a los otros su%programas2 Una varia%le G47584) se utili.a cuando se desea ,ue otros su%programas tengan acceso al valor de una varia%le) lo cual se logra declar ndola en el mdulo ,ue a%arca a dic?os su%programas2 Ejemplo: Program anidado> !onst #L2HM> :ar i)&"real> procedure 8<:ar i"real=> :ar r)s"%olean> function 5<g"real="%olean> :ar m)n"c?ar> %egin I end> %egin 5<N2M= end> 5egin 8<i= End2 6eferencias de identificadores v lidos" 5lo,ue Identificad $ignificado de cada identificador or constante glo%al varia%les glo%ales procedimiento anidado par metros de 8 varia%les locales de 8 y glo%al de 5 funcin local varia%le declarada en anidado funcin declarado en anidado constante anidado glo%al declarada en declarado en i)& 8 8 i r)s 5 & 5 # 5 g m)n r)s i y 8

anidado #

par metros de 5 varia%les locales varia%le declarada en 8 par metro de 8 varia%le declarada en anidado procedimiento anidado declarado en

Programacin I

Gua de estudio 2

5 #

funcin declarada en anidado constante anidado glo%al declarada en

?. Paso de par-metros
8l invocar a un su%programa se le pueden pasar par metros) los cuales pueden consistir de valores de varia%les o constantes declaradas en el mdulo invocador2 El paso de tales par metros puede ?acerse de dos maneras" Por valor y Por referencia 2 En /ur%o Pascal no se permite el paso de procedimientos y funciones como par metros2 ?.1. Paso por alor

El paso de par metros por valor consiste en enviar una !7PI8 del valor de la varia%le al mdulo invocado2 +e esta manera se asegura ,ue el valor de la varia%le slo puede ser modificado por el mdulo ,ue la declar2 $i la pala%ra "ar no aparece delante del par metro formal en un procedimiento) /ur%o Pascal supone ,ue el par metro formal es un par metro por valor2 E&emplo" Program rai.EporE:alor> :ar 8)!"real> procedure rai.<8)! "real=> %egin ! "L s,rt<8= end> 5egin !"LM> 8"L2N> rai.<8)!=> Frite4n<8)G 0 G)!=> End2 El resultado de la e&ecucin del programa sera" 2 @ A B. El valor de * no se modifica puesto ,ue es un par metro por valor2 ?.2. Paso por re+erencia

En el caso de ,ue se re,uiera ,ue el valor de una varia%le sea modificado por el mdulo invocado) de%e ?acerse el paso de par metro por referencia) por medio del cual el mdulo invocado tiene acceso a la direccin en ,ue se guarda el valor a modificar2 En la declaracin de%e aparecer la pala%ra "ar precediendo el nom%re de la varia%le2 7%servamos ,ue las invocaciones a su%programas son similares en los casos de paso por valor y paso por referencia2 Ejemplo: Program rai.E porE6eferencia> :ar 8)!"real> procedure rai.<8 "real > /ar ! "real=> %egin ! "L s,rt<8= end> 5egin !"LM> 8"L2N> rai.<8)!=> Frite4n<8)G 0 G)!=> End2 El resultado de la e&ecucin del programa sera" 2 @ C @

Programacin I

Gua de estudio 2

El valor de ! se modifica puesto ,ue es un par metro por referencia2

Programacin I

Gua de estudio 2

Gua de 34ercicios Dnidad 2: Subprogramas


NOTA: #e asume $ue los %ro&ramas se reali'an en %ascal ( deben utili'ar procedimientos ()o funciones. #i el enunciado indica $ue un dato es dado, se asumir $ue se conoce ( deber colocarse como constante. *ealice todos los e+ercicios indicados en el problemario de la procedimientos ()o funciones se&.n conven&a. ,nidad 1, a-ora utili'ando

1. Escri%ir un programa ,ue reci%a un a3o e imprima si es %isiesto o no2 Utilice una funcin ,ue lo decida2 Un a3o es %isiesto si es divisi%le entre K) a menos ,ue sea divisi%le entre 1MM2 $in em%argo) si un a3o es divisi%le entre 1MM y adem s es divisi%le entre KMM) tam%i*n resulta %isiesto2 2. Escri%ir un programa ,ue reci%a un n;mero e imprima si es primo o no2 Utilice una funcin ,ue lo decida =. Escri%ir un programa ,ue o%tenga la suma de los N primeros n;meros primos usando la funcin anterior2 ?. Escri%ir un programa ,ue reci%a n n;meros enteros) y ,ue indi,ue si alguno de los n;mero divide a otro n;mero) es decir) si tenemos a y %) ,ue indi,ue si a divide a b2 @. 6ealic* un Programa ,ue solicite dos n;meros) presente un men; ofreciendo las opciones de suma) resta) multiplicacin y divisin y calcule dic?a operacin2 6ealic* la corrida en fro del programa K) para los siguientes datos KPRN Q122N 2HKN KMRQ2N 1RK2KN 2N RQPK2 N2HN multiplicacin suma divisin resta

<. 6ealic* en Pascal) utili.ando su%programas el programa del siguiente pro%lema" !alcular la suma de todos los n;meros comprendidos entre dos n;meros dados2 $e de%e leer N1 y N22 6ealic* la corrida en fro para el algoritmo anterior con N1 L 2N y N2 L K2 E. 6ealic* en Pascal) utili.ando funciones el programa del siguiente pro%lema" !onversin de temperaturas Entrada" $olicitar /emperatura y tipo de conversin" ! 9 o 9 !2 /emperatura en grados !elsius <!= o grados 9a?ren?eit <9= $alida" /emperatura origen) tipo de conversin y resultado2 Nota" formula de conversin" 9 L <RJN= ! S H2 F. 6ealic*) utili.ando funciones el programa del siguiente pro%lema" " !onversin de longitudes Entrada" $olicitar tipo de conversin y !antidad) ?asta ,ue el tipo de conversin sea #t Pie) #t Pg) Pie #t) Pie Pg Pg #t) Pg Pie !alir $alida" cantidad origen) tipo de conversin y resultado2 <1 metro L HR)HP pulgadas) 1 pie L 12 pulgadas=

Vous aimerez peut-être aussi