![]() | ![]() |
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; }