SERBice® WEB Forum
08 de Septiembre de 2010, 11:15:12 *
  Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación?
  
  Ingresar con nombre de usuario, contraseña y duración de la sesión   
 
Noticias: Nuevas noticias en Los visitantes no pueden ver los enlaces.
ENLACE (Registrate o Logueate para ver este enlace).
www.serbice.net/noticias
 
   Inicio   Ayuda Buscar Ingresar Registrarse  

Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Curso C  (Leído 3351 veces)
fulapol
Newbie
*
Desconectado Desconectado

Mensajes: 6
Temas: 2


Ver Perfil






 Siguiente nivel:
 4% ( 2 / 50 )

« en: 30 de Mayo de 2008, 04:51:38 »

                                     Introducción al C
                                by  Fulapol (??/??/2006 - ??)

                                                            EL mundo esta lleno de problemas
                                                             y el mas grande es resolverlos.

Esta pequeña introducción se basa en la Introduccion a la programacion para facilitarles el trabajo y como dije, no nesecitan saber C++ o Java o ninguna otra cosa.


Repasando conceptos

   Aqui repasaremos los terminos basicos y como aplicarlos a C antes de entrar al lenguaje y programar.
   En la programación, como habíamos dicho antes, todo son datos y que tienen tipos específicos, así que veamos que tipos existen en C:
   º INT: Este es el tipo numérico (solo acepta números) y sirve para almacenar información numérica para cálculos por ejemplo.
   º CHAR: Este es "alfanumérico" ya que contiene letras y números, un dato es que su tamaño es de 1 byte.
   º LONG: Long significa largo y es una especie de extensión a int, porque para los cálculos grandes y enormes cantidades de información donde int ya no sirve y nececitamos algo mas largo, y este acepta decimales.
   º DOUBLE: Este es lo mismo que long cuya diferencia es la precisión pues en Long 1234567 + 2 - 1234567 puede terminar como 0 mientras que en double es 2.


Entrando al lenguaje

Con estos nos conformaremos por ahora, veamos como usar y crear datos. La declaración o creación de variables es lo principal y en C se suele hacer así:
   TIPO nombre (ASIGNACION)
   
   Int numero = 0;            Un dato numero que se llama numero y vale 0.
   Char letra = 'a';          Un dato alfanumérico que contiene a.
   Long numerodecimal;        Un dato tipo long sin valor (aun).
   Double preciso;            Un dato double sin valor como el long.

Y ya tenemos nuestras variables con o sin valor, dependiendo como las declaramos.
   Con las variables, y en general nesecitamos que C no distingue espacios, por lo tanto si creamos muchas lineas o una sola linea extensa el resultado sera el mismo y para evitar problemas una de las reglas de oro de C es escribir ';' despues de todas las sentencias.

En este punto ya estarán aburridos de teoría y pedirán código entonces aquí tenemos algo:

#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("Hola mundo !!!");
system ("pause");
return 0;
}

Lo que debemos hacer es abrir el IDE (generalmente lo conocido como compilador) o el bloc de notas en su defecto y guardarlo como HOLA.C, ya guardado se compila y se ejecuta. En estos momentos no me gustaría decirles que compilador usar, mejor busquen compiladores en google, descarguen uno y compilen.

El inicio de este código contienen #include.... con lo que incluimos funciones pero eso lo dejaremos por ahora y veremos el significado de int main (). Todos los programas tienen algo llamado punto de entrada y es propiamente el punto donde empiezan, el programa buscara int main () y ejecutara su contenido. C es un lenguaje estructurado, se rige por estructuras o bloques de codigo y como ademas como no reconoce ni los espacion ni los saltos de linea todos las estructuras comienzan con { y terminan con }. Ahora que tenemos los includes y el int main necesitamos que el programa haga algo y eso se consigue con las funciones, en este las funciones printf y system; printf sirve para escribir algo en la pantalla y para usarla se nesecita poner el include de stdio.h, para escribir debemos poner el texto entre comillas dentro del parentesis y la funcion system, que esta en stdlib.h, manda comandos del sistema al programa, como en este caso que mandamos una pausa al programa. Otra de las muchas curiosidades de C es que es "case sensitive" o que distingue mayusculas y minusculas y si trataran de poner printF en ves de printf les daria un error.
   Notaran que me falto explicar eso de return 0 y es porque return 0 es una simple formalidad para decir que el programa se termino y se podria omitir, luego veremos para que mas nos puede servir.


