Page 1

Tutorial basico de programacion en c

Hola, en este tutorial aprendereis lo basico sobre el lenguage C, antes que nada explicarĂŠ algunas de las ventajas de este lenguage. -Es un lenguage muy usado, sobretodo para programas en modo consola. -Es muy portable, eso significa que se puede pasar a distintas plataformas. -Es muy facil de aprender y util. NOTA INPORTANTE: Es posible que los codigos puestos no

funcionenen, ya que el editor de texto que uso ha puesto mayusculas al principio, solo hay que poner en minuscula. Creo que ya ha suficiente.

INDICE: 1-Introduccion: 1.0 Compiladores. 1.1 Las ibrerias y #include. 1.2 La shell.

2-El primer codigo: 2.0 2.1 2.2 2.3

Estructura de un codigo. La libretia <stdio.h> La funcion principal main() El comando printf();

3-Variables y constantes: 3.0 Tipos de variables.


3.1 3.2 3.3 3.4 3.5

Declaracion de variables. Operaciones entre variables. El comando scanf(); Arrays. Constantes y #define

4-Las llamadas a system: 4.0 La librería <stdlib.h> 4.1 El comando system();

5-Las cadenas de texto: 5.0 5.1 5.2 5.3 5.4 5.5 5.6

La librería <string.h> El comando gets(); El comando strlen(); El comando strcmp(); El comando strcat(); El comando strcpy(); ¡Cuidado con las vulnerabilidades BOF!

6-Estructuras de control: 6.0 6.1 6.2 6.3 6.4 6.5

Los comparadores. El comando break; IF – ELSE. FOR. WHILE. SWITCH.

7-Las funciones: 7.0 7.1 7.2 7.3

Declracion de funciones. Uso de funciones. Pasar parametros a funciones. Las funciones devuelven valores.

8-Agradecimientos.

INTRODUCCION: Los compiladores. Seguramente muchos habreis oido la palabra “compilador”, un compilador es un programa que convierte un codigo hecho en cualquier lenguage en un ejecutable (.exe). Para trabajar en C necesitaremos un compilador de C, algunos son el Visual C++, Borland C, Dev C++,… Yo recomiendo el Dev C++ ya que es muy facil de usar y lo podemos encontrar en español.


Explicare algo sobre el uso del Dev C++, primero lo instalamos y lo ejecutamos. Cuando se haya cargado del todo cerramos la ventana de consejos y vamos a ArchivoNuevoFichero fuente, nos saldra un cuandro onde podemos escribir. Escribimos nuestro codigo y pulsamos ctrl+F9 para compilar el codigo, le decimos donde queremos guardarlo y si no se ha encontrado ningun bug en nuestro codigo generara el .exe.

Las librerias y #include. En C una librería es un archivo que se junta a nuestro codigo donde hay definidos algunos comandos que podremos usar. En este manual usaremos las siguientes librerias: -stdio.h -stdlib.h -string.h Aunque hay muchas mas librerias como windows.h, winsock2.h, math.h,… Para incluir una librereria en nuestro codigo funte usaremos #include < >, dentro de los “< >” ira el nombre de la librería, ejemplo: #include <stdlib.h> #include <stdio.h> #include <stdlib.h>

La shell. Que es la shell? Bien, pues la shell no es mas que la consola de comandos (cmd.exe), los programas ejecutados en modo consola son los que usan las hell para ejecutarse. Para acceder a la shell vamos a Inicioejecutar, escribimos cmd.exe y le damos a aceptar. En este tutorial los programas que aprenderemos a hacer seran en modo consola, los programas graficos hechos en C son muy complicados. Si lo que quereis es hacer programas en modo grafico recomiendo Visual Basic.

EL PRIMER CODIGO


Estructura de un codigo.

Este es el tipico codigo de “Hola mundo!” creado en C: #include <stdio.h> #include <stdlib.h> Main() {

// Esta es la funcion principal del programa

Printf(“Hola mundo!!”);

//Esto escribe texto en la pantalla

System(“pause>nul”);

