Ingeneria en sistemas computacionales
domingo, 4 de agosto de 2013
domingo, 18 de noviembre de 2012
QUE ES UNA FUNCIÓN EN C
INSTITUTO
TECNOLÒGICO SUPERIOR DE TEPOSCOLULA
INGENIERÍA EN SISTEMAS
COMPUTACIONALES
MATERIA:
FUNDAMENTOS
DE PROGRAMACION
TRABAJO
QUE ES UNA FUNION EN C
NOMBRE
DEL ALUMNO:
EDUARDO MARTINEZ GAYTAN
DOCENTE:
ING. MARCO ANTONIO TRUJIO
PRIMER
SEMESTRE
GRUPO: “A”
SAN PEDRO Y SAN PABLO
TEPOSCOLULA OAXACA A 28 DE SEPTIEMBRE DE
2012.
INTRODUCCIÓN
Tras declarar una función, el siguiente paso es implementarla. Generalmente, este paso se conoce como definición. Es precisamente en la definición de una función donde se especifican las instrucciones que forman parte de la misma y que se utilizan para llevar a cabo la tarea específica de la función. La definición de una función consta de dos partes, el encabezado y el cuerpo de la función. En el encabezado de la función, al igual que en el prototipo de la misma, se tienen que especificar los parámetros de la función, si los utiliza y el tipo de datos que devuelve, mientras que el cuerpo se compone de las instrucciones necesarias para realizar la tarea para la cual se crea la función.
Funciones en Lenguaje 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 C, se conocen como funciones aquellos trozos de códigos utilizados para dividir un programa con el objetivo que, cada bloque
realice una tarea determinada.
En las funciones juegan un papel muy importe las variables, ya que como se ha dicho estas pueden ser locales o globales.
Variables 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().
Variables Locales: Estas, pueden ser utilizadas únicamente en la función que hayan sido declaradas.
La sintaxis de una función es la siguiente:
Tipo_de_datos nombre_de_la_funcion(tipo y nombre de argumentos)
{
acciones
}
donde:
Tipo_de_datos: 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).
Nombre_de_la_funcion: Es el identificador que le damos a nuestra función, la cual debe cumplir las reglas que definimos en un
principio para los identificadores.
Tipo y nombre de argumentos: 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.
Acciones: Constituye el conjunto de acciones, de sentencias que cumplirá la función, cuando sea ejecutada. Entre ellas están:
• Asignaciones
• Lecturas
• Impresiones
• Cálculos, etc
Una función, termina con la llave de cerrar, pero antes de esta llave, debemos colocarle la instrucción return, 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.
¿Cómo es que funcionan los Subprogramas?
A menudo, se utiliza el adjetivo de “Subprogramas”, para referirse a las funciones, así que, el lector debe familiarizarse también
con este término.
Los subprogramas se comunican con el programa principal, que es el que contiene a las funciones, mediante parámetros, que
estos pueden ser: Parámetros Formales y Parámetros Actuales.
Cuando se da la comunicación los parámetros actuales son utilizados en lugar de los parámetros formales.
Paso de Parámetros
Existen dos formas de pasar parámetros, las cuales son:
A) Paso por Valor
También conocido como parámetros valor. Los valores se proporcionan en el orden de cálculos de entrada.
Los parámetros se tratan como variables locales y los valores iniciales se proporcionan copiando los valores de correspondientes
argumentos.
Los parámetros formalesLocales
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.
Ejemplo:
A=5;
B=7;
C=proc1(A, 18, B*3+4);
Proc1(X, Y, Z)
Explicación:
Donde, se encuentra c, se está llamando la función, denominada proc1, en la cual se están enviando como parámetros el valor de
A, que es cinco; el cual es recibido por la variable X, en la definición de la función proc1; en la misma función, Y tendrá el valor de 18; por
que ese es el valor del parámetro formal, mientras que Z, tendrá un valor inicial de 25, ya que ese es el resultado del tercer parámetro que
resulta ser una expresión aritmética.
Funciones Definidas Por El Usuario en C
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
main().
Un viejo adagio dice: Separa y vencerás, lo cual se acopla perfectamente cuando tenemos un programa que es bastante grande;
podemos separarlos en pequeños subprogramas (funciones), y concentrarnos en la solución por separados de cada uno de ellos y así
resolver un gran problemas, en unos cuantos problemitas más pequeños.
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.
Ejemplos:
1. Funciones que no devuelven ningún valor
2. Funciones que devuelven un valor entero
3. Funciones que devuelven un valor Real
4. Funciones combinadas
5. Funciones en las que usamos Menú.
1. Funciones que no devuelven ningún valor.
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 suma (int a, int b); /*Declaraci¢n de la funci¢n*/
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;
printf("Ingrese el valor de a:\n");
scanf("%d", &a);
printf("Ingrese el valor de b:\n");
scanf("%d", &b);
suma(a,b); /*Llamado de la funci¢n*/
mayor(a,b); /*Unicamente el nombre de la funci¢n y de los par metros*/
getch();
return 0;
}
void suma(int a, int b) /*Definici¢n de la funci¢n*/
{ /*Abrimos llaves al inicio de la definici¢n*/
int sum; /*Declaraci¢n de las variables locales*/
sum=a+b;
printf("El valor de la suma es %d:\n\n", sum);
} /*Fin de la funci¢n suma*/
void mayor(int a, int b)
{
if(a==b)
printf("Son iguales\n\n");
else
{
if(a>b)
printf("El valor de a es mayor que el de b\n\n");
else
printf("El valor de b es mayor que el de a\n\n");
}
}
Definición de la Función
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. La Primera Línea
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:
Tipo_de_dato nombre_de_la_función (tipo y nombre de los argumentos)
2. Cuerpo de la función
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.
Ejemplo 5.2
Diseñe un Programa en C, que Dado un número entero y mayor que cero, Determine si es o no un número Primo. Ojo, los
números primos sólo son divisibles por el mismo y por la unidad (1).
#include <stdio.h>
#include <conio.h>
void primo (int numero);
main()
{
int numero, ban=1;
clrscr();
while(ban==1)
{
printf("Introduzca el n£mero por favor:\n");
scanf("%d", &numero);
while(numero<0)
{
printf("ERROR, el valor del n£mero debe ser mayor que cero\n");
scanf("%d", &numero);
}
primo(numero);
printf("¨Otro n£mero (si=1 y No=0)?\n");
scanf("%d", &ban);
}
getch();
return 0;
}
void primo (int numero)
{
int div, primo=1;
for(div=2; div<numero; div++)
{
if(numero%div==0)
{
primo=0;
printf("%d NO es primo\n\n\n", numero);
return 0;
}
else
primo=1;
}
if(primo!=0)
printf("%d es primo\n\n\n", numero);
}
2. Funciones que devuelven un valor entero
Las funciones que devuelven algún valor, se les llama PROTOTIPOS DE FUNCIONES:
Antes de usar una función C debe tener conocimiento acerca del tipo de dato que regresara y el tipo de los
parámetros que la función espera.
El estándar ANSI de C introdujo una nueva (mejor) forma de hacer lo anterior respecto a las versiones previas
de C.
La importancia de usar prototipos de funciones es la siguiente:
Se hace el código mas estructurado y por lo tanto, más fácil de leer.
Se permite al compilador de C revisar la sintaxis de las funciones llamadas.
Lo anterior es hecho, dependiendo del alcance de la función. Básicamente si una función ha sido definida antes de que sea usada
(o llamada), entonces se puede usar la función sin problemas.
Si no es así, entonces la función se debe declarar. La declaración simplemente maneja el tipo de dato que la función regresa y el
tipo de parámetros usados por la función.
Es una práctica usual y conveniente escribir el prototipo de todas las funciones al principio del programa, sin embargo esto no es
estrictamente necesario.
Para declarar un prototipo de una función se indicara el tipo de dato que regresará la función, el nombre de la función y entre
paréntesis la lista del tipo de los parámetros de acuerdo al orden que aparecen en la definición de la función. Por ejemplo:
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.
Ejemplo 5.3
Diseñe un programa, que dado un número entero y mayor que cero, muestre su factorial. (El factorial de 5 es 120;
5x4x3x2x1=120)
#include <stdio.h>
#include <conio.h>
int factorial (int num);
main()
{
int num, ban=1;
clrscr();
while(ban==1)
{
printf("Ingrese el valor del n£mero por favor:\n");
scanf("%d", &num);
while(num<0)
{
printf("ERROR, el valor del n£mero debe ser mayor que cero:\n");
scanf("%d", &num);
}
printf("El valor del factorial es %d\n\n", factorial (num));
printf("¨Desea Realizar otro calculo?Si=1 y No=0\n");
scanf("%d", &ban);
}
getch();
return 0;
}
int factorial (int num)
{
int sum=1, i;
for(i=2; i<=num; i++)
{
sum=sum*i;
}
return (sum);
}
Explicación:
Quizá, lo único nuevo, e importante de explicar, radica en la llamada y la definición de la función. Cuando una función nos
devolverá un valor entero, al identificador de dicha función debe precederle el tipo de dato. En el lugar, donde llamamos la función, es que
aparecerá el valor que nos devuelva, como valor de retorno. En nuestro ejemplo, en una impresión. Y al momento de definirla, no se nos
debe olvidar, colocarle la sentencia return(); ya que, mediante esta declaratoria, está retornando el valor calculado.
Pero, que sucede cuando se está trabajando, con valores bastante grandes, al utilizar solamente el int, se producirá un error lógico; ya que
como valor de retorno podría ser un cero o una cifra negativa. Por tanto debemos usar el tipo de dato “long int”.
Ejemplo 5.4
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^2=25).
#include <stdio.h>
#include <conio.h>
long int potencia (int base, int exponente);
main()
{
int base, exponente;
clrscr();
printf("La Base es:\n");
scanf("%d", &base);
while (base<0)
{
printf("ERROR, el dato debe ser mayor que cero:\n");
scanf("%d", &base);
}
printf("El Exponente es:\n");
scanf("%d", &exponente);
printf("%d ^ %d es %ld\n\n", base, exponente, potencia(base,exponente));
getch();
return 0;
}
long int potencia (int base, int exponente)
{
long int sum=0, i,x;
for(i=1; i<exponente; i++)
{
x=base*base;
sum=sum+x;
}
return (sum);
}
sábado, 27 de octubre de 2012
viernes, 26 de octubre de 2012
ejrcicio 9
#include<stdio.h>
int main()
{
int a,b,resta;
printf("inserta tu primer valor \n");
scanf("%d",&a);
printf("inserta tu segundo valor\n");
scanf("%d",&b);
resta=a-b;
if (resta>0)
{
printf("el resultado de su resta es positivo:\n%d",resta);
}
else
{
printf("el resultado de su resta es negativo:\n%d",resta);
}
}
int main()
{
int a,b,resta;
printf("inserta tu primer valor \n");
scanf("%d",&a);
printf("inserta tu segundo valor\n");
scanf("%d",&b);
resta=a-b;
if (resta>0)
{
printf("el resultado de su resta es positivo:\n%d",resta);
}
else
{
printf("el resultado de su resta es negativo:\n%d",resta);
}
}
ejercicio 8
#include<stdio.h>
void main()
{
int num1,num2;
printf ("El primer numero\n");
scanf("%d",&num1);
printf("El segundo numero\n");
scanf("%d",&num2);
if(num1%num2==0)
{
printf("el numero %d",num1);
printf(" si divide al %d\n",num2);
}
else
{
printf("el numero %d",num1);
printf(" no divide al %d\n",num2);
}
}
void main()
{
int num1,num2;
printf ("El primer numero\n");
scanf("%d",&num1);
printf("El segundo numero\n");
scanf("%d",&num2);
if(num1%num2==0)
{
printf("el numero %d",num1);
printf(" si divide al %d\n",num2);
}
else
{
printf("el numero %d",num1);
printf(" no divide al %d\n",num2);
}
}
ejercicio 7
# include<stdio.h>
void main()
{
int n1,n2, mul,res1,res2;
printf("ingresa el valor del posible multiplo\n\a");
scanf("%d",&mul);
printf("ingresa dos valores para comprobar si comparten multiplo\n\a");
scanf("%d",&n1 );
scanf("%d",&n2 );
res1=(n1*mul);
res2=(n2*mul);
if (res1%2 == 0)
{
if (res2%2 == 0)
{
printf("si comparten el mismo multiplo\n\a");
}
else
{
printf("no comparten el mismo multiplo\n\a");
}
}
else
{
printf("no comparten el mismo multiplo\n\a");
}
}
void main()
{
int n1,n2, mul,res1,res2;
printf("ingresa el valor del posible multiplo\n\a");
scanf("%d",&mul);
printf("ingresa dos valores para comprobar si comparten multiplo\n\a");
scanf("%d",&n1 );
scanf("%d",&n2 );
res1=(n1*mul);
res2=(n2*mul);
if (res1%2 == 0)
{
if (res2%2 == 0)
{
printf("si comparten el mismo multiplo\n\a");
}
else
{
printf("no comparten el mismo multiplo\n\a");
}
}
else
{
printf("no comparten el mismo multiplo\n\a");
}
}
ejercicio 6
# include<stdio.h>
void main()
{
int n1,n2, div,div1,div2;
printf("inserta el valor del posible divisor\n\a");
scanf("%d",&div);
printf("inserta dos valores para comprobar si comparten divisor\n\a");
scanf("%d",&n1 );
scanf("%d",&n2 );
div1=(n1/div);
div2=(n2/div);
if (div1%2 == 0)
{
if (div2%2 == 0)
{
printf("si comparten el mismo divisor\n\a");
}
}
else
{
printf("no comparten el mismo divisor\n\a");
}
}
void main()
{
int n1,n2, div,div1,div2;
printf("inserta el valor del posible divisor\n\a");
scanf("%d",&div);
printf("inserta dos valores para comprobar si comparten divisor\n\a");
scanf("%d",&n1 );
scanf("%d",&n2 );
div1=(n1/div);
div2=(n2/div);
if (div1%2 == 0)
{
if (div2%2 == 0)
{
printf("si comparten el mismo divisor\n\a");
}
}
else
{
printf("no comparten el mismo divisor\n\a");
}
}
Suscribirse a:
Entradas (Atom)
.jpg)