domingo, 26 de febrero de 2012

INTRODUCCION A DEV-C ++

Entorno de Dev-C++: Unos de los conceptos principales que debemos tener claros a la hora de utilizar este programa es Proyecto: que es una aplicacion de todos los ficheros que requiere una aplicacion, asi como de su configuracion especifica, cuando se desea crear una aplicacion distribuida en varios ficheros que dependa de más bibliotecas/recursos es recomendable utilizar un proyecto.

Encontramos que el programa se encuentra dividido en cuatro areas:

1. Menu y barras de herramientas:

Aqui tenemos los tipicos comandos de Windows  como abrir copiar pegar y guardar, otros iconos que podemos observar son: Proyecto, Archivo fuente, Ir a linea, Añadir a proyecto, Quitar del proyecto, Copilar, Ejecutar, Depurar entre otros, si no tenemos claros un icono dejamos el raton encima de un icono durante unos segundos y aparecerá una ayuda emergente. En ella se incluye una descripción básica.

2. Explorador de proyectos y clases e información de depuración:

Aqui podremos tener acceso a:

-Explorador de proyectos, que muestra los archivos por los que está formado nuestro proyecto
-Explorador de clases, en este caso veremos cada una de las estructuras definidas en los ficheros de nuestro proyecto, así como los métodos y datos que forman parte de la estructura, incluyendo sus argumentos y su tipo.
-Información de depuración, donde podremos definir las variables que queramos cuando estemos depurando un programa.

3. Área de edición:

Aquí aparecerán los ficheros de código que abras. Donde podremos tener mas de un fichero abierto a la vez.

4. Resultados de la compilación y controles de depuración:

En la pestaña compilador veremos los errores y advertencias que ha generado la compilación de nuestro código (si los hubiera). Pulsando doble clic en uno de ellos nos remitirá directamente a la línea que provocó dicho error o advertencia. En la pestaña  resultados del compilador, tendremos toda la salida que genera el compilador gcc (que recordemos se maneja por línea de comandos) Esto también incluye errores y avisos, al igual que en la pestaña anterior. Sin embargo no tenemos la opción del doble clic para ir directamente a la línea que provocó el error. 

Ahora vamos a hablar de una forma mas detallada los menús y sus opciones:

MENÚ ARCHIVO:

Nuevo: Con esta opción podemos crear un nuevo fichero de código fuente en blanco, un nuevo proyecto seleccionado entre varios tipos un fichero de definición de recursos  o crear una plantilla a partir del código que tenemos que se convertirá en otro tipo de proyecto. Una plantilla en este caso, es un nuevo tipo de proyecto, que nos sirve de base para empezar a programa.


Propiedades: Muestra las características de los ficheros del proyecto (o del fichero actual si no hay proyecto) como líneas totales, líneas de código, líneas comentadas, tamaño, entre otras.


 Importar: Solo tenemos la opción de importar un proyecto de Visual C++. Lo que hace esta opción es transformar el proyecto de visual C++ en un proyecto de Dev-C++, con sus dependencias de bibliotecas y ficheros de código, pero no trasforma el código para que sea posible su compilación directamente con Dev-C++.

Exportar: Podemos exportar el fichero de código actual a un fichero HTML o RTF, o exportar el proyecto a HTML. Puede ser útil para la distribución o para colgar el código en una página web de forma ordenada. 

MENÚ EDICIÓN:

Insertar: Tenemos las opciones de insertar la fecha y hora actual o una plantilla de una cabecera  básica para la descripción del fichero fuente.


Intercambiar: Conmuta entre los archivos de código fuente y su archivo de encabezado asociado.


Añadir o quitar marcador / ir a marcador: Sirve para crear una marca en una línea concreta de un fichero de código (no tienen porqué estar todas en el  mismo fichero) para luego desplazarnos a ella de una forma más rápida. También tenemos un icono en la barra de herramientas con esta función.


Agregar comentario: Agrega un comentario de C++ ( // ) si hacemos una selección y elegimos esta opción, comentará todas las líneas de la selección.

Quitar comentario: Realiza la función contraria a la anterior.

Poner/quitar margen: Hace una sangría a la línea/selección.

MENÚ BÚSQUEDA:

Tiene las opciones típicas de búsqueda y reemplazo. Cabe destacar una función de búsqueda en varios ficheros, así como los comandos Ir a línea y el siempre útil comando  Ir a función, que busca entre las funciones del fichero actual.

MENÚ VER:

Podemos seleccionar qué barras de herramientas queremos que muestre el Dev-C++, así como si queremos que muestre el explorador de proyectos/clases. También podemos elegir si queremos que el explorador de proyectos y  clases, así como los resultados del compilador; se muestren anclados al programa principal.


MENÚ PROYECTO:


 Nuevo código fuente: Crea un nuevo fichero de código que se añada automáticamente al proyecto. Cuando lo salves por primera vez te pedirá el nombre del fichero.

Añadir al proyecto: Permite añadir ficheros al proyecto.

Quitar del proyecto: Muestra un cuadro de diálogo con los ficheros pertenecientes a nuestro  proyecto para poder eliminar los que queramos (se eliminan del proyecto, no se borran de su ubicación).

Propiedades del proyecto: Para cada proyecto podemos definir unas opciones diferentes de las comunes a las definidas en el compilador.


MENÚ EJECUTAR:

Compilar: Compila y vincula el fichero o el proyecto entero para crear el ejecutable/librería. Como ya dije los archivos que no fueron modificados no son re compilados.

Compilar el archivo actual: Compila el fichero que estás editando actualmente. No se vincula.

Ejecutar: Ejecuta el programa (si existe ejecutable) ¡Ojo! Este comando no compila, por lo que si has modificado tu programa, pero no lo recompilas, y le das a este botón (suponiendo que ya tuvieras un ejecutable en el directorio de trabajo) ejecutará la versión anterior.

Parámetros:  Si queremos que nuestro ejecutable reciba algún tipo de parámetro se pone aquí. Sólo los parámetros, no hace falta repetir de nuevo el nombre del ejecutable.

Compilar y ejecutar: Compila, vincula y automáticamente ejecuta el programa (si no hubo ningún error, claro).

Reconstruir todo: Borra todos los archivos de código objeto, para recompilar  todos los ficheros de código fuente. También vincula todos. En definitiva, reconstruye el proyecto de cero. Se consigue el mismo efecto que pulsando “Limpiar resultados” y luego “Compilar” en este mismo menú.

Revisar sintaxis: Comprueba si la sintaxis del código es correcta. No genera código objeto alguno. Es lo mismo que invocar al compilador con la opción -fsyntax-only.

Limpiar resultados: Borra todos los archivos de código objeto y el ejecutable, si existen.

Análisis de perfil: Muestra la información del  profiler, que consiste en datos estadísticos acerca de las funciones del programa, como el número de veces que son llamadas, el tiempo que tardan en ejecutarse, el porcentaje de tiempo total del programa que se ejecutan, etc. Sirve para encontrar las funciones más
utilizadas o más lentas, con el fin de optimizar éstas.



MENÚ DEPURAR:

Ya que veremos este asunto más delante de forma detallada, no me voy a extender mucho. Espero que las explicaciones que no se entiendan ahora sean respondidas entonces.

Depurar: Inicia la depuración del proyecto.

Parar ejecución: Finaliza la ejecución del programa, así como el modo depuración.

Parámetros: Igual que la opción del menú compilar, pero sólo se aplica cuando estemos depurando el proyecto. Dev-C++ Instalación y primeros pasos.

Añadir quitar punto de ruptura: Añade un breakpoint, es decir, un punto en el cual la ejecución del programa se detendrá.

Siguiente paso: Siguiente instrucción del programa.

Avanzar paso a paso: Igual que el anterior, pero ejecuta los pasos dentro de un procedimiento.

Saltar paso: Esta opción debería ser traducida como continuar. Continúa la ejecución del programa hasta que se encuentre otro  breakpoint o finalice.

Ir a cursor: Se ejecuta el programa hasta que llegue al punto donde está el cursor (si no hay un breakpoint antes).

Añadir watch: Abre un cuadro de diálogo para introducir la variable que queremos observar en tiempo de ejecución. La variable y su contenido aparecerá en el área 2 (siempre que tengamos seleccionada esa pestaña.

Observar variables: Selecciona la pestaña.

Ver ventana del CPU: Debug avanzado  Podemos observar los registros de la máquina en un momento de la ejecución.

MENÚ HERRAMIENTAS:

Aquí tenemos las opciones de configuración del IDE y del compilador. También tenemos algunas herramientas ya incluidas con el programa, aunque también podemos agregar objetos a este menú para definir nuestras propias herramientas, y tenerlas a mano.

Opciones del compilador:  Compilador


Compilador a configurar:
Podemos definir diferentes opciones de compilación, como si tuviéramos varios compiladores iguales pero con configuraciones diferentes.

Añadir los siguientes comandos al llamar al compilador: Como se he repetido hasta la saciedad, minGW es un compilador basado en GCC, que es de línea de comandos, y por tanto se pueden introducir los mismos argumentos.

Añadir estos comandos a la línea de comandos del linker:  Igual que el anterior, pero para introducir argumentos  para el linker (al vincular el código objeto y generar el ejecutable).

Retraso de  compilación: Agrega un retraso en milisegundos al compilar. Según he leído sirve para
corregir algunos errores.

Utilizar generación de dependencias rápido pero imperfecto: Con dependencia el compilador se refiere al control que tiene para saber qué archivo se ha modificado, y cuantos dependen de él (porque en ese caso habría que recompilar el archivo modificado y, consecuentemente, todos aquellos que dependen de él) Si chequeas esto, no se comprobará si los ficheros de cabecera han sido modificados, con lo que los cambios que hagas a éstos sólo serán perceptibles cuando compiles el fichero/os de código asociado al mismo.

Opciones del compilador:  Configuración  


Compilador de C: 
Soporte para Programas ANSI Estándar en C:  Equivale a la opción de compilación –ansi. El compilador intenta cumplir lo más estrictamente posible el estándar ANSI.

Trata de Soportar Preprocesadotes  Tradicionales de C: Equivale a la opción -traditional-cpp.

No mostrar mensajes de alerta:  Equivale a la opción  –w (ojo, minúscula) El compilador no muestra ninguna advertencia. No lo recomiendo, ya que éstas son de gran utilidad, y de todas maneras si el programa sólo genera advertencias compilará igual.

Compilador de C++ :
Apagar todo el Chequeo de Acceso:  Equivale a la opción de compilación -fno-access-control Desactiva todas las comprobaciones de acceso.

Aceptar Símbolos $ en identificadores: Equivale a la opción de compilación  -fdollars-in-identifiers El C
tradicional permitía usar el carácter $  en identificadores, aunque el ISO C e ISO C++ lo prohíben. Activando esta opción  podremos utilizar identificadores que contengan el símbolo $.

Generación de código:
Activar Manejo de Excepciones: Equivale a la opción de compilación  –fexceptions. Activa el uso de las
excepciones. Si no se especifica nada, se supone que el compilador lo activa para  C++ y desactiva para C, aunque no se que opciones concretas especifica el IDE al activar o desactivar esta opción. Al activarlo se fuerza incluso para programas en C.

Usar mismo tamaño para tipo double y float: Equivale a la opción de compilación  -fshort-double. Ojo porque el código compilado con esta opción activada puede no ser compatible con el código compilado con esta opción desactivada.

Generación del perfil de código:
Generación del perfil para análisis: Sirve para generar la información necesaria para hacer un profiling del código.

Linker:
Linkar un programa de C objetivo: Pues lo dicho, vincula código de Objective C, una especie de C orientado a objetos, al igual que C++, pero más parecido a C.

Generar Información de debug: Equivale a la opción de compilador –g3 Genera la máxima información posible  para la depuración.

No usar archivos o bibliotecas de sistema: Sólo busca las librarías en los directorios especificados explícitamente en línea de comandos, por lo que no buscará las bibliotecas de los directorios por defecto del
compilador.

No crear una ventana de consola: El programa no creará una ventana de consola de símbolo del sistema.

Optimización:
Realizar un número menor de optimizaciones, Equivale a la opción -fexpensive-optimizations
Optimizar (el parámetro es la letra ‘O’, NO el número cero)
Equivale a la opción –O1 (que a su vez equivale a –O)
Optimizar más
Equivale a la opción –O2
La mejor optimización
Equivale a la opción –O3
Aquí hay otras opciones recomendadas para optimizar, reduciendo el tamaño del  ejecutable.
Os optimiza para ahorrar espacio (Se introduce en los parámetros del compilador)
-s elimina la tabla de símbolos del ejecutable (Se introduce en los parámetros del linker)

Opciones del compilador : Directorios

Aquí podemos definir los directorios donde el programa buscará por defecto. Podemos definir directorios separados para los archivos ejecutables (binarios), las bibliotecas, o los ficheros de encabezados de C y C+

 Opciones del compilador : Programas 

Por último, podemos cambiar los programas que el IDE ejecuta. Por ejemplo si en vez de usar el compilador gcc.exe, quisiéramos usar el compilador my_gcc.exe, deberíamos definirlo aquí. Como dice en el diálogo, y debido a que necesitaríamos un compilador que recibiera los mismos argumentos que el GCC, usaremos esto si queremos usar un cross-compiler, es decir un compilador que se ejecuta en una plataforma, y genera código de otra.




Opciones del entorno:

Principal: C++ por defecto en nuevo proyect. Cuando creemos un nuevo proyecto, el lenguaje por defecto será C++. De todas maneras podemos cambiarlo en las opciones que nos da cuando creamos el proyecto.

Minimizar en la ejecución de programa: Minimiza el IDE cuando ejecutamos un programa (no cuando depuramos) Doble clic para abrir archivos del administrador de proyecto Si no se selecciona al hacer un simple clic en el explorador de proyectos se abrirá automáticamente el fichero.

Interfaz: De nuevo nada del otro mundo. Podemos establecer el idioma, el estilo de los iconos, así como varias opciones de representación de los datos.

Directorios: Podemos seleccionar los  directorios donde el IDE buscará sus archivos específicos, como el directorio con los ficheros de idiomas, o los ficheros con plantillas de proyecto.

Asociaciones: Marca las casillas para asociar en el SO las extensiones que quieras para que se abran de forma predeterminada con el Dev-C++

Soporte CVS: Para especificar el ejecutable del CVS (Concurrent Version System) El CVS es un método para que varias personas puedan trabajar en un mismo proyecto, subiendo el código a un servidor y bajando la versión más actual, de forma  concurrente (es decir, varias personas  a la vez sin que surjan problemas al actualizar un mismo fichero a la vez).


Opciones del editor:

Diferentes opciones para formatear  el código, así como para su mejor  comprensión. Por ejemplo podemos cambiar número de espacios en blanco que genera una tabulación, a qué extensiones  de archivos se le debe aplicar la  sintaxis resaltada (si trabajáis con ficheros linux es recomendable añadir .cc que  es la extensión de ficheros C++)  También podemos cambiar las fuentes que usa el programa, o los colores y  formato de la sintaxis resaltada (tiene algunas configuraciones predefinidas de  los compiladores más comunes, como Borland o Visual C++)  La mayoría de las opciones son auto-explicativas, o tienen ayuda emergente al
poner el puntero del ratón encima.  Sólo destacar dos opciones:

Código: Aquí podemos añadir nuestros fragmentos de código para que luego estén disponibles en el menú insertar. Por  ejemplo si usamos mucho una función específica o que hayamos creado, la podemos escribir aquí, para que con dos pulsaciones de ratón, podamos meterla en el código cuando queramos. Es muy útil para las plantillas de función de C++. También podemos definir un código que  se insertará por defecto en los proyectos vacíos.

Explorador de clases:  Podemos activar o desactivar el explorador de clases, así como los archivos
en los que tiene que buscar, y si debe mostrar colores o los miembros y métodos heredados (si se trata de una clase derivada)
• Configurar atajos de teclado
Para definir las teclas que queremos usar para activar prácticamente todas las funciones del Dev-C++. Seleccionas el atajo y pulsas la tecla o combinación de tecla correspondiente. Para borrar un atajo de teclado existente, lo seleccionas y pulsas ESC.
• Configurar herramientas
En el diálogo que aparece cuando seleccionamos esta opción podemos definir nuevos elementos del propio menú herramientas:
Nombre: Nombre con el que aparecerá la herramienta en el menú.
Programa: Nombre y camino del archivo ejecutable.
Carpeta de trabajo: Carpeta donde se ejecutará la herramienta.
Parámetros: Argumentos a pasar al archivo ejecutable.






























sábado, 11 de febrero de 2012

SISTEMAS NUMERICOS

Un sistema numérico es un conjunto de números que se relacionan para expresar la relación existente entre la cantidad y la unidad. Debido a que un numero es un símbolo, podemos encontrar diferentes representaciones para expresar una cantidad.  

SISTEMA DECIMAL 
En el sistema de numeración decimal se utilizan diez símbolos, del 0 al 9 para presentar una determinada cantidad. Los diez símbolos no se limitan a expresar solamente diez cantidades diferentes, ya que se utilizan varios dígitos en las posiciones adecuadas dentro de un numero para indicar la magnitud de la cantidad.
Base: 10 
Simbolos: 0,1,2,3,4,5,6,7,8,9
La posición de cada dígito en un numero decimal indica la magnitud de la cantidad representada y se la puede asignar un peso. Los pesos para los números enteros son potencias de 10, que aumentan de derecha a izquierda, comenzando por 100  = 1.

SISTEMA BINARIO 
EL sistema de numeración binario utiliza solo dos dígitos, el cero y el uno.
En una cifra binaria, cada dígito tiene distinto valor dependiendo de la posición que ocupe. El valor de cada posición es el de una potencia de base 2, elevada a un exponente igual a la posición del dígito menos uno.
Base: 2
Símbolos 0,1
El numero binario 1011 tiene un valor que se calcula así: 

1*23 + 0*22 + 1*21 + 1*20 , es decir:


8 + 0 + 2 + 1 = 11

SISTEMA OCTAL 
El inconveniente de la codificación binaria es que  la representación de algunos números resulta muy larga, por este motivo se utilizan otros sistemas de numeración que resulten mas cómodos de escribir: el sistema octal y el sistema hexadecimal. Afortunadamente resulta muy facil convertir un numero binario a octal o a hexadecimal.
Base: 8
Simbolos: 0,1,2,3,4,5,6,7
Ejemplo, el numero octal 273

2*83 + 7*82 + 3*81 = 2*512 + 7*64 + 3*8 = 149610


2738 = 149610

SISTEMA HEXADECIMAL
En el sistema hexadecimal los numeros se representan con dieciseis simbolos: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,y F. Se utilizan los caracteres A,B,C,D,E y F representando las cantidades decimales 10,11,12,13,14 y 15 respectivamente, porque no hay digitos mayores que 9 en el sistema decimal. El valor de cada uno de estos simbolos depende, como es logico, su posición, que se calcula mediante potencias de base 16
Ejemplo calcular el numero hexadecimal 1A3F16

1A3F16 = 1*163 + A*162 + 3*161 + F*160
1*4096 + 10*256 + 3*16 + 15*1 = 6719
1A3F16 = 671910