//Hace que el programa se pause //hasta pulsar una tecla, usa la librería //stdlib.h

Return 0;

}

// Incluimos la librería stdio.h // Esta librearia se explicara mas adelante.

//Esto indica que devuelve 0 a la funcion y //acaba el programa correctamente, si se indica //que devuelva otro numero acabara con un //error.

// Los { } delemitan una funcion.

Como habras comprovado los // sirven para hacer un comentario, eso significa que el compilador ignora ese texto. Las // hacen que el resto de la linea sea un comentario y los /* */ hacen que todo lo que haya en su interior sea tambien un comentario. El codigo es facil de comprender, todos los programas enpiezan con la funcion main(), pero eso ya se explicara mas adelante.

La librería stdio.h Esta es la librería mas usada para escribir datos en la pantalla y recibirlos, como hemos visto antes las librerias se incluyen al principio del programa y dentro de ellas se especifica la accion que realizan los comandos, si usamos un omando y no incluimos su librería el compilador nos dara un error.

La funcion principal main() La mayoria de los programas se componen de funciones, pero la funcion main() debe estar siempre en los programas, es la funcion que se ejecutara al hacer doble click sobre el programa, desde esta funcion podemos llamar a otras funciones, pero eso ya se vera mas tarde. Al usar main() debemos


poner los comandos ue usemos entre { y } para indicar que estan dentro de esta funcion.

El comando printf(); Ya hemos visto un ejemplo con este comando y tambien su utilidad, su sintaxis es muy simple (usa la librería stdio.h), pondre un ejemplo: Printf(“Este texto se inprimira \n\n Este estara debajo”); Se imprimira el texto que este en tr las comillas y cada \n representa un salto de linea. En capitulos mas adelante veremos como inprimir variables. NOTA: Al crear un programa sin usar el comando system(“pause>nul”); el programa se abrira hara lo que tenga que hacer y se cerrara si que de tiempo a leer los resultados.

VARIABLES Y CONSTANTES Tipos de variables Que es una variable? Pues como indica su nombre es un valor variable, que podemos hacer que cambie su valor, estos valores se representan mediante un nombre que le asignaremos. Los tipos principales de variables en C son: TIPO

DESCRIPCION

DECLARACION

Caracter

Almacena una letra

Char nombre;

Integer

Almacena un numero entero

Int nombre;

De coma flotante Double

Almacena un numero decimal

Float nombre;

Almacena un numero decimal

Double nombre;

Mas adelante veremos como almacenar cadenas de texto dentro de una variable y tambien como operar con ellas.

Declaracion de variables


En la tabla ya se ve como se declaran las variables, escribimos el tipo (char, int, float,…), despues su nombre y un ;. Tambien le podemos dar un valor al declararlas, se hace asi: Int num = 23; Char letra = “b”; Int otronum; Y tambien les podemos asignar el valor despues de haberlas declarado o cambiarselo, esto se hace asi: Int num = 2; Char letra; Num = 35463; // Ahora num vale 35463 Letra = “b”; // Y letra vale “b”, se debe poner entre “ “ Si queremos escribir en la pantalla una variable mediante printf(); debemos especificar primero el tipo de variable y luego su nombre. Para especificar su tipo no se hace como en la delaracion, se hace asi: TIPO

REPRESENTACION

Integer

%d

caracter

%c

de coma flotante

%f

doble

%f

Este es un ejemplo de su uso: #include <stdio.h> #include <stdlib.h> Main() { Int num = 23; Char abc = “a” Printf(“El numero de la variable es %d \n\n”,num); Printf(“La letra %c es la declarada”,abc); System(“pause>nul”);


Return 0; } Como puedes ver dentro de las comillas se escribe su tipo como hemos visto en la anterior tabla, la cerrar las comillas una coma y su nombre. Si dentro del mismo printf(); hay mas de una variable ponemos los sinbolos de la tabla que representan el tipo de variable, al cerrar las comillas una coma y despues los nombres de las variables separados por comas. Ejemplo: Printf(“El numero es %d y la letra es %c”,nom,abc);