Manipulando el texto

Despues de escribir el famoso hola mundo podemos escribir lo que sea, pero notaran que es algo predefinido y que nunca varia, pero la verdadera funcion de un programa es hacer algo, no solo escribir mensajes.
   Esto nos lleva a usar las variables, que ya sabemos declarar y asignar. Para imprimir una variable tambien se usa printf pero de una forma algo especial, pues printf solo escribe texto y utilizamos codigos de formato. Estos codigos de formato son de la forma %tipo y son los siguientes: %i para int, %c para char, %f para long y double, %s para string que veremos despues. Despues de poner el texto entre comillas pondremos una coma y el nombre de la variable que usamos, asi por tantas variables usemos.
   Ya que tenemos eso haremos cosas mas bonitas con los numeros:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int numero = 1;
printf("Numero vale %i \n",numero);
numero = 2;
printf("Numero vale %i \n",numero);
system ("pause");
return 0;
}

Veran que el resultado es que el valor denumero es 1 y 2 como lo pusimos en el programa, pero ademas pusimos otra cosa dentro del printf, un \n que es un retorno de linea y que lo que hace es cambiar de linea o renglon y no dejar todo amontonado, pero bueno eso es facil ya que solo dice numeros y palabras pero no hace operaciones. Lo siguiente sera manejar las operaciones. Recordaremos que existe una jerarquia de operaciones que dice primero se sacan raices o potencias, luego se multiplica y se divide, luego se suma o resta y al final se resuelve, por lo tanto en 3*2+5 primero se multiplica 3 * 2 = 6 y se le suma 5, 6 + 5 = 11.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int numero = 1;
printf("Numero vale %i \n",numero);
numero = numero + 5;
printf("Numero mas 5 vale %i \n",numero);
system ("pause");
return 0;
}

y hacemos una operacion dentro del printf:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int numero = 1;
printf("Numero vale %i \n",numero);
printf("Numero mas 5 vale %i \n",numero+5);
system ("pause");
return 0;
}

Nota: Podemos simplificar algunas expresiones donde le agregamos a las variables algun valor usando +=, de la misma forma podemos usar -=,*=,/= e incluso dos especiales que son ++ y -- que agregan y quitan 1 a las varibles

Pero pasemos a cosas mas divertidas que ya les quiero enseñar a programar las grandes aplicaciones corporativas.
   Para hacer apliaciones mas grandes solo nesecitamos un poco de entusiasmo y creatividad, nada complicado y con lo que tenemos podemos hacer programar operaciones pero nos falta algo muy importante, la interactividad con el usuario. Para un ejemplo sencillo aprenderemos a obtener numeros.


Estoy a sus ordenes amo

Para obtener datos del exterior es muy comun utilizar la funcion scanf, hermana de printf. Esta funcion usa el mismo formato que printf pero con la diferencia que en las variables deben tener & al principio, pues esto sirve para darle un valor a la variable. Igualmente nesecitamos poner una coma y el nombre de la variable, pero la diferencia es que en scanf solo debemos poner el codigo, no debemos poner ningun otro texto, para rapido pediremos un numero y lo escribiremos:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int numero;
printf("Escriba un numero\n");
scanf("%i",&numero);
printf("Numero vale %i \n",numero);
system ("pause");
return 0;
}

Ejemplo 1: La Calculadora

Y ya podemos hacer una aplicacion que nos sirva para recoger numeros, sumar, restar, multiplicar, eso me recuerda a una calculadora. Para hacer una calculadora solo tenemos aclarar un punto que es la division. La division es en un numero que no acepta decimal por lo tanto si dividimos 2 / 5 = 3, pero podemos usar % en ves de / y esto nos dira los decimales.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int numero;
int numero2;
printf("Soy una calculadora basica que suma, resta, multiplica y divide\nEscriba un numero\n");
scanf("%i",&numero);
printf("¿que numero desea sumarle, restarle, multiplicarle y dividirle?\n");
scanf("%i",&numero2);
printf("Numeros sumados valen %i \n",numero+numero2);
printf("Numeros restados valen %i \n",numero-numero2);
printf("Numeros multiplicados valen %i \n",numero*numero2);
printf("Numeros divididos valen %i \n",numero/numero2);
printf("Y el residuo es %i \n",numero%numero2);
system ("pause");
return 0;
}

