Lenguaje de programación en dev c

Page 1


Del Director AL LECTOR Bien, amigos de Lenguaje de Programación Dev C++, nos encontramos en las páginas de nuestra revista predilecta para compartir las novedades de este nuevo entorno de programación. Estamos contentos porque por fin podemos dar nuevas soluciones fáciles para muchos lectores que se inician en el mundo de la programación y estamos contentos el sueño de poder satisfacer las dudas que puedan existir acerca del tema de esta revista… Por otra parte queremos agradecer su participación y por ultimo de parte de todos quienes hacemos Lenguaje de Programación C++ queremos desearle un buen comienzo en esta rama de la computación, con la esperanza de que todos sus deseos se hagan realidad. ING. ELISA D. AVILA


Lenguaje de Programación C++

Que es C++… aprovecha Sus Beneficios 4 Entorno de Trabajo en Dev C++…

5

Librerías Estáticas

6

Depuración de programas en Dev C++ 7 Errores de Programación en C/C++

11

Sección Del Lector

15

ISBN: 0188-4395 Edición Internacional N° 1


Dev C++ Dev-C++ es un Entorno de Desarrollo Integrado (IDE) para el lenguaje de Programación C/C++ que usa Mingw de GCC (GNU Compiler Collection) como Compilador y permite crear: • Programas ejecutables para Win32. • Programas ejecutables para consola. • Construcción de DLL´s y bibliotecas estáticas. • Además, se puede utilizar en combinación con otros compiladores basados en GCC. Dev C++ es un software de libre distribución sujeto a los términos de la Licencia Pública General (GPL), que facilita la escritura de programas en lenguaje C++; para brindar las facilidades de creación de programas (ejecutables *.exe) se apoya en diversos compiladores, entre ellos MinGW (Minimalist Gnu Windows), también software libre bajo la licencia GNU. Las características de Dev-C++ son: • Tiene integrado un depurador basado en GDB • Soporta múltiples lenguajes (el castellano es uno de ellos). • Mantiene una lista con las clases utilizadas en el desarrollo de un programa. • Mantiene la lista de funciones definidas en el desarrollo del programa. • Tiene un manejador de proyectos (se usa cuando el programa se compone de más de un fichero fuente). • Tiene un editor que resalta la sintaxis del código que es configurable. • Soporta plantillas para la creación de tus propios tipos de proyectos. • Permite la creación de Makefile para la compilación separada de archivos fuente. • Edita y compila ficheros de recursos. • Soporta la actualización del software y bibliotecas a través de Internet.

4


Entorno de Trabajo en Dev C/C++ En Este IDE se pueden encontrar 4 partes principales: • Menú y Barra de Herramientas: En esta sección se visualiza el típico menú que utiliza Windows en sus aplicaciones (Abrir, editar, ayuda, etc…) y también se muestran algunos iconos, los mas utilizados, como el depurador, compilador, la carpeta de abrir archivos; estos pueden ser configurados según las necesidades de cada • Explorador programador.de proyectos: Esta sección esta compuesta por 3 pestañas correspondientes al explorador de proyectos en donde se pueden visualizar los proyectos mas recientes que hemos creados en este entorno de programación. La segunda pestaña corresponde al explorador de clases en donde se observan los métodos, atributos, en general la estructura de las clases que se utilizan. Y en la tercera pestaña encontramos información referente a la depuración. • Área de Edición: Aquí se visualizan los archivos que tengamos abiertos. Se puede tener mas de uno abierto al mismo tiempo. • Resultados de compilación y depuración: Aquí se pueden ver los errores que ocurren al compilar el programa y la depuración del mismo.

5