Operaciones entre variales Las operaciones entre variables son muy sencillas, con este ejemplo seguro que lo entienden: Int num = 23; Int numa = 2; Int result; Result = num – numa; Tambien podemos sumar variales y numeros, asi: Int num = 23; Int res; Res = num * 2; O tambien hacer operaciones convinadas: Int a = 34; Int b = 2; Int c = 78; Int d = 100; Double res; Res = a + (b * c) / (d + d – 47 * 6);

El comando scanf(); Este comano sirve para que el que ejecute el programa pueda escribir en la pantalla y asi pasarle valores a variables. Usa la librería stdio.h y su sintaxis es igual que la de printf(); Int num;


Scanf(“%d”,&num); //num tomara el valor que se haya escrito Printf(“Has escrito %d”,num);

Antes de poner el nombre de la variable se debe poner un &, eso es lago muy inportante que se olvida mucho. Si no se pone el programa puede producir errores. Ahora les pondre un ejemplo de programa que pide dos enteros, los suma y saca el resultado por pantalla. #include <stdio.h> #include <stdlib.h> Main() { Int a; Int b; Int res; Prinntf(“Introduce el 1º numero: “); Scanf(“%d”,&a); Printf(“\nIntroduce el 2º numero: “); Scanf(“%d”,&b); Res = a + b; Printf(“\n\nEl resultado de la suma es: %d”,res); System(“pause>nul”); Return 0; } Facil, ¿verdad?

ARRAYS Que es un array? Un array es una variable que puede contener mas de un dato. Los arrays se declaran de la misma forma que las variables, pero se debe indicar el numero de datos que contiene entre dos corchetes. Si se indica 1 el array contendra 2 datos, ya que tambien se cuenta el numero 0. Este es un ejemplo de la declaracion de un array: Int num[2]; //Array de 3 datos Num[0] = 2; Num[1] = 45; Num[2] = 6785755;

// Aquí le asignamos un valor a cada espacio del //array


Tambien podemos usar un array de tipo char para contener un string (una cadena de texto). El unico inconveniente es que si usamos scanf(); para almacenar un texto en un array dejara de escribir cuando encuentre un espacio, para evitar esto usaremos una funcion que veremos mas adelante. Ejemplo:

#include <stio.h> #include <stdlib.h> Main() { Char palabra[40]; Printf(“Introduce una palabra: “); Scanf(“%s”,&palabra); Printf(“\n\nHas escrito %s”,palabra); System(“pause>nul”); Return 0; } Si te has fijado en el scanf utilizamos %s envez de %c, eso es porque los strings no se pueden poner como si solo fuese un caractere.

CONSTANTES Y #define Una constante es como una variable solo que el valor no se puede cambiar, usamos #define para definir una constante. Las constantes se suelen poner debajo de los #include. Ejemplo: #define NUM 110; Ahora cuando escribamos ‘NUM’ se representara como el valor ‘110’, esto es muy util en programas que usen numeros muy largos para hacer algunos calculos, por ejemplo el numero PI (3,14159…).

LLAMADAS A SYSTEM LA LIBRERÍA <STDLIB.H> Esta es la librria que usamos para hacer llamadas a system (a la shell), aunque tambien tiene otras funciones como obtener numeros “aleatorios”


EL COMANDO system(); Este es el comando que nos permite hacer una llamada a system, cuando digo hacer una llamda a system me refiero a enviar comandos a la shell. Por ejemplo podemos enviar un comando que crea un archivo: System(“echo >archivo.txt”); Dentro de las comillas indicamos el comando a enviar. En programas anteriores hemos usado system para enviar el comando “pause>nul”, este comando hace que el programa se pause hasta que pulsemos una tecla. Si os interesa saber los comandos mas basicos podeis escribir “help” en la shell y os saldran todos, o tambien podeis leeros este manual de programacion BATCH que hice hace tiempo: http://foro.elhacker.net/index.php/topic,167525.0.html

