Funciones (Monografias)
Funciones (Monografias)
Funciones (Monografias)
c
La modularización, es una técnica usada por los programadores para hacer sus códigos más
cortos, ya que consiste en reducir un gran problema complejo, en pequeños problemitas
más sencillos, concentrándose en la solución por separado, de cada uno de ellos.
En las funciones juegan un papel muy importe las variables, ya que como se ha dicho estas
pueden ser locales o globales.
Estas se crean durante toda la ejecución del programa, y son globales,
ya que pueden ser llamadas, leídas, modificadas, etc; desde cualquier función. Se definen
antes del main().
Estas, pueden ser utilizadas únicamente en la función que hayan sido
declaradas.
donde:
?
Es el tipo de dato que devolverá esa función, que puede ser real,
entera, o tipo void(es decir que no devolverá ningún valor).
?
? £
Es el identificador que le damos a nuestra función, la cual
debe cumplir las reglas que definimos en un principio para los identificadores.
?
?
son los parámetros que recibe la función. Los
argumentos de una función no son más que variables locales que reciben un valor.
Este valor se lo enviamos al hacer la llamada a la función. Pueden existir funciones
que no reciban argumentos.
?
? Ñ
Constituye el conjunto de acciones, de sentencias que cumplirá la
función, cuando sea ejecutada. Entre ellas están:
?
1.? Asignaciones
ÿ.? Lecturas
3.? Impresiones
4.? Cálculos, etc
Una función, termina con la llave de cerrar, pero antes de esta llave, debemos
colocarle la instrucción
con la cual devolverá un valor específico. Es
necesario recalcar que si la función no devuelve ningún valor, es decir, es tipo void,
no tiene que ir la sentencia return, ya que de lo contrario, nos dará un error.
Los parámetros formales-Locales de una función reciben como inicilaes los valores
de los parámetros actuales y con ellos se ejecutan las acciones descritas en el
subprograma.
A=5;
B=7;
Explicación:
Una función, como ya se ha dicho, es un bloque de código dentro del programa que
se encarga de realizar una tarea determinada. Por lo tanto un programa en c debe
constar de una o más funciones, y por su puesto no puede faltar la función principal
Si un programa, está constituido por más de una función, las llamadas a la misma,
pueden realizarse desde cualquier parte del programa, y la definición de ellas debe
ser independiente unas de otras.
Por lo tanto sería un grave error el tratar de definir una función dentro de otra.
Una función puede ser llamada desde cualquier parte del programa no sólo una vez,
y cuando es llamada, empieza a ejecutar las acciones que están escritas en código.
Para mayor comodidad del lector vamos a ver varios ejemplos, del uso de funciones
y a medida que vayamos avanzando se volverán más complejos.
Cómo se ha dicho las funciones pueden o no devolver algún valor, para mi parecer,
este tipo de funciones son las más sencillas, ya que cuando se llama la función, esta
realiza lecturas, asignaciones, cálculos o impresiones, finaliza la ejecución de la
función y el programa continúa normalmente.
Ejemplo 5.1
Diseñe un programa que dados dos números enteros determine la suma y cual de
ellos es mayor, usando dos funciones diferentes.
#include <stdio.h>
#include <conio.h>
void mayor (int a, int b); /*Tipo de dato, nombre de la funci¢n y el tipo y nombre de
los argumentos*/
main()
int a, b;
scanf("%d", &a);
scanf("%d", &b);
getch();
return 0;
sum=a+b;
if(a==b)
printf("Son iguales\n\n");
else
if(a>b)
else
&
La función ha sido declarada, ha sido llamada y por lo tanto deber haber sido
definida. Lo cual consta de dos partes, las cuales son:
1ÿ.?Que como su nombre lo indica, es la primera línea de la definición de la
función y con ella le indicamos al compilador que está en presencia de una
función. Su formato es el siguiente:
Se inicia con una llave "{", y en ella, se pueden realizar asignaciones, cálculos,
impresiones, así como la declaración de las variables locales. Puede estar
constituidas por estructuras secuenciales, selectivas, iterativas, anidamientos, se
pueden llamar otras funciones, etc; finaliza con "}". Puede devolver uno o ningún
valor.
+*,
#include <stdio.h>
#include <conio.h>
main()
clrscr();
while(ban==1)
scanf("%d", &numero);
while(numero<0)
{
scanf("%d", &numero);
primo(numero);
scanf("%d", &ban);
getch();
return 0;
if(numero%div==0)
primo=0;
return 0;
else
primo=1;
if(primo!=0)
Antes de usar una función C debe tener conocimiento acerca del tipo de dato
que regresara y el tipo de los
de C.
int longcad(int n); Lo anterior declara una función llamada longcad que
regresa un valor entero y acepta otro valor entero como parámetro.
+*-
Diseñe un programa, que dado un número entero y mayor que cero, muestre
su factorial. (El factorial de 5 es 1ÿ0; 5x4x3xÿx1=1ÿ0)
#include <stdio.h>
#include <conio.h>
main()
clrscr();
while(ban==1)
scanf("%d", &num);
while(num<0)
scanf("%d", &ban);
getch();
return 0;
int sum=1, i;
sum=sum*i;
return (sum);
+*.
Diseñe un programa, que dada una cifra entera y mayor que cero, sea
elevada a una potencia introducida por el usuario, la cual. (Ejemplo:
5^ÿ=ÿ5).
#include <stdio.h>
#include <conio.h>
main()
clrscr();
scanf("%d", &base);
while (base<0)
scanf("%d", &base);
scanf("%d", &exponente);
getch();
return 0;
x=base*base;
sum=sum+x;
return (sum);
1Ë.?
!
(
(
(
17.?
!
&
(
(
/
Antes que nada, trataremos las funciones predefinidas en C. Ya que C, posee ciertas
funciones que nos ayudan hacer nuestros programas más fáciles y utilizar menos
código.
2
3
%
int
atuf(s) Double Convierte la cadena a una cantidad de doble
precisión
atoi(s) int Convierte cadenas a un entero
atol(s) long Convierte cadenas a un entero largo
Hay muchas otras funciones, pero para ahondar más, debes saber cuál es la versión
de C, instalada en tu máquina y así verificar cuáles funcionan correctamente; pero
por lo general, estas funciones son muy estándar para la mayoría de compiladores.
+*+
18.?® a+b
19.?|a-b|
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
float a, b;
clrscr();
printf("\t\tBIENVENIDO\n\n");
scanf("%f", &a);
scanf("%f", &b);
getch();
return 0;
float x;
double y;
x=a+b;
y=sqrt(x);
return (y);
float x;
double y;
x=a-b;
y=fabs(x);
return (y);
double x;
x=pow(a,b);
return (x);
ÿ0.?ab
+*+
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
( main(()
numero;
4 respuesta;
{
{
scanf("%d",&numero);
} 54 (numero<0);
calculodatos(numero);
respuesta=getch();
system("cls");
printf("\n\n\n\t\tÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");
printf("\n\t\tÛÛÛ FIN DEL PROGRAMA ÛÛÛ");
printf("\n\t\tÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ\n\n\n");
i;
(i=1;i<=numero;i++) {
e=e+1./factorial(i);
i;
resultado;
ÿ1.?
c
ÿÿ.?
!
3
)
En la práctica, muchas veces debemos diseñar programas, que nos permitan elegir la
acción o acciones a realizar, es decir haciendo uso de un menú. El cual, no es más ni
menos que la aplicación de un selector múltiple. Un
Veamos un ejemplo.
+*6
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
float angulo;
clrscr();
while(ban==1)
printf("\t\tBIENVENIDO/A\n\n");
scanf("%f", &angulo);
printf("********************************************\n");
printf("**** 1. seno del angulo ****\n");
printf("********************************************\n");
scanf("%d", &opcion);
while(opcion<0 || opcion>3)
scanf("%d", &opcion);
clrscr();
switch(opcion)
break;
break;
break;
scanf("%d",&ban);
}
getch();
return 0;
float y;
y=sin (angulo);
float y;
y=cos(angulo);
float y;
y=tan(angulo);
getch();
c
ÿ3.?Mencione y explique, las parte en las que se componen las funciones
definidas por el usuario en
C:___________________________________________________________
___________________________________
ÿ4.?¿Cuál es la diferencia entre las funciones predefinidas en c y las funciones
definidas por el
usuario?______________________________________________________
__________________________________
ÿ5.?¿En que consiste el paso de
parámetros?:___________________________________________________
_________
ÿË.?¿Cuál es la diferencia entre parámetros formales y
actuales?:_____________________________________________________
_________________________________
ÿ7.?En que se diferencias las variables locales a las
globales:______________________________________________________
_________________________________
Un (
es un
, es decir, solo usa un índice para referenciar
a cada uno de los elementos.
c "
Hace más sencillo o más fácil modificar un programa que utiliza arreglos. Ya que
todas las referencias al tamaño del arreglo pueden ser alteradas, cambiando el valor
de la constante simbólica.
6*0
#include <stdio.h>
#include <conio.h>
#define N 10
main()
float x[N];
int i;
scanf("%f", &x[i]);
if(x[4]>0)
if(x[0]<0)
}
if(x[N-1]==0)
getch();
return 0;
Así:
Esta es una versión gráfica, de lo que sucedería al llenar nuestro vector con los
valores indicados. Como podemos ver, C empieza a enumerar las casillas desde el
cero, hasta el 9. totalizando de esa manera 10 posiciones. Así que, x[4]=8.
Es por ello, que el for, lo inicializamos con cero, hasta un valor menor que el de la
constante, ya que de lo contrario nos daría un error.
,.-Que el usuario no haya pulsado la tecla ENTER, cuyo código ASCII es 0-.
9;?@0-*
Un vector, solo puede ser argumento formal, es decir; por el momento, no podemos
enviarlo como valor de retorno., digo por el momento por que cuando hablemos de
punteros, veremos que si se pueden enviar.
p? & $
p?
p? &
6*,
#include <stdio.h>
#include <conio.h>
#define N ÿ0
int suma (int [N]); /*Declaración de la función*/
void mayor (int [N]); /*Ojo, los argumentos que son vectores solo necesitan el tipo
de dato y la dirección*/
main()
int numeros[N], i;
scanf("%d", &limite);
scanf("%d", &numeros[i]);
printf("La suma de todos los elementos del vector es: %d\n", suma(numeros));
getch();
return 0;
int sum=0, i;
sum=sum+numeros[i];
return (sum);
if(numeros[i]>mayor)
mayor=numeros[i];
pos=i;
El lector, debe preguntarse, que pasaría si existen dos valores exactamente iguales
que sean los valores máximos y que por ende, estén en diferentes posiciones, que
solución le darías como programador?... este tipo de preguntas debe hacerse siempre
que ha finalizado un programa, y nunca dejar nada sin resolver, por que recordemos
que los programas que diseñamos son para que otras personas los usen.
3
Las matrices se declaran de forma análoga, con corchetes independientes para cada
tipo nombre[numero_filas][numero_columnas];
donde tanto las
como las se numeran también a partir de 0. La forma
de
acceder a los elementos de la matriz es utilizando su nombre, seguido de las
expresiones
En C tanto los vectores como las matrices admiten los
de las variables
escalares
ocupa el lugar:
posición_elemento(0, 0) + i * M + j
6*-
Diseñe un programa que lea un matriz de Ë*Ë y luego determine la suma de cada
una de las filas y la almacene en un vector llamado suma.
#include <stdio.h>
#include <conio.h>
#define F Ë
#define C Ë
main()
scanf("%d", &matriz[i][j]);
vector[i]=vector[i]+matriz[i][j];
printf("*%d*", matriz[i][j]);
printf("\n");
printf("%d\t", vector[i]);
getch();
return 0;
}
Creo que no hay mucho por explicar, el uso de una matriz en C, es bastante parecido
al de un vector, pero con las diferencias que en un vector tenemos únicamente una
dimensión y en las matrices tenemos dos.
6*.
Ejemplo:
81Ë
357
49ÿ
#include <stdio.h>
#include <conio.h>
#define N 11
#define M 11
main()
{
int cuadrado[N][M];
int dim, f, c, i;
clrscr();
scanf("%d", &dim);
while(dim<3 || dim>11)
scanf("%d", &dim);
while((dim%ÿ)!=1)
scanf("%d", &dim);
cuadrado[f][c]=0;
f=0;
c=dim/ÿ;
cuadrado[f][c]=1;
f--;
c++;
f=1;
c=dim-1;
if(f<0)
f=dim-1;
if(c==dim)
c=0;
if(cuadrado[f][c]!=0)
c--;
f=f+ÿ;
cuadrado[f][c]=i;
impresion(cuadrado, dim);
getch();
return 0;
consmagic=((dim*dim*dim)+dim)/ÿ;
sum=0;
sum=sum+cuadrado[f][c];
if(sum!=consmagic)
magic=0;
sum=0;
sum=sum+cuadrado[f][c];
if(sum!=consmagic)
magic=0;
sum=0;
for(i=0; i<dim; i++)
sum=sum+cuadrado[i][i];
if(sum!=consmagic)
magic=0;
sum=0;
j=j+1;
sum=sum+cuadrado[i][j];
if(sum!=consmagic)
magic=0;
if(magic==0)
consmagic=0;
return (consmagic);
int f, c;
printf("\n");
c
4Ë.?En una escuela se tiene el listado de 30 alumnos con sus respectivas notos,
diseñe un programa que muestre las notas de los alumnos que tuvieron una
nota mayor que el promedio.
47.?Diseñe un programa que dado un vector de magnitud X, busque y muestre la
posición en la que se encuentra un valor N, dentro del vector
48.?Se tiene dos vectores A y B, diseñe una solución, en la cual, en un tercer
vector se guarde la multiplicación de los vectores A y B, y luego se
impriman los tres vectores, uno a la par del otro, en forma vertical
49.?Diseñe un programa en C, en el cual guarde un vector de 100 posiciones,
determine la media y la desviación estándar.
50.?Almacenar 50 números en un vector, elevar al cuadrado cada valor
almacenado en el vector, almacenar el resultado en otro vector. Imprimir el
vector original y el vector resultante
51.? Diseñe un algoritmo y programa que lea dos vectores A y B de ÿ0
elementos cada uno y sume el primer elemento de A con el ultimo elemento
de B y luego el segundo elemento de A por el diecinueveavo elemento de B
y así sucesivamente hasta llegar al veinteavo elemento de A por el primer
elemento de B. El resultado de la suma almacenarlo en un vector C.
5ÿ.?Se desea conocer la suma de la diagonal mayor y la diagonal menor de una
matriz de F*C, e indique la diferencia matemática entre ambos resultados.
53.?En una tiemda, hay 8 departamentos y se tiene el registro de las ventas del
año pasado de cada departamento por mes. Se desea conocer: el
departamento que tuvo mayores ventas a lo largo de año. El departamento
que tuvo menores ventas en el año. El mes en que se vendió más en el
departamento número 3 y los meses y el departamento que superó las ventas
promedios así como el total de lo vendido a lo largo de año.
54.?Se tienen dos Matrices de tamaño 4x4, se pide escriba un programa en el
cual,. Mediante un menú, se puedan sumar, multiplicar o dividir las
matrices.
Diseñe un programa para producir ÿ informes; el 1o. Que contiene una lista de la
multa de velocidad recolectadas, donde la multa se calcula como la suma del costo
de la corte ($ÿ0,000) mas $ 1,ÿ50 por cada mph que exceda la velocidad limite.
Prepare una tabla con los siguientes resultados:
&
Espero que estas pequeñas y humildes páginas te sean de mucha utilidad, para esta
etapa de tu vida como programador...
Deseo a la Vez dedicar, este pequeño triunfo a mi Madre, que siempre está
apoyándome y dándome impulso a pesar de todo...