Anuncios Google

Funciones

Tutoriales de Programacionmx

Antes que nada una disculpa por haber tardado tanto en publicar otra entrada de nuestros tutoriales de C (el tiempo es un desgraciado :P). En esta entrega vamos a echar un vistazo (tal vez un poco más que eso) al trabajo con funciones de C. Su uso es tan común como importante; nos ayudan a tener un código más legible y estructurado y hasta reducir centenares de líneas inútiles (entre otros menesteres).

Una función es una estructura que almacena pedazos de código y  que puede ser utilizada cuantas veces se desee en cualquier parte de nuestro programa. Hasta aquí al teoría, no creo que se requiera más; inicia tu IDE preferido y comienza un nuevo archivo.


/*Funciones*/
#include <stdio.h>
int numero = 0;
int texto()
{
if (numero >= 0 && numero < 10)
{
printf("Feliz ");
}
if (numero >= 10 && numero < 20)
{
printf("Navidad ");
}
if (numero >= 20 && numero < 30)
{
printf("A ");
}
if (numero >= 30)
{
printf("Scenebeta.com.");
}
return 0;
}
int main()
{
texto();
getchar();
numero = 10;
texto();
getchar();
numero = 20;
texto();
getchar();
numero = 30;
texto();
getchar();
return 0;
}


¿Recuerdas que main es una función? (Si no regresa a los primeros tutoriales o date un baño de agua fría para refrescar la memoria.) Pues no hay diferencia en las funciones que estamos tratando en este tutorial (a excepción de que las últimas no son imprescindibles). 

¿También recuerdas los tipos de datos? Para declarar una función basta con anteponer a su nombre el tipo de dato al que pertenecerá la función, posteriormente escribir paréntesis y continuar con el código de la función entre corchetes {}. Aségurate de no elegir nombres con espacios y/o con palabras reservadas (int,while,if,return) o caracteres extraños,

En el ejempĺo estamos usando el tipo int; siempre, de ser así, la función debe de devolver un valor, es por eso que la finalizar nuestro código escribimos el return 0;. Si quieres evitar poner esta última línea puedes usar el tipo personalizado void. Void e Int son los más comunes.

Resultado

Ahora que sabes cómo declarar una función te debes de estar preguntando cómo ponerla en acción (bueno, seré sincero: seguramente ya descubriste cómo). Para hacerlo basta con poner el nombre de la función seguido de sus respectivos paréntesis(). Cuidado con el punto y coma.

Como mencionaba en la introducción puede llamar a una función las veces que quieras. Sólo echa un vistazo al ejemplo.

Felicidades, ya sabes usar funciones. Pero antes de finalizar quisiera entrar en un subtema que seguramente hubiera dado muchos dolores de cabeza a los poco experimentados: Las variables locales y globales.

Una variable global es aquella que puede ser utilizada en cualquier parte del código de principio a fin.

Por otro lado una variable local es aquella cuyo uso queda restringido a la región del código en donde fue declarada.

Cómo mencioné para hacer distinción entre una variable local y una global basta con declararlas en ciertas zonas del código. Vamos a echar un vistazo a la estructura ideal (en la mayoría de los casos):

  1. Directivas
  2. Variables y Constantes
  3. Funciones
  4. Main (hago distinción, pero sigue siendo una función).

Para declarar una variable global basta con iniciarla en el apartado dos (Variables y Constantes). Por el contrario si queremos que una variable sea de uso restringido debemos iniciarla en la función en donde actuará. Vamos a poner esto en práctica.


 /*Globalización :P*/
#include <stdio.h>
int numero = 0;
int texto()
{
int a;
if (numero >= 0 && numero < 10)
{
printf("Feliz ");
}
if (numero >= 10 && numero < 20)
{
printf("Navidad ");
}
if (numero >= 20 && numero < 30)
{
printf("A ");
}
if (numero >= 30)
{
printf("Scenebeta.com.\n");
for (a=0; a<70; a++)
{
printf("*");
}
}
return 0;
}
int main()
{
int a;
for (a=0; a<30; a++)
{
printf("~");
}
texto();
getchar();
for (a=0; a<30; a++)
{
printf("~");
}
numero = 10;
texto();
getchar();
for (a=0; a<30; a++)
{
printf("~");
}
numero = 20;
texto();
getchar();
for (a=0; a<30; a++)
{
printf("~");
}
numero = 30;
texto();
getchar();
return 0;
}


Doy por hecho que entiendes perfectamente el 95% del programa, por eso me limito a explicar lo que realmente nos interesa.

Empecemos por identificar las variables locales y globales:

numero es global por no estar dentro de ninguna función. Fíjate cómo usamos la variable numero tanto en main() como en texto().

a es una variable local por estar dentro de las funciones. Fíjate que hemos declarado dos variables con el mismo nombre (una en main() y otra en texto()). En situaciones diferentes esto hubiera ocasionado un error grave; pero estamos ante variables locales, su funcionamiento no "se cruza" por esta simple razón

Resultado

Como siempre, no te quedes con lo único que viene en este tutorial. La programación es muy amplia (me aventuraría a decir que es casi infinita); experimenta, juega con todo lo que has aprendido, ponlo en práctica. Nos leemos en el siguiente tutorial.

4.68182
Tu voto: Ninguno Votos totales: 4.7 (22 votos)

Anuncios Google

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Mr_SeLeNiO

a

No me queda claro como la variable "a" consigue llevar su valor a mas de 30, y cual sería su conexión con "numero" si es que la hay

Imagen de exer

no me da bien

Hola oye escribi el codigo, lo compilo y hasta ahy todo bien pero cuando lo ejecuto solo me imprime "Feliz A Scenebeta.com" te dejo el codigo para que lo cheques

/* Funciones*/
#include <stdio.h>
int numero=0;
int texto()
{
if(numero>=0&&numero<10)
{
printf("Feliz ");
}
if(numero>=10&&numero<20)
{
printf("Navidad ");
}
if(numero>=20&&numero<30);
{
printf("A ");
}
if(numero>=30);
{
printf("Scenebeta.com");
}
return 0;
}
int main()
{
texto();
getchar();
numero=10;
texto();
getchar();
numero=20;
texto();
getchar();
numero=30;
texto();
getchar();
return 0;
}


Ps3 Slim 500GB OFW 4.00

Psp Slim 8GB CFW 5.00 m33-6

ID: exer.slash

Imagen de ALCales

Hola soy nuevo en esto y

Hola soy nuevo en esto y estoy mirandome estos dias los tutoriales, muy buenos por cierto.

y tengo algunas preguntas,Como podria hacer un menu por ejemplo,

pondre un ejemplo para que entendais mejor mi pregunta que si no,.. xD

 

#include <stdio.h>
 
int main()
{
    int a;
 
    printf("Selecciona una opcion: ");
    getchar();
    printf("Pulsa 1 para seleccionar primera opcion");
    getchar();
    printf("Pulsa 2 para seleccionar segunda opcion");
    scanf("%i",&a);
 
    getchar();
 
    if (a == 1)
    {
          printf("Seleccionastes Primera opcion ");
 
          getchar();
    }
 
    if (a == 2)
    {
          printf("Seleccionastes Segunda opocion ");
 
          getchar();
    }
 
     printf("Pulsa ENTER para Salir");
 
     getchar();
 
   return 0;
}

 

Pues bien, como podria hacer para que al iniciar el programa me saliese directamente:

Seleccione una opcion:

Pulsa 1 para primera opcion

Pulsa 2 para segunda opcion

 

(de golpe... sin tener que darle a ENTER 2 veces para desplgarlo.. no se si me explico.)

y si le quito el getchar(); de entremedias, sale de golpe pero tambien sale todo escrito seguido en un solo renglon, u.U

(asi: Seleccione una opcion: Pulsa 1 para primera opcion Pulsa 2 para segunda opcion)

 

alguien me puede ayudar? muchas gracias! y saludos ;)

 


De hecho, tal y como lo

De hecho, tal y como lo tienes podría funcionar, cosa de hacer unas pequeñas correcciones:

//esta parte...    
    printf("Selecciona una opcion: ");
    getchar();
    printf("Pulsa 1 para seleccionar primera opcion");
    getchar();
    printf("Pulsa 2 para seleccionar segunda opcion");
 
//Cambiarla por...
    printf("Selecciona una opcion: \n");
    printf("Pulsa 1 para seleccionar primera opcion\n");
    printf("Pulsa 2 para seleccionar segunda opcion\n");
 
//O bien...
    printf("Selecciona una opción:\nPulsa 1 para la primera opción\nPulsa 2 para la segunda opción");

\n produce un salto de línea al imprimir la cadena de caracteres (equivale a presionar la tecla intro cuando escribes en un editor de texto)

Considera usar la función switch en lugar de una cadena de if's, queda más limpio el code ;)

Imagen de ALCales

aaaa valee valee xD muchismas

aaaa valee valee xD muchismas gracias! 

y otra pregunta por que cuando escribo un numero para elegir una de las dos opciones si escribo una letra coje como opcion elegida la segunda¿

 


Quizá sea por el scanf, en

Quizá sea por el scanf, en lugar de poner %i, pon %d

Imagen de Almamu

Que bien^^ aunque esto lo

Que bien^^ aunque esto lo sepa me servirá de referencia para mis programas. Cabe destacar que las funciones también sirven para programación de Nintendo DS.(Excepto todas las funciones de C/C++


Imagen de P22

Que

Que bien!!!!!!!!!!!!!!!

Llevaba mucho tiempo esperandolo

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.