You are on page 1of 14

Aprende C con ejemplos en solo 5 horas

Por: Br. Maxwell A. Chacn Fletes

Aprende C con ejemplos en solo 5 horas. Primera hora

Primera hora
Un programa sencillo que saluda
Demuestra la funcin que est presente en todos los programas C, la funcin main().
ejemplo-1
//Este es un comentario que ocupa una sola lnea
main()
{
puts("Hola mundo, adivina quien est programando en c");
return(0);
}

Esto es todo. En todos los programas c hay una funcin main seguida de { y cerrada por
} terminada con la funcin return(). No tiene que ser return(0) pero esto depende
del tipo de compilador que utilices. Comprueba en la documentacin del compilador
antes de empezar a programar.
Has visto que la funcin puts se utiliza para escribir una frase completa en la pantalla
(stdout); pues hay funciones que escriben caracteres en la pantalla y otras que leen
caracteres. S, y a continuacin pongo una tabla de lo que son y lo que hacen. Leelas y
pasa al siguiente ejemplo.
getchar()

Lee un carcter nico de la entrada / teclado (stdin).


putchar() Escribe un nico carcter en la pantalla (stdout).
La funcin printf se utiliza tambin para escribir salidas en la pantalla. La funcin
printf() necesita saber si los valores que se envan a la salida son enteros, nmeros
reales, etc.
ejemplo-2
/* Este comentario se extiende varias lneas
Escribir comentarios en el cdigo puede ser buena idea
Trata de documentar apropiadamente tus programas
main()
{
printf(hola);
}

*/

Asumiendo que hola se haya definido antes, digamos como #define hola "Hola!"
la salida serHola!. Pero si la salida es un entero, entonces debe ponerse %d en la
sentencia printf.
Lo anterior se puede ver como printf("Tengo %d aos",12) Que da como resultado:
Tengo 12 aos

Aprende C con ejemplos en solo 5 horas


Por: Br. Maxwell A. Chacn Fletes

El %d informa de que debe colocarse un entero en esta posicin.


No te funciona?. Si quieres trabajar con una cadena de texto podras intentar esto:
ejemplo-2 (modificado)
#define hola "Hola mundo"
main()
{
printf(hola);
}

Si intentas escribir un nmero entero deberas probar esto:


ejemplo-2 (modificado de nuevo)
main()
{
int hola=9;
printf("%d",hola);
}

Ahora vamos a ver una funcin que se llama scanf(). Te permite leer datos desde el
teclado y pasar la informacin al programa. De nuevo es importante decirle a scanf()
qu tipo de datos deben capturarse.
Aqu hay un ejemplo de programa que demuestra tanto scanf como printf trabajando
juntos.
ejemplo-3
main()
{
int cuenta;
puts("Por favor escribe un nmero: ");
scanf("%d", &cuenta);
printf("El nmero es %d",cuenta);
return(0);
}

Aprende C con ejemplos en solo 5 horas. Segunda hora

Segunda hora
Vamos a ver una lista de identificadores de tipos de dato.
%f=coma flotante
%c=carcter
%s=cadena
%e=notacin cientfica

Como habrs visto en la primera hora de nuestro tutorial en lenguaje c el programa se


escribe con funciones.
Las funciones se identifican as:
nombredefuncion()

Aprende C con ejemplos en solo 5 horas


Por: Br. Maxwell A. Chacn Fletes

En c la funcin main() es esencial. Piensa en ella como una funcin constante para
todos tus programas y que al resto de las funciones se accede desde main().
Antes de que te ensee como se hace pongamos un ejemplo en el que queremos que el
programa espere antes de cambiar la pantalla.
Esto supone el siguiente proceso:
Escribe una funcin principal que utilice la funcin puts para escribir en la pantlla como
hicimos antes y entonces, antes de continuar haz una pausa.
Podemos hacerlo as:
ejemplo-4
main()
{
puts("Hola de nuevo");
puts("Como te llamas?")
espera()
puts("Encantado de conocerte")
}
espera();
{
int adelante;
printf("Pulsa INTRO para continuar");
adelante=getchar();
return(0);
}

El cdigo anterior se detiene hasta que se pulsa 'INTRO'. De acuerdo que este programa
no tiene demasiado sentido desde una perspectiva prctica pero quiero mostrarte como
se llama a una funcin desde la funcin principal.
Algun error?. Intenta colocar adecuadamente los puntos y coma finales en las lneas
adecuadas y quita alguno que sobra, como en este cdigo:
ejemplo-4 (modificado)
main()
{
puts("Hola de nuevo");
puts("Como te llamas?");
espera();
puts("Encantado de conocerte");
}
espera()
{
int adelante;
printf("Pulsa INTRO para continuar");
adelante=getchar();
return(0);
}

Aprende C con ejemplos en solo 5 horas


Por: Br. Maxwell A. Chacn Fletes

C tiene muchas funciones que ya estn integradas. Busca en el manual de tu compilador


para saber que tiene.
Vamos a ver como se utilizan condiciones en los programas escritos en C:
Los comandos if y do con ejemplos.
Primero un ejemplo del comando if:
ejemplo-5
main()
{
float coste,impuesto,recargo,total;
recargo=0.0;
printf("Escribe el precio del producto: ");
scanf("%f", &coste);
impuesto=coste*0.06;
if(coste>40000.0)
recargo=coste*0.005;
total=coste+impuesto+recargo;
printf("El importe total es %0.2f",total);
}

Este era un ejemplo sencillo del uso del comando if.


Otra forma del comando if es la forma if - else. Se demuestra su uso aqu:
ejemplo-6
//Esto es solo un trozo incompleto de programa
if(coste>40000)
{
recargo=coste*0.005;
printf("El recargo es de %.2f",recargo);
}
else
{
puts("Este producto no lleva recargos");
recargo=0.0;
}

El formato de un comando do tiene esta forma:


do
{
instruccion1;
instruccion2;
}
while(condicion);

El formato de un comando for tiene esta forma:


for(contador=valor;condicion;incremento)

Aprende C con ejemplos en solo 5 horas


Por: Br. Maxwell A. Chacn Fletes
instruccion;

Ahora veamos for con un ejemplo:


ejemplo-7
main()
{
int fila,columna;
puts("\t\tMi bonita tabla de multiplicar");
for(fila=1;dila<=10;fila++)
{
for(columna=1;columna<=10;columna++)
printf("%d\t", fila*columna);
putchar('\n');
}
}

La salida es una tabla de multiplicar de tamao 10x10.


Problemas?. Los errores en los nombres de variables las hacen diferentes.
ejemplo-7 (modificado)
main()
{
int fila,columna;
puts("\t\tMi bonita tabla de multiplicar");
for(fila=1;fila<=10;fila++)
{
for(columna=1;columna<=10;columna++)
printf("%d\t", fila*columna);
putchar('\n');
}
}
\t

es un tabulador, y \n un salto de lnea.

Repeticiones con do - while


ejemplo-8
main()
{
int temp;
float celsius;
char repite;
do
{
printf("Escribe una temperatura:");
scanf("%d", &temp);
celsius=(5.0/9.0)*(temp-32);
printf(%d grados F son %6.2f grados celsius\n",temp, celsius);
printf(("Calculamos otra temperatura?");
repite=getchar();

Aprende C con ejemplos en solo 5 horas


Por: Br. Maxwell A. Chacn Fletes
putchar('\n');
}
while(repite=='s'||repite=='S');
}

Este te muestra como se utiliza el comando do en la programacin condicional con C.


%6.2f da formato en la salida al nmero en coma flotante con dos decimales.
Demasiados errores y avisos?
ejemplo-8 (modificado)
main()
{
int temp;
float celsius;
char repite;
do
{
printf("Escribe una temperatura:");
scanf("%d", &temp);
celsius=(5.0/9.0)*(temp-32);
//Abre y cierra todas las comillas
printf("%d grados F son %6.2f grados celsius\n",temp, celsius);
//Elimina parentesis duplicados
printf("Calculamos otra temperatura?");
repite=getchar();
putchar('\n');
}
while(repite=='s'||repite=='S');
}

Si el programa anterior todava no funciona como te gustara, piensa un poco ms.


Debes limpiar la cola de stdin antes de usar getchar; trata de vaciarla con esta
variacin:
ejemplo-8 (mas modificado todava)
#include <stdio.h>
#include <conio.h>
main()
{
int temp;
float celsius;
char repeat;
do
{
printf("Escribe una temperatura:");
scanf("%d", &temp);
celsius=(5.0/9.0)*(temp-32);
printf("%d grados F son %6.2f grados celsius\n",temp, celsius);
//Vaciamos STDIN antes de llamar a getchars
fflush(stdin);
printf("Calculamos otra temperatura?");
repite=getchar();
putchar('\n');

Aprende C con ejemplos en solo 5 horas


Por: Br. Maxwell A. Chacn Fletes
}
while(repite=='s'||repite=='S');
}

Nos acercamos a la tercera hora.

Aprende C con ejemplos en solo 5 horas. Tercera hora

Tercera hora
Nos vamos a concentrar en las matrices:
Que es una bandera?
Una bandera es un marcador que sirve para informar al programa que ha se ha cumplido
una condicin.
ejemplo-9
main()
{
int temp;
float celsius;
char repite;
char flag;
do
{
flag='n";
do
{
if(flag=='n')
printf("Escribe una temperatura valida :");
else
printf("Escribe una temperatura valida, torpe:");
scanf("%d",&temp);
flag='y';
}
while (temp<0 || temp>100);
celsius=(5.0/9.0)*(temp-32);
printf("%d grados F is %6.1f grados celsius\n",temp,celsius);
printf("Calculamos otra temperatura?");
repeat=getchar();
putchar('\n');
}
while (repite=='s'||repite=='S");
}

Problemas durante la compilacin?. Corrige algunos errores:


ejemplo-9 (modificado)
main()
{
int temp;
float celsius;
char repite;

Aprende C con ejemplos en solo 5 horas


Por: Br. Maxwell A. Chacn Fletes
char flag;
do
{
// Un signo de 'igual' es una asignacin, establecemos el valor de
flag a 'n'
repite='n';
//Asignamos un valor
inicial
flag='n';
//Abre y cierra con
comillas simples
do
{
// Dos signos de 'igual' compara los valores, devuelve cierto o falso
if(flag=='n')
printf("Escribe una temperatura vlida :");
else
printf("Escribe una temperatura vlida, torpe:");
scanf("%d",&temp);
flag='s';
}
while (temp<0 || temp>100);
celsius=(5.0/9.0)*(temp-32);
printf("%d grados F son %6.1f grados celsius\n",temp,celsius);
printf("Calculamos otra temperatura?");
repeat=getchar();
putchar('\n');
}
while (repite=='s'||repite=='S');
//Abre y cierra con
comillas simples
}

Este era un ejemplo del uso de banderas.


Que hace el comando break?
El comando break da por terminado el bucle en el que se encuentre como si la
condicin while o la del bucle for fuera falsa.
Como se declara una matriz?
Una matriz se puede declarar de esta forma:
int temp[5]={45,56,12,98,12};

Que significara esto:


temp[0]=45....temp[4]=12

Esta es una matriz de una sola dimensin con cinco elementos de tipo entero. Si quieres
guardar variables en coma flotante usa float temp en lugar de int temp.
Vamos a ver ahora un ejemplo de uso de una matriz para dos tareas.
ejemplo-10
main()
{
int temps[31];

Aprende C con ejemplos en solo 5 horas


Por: Br. Maxwell A. Chacn Fletes
int index,total;
float promedio,celsius;
total=0.0;
for(index=0;index<31;index++)
{
printf("Escribe la temperatura #%d:",index);
scanf("%d",&temps[index]);
}
for(index=0;index<31;index++)
total+=temps[index];
promedio=total/31.0
printf("La media es:%f\n\n", promedio);
puts9"fahrenheit\tcelsius\n");
for(index=0;index<31;index++)
{
celsius=(5.0/9.0)*(temps[index]-32);
printf("%d\t\t%6.2f\n",temps[index],celsius);
}
}

Otra vez problemas?. Algun error de escritura y un punto y coma:


ejemplo-10 (modificado)
main()
{
int temps[31];
int index,total;
float promedio,celsius;
total=0.0;
for(index=0;index<31;index++)
{
printf("Escribe la temperatura #%d:",index);
scanf("%d",&temps[index]);
}
for(index=0;index<31;index++)
total+=temps[index];
promedio=total/31.0;
printf("La media es:%f\n\n", promedio);
puts("fahrenheit\tcelsius\n");
for(index=0;index<31;index++)
{
celsius=(5.0/9.0)*(temps[index]-32);
printf("%d\t\t%6.2f\n",temps[index],celsius);
}
}

Ahora voy a mostrarte como pasar una matriz. Cuando pasas una matriz realmente lo
que pasas es su direccin (llaman punteros porque apuntan a los datos).
ejemplo-11
#define cuenta 31
main()
{
int temps[cuenta];
int index;
float celsius;
for(index=0;index<cuenta;index++)

Aprende C con ejemplos en solo 5 horas


Por: Br. Maxwell A. Chacn Fletes
{
celsius=(5.0/9.0)*(calor[index]-32);
printf("%d\t\t%6.2f\n",calor[index],celsius);
}
}

Algunos errores otra vez, los ordenadores no entienden de parecidos, los nombres deben
coincidir.
ejemplo-11 (modificado)
#define cuenta 31
main()
{
int temps[cuenta];
int index;
float celsius;
for(index=0;index<cuenta;index++)
{
celsius=(5.0/9.0)*(temps[index]-32);
nombre, no calor
printf("%d\t\t%6.2f\n",temps[index],celsius);
}
}

//temps es el

Aprende C con ejemplos en solo 5 horas. Cuarta hora

Cuarta hora
Estamos ya en la cuarta hora del tutorial. Vamos a ver:

Comparacin de cademas
Longitud de una cadena
Combinacin de cadenas
Estructuras.

Compacin de dos cadenas


En C no es posible comparar directamente dos cadenas, un comando del tipo
if(string1==string2) no es vlido.
Muchas bibliotecas de C contienen una funcin que se llama strcmp(). Se utiliza para
comparar dos cadenas del siguiente modo.
...
if(strcmp(nombre1,nombre2)==0)
puts("Los nombres son iguales");
else
puts("Los nombres son distintos.");
...

Te gustaria ver cmo funciona con un ejemplo?

Aprende C con ejemplos en solo 5 horas


Por: Br. Maxwell A. Chacn Fletes
main()
{
char *nombre1="Manolo";
char *nombre2="canolo";
char *resultado="no";

//Esta cadena se cambia a 'si'


//cuando las cadenas nombre1 y
//nombre2 sean iguales

if(strcmp(nombre1,nombre2)==0)
resultado="si";
printf("Los nombres %s y %s %s son
iguales",nombre1,nombre2,resultado);
}

Longitud de una cadena


Esto se hace con la funcin strlen().
Un pequeo trozo de programa que muestra esta funcin sera como este:
...
gets(nombre);
cuenta=strlen(nombre);
printf("la cadena %s tiene %d caracteres",nombre,cuenta);
...

Combinacin de cadenas
Usamos la funcin strcpy() con el ejemplo siguiente:
ejemplo-12
...
strcpy(nombre,"Adan");
strcpy(nombre1," y Eva");
strcat(nombre,nombre1);
puts(nombre);
...

La suposicin es que 'Adan' y ' y Eva' son dos valores de las variables nombre y
nombre1. El resultado final es la combinacin de los dos nombres.

Estructuras
Qu son estructuras?: Una estructura es una variable que contiene una coleccin de
variables de diferentes tipos.
Qu son punteros?: Los punteros son variables que se refieren a posciciones de
memoria de otras variables.

Aprende C con ejemplos en solo 5 horas


Por: Br. Maxwell A. Chacn Fletes

Una estructura se define as


ejemplo-13
struct cd
{
char nombre[20];
char descripcion[40];
char categoria[12];
float precio;
int numero;
}
main()
...

Fijate que la funcin main comienza despus de la definicin de la estructura. En el


ejemplo anterior el cd era un disco y estamos escribiendo la definicin para una base de
datos de discos.

Aprende C con ejemplos en solo 5 horas. Quinta hora

Quinta hora
En la quinta y ltima hora te voy a mostrar como guardar tus datos en el disco. Despus
de todo para qu sirve un programa si no puedes guardar los resultados a disco?.
Para hacerlo tenemos que usar un puntero. El puntero en este caso es FILE.
La sintaxis para declarar un archivo es: FILE*puntero_a_archivo;
El enlace entre el programa, el archivo y el ordenador se establece con la funcin
fopen() con una sintaxis como esta:
puntero=fopen("NombreArchivo","modo");

Por ejemplo para crear un archivo con el nombre cd.dat haremos lo siguiente:
...
FILE*ArchivoCD;
ArchivoCD=fopen("CD.DAT","w");
...

Si necesitas leer desde el archivo usaremos el modo "r" en lugar de "w" como segundo
parmetro.
Para imprimir informacin (en la impresora del equipo) utilizamos el comando:
FILE*ArchivoCD;
ArchivoCD=fopen("PRN","w");

Aprende C con ejemplos en solo 5 horas


Por: Br. Maxwell A. Chacn Fletes

Cuando se termina de trabajar con el archivo debe cerrarse usndo el comando


fclose(). Vamos a ver un ejemplo de lectura de un archivo.
ejemplo-14
/* Para probar este ejemplo crea un archivo con el
nombre ARCHIVO en la carpeta del programa y pon
algun texto dentro, luego borralo o cambiale el
nombre para verificar que salta el error.
*/
#include "stdio.h"
main()
{
FILE*fp;
int letra;
if((fp=fopen("ARCHIVO","r"))==NULL)
{
puts("No se puede abrir el archivo");
exit();
}
while((letra=fgetc(fp))!=eof)
printf("%c",letra);
fclose(fp);
}

Detectamos el error eof que indica que se ha alcanzado el final del archivo. eof se
incluye en el archivo de cabeceras stdio.h que se declara al principio del ejemplo.
El archivo de cabeceras stdio.h es uno de los muchos que vienen con tu compilador.
Busca en tu compilador otros archivos de cabeceras especficos que te ayuden con otras
funciones.
Puede ser que tengas algunos avisos de error si tu compilador necesita que eof se
escriba en maysculas: EOF. El lenguaje C es sensible a la diferencia entre maysculas y
minsculas.
ejemplo-14 (modificado)
#include "stdio.h"
main()
{
FILE*fp;
int letra;
if((fp=fopen("ARCHIVO","r"))==NULL)
{
puts("No se puede abrir el archivo");
exit();
}
while((letra=fgetc(fp))!=EOF) //Comprueba si usas variables en
mayusculas
printf("%c",letra);
fclose(fp);
}

Aprende C con ejemplos en solo 5 horas


Por: Br. Maxwell A. Chacn Fletes

Ahora que has pasado por este tutorial debes estar en posicin de escribir un programa
sencillo, guardarlo en el disco y pasarlo a tus amigos o incluso a tu jefe.
No es posible profundizar en C en cinco horas pero lo ms elemental se puede aprender
rpidamente.
A donde llegues desde aqu depende de tu ambicin y de tu trabajo.

You might also like