En línea
fulapol
Newbie
*
Desconectado Desconectado

Mensajes: 6
Temas: 2


Ver Perfil






 Siguiente nivel:
 4% ( 2 / 50 )

« Respuesta #1 en: 30 de Mayo de 2008, 04:52:24 »


¿Y si pasa algo?

Bueno tenemos una calculadora, algo que escribe textos y algo que puede pedir numeros entonces ¿que sigue?. Lo que puuede seguir es aprender a hacer cosas mas bonitas llamadas sentencias condicionales. Estas nos dicen que hacer dependiendo de las situaciones que ocurran.
   La primera que veremos sera if, esta nos dice que dependiendo que pase se haran las cosas, y se usa de una manera muy simple. Para usar esta y las demas sentencias condicionales nesecitamos los operadores logicos que son: == igual, < menor que, > mayor que, ! contrario, && o and que sirven para unir, al igual que || u or.
   Una situacion muy comun es tratar de comparar algo, un numero con un valor por ejemplo y en esos casos usamos el if, por ejemplo, veremos si un numero es igual a 5 y si es poner un mensaje. Junto al if se pone un parentesis y dentro de el la comparacion, si la comparacion o condicion se cumple, es verdad entonces la sentencia excatamente despues del if se ejecuta, en caso de que sean 2 o mas usaremos los { y } para hacer un bloque, recordando que C es un lenguaje estructurado.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int numero;
printf("Verificare si es 5\nEscriba un numero\n");
scanf("%i",&numero);
if(numero == 5)
printf("El numero es 5\n");
printf("Solo para verificar tu numero es %i\n",numero);
system ("pause");
return 0;
}

Ahora ampliaremos un poco el sistema, haremos que compare con mas de una condicion y que si ademas la condicion no se cumple entonces que haga algo. Para combinar condiciones se usan los operadores and y or, que tambien se pueden escribir como && y ||. Al combinarlos lo que hacemos es que si antes el codigo se ejecutaba si la condicion se cumplia ahora si ponemos and se deben cumplir todas y si ponemos or se debe cumplir por lo menos una. Despues de esto y por las nesecidades tenemos que saber que hacer en caso de que las condiciones no se cumplan y el if no se ejecute. Para ello usaremos usaremos ua sentencia llamada else que ejecuta codigo si el if no se ejecuta e igualmente solo ejecuta la primera linea despues del mismo, para ejecutar mas debemos crear un bloque con { y }. Un ejemplo mas practico seria:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int numero;
printf("Verificare si es 5 o mayor\nEscriba un numero\n");
scanf("%i",&numero);
if(numero == 5 || numero > 5)
  printf("El numero es 5 o mayor\n");
else
  printf("Es menor a 5\n");
if(numero == 5 && numero == 3)
 printf("Increible el numero es 5 y 3 al mismo tiempo\n");
else
 printf("El numero no es 5 y 3 al mismo tiempo\n");
printf("Solo para verificar tu numero es %i\n",numero);
system ("pause");
return 0;
}


Voy a hacer un comentario

Otra ves llegamos a la pregunta, ¿que sigue?. Yo quiesiera explicar un poco mas las sentencias condicionales pero nesecitamos comprender otro punto antes de continuar en cosas mas complicadas. Primero y antes que nada tenemos que aclarar algo que nos ayudara mucho cuando escribamos y leamos codigos, los comentarios. Los comentarios son sentencias a las que no se les hace caso, y estas pueden ser de una o varias lineas, la de una linea se pone con // y el texto, acabando en la siguiente linea, y el de varios que empieza con /* y termina con */. El codigo anterior bien hecho seria algo asi:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int numero; //Declaramos la variable numero

/**************************
* Podemos adornar el      *
* codigo con cuadritos    *
* como este y usarlos     *
* para explicar el codigo *
**************************/

printf("Verificare si es 5 o mayor\nEscriba un numero\n");
scanf("%i",&numero); //Obtenemos el valor de numero

/****************************************
* Aqui compararemos veremos se el valor *
* de numero es 5 o si es mayor a si. En *
* caso contrario ejecutaremos el else   *
****************************************/

if(numero == 5 || numero > 5)
  printf("El numero es 5 o mayor\n");
else  //Si esto se ejecuta numero es menor a 5
  printf("Es menor a 5\n");

