You are on page 1of 18

CENTRO DE ESTUDIOS TECNOLOGICOS

INDRISTRIAL Y DE SERVICIOS NO. 109

ALUMNOS: Erika Elizabeth Navarro Gutirrez


Josu Emmanuel Lpez Orozco
GRADO: 2

GRUPO: AM

ESPECIALIDAD: PROGRAMACION

MAESTRA: MARGARITA ROMERO ALVARADO

MATERIA: DESARROLLA SOFTWARE UTILIZANDO


PROGRAMACION ESTRUCTURADA
Code: Blocks para programar en
C++
Code::Blocks es un IDE (entorno de desarrollo integrado) para programar en C+
+, de cdigo libre, multiplataforma, que presenta una interfaz muy agradable, pero
que adems se destaca por ser algo ms rpido que otro entorno muy popular
como es Dev-C++.

Este IDE es compatible con una amplia variedad de compiladores, los cuales
detecta de forma automtica en caso de estar instalados en el sistema. Entre esos
compiladores se encuentran Borland C++, Microsoft Visual C++ Free Toolkit, GCC
y Digital Mars Compiler.

El entorno es totalmente personalizable a travs de la integracin de


diversos complementos que agregan diversas funcionalidades; por ejemplo,
wxSmith se trata de un complemento que provee al IDE de bibliotecas que
permiten desarrollar interfaces grficas de usuario (GUI) en las aplicaciones.
Existe otro complemento llamado Astyle que se encarga de indentar y hacer ms
prolija la visualizacin del cdigo C++. Cuenta con soporte para SVN a travs del
plugin TortoiseSVN.

Como habamos comentado, CodeBlock es ms rpido que Dev-C++ debido a


que se encuentra escrito en lenguaje C, por lo tanto se puede compilar en menos
tiempo un programa; y adems, la construccin (build) tambin se hace ms
rpido debido a que no se crean makefiles, sino que utiliza sus propios archivos
.cbp para hacer ese proceso de forma automtica.

Este entorno incluye un potente editor que presenta las caractersticas habituales
presentes en los IDE ms conocidos (Eclipse, NetBeans, Aptana, etc.), por
ejemplo: sistema de pestaas para poder abrir varios proyectos, uso de colores
para que una mejor comprensin de la sintaxis del cdigo, funcin de
autocompletado mientras se escribe el nombre de comandos y de funciones,
bsqueda avanzada de texto, y otras tantas caractersticas que le facilita el trabajo
a los programadores de C, C++ y Fortran. Se dispone de un extenso y
detallado manual de Code::Blocks (en ingls), en donde se explica cmo crear un
proyecto, cmo compilar, cmo usar el depurador, qu complementos se pueden
integrar al entorno, y el resto de sus funciones.
Ejemplo 1 de Visual C++

Creacin de un proyecto
La primera vez que ejecutamos nuestro IDE Code::Blocks veremos algo a la
siguiente imagen.

Ahora, para crear un proyecto vamos a file > new > project.

Nos aparecer una ventana emergente como esta.


Y seleccionamos Console application (o el tipo de aplicacin que desea) y
presionamos Go.
Damos a next y nos aparecer una ventana para elegir el lenguaje.

Presionamos next y introducimos el titulo de la aplicacin en, Project title. Y


presionamos next.
Nos aparecer una ventana como esta. Aqu podemos configurar las opciones del
espacio de trabajo y donde se guardaran nuestros archivos. Presionamos finish.

Una ves hecho esto, ya podemos empezar a programar solo tenemos que abrir el
archivo main.c para editarlo y compilarlo con F9. Abrimos el nodo o carpeta azul
de la izquierda y seleccionamos main.c, que sera el archivo de codigo fuente de
nuestra aplicacin.
En el archivo main.c introduciremos nuestro codigo, para compilarlo podemos
teclear F9 o en el menu Build > Build and run.
Bueno hasta aqu llega este articulo sobre Code::Blocks algo bsico

Ejemplo 2 Visual C++


Una vez descargado e instalado el programa(no deberia suponer ninguna
dificultad), deberian empezar un nuevo "proyecto".

En el wxDev-c++, van a ir a la opcion "File" y clickean en "New" y "Project".


screenshot:

En VS seria asi:
Que proyecto debo crear?
Una vez seleccionado "nuevo proyecto", deben seleccionar "aplicacion de
consola" y elegir el nombre y destino del proyecto .

wxDev-c++:

En VS:
Ahora deberia aparecer una ventana con texto(efectivamente, texto en c++) que
veremos mas adelante, aunque este primer tutorial se basara mas en lo basico de
los ides.

Analicemos el codigo. Pero antes hagamos unas modificaciones para poder


entenderlo mejor. Sea el programa que sea cambienlo por:

#include <iostream>

using namespace std;

int main()
{
cout << "Hola Mundo";
cin.get();
return 0;
}

Usando VS deben editar el archivo main.cpp, tambien se necesitara agregar al


principio

#include "stdafx.h"

La primera linea:

#include <iostream>

Con esto, le estamos diciendo al programa que incluya una libreria(conjunto


de codigo ya escrito que nos permitira programar). la libreria <iostream> es
la libreria estandard de c++ y nos permite usar las sentencias(las "ordenes"
que le damos a la computadora) mas basicas.

using namespace std;

como vimos antes, le dijimos al programa que incluya la libreria <iostream>,


todo lo que esta escrito en <iostream>, esta escrito en lo que se llama un
namespace(nombre de espacio).al escribir esto, nos ahorramos tener que
escribir std:: antes de cada sentencia que escribamos, porque ya
declaramos que vamos a usar este nombre de espacio.
Es importante destacar que al final de la sentencia pusimos un ";" esto
significa que ese es el final de la sentencia, y lo vamos a tener que poner al
final de todas las sentencias(con algunas exepciones). Sino recibiremos un
error al compilar.

int main()

Aqui declaramos una funcion. Una funcion es una parte de codigo a la que le
asignamos un nobmre. En este caso, el nombre main(). Es importante que
despues del nombre esten los parentesis, luego veremos porque.
En resumen:

cout << "Hola Mundo";

Ahora lo que veremos en la consola. cout significa character output(salida de


caracteres). A esta salida le vamos a insertar el valor "Hola Mundo". Lo que hara
que en la consola se escriba "Hola Mundo". Si no ponemos las comillas, la
computadora creera que "Hola Mundo" es una sentencia y nos dara error.
cin.get();

Esta instruccion hara que la computadora espere a que presionemos la tecla


"enter" para continuar, ya que sino se abrira y cerrara antes de que podamos leer
nada.
Algunos ides al ejecutar el programa esperan a que se apriete la tecla "enter" por
mas que no lo agreguemos al programa, pero si ejecutamos el "Tutorial
T!.exe"(resultado de la compilacion) sin el ide, se cerrara solo al instante porque lo
ejecutaremos sin el ide.

return 0;

Por decirlo de alguna manera, todas las funciones deben retornar un valor. Y la
funcion main(), retornara el valor 0 si no hubo ningun error. Las funciones deberan
retornaran el valor especificado al declararlas "int main()" significa que la funcion
main devolvera un numero entero(a los numeros enteros se los llama int por
"integer" que significa entero en ingles).

Programa escrito Ahora qu?


Ahora solo falta compilar el programa, lo que se hace con un simple boton. El
boton build and run (compilar y ejecutar).
en wxdev-c++ prsionando la tecla F9 sera suficiente.
en VS se hace con la tecla F5

Para los que sigan interesados en lo que dije al principio sobre el minimalismo:

Editores de texto y compiladores


Compilador: MinGW

http://www.mingw.org/

Deben clickear en "Download Installer" e instalar el programa en el directorio que


quieran.
Cuando termine de bajar el instalador y aparesca una lista de packetes,
sleccionen:
gcc g++ compiler
y
mingw base installation

Una vez instalado el compilador iran a "Mi PC" y clickean en propiedades. Una ves
en la ventana de propiedades, dirijanse a "avanzado", luego a variables de entorno
y en la caja de arriba buscan el la variable PATH y le dan click a editar.
En el menu editar, si ya hay algo escrito, agregan al final:
C:MinGWbin (o el directorio en el que instalaron el compilador)
Una vez echo esto con el editor que tengan, crean un archivo y lo nombran como
quieran, en la extension escriben ".cpp" que significa c plus plus.
De ahi en adelante sigan con el tutorial de arriba para editar el texto.

Compilando con MinGW


Abren el menu de incio y ponen "ejecutar"(en windows xp) si estan en windows 7
no clickean nada. Escriben cmd y se abrira la consola. All buscan el directorio de
su archivo .cpp escribiendo "cd .." para volver al directorio anterior y "cd <"nombre
de la carpeta">" para entrar en la carpeta.
Una vez ahi escriben:

g++ <nombre del archivo>.cpp -o <nombre que quieran para el


ejecutable>

Ejemplo:
Mi archivo estan en C:Archivos c++Tutorial T!
Mi archivo se llama Tuto.cpp

Pasos a seguir en la consola:

C:WINDOWSsystem32> cd..
C:WINDOWS> cd..
C:> cd "Archivos c++"
C:Archivos c++> cd "Tutorial T!"
C:Archivos c++Tutorial T!> g++ Tuto.cpp -o tuto.exe

y obtendran el ejecutable de su proyecto.


Ejemplo 1 Visual C
Los tutoriales de C# proporcionan informacin general sobre el lenguaje e identifican las
caractersticas ms importantes. Cada tutorial comprende uno o varios programas de
ejemplo. Los tutoriales explican el cdigo de ejemplo y aportan informacin adicional de
fondo. Tambin incluyen un vnculo a los temas correspondientes de los ejemplos, donde
se pueden descargar y ejecutar los programas de ejemplo.
Nota Los tutoriales de C# no ensean a crear una interfaz grfica de usuario para un
programa, como por ejemplo un formulario Windows Forms o una pgina de formularios
Web Forms. Para comenzar a trabajar en esa rea, vea los Tutoriales de Visual C#.

Tutorial

Hola a todos

Parmetros de la lnea de comandos

Matrices

Propiedades

Bibliotecas

Control de versiones

Clases de coleccin

Estructuras

Indizadores

Propiedades indizadas

Conversiones definidas por el usuario

Sobrecarga de operadores
Delegados

Eventos

Implementacin explcita de interfaces

Mtodos condicionales

Documentacin XML

Invocacin de la plataforma

Interoperabilidad COM, parte 1

Interoperabilidad COM, parte 2

Atributos

Seguridad

Subprocesamiento

Cdigo no seguro

OLE DB

Ejemplo 2 Visual C

Crear proyecto en Visual Studio


Para este ejemplo crearemos una aplicacin de consola llamada SocketUDP en
lenguaje C#, as tendremos el cdigo ms limpio y fcil de comprender. En mi
caso estoy usando Visual Studio 2012 y Framework 4.5, no hay problema si
utilizan Framework 4 y/o Visual Studio 2010 o superiores.
aplicacin de consola visual 2013
Codificar servidor de escucha

Como lo mencion en el artculo anterior, ser bueno que te familiarices con hilos
antes de continuar... Aqu hay un tutorial.
Ahora vamos a definir los objetos que nos permitirn enviar y recibir datos,
adicionalmente nos darn un control de nuestra aplicacin.

//permite escuchador y/o enviar datos en protocolos UDP/TCP y otros


private static Socket socket = null;
//nos indicar si el servidor o hilo est escuchando, tambin nos servir para
finalizarlo
private static bool corriendo = false;
//el punto local es la IP de la tarjeta de RED local por la que escucharemos datos y
el puerto
private static IPEndPoint puntoLocal = null;
static void Main(string[] args)
{
...
Como podemos observar tenemos un objeto IPEndPoint el cual lo creamos
indicndole una IP y un puerto.

Esto puede llegar a confundir, ya que esta IP no tiene nada que ver con la del
cliente externo al que le enviaremos datos sino la direccin de la tarjeta de red por
la cual queremos que se escuchen datos (en caso de que tengamos varias),
incluso si hubieran varias tarjetas de red en la mquina podemos dejar el
IPAddress.Any para indicar que se recibirn datos sin importar la tarjeta de red.
Ahora crearemos el mtodo que ser ejecutado por un hilo, y permitir establecer
la "escucha" de datos entrantes al servidor.

//servidor de escucha de datos UDP, este es llamado por un hilo


private static void Escuchador()
{
//instanciamos el socket
socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,
ProtocolType.Udp);
//asociamos el socket a la direccin local por la cual escucharemos (IP:Puerto)
//en caso de que otro programa est escuchado por el mismo IP/Puerto nos
lanzar un error aqu
socket.Bind(puntoLocal);
Console.WriteLine("escuchando...");
//declarar buffer para recibir los datos y le damos un tamao mximo de datos
recibidos por cada mensaje
byte[] buffer = new byte[1024];
//definir objeto para obtener la IP y Puerto de quien nos enva los datos
EndPoint ipRemota = new IPEndPoint(IPAddress.Any, 0); //no importa que
IPAddress o IP definamos aqu
//indicamos que el servidor a partir de aqu est corriendo
corriendo = true;
//ciclo que permitir escuchar continuamente mientras se est corriendo el
servidor
while (corriendo)
{
if (socket.Available == 0) //consultamos si hay datos disponibles que no
hemos leido
{
Thread.Sleep(200); //esperamos 200 milisegundos para volver a preguntar
continue; //esta sentencia hace que el programa regrese al ciclo
while(corriendo)
}
//en caso de que si hayan datos disponibles debemos leerlos
//indicamos el buffer donde se guardarn los datos y enviamos ipRemota
como parmetro de referencia
//adicionalmente el mtodo ReceiveFrom nos devuelve cuandos bytes se
leyeron
int contadorLeido = socket.ReceiveFrom(buffer, ref ipRemota);
//ahora tenemos los datos en buffer (1024 bytes) pero sabemos cuantos
recibimos (contadorLeido)
//convertimos esos bytes a string
string datosRecibidos = Encoding.Default.GetString(buffer, 0, contadorLeido);
Console.WriteLine("Recib: " + datosRecibidos);
}
}
Repacemos...primero definimos el objeto socket indicndole que funcionar con el
protocolo UDP, con el mtodo socket.Bind(...) enlazamos el socket a un extremo
local (direccin IP y puerto local) para escuchar datos. Luego definimos un buffer
(arreglo de bytes) de un tamao el cual consideremos que quepa cada paquete de
datos que vamos a recibir (cada envo).

Con EndPoint ipRemota = new IPEndPoint(IPAddress.Any, 0); definimos el objeto


en el cual vamos a guardar la IP y puerto de quien nos enve datos, el
IPAddress.Any y el nmero 0 (IP y Puerto) no son relevantes, ya que lo nico que
necesitamos aqu es crear una instancia de IPEndPoint y asignarla a ipRemota.

Luego establecemos la variable corriendo en true para indicar que si se ha podido


crear el extremo UDP y comenzamos el ciclo.

Dentro del ciclo preguntamos si hay datos disponibles, en caso de que no haya
datos disponibles esperamos 200 con Thread.Sleep(200) y luego ejecutamos
continue; para que el programa regrese al while(...) y no contine por fuera de la
sentencia if.

Cuando hayan datos pendientes por leer (o socket.Available sea mayor que cero)
continuaremos a recibir los datos en nuestro buffer y luego lo convertimos a string
para finalmente mostrarlo en consola.
Ahora vamos a crear el hilo al iniciarse nuestro programa, el hilo ejecutar el
mtodo Escuchador().

static void Main(string[] args)


{
IPAddress ipEscucha = IPAddress.Any; //indicamos que escuche por cualquier
tarjeta de red local
//IPAddress ipEscucha = IPAddress.Parse("0.0.0.0"); //o podemos indicarle la IP
de la tarjeta de red local
int puertoEscucha = 8000; //puerto por el cual escucharemos datos
puntoLocal = new IPEndPoint(ipEscucha, puertoEscucha); //definimos la
instancia del IPEndPoint
//lanzamos el escuchador por medio de un hilo
new Thread(Escuchador).Start();
Console.ReadLine(); //esperar a que el usuario escriba algo y de enter
corriendo = false; //finalizar el servidor
Al ejecutar el programa ya estaramos escuchando datos por el puerto que
elegimos, vamos a probar con eSocket.
Inicia la aplicacin en Visual Studio para que se inicie el servidor... Si todo sale
bien tendrs la siguiente pantalla:

aplicacin consola ejecutndose


Luego abrimos eSocket, en tipo de utilidad marcamos UDP, en IP ponemos 0.0.0.0
y en puerto ponemos cualquiera diferente al de nuestro programa en C#, luego
hacemos clic en iniciar.

esocket iniciado
Luego de iniciar la escucha vamos a enviar datos, en cualquiera de los campos de
Opciones de envo vamos a poner la IP y Puerto a la que enviaremos los datos va
UDP separados por punto y coma, as: 127.0.0.1:8000

La IP 127.0.0.1 es equivalente a localhost, es decir, ya que estamos enviando


datos a la misma mquina local pondremos esta IP, en caso de que sea a de una
mquina a otra ponemos la IP de la mquina, dos puntos y el puerto.
Finalmente, escribimos algo en cualquiera de los 3 campos en la parte inferior
(Envo de informacin), y hacemos clic en el botn de envo correspondiente.

envo datos esocket


Ahora ve que se reciban los datos en la consola que desarrollamos.

recibiendo datos esocket


Casi lo olvido, para enviar datos a otro usuario basta con utilizar la misma
instancia Socket que tenemos creada y hacer lo siguiente:

private static void Enviar()


{
string datosAEnviar = "hola eledwin.com";
string ipDestino = "190.144.144.144";
int puertoDestino = 8002;
byte[] datosEnBytes = Encoding.Default.GetBytes(datosAEnviar);
EndPoint ipPuertoRemoto = new IPEndPoint(IPAddress.Parse(ipDestino),
puertoDestino);
socket.SendTo(datosEnBytes, ipPuertoRemoto);
//si ya tienes un EndPoint como por ejemplo el de quien
//te ha enviado datos, entonces puedes usar ese en el mtodo SendTo
}

You might also like