LAS CADENAS DE TEXTO LA LIBRERÍA <STRING.H> Esta es la librería que se usa para el manejo de cadenas de texto, tiene funciones de comparacion, para contar los caracteres que tiene, para juntarlas,… Antes de todo eso explicare el comando gets(); es el comando que se usa para estribir textos en arrays con espacions incluido.

EL COMANDO gets(); Este comando es muy facil de usar, antes ya he dicho para que sirve asi que pasare directamente a explicar su uso. Pongo un ejemplo y se entiende: Char txt[1000]; Gets(txt);


Como podeis comprovar no tiene mas complicacion, se pone el array entre parentesis y sin comillas.

EL COMANDO strlen(); Este comando mide los caracteres de una cadena de texto y la almacena en una variable, tambien le podemos enviar una variable envez de una cadena. Ejemplo: Char abc[30] = “hola a todos”; Int n; int n2; n = strlen(“buenos dias”); // almacena los caracteres en n n2 = strlen(abc); // y en n2. printf(“La primera cadena contiene %d carecteres”,n); printf(“\n\nLa segunda contiene %d”,n2);

EL COMANDO strcmp(); Este comando compara dos cadenas de texto, si son iguales devuelve 0 y si son distintas devuelve 1. Ejemplo: Int dif; Int difa; Char h[9] = “cadena”; Dif = strcmp(“hola”,”ola”); Difa = strcmp(h,”cadena”); Printf(“Devuelven los valores %d y %d”,dif,difa);

EL COMANDO strcat(); Este comando junta dos cadenas, lo explico con este ejemplo: Char h[100] =”ho” Char l[6] =”la”; Strcat(h,l); Strcat(h,” gete!!”);


Printf(“%s”,h); Las dos cadenas concatenadas quedan guardadas en la primera variable indicada a strcat();

EL COMANDO strcpy(); Este comando copia el contenido de una cadena en otra. El resultado de la copia tambien se queda en la primera variable indicada. Char aa[20]; Char bb[10] = “hola”; Strcpy(aa,bb); Printf(%s”,aa);

¡CUIDADO CON LAS VULNERABILIDADES BOF! Las vulnerabilidades BOF, tambien llamada Bufer Overflow o Stack Overflow consisten en desbordar una variable (ponerle mas bytes de los que se permite) para ejecutar codigo maligno. Los codigo normalmente vulnerables son los que usan strcat(); y strcpy();. Por ejemplo con un strcpy podriamos copiar una cadena muy larga en otra pequeña y asi ejecutar codigo arbitrario. Si os interesa el tema podeis leer esto: http://foro.elhacker.net/index.php/topic,57910.0.html Un codigo vulnerable podria ser este: Char cadena[40]; Char cadena2[100]; Gets(cadena2); Strcpy(cadena,cadena2); Ya que podemos incluir en la primera cadena mas bytes de los que caben, para solucionar el fallo solo hay que bajar el numero de bytes que caben en “cadena2” para que sea mas bajo que los que caben en “cadena”.


ESTRUCTURAS DE COTROL

LOS COMPARADORES Los comparadores son operadores que se usan para comparar dos valores, esta es la lista de los mas usados:

COMPARADOR DESCRIPCION ==

Igual a…

<=

Menor que o igual a…

>=

Mayor que o igual a…

!=

Deferende de…

<

Menor que…

>

Mayor que…

NOTA: No se puede usar = para comprar dos valores, solo sirve para asignar.

EL COMANDO break; Este comando se usa para salir de cualquier estructura de control (if, for, while…), normalmente se usa en switch para terminar los case aunque tambien podemos usarla en qualquier otra.

FI – ELSE Esta es una de las estructuras mas usadas por los programadores. Si se cumple la condicion indicada se realizara una accion y si no se cumple realizara otra. La accion que realizara se delimita por { y } Ejemplo:


If (a == b) { Printf(“La variable a es igual a b”); } else { Printf(“La variable a es diferente de b”); } Else significa que si la accion no se cumple realizara otra. Ahora pondre un ejemplo de un programa que para que uncione se le debe introducir una contraseña: #include <stdio.h> #include <stdlib.h> #include <string.h> Main() { Char pass[20]; Char passautentica[20] = “Manzana”; //El pass es “manzana” Int comp; //Aquí se almacena el valor devuelto por strcmp(); Printf(“Introduce la contraseña: ”); Scanf(“%s”,&pass); Comp = strcmp(pass,passautentica); //Funcion que compara dos //textos, explicada mas atrás If (comp==0) {

//Si comp es 0, la contraña sera correcta

Printf(“Contrseña correcta!!”); // Y si no es 0, sera incorrecta } else { Pritntf(“Contrseña Incorrecta”); } System(“pause>nul”); Return 0; }


FOR La sentencia for es un bucle, se repite una accion mientras que se cumpla una condicion indicada. Su uso es sencillo, sele debe indicar el valor de una variable, la condicion y el incremento o decremento de la variable. ¿Qué es incremento y decremento? Es un operador que le suma 1 a una variable o se los resta, en los bucles cada vez que se repite se le resta 1 o se le suma para que pueda llegar a cumplirse la condicion.Ejemplo: For (var=0;var!=21;var++) { Printf(“Var es igual a %d \n”,var); } Los operadores de incremento y decremento son: Variable++; ----  Incremento Variable--; -----  Decremento En for, como dijimos antes se deben indicar tres factores en este orden: 1- Valor de la variable 2- Condicion (cuando se cumpla la condicion se parara el bucle) 3- Incremento o decremento Estos factores se deben indicar separados por ; como en el ejemplo anterior, supongo que ha quedado lo suficiente claro.

WHILE La sentencia while hace casi exactamente lo mismo que for, es un bucle que se repite. Se diferencia de for porque solo hay que indicarle la condicion que debe cumplirse para que siga ejecutandose la accion. Este es un ejemplo: While (a!=b) { // Mientras a sea distinto de b Printf(“Siguen siendo distintos”); A++; } Este otro ejemplo que pondre abajo es un programa que esta contando numeros infinitamente y escribiendolos por pantalla. #include <stdio.h> Main() {


Int a; While (1==1) { Printf(“%d “,a); } } Esto es muy sencillo, asi que vamos a ver una estructura de control para seleccionar entre muchas opciones.

SWITCH Esta es una estructura que se usa para elegir entre varias opciones, esto tambien se puede hacer con if pero resulta mas constoso y largo. Su sintaxis es sencilla, en este ejemplo lo explico: Switch (variable) { Case 1: Printf(“Lavariable vale 1”); Break; Case 2456: Printf(“La variable vale 2456”); Break; } Definimos switch y le ponemos la variable que tiene que tomar el valor, entre { y } ponemos case seguido del valor que tiene que tomar esa variable para que se cumpla la accion, y para salir de cada case usamos break;. Podemos usar varias estructuras switch para realizar un menu en un programa. Este es un ejemplo:

#include <stdio.h> #include <stdlib.h> Main() { Int opc; Char sal[10]; Printf(“Elije una de las siguientes opciones: \n\n“); Printf(“(1)- Ver el listado de conexiones”);


Printf(“\n(2)- Salir”); Scanf(“%d”,&opc); Switch(opc) { Case 1: System(“netstat –n”); Break; Case 2: Printf(“Seguro que deseas salir?? Scanf(“%s”,&sal);

(SI / NO)”);

Switch(sal) { Case “si”: Return 0; Break; Case “no”: /* Aquí las acciones que se realizaran en caso de que no se salga. */ Break; } } System(“pause>nul”); Return 0; }

Ya lo explique al principio del tutorial pero lo repetiré, cuando usamos return 0; en la funcion principal del programa (Me refiero a main() ) hacemos que el programa acabe correctamente y si envez de 0 ponemos otro numero acabara pero con errores.

LAS FUNCIONES

DECLARACION DE FUNCIONES