/*
Este if verifica si numero es 5 y si es 3.
Logicamente no puede ser los dos por lo tanto
suponemos que se hara el else
*/

if(numero == 5 && numero == 3)
 prinft("Increible el numero es 5 y 3 al mismo tiempo\n");
else
 printf("El numero no es 5 y 3 al mismo tiempo\n");

//YA acabamos imprimiendo el valor de numero

printf("Solo para verificar tu numero es %i\n",numero);
system ("pause");

//Acabamos

return 0;
}

Talves haga el codigo mas grande pero vaya que llega a ser muy util, y con comentarios podemos explicar un poco aqui y un poco dentro del codigo. A partir de este momento y gracias a los comentarios les podre hacer explicaciones mas cortas, pero codigo mas largo.


Corre y dime si te cansas

Otro punto que tenemos que ver son las funciones. Una funcion es un pedazo de codigo, un bloque que es llamado desde main y genera un valor de retorno. Para aclarar esto veremos una funcion para hacer mas bonita o complicada la calculadora. Crearemos la funcion calcula dentro. Usando comentarios sera mas facil la comprension del codigo.

#include <stdio.h>
#include <stdlib.h>

int calcula(int numero1, int numero2, int opcion);
int main()
{
int numero;
int numero2;
printf("Soy una calculadora basica que suma, resta, multiplica y divide\nEscriba un numero\n");
scanf("%i",&numero);
printf("¿que numero desea sumarle, restarle, multiplicarle y dividirle?\n",numero);
scanf("%i",&numero2);
printf("Numeros sumados valen %i \n",calcula(numero, numero2, 1));
printf("Numeros restados valen %i \n",calcula(numero, numero2, 2));
printf("Numeros multiplicados valen %i \n",calcula(numero, numero2, 3));
printf("Numeros divididos valen %i \n",calcula(numero, numero2, 4));
printf("Y el residuo es %i \n",calcula(numero, numero2, 5));
system ("pause");
return 0;
}

/*********************************************************
*                                                        *
*  Nuestra funcion clacula pide dos numeros que son los  *
*  que utilizara para trabajar y uno mas para saber que  *
*  operacion realizar.                                   *
*  Las opciones son: 1 = suma, 2 = resta, 3 = mult.,     *
*  4 = division y 5 = residuo                            *
*                                                        *
**********************************************************/

int calcula(int numero1, int numero2, int opcion)
{
if(opcion == 1)
  return numero1+numero2;
if(opcion == 2)
  return numero1-numero2;
if(opcion == 3)
  return numero1*numero2;
if(opcion == 4)
  return numero1/numero2;
if(opcion == 5)
  return numero1%numero2;
else
  return 0;
}

Bien ahora analizemoslo. Si notamos al principio puse int calcula(int numero1, int numero2, int opcion); y esto lo hice para que el compilar sepa que la funcion existe y como esta hecha, aunque en ves de ; pude haber puesto el codigo desde { hasta }. Otra cosa es que antes de calcula puse int, como si estuviera declarando una variable numerica, la explicacion de esto es que va a ser tratada como una variable tipo int, como se puede observar en los printf. Para comprender porque la usamos como variable tenemos que saber que es return.
   Return es una expresion que nos permite "regresar" un valor. Este "regresar" lo que hace es decir: "calcula es un int, despues de que se acciona calcula vale x" y x es lo que esta delante de return, podemos ver que en calcula regresa la suma, resta, multiplicacion, division y residuo de las operaciones. Al principio pusimos un return 0; en main pero no lo explique, bueno ahora es cuando. Todos los programas son registrados como un int (int main) y para saber si terminaron bien se devuelve un valor. A los valores mayores de 0 se les llama "error code" o codigo de error y sirven para identificar los errores cuando suceden. Pero ya es suficiente de funciones por el momento, es momento de continuar con las sentencias condicionales.


¿Y que tal si?

Para poder simplificar aun mas nuestra funcion calcula usaremos una sentencia condicional mas general llamada switch. Esta sentencia busca todos los posibles valores de una cierta variable y diferentes cosas dependiendo de los diferentes que contenga. Se puede definir como un gran if que no nesecita rellenar de if's y else's el codigo. Para demostrar esto usaremos una version mas avanzada de la funcion calcula.