Librerías Estáticas En el mundo de la programación, una biblioteca o librería es un conjunto de implementaciones funcionales, codificadas en un lenguaje de programación, que ofrece una interfaz bien definida para la realización de la alguna operación deseada, en pocas palabras son mini programas que ayudan a implementar ciertas operaciones que son rutinarias en la ejecución de algunos programas. Las librerías no pueden ser ejecutas de manera autónoma, sino que su fin es ser utilizada por otros programas, independientes y de forma simultánea. Es más, unas bibliotecas pueden requerir de otras para funcionar, pues el comportamiento que definen el que refina, o altera, el comportamiento de la biblioteca original; o bien la hace disponible para otra tecnología o lenguaje de programación. La mayoría de los sistemas operativos modernos proporcionan bibliotecas que implementan los servicios del sistema. De esta manera, estos servicios se han convertido en una "materia prima" que cualquier aplicación moderna espera que el sistema operativo ofrezca. Como tal, la mayor parte del código utilizado por las aplicaciones modernas se ofrece en estas bibliotecas. Las bibliotecas nos ahorran tiempo de programación a los programadores, ya que es posible realizar las tareas definidas en ellas sin necesidad de escribir el código necesario cada vez que las necesitemos ya sea en el mismo programa o en otros. Para crearlas en lenguaje C++, creamos un proyecto de tipo "Static Library“, le damos un nombre que guarde relación con la funcionalidad que posea, crear un fichero de cabecera con los prototipos de funciones, tipos, estructuras , clases , el nombre del fichero tendrá la extensión “.h”, crear otro fichero de cabecera que servirá para implementar las funciones e la librería, por ultimo compilar el proyecto y probar la biblioteca.

6


Depuración de programas en Dev C++ Como buenos programadores , siempre hay que tener en cuenta los posibles errores que se pueden presentar en un programa a la hora de su ejecución, teniendo en cuenta que estos solo siguen las instrucciones que le proporcionamos en nuestros códigos, y si resultan errores de ejecución puede en su mayoría caber la posibilidad de que el error se ocasionara por fallos en la lógica de programación diseñada, aunque en muy pocos casos también puede pasar que las librerías utilizadas en el código tienen pequeños bugs. Para solucionar estos errores se puede hacer de varias maneras : 1. Se puede hacer corridas en frio por nosotros mismos , esto a veces nos puede resultar trabajoso y con mucho afán por lo que generalmente no lo recomiendo , sobre todo cuando son programas muy elaborados y complicados, tal vez solo en el caso de programas sencillos. 2. En otro caso también se puede probar con datos conocidos que arrojen resultados conocidos, e ir solucionando de acuerdo a los mensajes de error que envía el sistema, aunque generalmente nos dejan atascados en el mismo problema por largo rato. 3. Por ultimo, también se puede trabajar con los debugger o depurador que usualmente traen los lenguajes de programación; Un depurador es una aplicación que permite colocar puntos de parada, inspeccionar variables o ejecutar un programa paso a paso, con el fin de buscar errores. Los programas no pueden ser depurados siempre, antes deben cumplir determinadas condiciones: La primera es que se pueda obtener un ejecutable. Si no llegamos a eso los errores serán de compilación o de enlazado, y un depurador no tiene sentido hasta que se solucionen todos esos problemas. La segunda condición es que el fichero ejecutable contenga la información para la depuración y con esto me refiero al propio fichero fuente, de modo que el depurador pueda saber a que intrusiones de código maquina corresponden cada una de las instrucciones de C++ y a que direcciones de memoria pertenecen las variable.

7


Dev C++ añade automáticamente esta información al ejecutable, pero no esta de mas saber cual es mecanismo para hacerlo nosotros mismo ya que esta información aumenta considerablemente el tamaño del ejecutable y una vez terminado el programa y depurado totalmente debería se r eliminada totalmente para crear la versión final. Para hacer que el enlazador incluya o no la información del depurador debemos acceder a las "Opciones del Compilador", que se encuentran en el menú de "Herramientas", y, como se ve en el siguiente gráfico, en la pestaña "Configuración" del cuadro de diálogo de "Opciones del Compilador", en las opciones del "linker". Si activamos la opción "Generar Información de Debug", dicha información se añadirá la próxima vez que compilemos y enlacemos el programa con éxito. Si la desactivamos, se eliminará, del mismo modo, después de compilar y enlazar el programa. La tercera condición es colocar algún punto de parada en la parte del programa que queremos depurar. Los puntos de parada indican al depurador que detenga la ejecución del programa y devuelvan el control al usuario, es decir, a nosotros. Una vez detenido el programa podremos inspeccionar variables, modificarlas, continuar la ejecución, o seguir ejecutando el programa sentencia a sentencia. Colocar un punto de parada: Hay dos formas de activar un punto de parada, breakpoint. La más sencilla es pulsar con el ratón en la zona del margen junto a la línea en la que queremos situar el punto de parada. Otra forma es situar el cursor en la línea en que queremos situar el punto de parada y usar el menú "Depurar->Añadir/Quitar punto de Ruptura“. En cualquiera de los casos, se visualizará la línea con fondo rojo, y un icono rojo con una 'V' verde en su interior en la zona del margen. Para eliminar el punto de parada se procede de la misma manera.

8


Parámetros: Si nuestro programa necesita recibir parámetros desde la línea de programa, podemos suministrarlos mediante la opción del menú "Depurar->Parámetros...". Esto nos permite simular una orden desde la consola con la lista de parámetros que prefiramos. Ejecutar un programa en depuración: De nuevo hay varias formas de hacer esto. Una consiste en pulsar el icono en forma de 'V' en la barra de herramientas. El mismo icono está en la parte inferior, en la pestaña de "Depurar", al activar esta pestaña podemos acceder al icono de "Depurar", por último, también podemos hacerlo mediante el menú "Depurar->Depurar", o por el atajo, pulsando la tecla [F8]. En cualquier caso, el programa se ejecutará normalmente hasta alcanzar un punto de parada. En ese momento el control vuelve al entorno de Dev-C++ y se muestra la línea de ejecución actual con fondo azul y con un icono en forma de flecha en el margen. Otra variante de punto de parada consiste en situar el cursor en la línea hasta la que queremos que se ejecute el programa y pulsar "Ir al cursor". Esto trabaja igual que si hubiéramos situado un punto de parada en esa línea, y lo borráramos una vez alcanzado. Pero cuidado, el resto de los puntos de parada siguen activos, si se alcanza uno de ellos antes que la posición del cursor, el programa parará en ese punto.

9


Ejecución paso a paso: A partir de aquí podemos optar por ejecutar el programa hasta el siguiente punto de parada, pulsando "Saltar paso", o reanudar la ejecución paso a paso o ejecutar la siguiente sentencia, mediante "siguiente paso". La diferencia entre "siguiente paso" y "paso a paso" es sutil pero importante. La primera opción ejecuta cada sentencia como un único paso, por ejemplo, si tenemos una sentencia como: for(int i=0; i < 12; i++) x[i] = i; "Siguiente paso" la ejecutará de una sola vez, mientras que "paso a paso" ejecutará cada una de las iteraciones. Si la sentencia contiene una llamada a una función, "siguiente paso" la ejecutará como una sentencia única, y "paso a paso" transferirá la ejecución al interior de la función y ejecutará sus sentencias paso a paso. Inspeccionar variables Mientras la ejecución está detenida podemos consultar el valor de las variables accesibles desde el punto de ejecución actual. Añadir variables a la lista es fácil, basta con pulsar en "Añadir watch" y escribir el nombre de la variable a visualizar. Igual de sencillo es eliminarlas: seleccionamos la variable a borrar y pulsamos sobre el icono "Quitar watch".

10


Existe otra herramienta, aunque parece que en la versión actual de Dev-C++ aún no está muy conseguida. Consiste en modificar el valor de alguna de las variables observadas. Pulsando sobre la variable en la lista, con el botón derecho aparece un menú. La segunda opción tiene un icono con un martillo, "Modificar valor". Detener la ejecución Si el programa ha entrado en una situación en la que hemos perdido el control, o sencillamente, no nos interesa continuar depurando, podemos detener la ejecución mediante la opción "Parar ejecución", ya sea en el menú de "Depurar" o en la zona de depuración inferior. No hay mucho más que añadir. El depurador es una herramienta útil, pero la mejor forma de conseguir programas que funcionen es diseñarlos correctamente, el depurador puede ayudarnos a encontrar errores en la codificación, pero no debe servir para corregir programas mal diseñados.

11


Errores frecuentes de Programaci贸n en C/C++

Olvidar terminar un comentario con */ Correcto

Incorrecto

int main() { /* inicio del programa */ system("PAUSE"); return 0; }

int main() { /* inicio del programa system("PAUSE"); return 0; }

Uso de letras May煤sculas donde no es apropiado Correcto

Incorrecto

int main() { /* inicio del programa */ system("PAUSE"); return 0; }

int Main() { system("PAUSE"); return 0; } 12


Olvidar las dobles comillas de un texto o cadena de control Correcto

Incorrecto

int main() { /* inicio del programa */ system("PAUSE"); return 0; }

int main() { system("PAUSE); return 0; }

Olvidar el signo ; después de cada instrucción. Correcto

Incorrecto

int main() { /* inicio del programa */ system("PAUSE"); return 0; }

int main() { system("PAUSE") return 0; }

Cambiar el signo ; por , después de alguna sentencia Correcto

Incorrecto

int main() { /* inicio del programa */ system("PAUSE"); return 0; }

int main() { system("PAUSE"), return 0; } 13


Olvidar colocar llaves en una sentencia compuesta (aplica para las sentencias for, if, do, switch) Correcto

Incorrecto

int main() 4 { 5 int a=0; 6 int b=0; 7 for (i = 0 ; i < 100 ; i++ ) { 8 a=2; b= a*a; } 9 system("PAUSE"); 10 return 0; 14 }

int main() 4 { 5 int a=0; 6 int b=0; 7 for (i = 0 ; i < 100 ; i++ ) { 8 a=2; b= a*a; 9 system("PAUSE"); 10 return 0; 14 }

Llamamos error a cualquier circunstancia que da lugar a un malfuncionamiento de un programa. Por malfuncionamiento se entiende una respuesta indeseada: desde meros problemas estéticos hasta graves fallos o bloqueos. Los programas informáticos pueden presentar fallos leves o casi despreciables, fallos notables pero aún así funcionan y fallos totales en determinadas circunstancias. Sin duda, la mejor situación es la del programa libre de errores. O dicho de otra manera: el mejor error es el que no existe. Como programadores tenemos claro que uno de nuestros objetivos ha de ser construir programas libres de errores. Ahora bien, somos humanos y hemos de asumirlo. Por suerte o por desgracia vamos a tener que convivir con errores, independientemente de que pongamos más o menos medios para evitarlos. Si esto es así, el programador no “odia” los errores. Al programador “le interesan” los errores desde dos puntos de vista: a) Para su identificación y eliminación, evitando así que aparezcan en momentos inoportunos. b) Para su gestión cuando, a pesar de todo, se produzcan. 14


TIPOS DE ERRORES Hay distintos tipos de errores y distintas formas de clasificarlos. Vamos a ver primero una serie de definiciones para luego ver las clasificaciones. Los cuatro tipos básicos de errores son: de sintaxis, por proceso no válido, lógicos tipo bucle infinito y lógicos tipo resultado incorrecto. Errores de Sintaxis: Son aquellos errores que se presentan por desconocimiento u olvido generalmente de las normas de escritura de un lenguaje. Este tipo de errores es fácil de detectar y la mayoría de los lenguajes de programación tienen herramientas de ayuda que facilitan la transcripción y corrección de los códigos Errores por procesos no validos: Cualquier sintaxis aparentemente correcta pero que infrinja las normas de construcción de programas que define el lenguaje dará lugar a un error. Las posibilidades son muy variadas. Por citar algunas habituales señalaremos: · Indeterminaciones matemáticas. · Asignar un valor a la variable que no coincide con el tipo declarado para la variable. · Uso de variables no declaradas. - Modificaciones no permitidas del número de localizadores de un array dinámico. · Llamadas a módulos que no existen. · No pasar los parámetros o pasar un número incorrecto de parámetros a un módulo genérico. Errores lógicos tipo bucle infinito: son aquellos que dan lugar a una parada o bloqueo del programa. Incluiremos aquí procesos en realidad no infinitos pero que consumen un tiempo desmedido respecto a lo esperado. Errores lógicos tipo resultado incorrecto: no bloquean el flujo del programa pero dan lugar a un resultado desviado. El grado de desviación escaso puede dificultar su detección y corrección. El ordenador no puede saber que existe un error pues sólo el programador que idea el proceso puede decir si éste es correcto o no. En general los errores lógicos son todos aquellos derivados de un mal diseño de los algoritmos o la arquitectura modular. Las posibilidades son muchas y los efectos posibles también. Pueden ir desde el bloqueo o detención indeseada del programa hasta un resultado incorrecto, una parte del programa que no se ejecuta, etc. 15


SECCIÓN DEL LECTOR Esta es una sección en la que aclaran las dudas los lectores. Si usted desea resolver alguna inquietud, la puede hacer llegar enviándonos e-mail a: omannedaniela@gmail.com. También puede enviarnos correspondencia a: Lenguaje de Programación C++ Urb. La granja, edificio la Begoña, Piso 7, apto. 7-4 Naguanagua, Estado Carabobo, Venezuela TEL: (58) (241-8747584)

¿Porque mi compilador no admite funciones de conio.h? Nayib Felipe Borges Delgado

La biblioteca "conio" no es estándar, aunque su uso es tan corriente que a menudo se considera como tal. La culpa de esto la tiene Borland ®, y sus compiladores de Pascal, C y C++. Durante mucho tiempo, los compiladores de Borland han sido prácticamente los únicos que estaban al alcance de la mayoría de los usuarios, y eran muy populares, en gran medida también debido a su buena calidad. Borland siempre ha incluido funciones para acceder a ciertas características de la consola de MSDOS, como colores, coordenadas, lecturas sin eco, etc. y a agrupado esas funciones en una biblioteca llamada "conio". Los programas ganaban mucho en apariencia cuando se recurría a esas funciones. Pero la informática ha evolucionado, y MS-DOS ya no es un sistema operativo popular. Los nuevos sistemas no usan la misma consola que MS-DOS, y por lo tanto, las funciones de "conio" que se basan directamente en la BIOS de DOS, no funcionan en otros sistemas. De hecho, los compiladores de Borland tampoco son tan omnipresentes como antaño, ahora hay más variedad, y la mayoría de los compiladores no incluyen esa biblioteca, recordemos que no es estándar. Cuando se intenta adaptar código escrito para compiladores Borland a otros compiladores o a otros sistemas operativos aparecen los problemas, y cosas tan sencillas como borrar la pantalla, se convierten en auténticos problemas. Otros entornos de consola incluyen bibliotecas alternativas para las mismas funciones que "conio", pero no se llaman igual, ni usan los mismos parámetros y a menudo no son fáciles de sustituir. Es el precio que hay que pagar por apartarse del estándar. En el caso de Dev-C++ existen emuladores, uno de ellos puedes conseguirlo en esta página: conio para Dev-C++. ¿Cómo puedo usar el ratón en mis programas C++? Carmen Elisa Gutiérrez Landa Al igual que los gráficos, el ratón es un periférico que no tiene soporte dentro del estándar de C y C++, y su acceso depende del sistema operativo, y del entorno. No se puede dar una respuesta concreta a este tipo de preguntas, ya que depende de cada casi y S.O. En otros entornos, como Windows, el API contiene las funciones necesarias para acceder al ratón, en otros sistemas hay distintas alternativas. Para una respuestas mas precisa envíanos mas detalle de tu programa y con mucho gusto te ayudaremos

16


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.