Siempre he creído que cuando empiezas con un nuevo lenguaje suele gustar el ver los resultados, ver que nuestro programa hace 'algo'. Por eso creo que el curso debe comenzar con la función printf, que sirve para sacar información por pantalla.
Para utilizar la función printf en nuestros programas debemos incluir la directiva:
#include <stdio.h>
al principio de programa. Como hemos visto en el programa hola mundo.
Si sólo queremos imprimir una cadena basta con hacer (no olvides el ";" al final):
printf( "Cadena" );
Esto resultará por pantalla:
Cadena
Lo que pongamos entre las comillas es lo que vamos a sacar por pantalla.
Si volvemos a usar otro printf, por ejemplo:
#include <stdio.h> int main() { printf( "Cadena" ); printf( "Segunda" ); return 0; }
Obtendremos:
CadenaSegunda
Este ejemplo nos muestra cómo funciona printf. Para escribir en la pantalla se usa un cursor que no vemos. Cuando escribimos algo el cursor va al final del texto. Cuando el texto llega al final de la fila, lo siguiente que pongamos irá a la fila siguiente. Si lo que queremos es sacar cada una en una línea deberemos usar "\n". Es el indicador de retorno de carro. Lo que hace es saltar el cursor de escritura a la línea siguiente:
#include <stdio.h> int main() { printf( "Cadena\n" ); printf( "Segunda" ); return 0; }
y tendremos:
Cadena Segunda
También podemos poner más de una cadena dentro del printf:
printf( "Primera cadena" "Segunda cadena" );
Lo que no podemos hacer es meter cosas entre las cadenas:
printf( "Primera cadena" texto en medio "Segunda cadena" );
esto no es válido. Cuando el compilador intenta interpretar esta sentencia se encuentra "Primera cadena" y luego texto en medio, no sabe qué hacer con ello y da un error.
Pero ¿qué pasa si queremos imprimir el símbolo " en pantalla? Por ejemplo imaginemos que queremos escribir:
Esto es "extraño"
Si para ello hacemos:
printf( "Esto es "extraño"" );
obtendremos unos cuantos errores. El problema es que el símbolo " se usa para indicar al compilador el comienzo o el final de una cadena. Así que en realidad le estaríamos dando la cadena "Esto es", luego extraño y luego otra cadena vacía "". Pues resulta que printf no admite esto y de nuevo tenemos errores.
La solución es usar \". Veamos:
printf( "Esto es \"extraño\"" );
Esta vez todo irá como la seda. Como vemos la contrabarra '\' sirve para indicarle al compilador que escriba caracteres que de otra forma no podríamos.
Esta contrabarra se usa en C para indicar al compilador que queremos meter símbolos especiales. Pero ¿Y si lo que queremos es usar '\' como un carácter normal y poner por ejemplo Hola\Adiós? Pues muy fácil, volvemos a usar '\':
printf( "Hola\\Adiós" );
y esta doble '\' indica a C que lo que queremos es mostrar una '\'.
Esto no ha sido mas que una introducción a printf. Luego volveremos sobre ella.
Esta función sólo está disponible en compiladores de C que dispongan de la biblioteca <conio.h>
Hemos visto que cuando usamos printf se escribe en la posición actual del cursor y se mueve el cursor al final de la cadena que hemos escrito.
Vale, pero ¿qué pasa cuando queremos escribir en una posición determinada de la pantalla? La solución está en la función gotoxy. Supongamos que queremos escribir 'Hola' en la fila 10, columna 20 de la pantalla:
#include <stdio.h> #include <conio.h> int main() { gotoxy( 20, 10 ); printf( "Hola" ); return 0; }
(Nota: para usar gotoxy hay que incluir la biblioteca conio.h).
Fíjate que primero se pone la columna (x) y luego la fila (y). La esquina superior izquierda es la posición (1, 1).
Ahora ya sólo nos falta saber cómo se borra la pantalla. Pues es tan fácil como usar:
clrscr()
(clear screen, borrar pantalla).
Esta función nó solo borra la pantalla, sino que además sitúa el cursor en la posición (1, 1), en la esquina superior izquierda.
#include <stdio.h> #include <conio.h> int main() { clrscr(); printf( "Hola" ); return 0; }
Este método sólo vale para compiladores que incluyan el fichero stdio.h. Si tu sistema no lo tiene puedes consultar la sección siguiente.
Existen otras formas de borrar la pantalla aparte de usar stdio.h.
Si usas DOS:
system ("cls"); //Para DOS
Si usas Linux:
system ("clear"); // Para Linux
Otra forma válida para ambos sistemas:
char a[5]={27,'[','2','J',0}; /* Para ambos (en DOS cargando antes ansi.sys) */ printf("%s",a);
Bueno, ya hemos aprendido a sacar información por pantalla. Si quieres puedes practicar con las instrucciones printf, gotoxy y clrscr. Lo que hemos visto hasta ahora no tiene mucho secreto, pero ya veremos cómo la función printf tiene mayor complejidad.
Ejercicio 1: Busca los errores en el programa.
#include <stdio.h> int main() { ClrScr(); gotoxy( 10, 10 ) printf( Estoy en la fila 10 columna 10 ); return 0; }
Solución:
Ejercicio 2. Escribe un programa que borre la pantalla y escriba en la primera línea su nombre y en la segunda su apellido:
Solución:
#include <stdio.h> #include <conio.h> int main() { clrscr(); printf( "Gorka\n" ); printf( "Urrutia" ); return 0; }
También se podía haber hecho todo de golpe:
#include <stdio.h> #include <conio.h> int main() { clrscr(); printf( "Gorka\nUrrutia" ); return 0; }
Ejercicio 3. Escriba un programa que borre la pantalla y muestre el texto "estoy aqui" en la fila 10, columna 20 de la pantalla:
Solución:
#include <stdio.h> #include <conio.h> int main() { clrscr(); gotoxy( 20, 10 ); printf( "Estoy aqui" ); return 0; }