int calcula(int numero1, int numero2, int opcion)
{
switch (opcion){
  case 1:  //Nuestro if para opcion = 1
    return numero1+numero2;
  case 2:  //Nuestro if para opcion = 2
    return numero1-numero2;
  case 3:  //Nuestro if para opcion = 3
    return numero1*numero2;
  case 4:  //Nuestro if para opcion = 4
    return numero1/numero2;
  case 5:  //Nuestro if para opcion = 5
    return numero1%numero2;
  default: //Nuestro else
    return 0;
  }
}

Como notamos solo reduce la cantidad de if's y ademas nos permite usar un else, pero como usamos una funcion existente no podiamos usar todo el potencial de switch, mejor sera hacer una que nos demuestre la verdadera funcion de switch.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int numero;
printf("Escriba un numero\n");
scanf("%i",&numero);
switch(numero){
  case 0:
    printf("Numero vale %i y es 0\n",numero);
  case 4:
    printf("Numero vale %i y es 4\n",numero);
    break;
  default:
    printf("Numero vale %i y no es 4 ni 0\n",numero);
    break;
  }
system ("pause");
return 0;
}

Una cosa muy mala para los que empiezan es que si meten 0 veran que ademas les dice que tambien es 4, por una simple razon, los casos no reconocen el fin del if y tenemos que señalarlo con la instruccion break. En los demas casos tenemos esa instruccion y efectivamente solo hacen lo que esta entre el inicio del case y el break.

En línea
fulapol
Newbie
*
Desconectado Desconectado

Mensajes: 6
Temas: 2


Ver Perfil






 Siguiente nivel:
 4% ( 2 / 50 )

« Respuesta #2 en: 30 de Mayo de 2008, 04:56:58 »


Haslo mientras debas

Otra condicion muy buena es el while, esta lo que hace es verificar una sentencia y dependiendo del resultado se ejecuta o no. Podemos definir todo dentro de { y } y lo que esta dentro del while podria ser visto como un gran if que se repite todo el tiempo.
   Algo para comprobar el while seria esto:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int numero;
printf("Escriba un numero\n");
scanf("%i",&numero);
while(numero!=20)
{
printf("%i",numero);
numero=20;
}
system ("pause");
return 0;
}

Y si lo comprobamos esto nos imprimira el numero hasta que sea igual a 20, por que la condicion del while es que numero sea diferente a 20 entonces cuando numero sea 20 acaba. La comprobacion es meter 20 para observar lo que sucede.
   Otra variacion del while es el do...while y lo que hace es ejecutar el bloque de codigo y verificar el while para saber si debe regresar al do o no. En este caso nosotros meteremos nuestro do...while para mejorar otra ves la calculadora.

#include <stdio.h>
#include <stdlib.h>

int calcula(int numero1, int numero2, int opcion);
int main()
{
int numero;
int numero2;
char opcion;
do{
  system ("cls");
  printf("Soy una calculadora basica que suma, resta, multiplica y divide\nEscriba un numero\n");
  scanf("%i",&numero);
  printf("¿que numero desea sumarle, restarle, multiplicarle y dividirle?\n",numero);
  scanf("%i",&numero2);
  printf("Numeros sumados valen %i \n",calcula(numero, numero2, 1));
  printf("Numeros restados valen %i \n",calcula(numero, numero2, 2));
  printf("Numeros multiplicados valen %i \n",calcula(numero, numero2, 3));
  printf("Numeros divididos valen %i \n",calcula(numero, numero2, 4));
  printf("Y el residuo es %i \n",calcula(numero, numero2, 5));
  printf("Desea repetir(y/n):");
  scanf("%c",&opcion);
  }while(opcion=='Y'||opcion=='y');
return 0;
}

/*********************************************************
*                                                        *
*  Nuestra funcion clacula pide dos numeros que son los  *
*  que utilizara para trabajar y uno mas para saber que  *
*  operacion realizar.                                   *
*  Las opciones son: 1 = suma, 2 = resta, 3 = mult.,     *
*  4 = division y 5 = residuo                            *
*                                                        *
**********************************************************/

int calcula(int numero1, int numero2, int opcion)
{
switch (opcion){
  case 1:  //Nuestro if para opcion = 1
    return numero1+numero2;
  case 2:  //Nuestro if para opcion = 2
    return numero1-numero2;
  case 3:  //Nuestro if para opcion = 3
    return numero1*numero2;
  case 4:  //Nuestro if para opcion = 4
    return numero1/numero2;
  case 5:  //Nuestro if para opcion = 5
    return numero1%numero2;
  default: //Nuestro else
    return 0;
  }
}