Antes dijimos que main() era la funcion principal del programa, eso significa que cuando ejecutamos un programa se ejecutara la funcion main. Pero pueden haber otras funciones que se ejecuten en el momento que queramos, antes de escribir un funcion tenemos que declararla, esto se hace despues de lus #include. Para declarar una funcion debemos indicar el tipo de dato que devolvera la funcion, el nombre de la funcion y los datos que le pasaremos como parametros a la funcion. Ejemplo: Void nombre(void); Int nombre(void); Primero devemos indicar el tipo de valor que devuelve la funcion, cuando ponemos void significa que no devuelve ningun valor. Despues ponemos el nonmbre de la funcion y despues entre parentesis el tipo de datos que le pasaremos como parametro, tambien podemos indicar que le pasaremos mas de un valor como parametro: Void nombre(int,int);

USO DE FUNCIONES Despues de declarar una funcion tenemos que escribir el codigo que ira dentro de ella y se ejecute cuando llamemos a esa funcion, en este capitulo solo trataremos con funciones que no le tenemos que pasar parametros y que tampoco devuleven ningun valor. Para escribir el codigo que va dentro de cada funcion despues de cerrar la funcion main() escribimos algo parecido a main pero debemos indicar los datos que devuelven y los que le psamos: Void nombre() { /* Codigo que se ejecutara al llamar la funcion */ } Despues podemos llamara la funcion desde cualquier otra funcion o incluso desde el main. Para llamar la funcion debemos escribir su nombre y los parentesis: Nombre(); Nota: Cuando usamos la funcion main tambien podemos poer un void pero entonces no podriamos usar return 0; ya que eso lo que hace es devolver un valor a la funcion y al usar void no le podemos devolver ningun valor, pero si que podemos usar int main().


PASAR PARAMETROS A FUNCIONES Ahora veremos como pasarle valores a la funcion, lo primero es que al declararla debemos indicar el tipo o los tipos de valores que le vamos a pasar en el interir de los parentesis. Para llamar a una funcion pasandole valores debemos escribir su nombre y entre los parentesis las variables o valores (separados por comas) que queramos pasarle. Esta es una funcion que suma dos valores que le pasamos: #include <stdlib.h> #include <stdio.h> Void suma(int,int); Main() { Int a; Int b; Printf(“Introduce el valor 1: “); Scanf(“%d”,&a); Printf(“\n\nIntroduce el valor 2: “); Scanf(“%d”,&b); Suma(a,b); }

Void suma(int na,int nb) { Int res; Res = na+nb; Printf(“El resulatado de la suma es %d”,&res); System(“pause>nul”); }

Cuando ponemos la funcion con el codigo que ejecuta entre los parentesis aparte del tipo de valor que le pasamos tambien debemos poner el nombre de la variable que tendra este valor, esas variables no hace falta definirlas.

LAS FUNCIONS DEVULVEN VALORES


AquĂ­ veremos como hacer que las funciones devulven un valor, antes que nada para declarlas debemos indicar el tipo de valor que devuelve antes de poner el nombre. Dentro de la funcion usamos return valor; para devolver el valor, podemos hacer que devuelva variables. Para almacenar un valor devuelto por una funcion debemos asignarle la funcion a la variable que queremos usar para almacenar el valor. Ejemplo: Variable = funcion(a,b); Ahora veamos el ejemplo de la uncion suma() pero que envez de rescribir el valor por pantalla lo devuelve: #include <stdio.h> #include <stdlib.h> int suma(int,int); main() { int b; b = suma(1,12); printf("%d",b); system("pause>nul"); } int suma(int a, int b) { int res; res = a+b; return res;

//Devolvemos el valor almacenado en res.

}

AGRADECIMIENTOS AquĂ­ acabamo ya, espero que les haya gustado y si tienen cualquier duda envienme un main que les contestare rapidamnte. Mi email es: zhynar_x@orangemail.es Si tienen cualquier otra duda puede visitar el foro de elhacker.net, alli les contestaran enseguida. http://foro.elhacker.net

Saludos!!!


Tutorial de comandos mas utilizados en C++  

SPANISH- comandos mas utilizados para la programacion en C++

Read more
Read more
Similar to
Popular now
Just for you