Manual de programación en C: Introducción 2ª parte. Funciones básicas


Aquí volvemos con esta segunda entrega del manual de C, en la que explicaré el concepto de función, un poco más profundamente que lo que hice en la primera entrega, y expondré algunas funciones estándar que nos serán bastante útiles
en prácticamente todos nuestros programas.

Para esta entrega y de aquí en adelante, creo un nuevo formato, creo que más entendible: todo permanece igual, pero los códigos van en letra cursiva y dentro de
tablas para que se diferencien mejor.

Una función es un fragmento de código que hace algo, así de simple. Si queremos escribir un informe, podemos hacerlo nosotros, o podemos decirle a la secretaria (o secretario, que se enfada la RAE) que lo haga ella, la secretaria es la función, hace el informe y nos lo da, tenemos el mismo resultado, pero para nosotros ha sido mucho más fácil. Ahora bien, la secretaria nos puede hacer ciertas preguntas: ¿un informe de qué? ¿Cómo de largo? ¿Con cuántos detalles? A esto lo llamaremos
parámetros y las funciones en C (no todas) también pueden pedirlos.

Por ejemplo si tenemos una función que suma dos números y nos da la solución, la pregunta se hace evidente, ¿qué números tengo que sumar?

En la primera entrega veíamos la función printf, que sirve para escribir texto en la consola. La forma de esta función es la siguiente:

printf(const char *format, …)

NOTA:Para los que sepan algo de C, me he comido aposta
la salida de la función, porque ahora no viene a cuento, esto es solo
una pequeña introducción al concepto de función.

Basta saber de momento que todo lo
que
haya entre los paréntesis son los parámetros de la función, y que
cada uno va separado por comas del otro, de modo que en la función
printf tenemos un solo parámetro: format. Las palabras const y char
hacen referencia al tipo de dato, y eso lo veremos en el próximo
capítulo con las variables.

Como veis parece que hay otro
parámetro
ya que hay una coma y 3 puntos suspensivos. Pues sí, lo hay, y sirve
para poder meter datos no constantes (variables), en la cadena e
imprimirlas en pantalla, de modo que también lo veremos en
variables.

Esto significa que la función
printf
va a tomar lo que le pongamos entre paréntesis y lo va a mostrar por
pantalla. El parámetro que esta función pide es una cadena, y como
dijimos en la primera entrega, las cadenas de texto que se han de
interpretar como texto han de ir entre comillas, si no, el compilador
lo entenderá como algo del lenguaje y nos dará un error al
compilar.

Por ejemplo:

printf(“Hola”);

Esta función es así de simple, es
cierto que admite más parámetros, pero los veremos cuando veamos
variables. (A este paso para el capítulo de variables voy a tener
que escribir la Biblia en verso)

La siguiente función de hoy es
fprintf, esta función hace lo mismo que printf, solo que toma dos
parámetros y le podemos indicar la salida del texto, el formato de
la función es el siguiente:

fprintf(FILE *stream, const char *format,…)

Veis un primer parámetro llamado
stream, luego una coma, y un segundo parámetro format, igual que en
printf. En stream pondremos la salida, es decir, donde escribirá lo
que le pongamos, y en format pondremos, al igual que en printf, la
cadena a escribir.

El stream puede ser cualquier
cosa,
desde una salida estándar, como stdout, stderr, a un archivo, es
decir, con esta función podremos crear archivos con información,
pero eso es más complicado y lo dejo para posteriores capítulos.

Esta función es usada sobre todo para
mandar texto a stderr, si hacemos un programa que puede producir
fallos dependiendo del uso que le de el usuario, le mandamos los
fallos a stderr. Por ejemplo:

fprintf(stderr, “Has cometido un fallo horrible, aprende a usar el programa y no seas cazurro\n”);

Esto mostraría en pantalla esa frase pero usando la salida de errores.

NOTA: Para los que no lo sepan, en consola (la pantalla
negra donde escribimos comandos), hay varias salidas de texto, una es
stdout, o salida estándar, y es salida simple de texto. La otra es
stderr, o salida de errores estándar, y es usada para mostrar errores
del programa.

Otra función útil es la función
system. Esta función pide los mismos parámetros que printf, es
decir, una cadena, solo que lo que hace con la
cadena es mandársela a la consola del sistema y ejecutarla, es
decir, ejecutar en consola lo que nosotros
le escribamos. El formato es:

system(const char *command)

Solovemos un parámetro, el parámetro command, que es una cadena de
texto que se ejecutará en consola.Por ejemplo:

system(“mkdir carpetanueva”);

Esto creará una carpeta nueva en el directorio en el que esté el ejecutable. Mkdir es un comando tanto en Windows como en Linux que crea una carpeta en el directorio en el que estés.

Por último hablaré de la función
main, esta es la función que se empieza a ejecutar en el programa,
tal y como vimos en la primera entrega del manual, la diferencia es
que esta función la creamos nosotros, mientras que las demás están
ya creadas y las usamos.

int
main(int argc, char *argv[])

{

}

De este modo queda definida, todo lo
que haya entre los dos { y } pertenecerá a la función, si te fijas,
le hemos metido dos parámetros, argc y argv, que nos servirán en un
futuro para leer comandos desde la consola, son muy útiles, aunque
si no los pones no pasa nada.

He aquí un ejemplo que usa todo lo
visto:

#include
<stdio.h> //Incluimos la librería con las funciones que usaremos

int
main(int argc, char *argv[])

{

printf(“Este es un mensaje escrito con printf\n”);

fprintf(stderr, “Este es un mensaje que viene por standard error (stderr)\n”);

system(“ls -l /”); //En Windows pon system(“dir C:\\”); dir es lo mismo que ls, uno en Windows y otro en Linux

return 0; //El 0 indica que el programa ha terminado correctamente.

}

Si compilamos esto, y lo ejecutamos, nos mostrará en pantalla:

Este es un mensaje escrito con printf

Este es un mensaje que viene por standard error (stderr)

drwxr-xr-x 2 root root 4096 2010-10-06 15:06 bin

drwxr-xr-x 3 root root 4096 2010-10-20 18:27 boot

drwxr-xr-x 2 root root 4096 2010-09-22 21:57 cdrom

drwxr-xr-x 18 root root 3920 2010-10-26 14:37 dev

drwxr-xr-x 144 root root 12288 2010-10-26 14:37 etc

drwxr-xr-x 4 root root 4096 2010-04-23 12:11 home

drwxr-xr-x 20 root root 12288 2010-10-23 11:44 lib

drwx—— 2 root root 16384 2010-09-22 21:48 lost+found

drwxr-xr-x 2 root root 4096 2010-10-23 22:49 media

drwxr-xr-x 2 root root 4096 2010-04-23 12:11 mnt

drwxr-xr-x 4 root root 4096 2010-10-05 15:10 opt

dr-xr-xr-x 187 root root 0 2010-10-26 16:36 proc

drwx—— 21 root root 4096 2010-10-17 13:06 root

drwxr-xr-x 2 root root 4096 2010-10-23 11:43 sbin

drwxr-xr-x 2 root root 4096 2009-12-05 22:55 selinux

drwxr-xr-x 2 root root 4096 2010-08-16 11:32 srv

drwxr-xr-x 13 root root 0 2010-10-26 16:36 sys

drwxrwxrwt 16 root root 36864 2010-10-26 16:01 tmp

drwxr-xr-x 11 root root 4096 2010-09-23 16:24 usr

drwxr-xr-x 15 root root 4096 2010-08-16 11:48 var

Lo último es el resultado de ejecutar un comando ls -l en linux, son las carpetas de la raiz de mi ordenador.

No creo que haga mucha falta explicar el código: primero incluimos la librería stdio.h, inciamos la función main, y dentro de ella imprimimos un mensaje con dos funciones diferentes y mandamos un comando a la consola.

Recuerdo que me podéis enviar cualquier duda, sugerencia, crítica, etc. Podéis dejar un comentario aquí, o si queréis un trato más directo, enviarme un correo electrónico, entra en la sección Contacto.

Para el próximo capítulo ahora sí que sí, veremos los tipos de datos en C y las variables.

Licencia de Creative Commons
Manual de C by The Neowriter is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

Anuncios
Esta entrada fue publicada en Manual de programación en C, Manuales, Manuales largos y etiquetada , , , , , , . Guarda el enlace permanente.

5 respuestas a Manual de programación en C: Introducción 2ª parte. Funciones básicas

  1. Sl4y3R dijo:

    muy buenos tutos sete agradece por tomarte el tiempo de hacerlos

    saludos

  2. User dijo:

    Muchas gracias por este tipo de tutoriales me anima a seguir investigando mas, ya que soy nuevo en esto.

  3. Kalt dijo:

    Muy bueno, solo un detalle, la parte de codigo para windows;
    system(“dir C:\”);
    Debe ser con doble barra invertida
    system(“dir C:\\”);
    Solo eso.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s