Podran notar que en este caso usamos el scanf para obtener una letra, en caso de que sea Y o y del ingles Yes el programa regresara al do. Ahora deben notar una cosa, los char siempre nesecitan usar comillas simples para poner o comparar un valor.


Las variables, mas que nombres

Ahora tenemos que regresar a las variables y analizarlas mas profundamente. Una variable es la forma en la que el programa sabe en que punto de la memoria estan los datos pero podemos hacer muchas cosas con las variables y dos formas que veremos son los punteros y los arrays o vectores o arreglos. Las variables son algo asi como etiquetas que tienen el punto de la memoria donde estan los datos y los tipos son para saber la cantidad de memoria que ocupan. Ahora podemos crear punteros o arrays.
   Empezaremos con los array o arreglos. Los arrays son un grupo de variables que estan escritas todas juntas, se guarda un espacio continuo. Para que quede mas claro podemos pensar en las variables como folios, cada que creamos una el folio avanza, pero a veces nesecitamos tener el folio 1, 2, 4, simplemente no nos importa el orden en el que esten, pero a veces queremos tener de 15 al 17, todos de corrido, para eso sirve el array. Obviamente el array trae mas ventajas que esa pero pasemos a trabajar con ellos. Un array se declara como tipo nombre[tamaño].
   Una ves declarado el array tenemos que usar el indice o posicion o como lo quieran llamar. Cada array empieza del 0 al tamaño - 1. Y se le puede dar el valor al declararlo o individualmente.

#include <stdio.h>
#include <stdlib.h>

int main()
{

//Declaramos un array de 10 elementos, para darles valor
//Nesecitamos escribir los valores entre { y } y
//Separarlos con ,

int numeros[10]={65,2,3,56,1,7,3,5,9,8};

//Declaramos 10 elementos char

char letras[10];

//Ahora les damos valor individualmente

letras[0] = 'v';
letras[1] = 'a';
letras[2] = 'e';
letras[3] = 'r';
letras[4] = 'y';
letras[5] = 'b';
letras[6] = 'f';
letras[7] = 'd';
letras[8] = 'f';
letras[9] = 'g';

//Imprimimos las variable, recordar la posicion en el array

printf("Elemento 1 de los numero %i\n",numeros[0]);
printf("Elemento 10 de los numero %i\n",numeros[9]);
printf("Elemento 1 de las letras %c\n",letras[0]);
printf("Elemento 10 de las letras %c\n",letras[9]);
system ("pause");
return 0;
}

Ahora esto nos puede servir para manejar datos cuando no queremos crear dato, dato1, dato2, etc. Y para otro uso que veremos despues.

   Ya que tenemos a los arrays debemos conocer a los punteros. Un puntero apunta a una direccion, esto quiere decir que como sabemos una variable tiene el contenido de una posicion en la memoria mientras que un puntero tiene la direccion en la memoria de una variable. Para declarar un puntero se hace tipo* variable, aunque algunas personas hacen tipo *variable. Si notamos el * es para indicar puntero.
   Los punteros no tienen gran importancia por el momento pero despues veremos como aprovecharlos.

#include <stdio.h>
#include <stdlib.h>

int main()
{

//Esta es tambien una forma de inicializar punteros

int numero, *puntero;

//Inicializamos el numero y el puntero
//Como el puntero apunta a la memoria utilizamos & para indicar
//Un lugar de la memoria donde esta la variable

numero = 10;
puntero= &numero;

//Imprimimos las variable, recordar que & indica la posicion
//De la variable, juguemos unpoco con esto

printf("Numero %i\n",numero);
printf("Puntero %i\n",puntero);
printf("Direccion de numero %i\n",&numero);
printf("Que hay en lo que apunta el puntero %i\n",*puntero);
system ("pause");
return 0;
}

Y asi se manejan los puntero y los arrays y todas estas cosas tan raras que se pueden hacer con las variables. Solo para terminar bien los arrays usan [] y los puntero usan *, ahora cuando usamos un puntero y el puntero tiene * eso significa que nos de el valor de lo que esta apuntando.


Cadenas

