Skip to content

Instantly share code, notes, and snippets.

@leostera
Created August 24, 2011 21:37
Show Gist options
  • Save leostera/1169317 to your computer and use it in GitHub Desktop.
Save leostera/1169317 to your computer and use it in GitHub Desktop.
Funciones
#include <stdio.h>
/*
Hola nabos (excepto Maca, que es la única aplicada, junto con Ale),
ahora les voy a explicar en este único archivo, qué joracas son las
funciones y como se declaran, implementan y usan en C.
Para declarar una función, siempre se hace de la siguiente forma:
tipodedato nombredefuncion ( [parametros1, paramtro2, ...] );
Como veran, tipodedato es justamente el nombre del tipo de dato que
la funcion devuelve. Por ejemplo:
int dameDiez() { return 10; }
Esta funcion dameDiez, devuelve un valor entero, que en este caso es 10.
Puede ser tanto un valor entero literal (o sea, que vos escribis el numero
que devuelve) o puede ser una variable de tipo entero, como en el sig ej:
int dameDiezNoLiteral() {
int a = 10;
return a;
}
Ambas funciones devuelven exactamente el mismo valor de tipo entero. Ahora
declaremos alguns funciones:
*/
int dameDiez() { return 10; }
int dameDos() { return 2; }
int dameQuinientosNoventa() { return 590; } //jauj que al pedo
/*
Bueno, como veran ,aqui tenemos una funcion por cada valor de retorno posible,
y eso que son todos enteros! Mejor sería hacer una funcion que nos devuelva
un valor que no tengamos y que necesitemos, o simplemente el mismo valor que
le pasamos como parametro. Por lo menos con esta ultima opcion nos ahorramos
tener infinitas funciones para cada valor de retorno:
*/
int dame(int a) { return a; }
/*
esta funcion dame te pide un valor entero (que dentro de la funcion se llama "a")
y te devuelve el mismo valor. ahora podriamos darle un poco más de magia al asunto
y hacer una funcion que sea util, como calcular el cuadrado de un numero por ejemplo:
*/
int cuadrado(int a) { return a*a; }
/*
si, podriamos haber hecho la funcion de la siguiente manera:
*/
int otroCuadrado(int a) {
int b = a*a; //esto es un producto, que ningun salame diga que esta usando punteros
return b;
}
/*
pero me pareció al pedo usar una variable temporal...y es mucho más lento.
Como siempre, las funciones pueden devolver tipos de datos de cualquier clase,
ya sea los del lenguaje básicos como int, char, float, long, double, short, etc
como direcciones de memoria o referencias a variables, o incluso estructuras
completas tanto estandar como definidas por el usuario! Lo mismo pasa con los parametros.
Si tuvieran que hacer una funcion que toma como parametros un numero y el grado
de la potencia, y que use valores de coma flotante, haría algo como esto:
*/
float power(float number, int pow = 2) {
if(pow > 1)
for(int i=0; i<pow; ++i, number*=number);
return number;
}
/* QUÉ CARAJOS ACABA DE HACER? QUÉ ES ESE FOR? bueno bueno, la version facil sería esta:
*/
float powerFacil(float number, int pow) {
if( pow > 1) //la potencia es mayor que 1
{
float productoria = 1;
for(int i = 0; i<pow; i++)
{
productoria = productoria * number;
}
}
return number;
}
/*
ahi esta más claro, no? jaja, pero bueno, resulta que a veces el codigo claro no
es especialmente EFICIENTE...de todos modos estas funciones son a modo de ejmplo
y realmente no ven afectado su rendimiento (si es que funcionan, porque no me fije)
Ah, un detalle, en la primera version de power, puse el segundo parametro como
int pow = 2
eso quiere decir que por defecto pow es igual a 2...por lo tanto si pongo power(2)
el resultado va a ser 4...del mismo modo power(2,2) resulta en 4.
Bueno, esto fue Funciones de C para Nintendo 64 espero que les haya gustado.
Chau*/
@Robben
Copy link

Robben commented Aug 24, 2011

coincido :$

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment