Sunteți pe pagina 1din 28

 ||

   
 

 

"*||+,##

 !
""# $%#&'
#!(')'

|
 ||
   
 

 

|) "%'")

Un programa en C se puede descomponer en uno o más


módulos o conjuntos de instrucciones, los cuales a su vez
también pueden estar constituidos por otros módulos, y así
sucesivamente. Estos módulos serán llamados, en términos
generales, SUBPROGRAMAS.

Cuando se presenta la necesidad de ejecutar un mismo grupo de


sentencias en distintos lugares del programa, conviene disponer
de algún recurso para no tener que escribirlas repetidamente, lo
cual resulta tedioso y presenta otros inconvenientes.

(
 ||
   
 

 

"%'"-''*.)
Ëa solución que se suele ofrecer consiste en agrupar cada uno
de esos conjuntos de sentencias destacándolos y asignándoles
un nombre, constituyendo así las llamadas RUTINAS o
subprogramas. Ëuego, basta con invocar su nombre en cualquier
sentencia para conseguir que se ejecute todo el conjunto.

Un subprograma es un bloque de programa que realiza una tarea


determinada, y que al llamársele o invocársele puede necesitar
que se le pasen PARAMETROS. En general, en muchos lenguajes
de programación, los subprogramas se suelen representar
mediante dos formas:
Procedimientos: Ejecutan un conjunto de tareas y pueden o no
devolver valores resultantes.
Funciones: Ejecutan un conjunto de sentencias destinadas a
efectuar un cálculo, el cual revuelve como valor resultante. 
 ||
   
 

 

,##" )

En C, se puede manejar un único tipo de subprograma,


denominado funciones:

FUNCIONES:
Ëas funciones en C permiten dividir grandes programas en pequeñas
tareas y permiten reutilizar tareas que funcionan bien en distintas
aplicaciones.

Una función es un conjunto de sentencias que se puedan llamar desde


cualquier parte de un programa

Ò
 ||
   
 

 

(. Declaración de funciones:

/#"#0/,#"%'*0-|#|1(#(121#.
3
'"#"%'*
#"# /"4#"*0
56

,)
/#"#0 +,&'$ %'*#"#$#)"""
7""$"$"$#)"""#1'8#1%1"#1#'-"%'
. $)
/,#"%'0+ ,#""%'*"9'$"'*",#""$#,"
" )
|#|1(#(121#6 :""'#'*"#&"#
'"1"##') #&"#$"'"")
"#"%'*+"'""+
"'#'$#,"'"+;#,"#"%'*
""'+ ""''
#"#/"4#"0+'"$#7"#"#%'*-'. V
 ||
   
 

 

<"""#'#"%'*+

#"
:"#&"#

float -float |1float (.


3
float #"6 "'#'*"$#,"'"
#"=|>(6
return #"6
5

;#"$" î
 ||
   
 

 

V. Tipo de dato de retorno de una función:

%'*"$"$"1"","'#"4?'""'""
""#"#)""#"#"""#+1'8#1%1,"1
"##'-$"#""".)

<"+
int 4-41!.@@"$"$"
double "-,"4|1,"4(.@@"$"$","
float %'A-.@@"$"$"
char B%'|-.@@"$"$""#'8#
int B%'-.@@"$"$""#
double B%-4. @@"$"$""#,"

3
 ||
   
 

 

Ejemplo: Qué imprime el programa?