Antes de empezar tenemos que definir que es una cadena. En ingles es string y se utiliza como una cadena de letras, en una definicion en español serian palabras y las palabras son un monton de letras unidas. En C existen 2 formas (existen mas) para manejar strings, los punteros y los arrays, por comodidad usaremos los arrays.
   La razon por la cual se usan los arrays es para tener una cadena de letras, en este caso char, y que esten juntas en la memoria. Todas las cadenas deben terminar en 0 y deben ser lo suficientemente grandes como para almacenar todo el texto, en el caso de las funciones printf y scanf utilizaremos %s para expresar una string, un array de char terminado en 0.

#include <stdio.h>
#include <stdlib.h>

int main()
{

char hola[5]= "Hola";

//Hola vale la palabra mas el 0, entonces es 4 +1 = 5
//Por eso el tamaño del array

//Imprimimos la cadena, no nesecitamos especificar un indice

printf("Numero %s\n",hola);
system ("pause");
return 0;
}

A partir de ahora utilizaremos otra cabecera mas llamada string.h y les explicare algunas funciones.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
   char cadena[5] = "Hola";

//Imprimimos la variable

   printf( "cadena es %s\n", cadena);

//Funcion strlen, para obtener el tamaño de un cadena

   printf( "Tamaño de la cadena es %i\n", strlen(cadena));

//Ahora veremos la funcion strcmp, que compara cadenas
//Notar que la unica diferencia es la h minuscula

   char cadena2[5] = "hola";
   if (strcmp(cadena,cadena2) < 0)
      printf("%s es menor que %s\n",cadena, cadena2);
   else
      printf("%s es igual o mayor que %s\n",cadena, cadena2);

//Con la funcion strcat podemos concatenar o unir strings
//La afectada es la primera y solo puede unir texto estatico

   char cadena3[20] = "Hola";
   printf("cadena 3 es %s\n",cadena3);
   strcat(cadena3," mundo!");
   printf("Ahora cadena 3 es %s\n",cadena3);

//Ahora la funcion strcpy para copiar cadenas

   char cadena4[5];
   strcpy(cadena4,cadena);
   printf("cadena es %s y cadena4 es %s\n",cadena,cadena4);

//Con la funcion strchr podemos buscar una letra en la cadena
//Nos devolvera la cadena desde la letra, en este caso la

   char letra = 'l';
   printf("Desde la l %s\n",strchr(cadena,letra));

   system("pause");
   return 0;
}


Has para

Bueno me pregunto que falta, que falta y pues si me acorde de algo importante, el for. For es una sentencia para hacer un bucle que no habia tocado porque no tenia nesecidad de usarla pero ahora que sabemos que es un array podemos utilizar for como una buena herramienta y hace necesario su uso.
   Para poner un ejemplo muy simple de for vamos a hacer las tablas de multiplicar del 9. For utiliza tres parametros, uno es el de condicion inicial, el segundo es condicion final y el tercero es tipo lo que haremos para llegar a la condicion.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int numero,i=9;  //i nos va a servir de apoyo, los dos a 9

for(i=0;i<=;i++) //Aqui decimos que i empieza como 0 hasta 10, i++ aumenta en 1 a i
   printf("Tenemos que %i por %i es %i\n",numero,i,numero*i);

int numeros[10]={0,1,2,3,4,5,6,7,8,9}; //Array de numeros para la multiplicacion

for(i=0;i<10;i++) //El for, otra ves i empieza como 0
   printf("Tenemos que %i por %i es %i\n",numero,numeros,numero*numeros);

//Como podemos notar i puede funcionar como indice en el array

system ("pause");
return 0;
}


El codigo oculto

Una parte de el lenguaje C que podria parecer solo para los expertos es el preprocesador del compilador. El preprocesador de C es una parte importante del compilador con el cual podemos darle instruccion mediante directivas, estas directivas empiezan con # y oficialmente son 12 aunque dependiendo del compilador puede haber mas. La mas comun es #include con el cual podemos agregar codigo a el archivo y el nobre del archivo cuando va entre <> es buscado con las cabeceras y si esta entre "" se busca en el lugar donde esta el archivo y comunmente se usa para incluir las cabeceras pero podemos usarla donde sea.
   Otra directiva importante es #define que nos permite definir una constante, por ejemplo #define PI 3.1416 define a PI con el valor de 3.1416 en todo el programa pero esto es curioso porque pensaran que eso es como declarar una variable y pues el uso de #define es definir pero ademas hace el cambio en tiempo real, esto quiere decir que puedo hacer un codigo tan bizarro como quiera:

int main(){
#include <stdio.h>
//Podemos hacer el include donde sea

#define escribe printf
//ahora escribe es printf

//El compilador cambia todos los escribe por printf
escribe("Comando escribe");
}

Una parte esencial de #define es crear macros, la definicion de macro no me la se pero bueno ahora veremos esto. Una macro es un #define donde el nombre de lo que definimos tiene () y todo lo que esta en parentesis son los parametros. Definamos una macro

int main(){
#include <stdio.h>

#define escribe printf
#define mult(x,y) (x)*(y)
//Parametros x, y son multiplicados
//el parentesis es por si en ves de pasar un numero pasamos una sentencia
//Como mult(4+5,5) entonces se traduciria como 4+5 * 5 y claro primero multiplica
//y luego suma, mientras que nosotros queremos lo contrario y debe ser (4+5)*(5)
//donde primero suma y luego multiplica

//El compilador cambia todos los escribe por printf
escribe("%i",mult(7,8-2));
}

Las macros deben ser de una linea o se debe poner \ al final de cada linea, sin dejar espacios. Una parte curiosas es que tambien podemos quitar todo lo que definimos con la directiva #undef y asi borramos constantes y macros del codigo.
   Otras directivas son los if's #if , #else , #elif , #endif , #ifdef y #efndef y cada uno es muy simple, funcionan como cualquier if normal con la diferencia que estos buscan el valor de una constante y no de una variable, #if se debe cerrar con un #endif, #else lo que se realizara si no se cumple el #if y #elif es un else/if el cual tambien busca una condicion pero solo se ejecuta si el #if no se cumple. La condicion #ifdef busca que la condicion este definida mientras que #ifndef es verdadero cuando no esta definido y los dos actuan como cualquier if normal.

 #define valor 100
 #define C
 
int main(){
 
     #if valor>50
         printf("Compilando con valor > 50);
     #else
         printf("Compilando con valor <= 50);
     #endif
 
     #ifdef C
         printf("Se programo con C");
     #endif
}

Creo que solo veremos 1 directiva mas. Esta directiva es #pragma y depende totalmente del compilador para funcionar pues esta le pasa intrucciones al compilador.
  En muchos ficheros .h veran que para evitar definir y evitar crear todo dos veces hacen esto:

/* Este es un fichero fichero.h */
 #ifndef _FICHERO_H_
 //si no existe
 #define _FICHERO_H_
 
     /* Aqui el código */
 
 #endif
En línea
SERBice®
Administrator
Jr. Member
*****
Desconectado Desconectado

Mensajes: 92
Temas: 32


Ver Perfil WWW






 Siguiente nivel:
 64% ( 32 / 50 )

« Respuesta #3 en: 02 de Junio de 2008, 03:15:33 »

excelente aporte fulapol, se argadece mucho lo que estas haciendo.

sigue asi (y) Wink
En línea


Cuando la teoria falla es porque no tienes la suficiente práctica Roll Eyes
nanchu_lacuerva87
Newbie
*
Desconectado Desconectado

Mensajes: 1
Temas: 0


Ver Perfil






100% Completado ;)

« Respuesta #4 en: 24 de Junio de 2009, 01:10:07 »

 Roll Eyes Muchaaassss gracias!!! me sirve de muchisima ayuda!!!

Saludos! Kiss
En línea
SERBice®
Administrator
Jr. Member
*****
Desconectado Desconectado

Mensajes: 92
Temas: 32


Ver Perfil WWW






 Siguiente nivel:
 64% ( 32 / 50 )

« Respuesta #5 en: 24 de Junio de 2009, 01:11:08 »

Roll Eyes Muchaaassss gracias!!! me sirve de muchisima ayuda!!!

Saludos! Kiss

Me alegra que el aporte del colega te haya servido.

Y por cierto, bienvenid@ al foro.
En línea


Cuando la teoria falla es porque no tienes la suficiente práctica Roll Eyes
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Powered by MySQL Powered by PHP Powered by SMF | © 2006-2007, Simple Machines LLC
SERBice® WEB Theme ©2003-2008 - Reservados todos los derechos.
XHTML 1.0 válido! CSS válido!
Página creada en 0.297 segundos con 32 queries.