C'"/)80
C'"/,)80
char D( =3E|E1E(E56'8#,D( =3E E1EE56
char B%-char 4D 1char !D .
3
if -4DA ==!DA .
return 6
else
return ,6
5
int -.
3
printf-FG'G'F1B%-1,.1%-1,.D| .6
!"-F F.6
return A6
5


 ||
   
 

 

Ò. Resultados de una función:

%'*"""$$"#9'$#)#"""#'
""'#"# '!4"""#+

#"# -"4#"*.6

#"# "4#"6

#"#6 ""$#"#"#"$

Obs)
""4#"*"""#"'7"#"4'"%'*##")
""""$$"#$#"9""$$""#"#'#
##")
$#"#"#",""##"7""'"##"
'*)
%'*""""#'7"#9"#"""'#"#):#"#7""
"<"'"1"$"$""'#""*)
:#H"'") B
 ||
   
 

 

. Ëlamada de una función

#"<"'#"'<"#''"7"""'"#"#"%'*
"'#1%'*"","#I,#"!#"'
"'*""%'*1"##')

#6

nombre-funcion (Exp-1, Exp-(, « , exp-n);

):"%'*""#"'"#+

 ""')
 """%##"""4#"*1'%'*""
$#"#"#)
):#&"#"""#'"1$#,""4#"")

|A
<"+
int "J#-int .
3
int $#6
int #=|6
for -$#=(6$#/6$#>>.
if -G$#==A.
#=A6
return #6
56
int -.
3
int "#6
do
3
#%-F #"""#F.6
'%-FGF1K"#.6
5while -"#/=(.6
if -"J#-"#..
#%-F"#"#LF.6
else
#%-F"#"#LF.6

!"-F F.6
return A6
5
||
 ||
   
 

 

î. Prototipos de una función.

:"'#'*"%'*""#!#""""
""%'*"'"#"%'*1""'"""'7""
'##"7"#""#"%'*"""#-<" >>.+

#6

<tipo-retorno> <nombre-función> (tipo-1 par-1, tipo-( par-(,«, tipo-n par-n);

#"'#%'*!##'%#'*%'""
'##$"#%'#7"%'*"&"'##"'""1'
#""'9"#!"#&"#!""$"#%'*)
,#"#!'%)

:#"9#""#'"##1""
"%'*"%'*— 
|(
 ||
   
 

 
Ejemplo.

|
 ||
   
 

 

3. Anidamiento ) int -int .


Una función en ANSI C 3
pueda estar definida int ,-int ,.
dentro de otra función en 3
tantos niveles como se int '-int '.
desee. Esto no es posible 3
en C++ y las funciones '>>6
deben definirse una tras return '6
otra en forma secuencial. 56
,>>6
return '-,.6
56
>>6
return ,-.6
56
int -.
3
#%-FGLF1-|..6
!"-F F.6
return A6 |Ò
5
 ||
   
 

 

  
          

Ë     
  Ë ËË Ë   Ë Ë 
           
     
      !   
   "       
  
       #   
              
  
           
  !     Ë Ë     $   
        #       
        Ë Ë        % &Ë 
#'() (#Ë

|V
int M =(A6int i1 j6
<"+;#,"'"!,"
int A -int i1int incrementa.
3 VA IABË  Q  V   AA BËOQ
Bloque Variable escripción
int r=|6int s=A6
pal M ;#,",
int B -int 1int despedida. i,j ;#,","
3 A ,##"'#" 
main ,##"'#" 
int m =|6int n =A6
main z ;#,"'
if -despedida. M ;#,",
return -n.6 i,j ;#,","
A ,##"'#" 
else main ,##"'#" 
return -m.6 A i, incrementa #&"#" '"
56 r, s ;#,"'"
B ,##'
if -incrementa KKr MMs. j ;#,","'#"
return B - i1incrementa.6 B ,##"'#"
M ;#,",
else
B g, despedida #&"#'"O
return B - M1Nincrementa.6 m ,n ;#,"'"O
5 r, s ;#,""'#" ,""O
i, incrementa #&"#" ,""O
int main -. j ;#,","'#"

3 A ,##"'#"
z6j =|6i =(A>j6z = i6 B ,##"'#"
M ;#,","'#"
#%-FGLF1A-z1|..6

5
 ||
   
 

 

B      

Ë $  


         

        Ë $ " 
           !"!#

           


    ()* & '        
 $   !$ %#

|3
 ||
   
 

 

|     

   +   ,- 


    $

    
     $

   
       
    .
  &  '
       $  !
   
   $  
-          
  $         

  $
     
 $    
  
&  
    
  
  
          # 
 $  /         

 ||
   
 

 

    



 (

   
  (
&   '
         
 $ 
  $    
        $

  0 !     1       
 
   $
 
 /    
 $      
 "  
        
  
  
       
 $
    /        
 !         


|B
 ||
   
 

 

u 
 (
   
)*$

  & ' 


 
   &    + (


     
, '

 
 
-
. / 0
 
 0
10
 

-

.20

 34+d +d +d O  |  |2    055||B

 34O  552
1 (A
 ||
   
 

 

u 
 (
   
)*$

   
 '
6
     
  
 + (


&   
 &     
  
     (
7
6
      &     

 
 

 


/ 
6# &   
   
(
  
  
    

 (
/


         
   
  

 
 8 
     ,   
  
   
  

(|
, '

+& 
 

-
.0 
 0
10
&+ |
/ 
/
-
/ ./0 "#&"#
10 #$#):$#,"

 
 '""%')
-

   0
.|0 .0
.+&  0

 9 .4 .4  .4:
9    0
+ |7 70
"#&"##

 9 .4 .4:
9 0 #"%"#"')%'7""
 9%90 %'$#,"
 
 0 '")
1 ((
 ||
   
 

 

||     

?          $


       
  
  
?  
   $   
    
     
?     $     
        
  
? 
        
 
 
 $   ,.
  0   -23451

(
const =(1=V6 int -.
void "J#I-int #ID D 1int 1int . 3
3 int D D 6
int 1<6 "J#I-1(1V.6
for -=A6/6>>. #"J#I-11.6
for -<=A6</6<>>. !"-F F.6
#ID D< = B ><6 #"#A6
56 5
void #"J#I-#ID D 1int 1int .
3
int 1<6
for -=A6/6>>.
3
for -<=A6</6<>>.
#%-FGF1#ID D< .6
#%-FLF.6
56
56 (Ò
 ||
   
 

 
1(. Recursividad

Una función en C se puede llamar a si mismo tantas veces como se desee. Esto
se denomina llamadas recursivas. Ejemplo:

#include <stdio.h>
#include <stdlib.h>
double factorial (int numero)
{
if (numero > 1)
return numero * factorial(numero - 1);
else
return 1;
}
int main()
{
printf("+lf\n",factorial(5));
system("PAUSE");
return 0;
}
(V
 ||
   
 

 
1V. Argumentos de Main.


 ||
   
 

 
1Ò. Argumentos de Main.

(3
 ||
   
 

 

,   
$  
 
(
;      
 <
 & &   
  
 <=

S-ar putea să vă placă și