Introducción al laboratorio de Programación I Manuel Montenegro montenegro@fdi ucm es montenegro@fdi.ucm.es Despacho B12 Compilación Es el proceso de transformación de un programa escrito en un lenguaje de alto nivel (en nuestro caso C++) a un lenguaje inteligible por el ordenador ( ódi máquina). (código á i ) Código fuente C++ Compilador Código objeto Máquina Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 2 Paso I – Edición del programa Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 3 Paso II - Compilación Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 4 Paso III - Ejecución Procedimiento engorroso en programas grandes. Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 5 IDE Un entorno integrado de desarrollo (IDE) es un conjunto de herramientas para un programador. Proporciona varias utilidades de edición, así como una interfaz para el compilador. Compilador IDE Depurador En el curso utilizaremos el entorno Dev-C++ Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 6 Entorno Dev-C++ Dev C++ Puede obtenerse en la dirección: http://www.bloodshed.net/dev/devcpp.html Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 7 Instalación de Dev-C++ Dev C++ Opciones en el programa de instalación: Tipo de instalación: completa (Full) Es muy recomendable instalarlo en la carpeta por d f t defecto. Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 8 Ejecución de Dev-C++ Dev C++ Para crear un programa: File → New → Source File Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 9 Programa “Hola Hola, mundo mundo” #include <iostream> using namespace std; int main() { cout << "Hola cout << Hola, mundo mundo" << endl; return t 0 0; } Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 10 Programa “Hola Hola, mundo mundo” Guardar el archivo: File → Save (Ctrl + S) Es necesario que el nombre de archivo tenga la extensión .cpp Compilar con: Execute → Compile (Ctrl + F9) Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 11 Programa “Hola Hola, mundo mundo” corregido #include <iostream> using namespace std; int main() { cout << "Hola, mundo" << endl; system("pause"); return 0; } Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 12 Ejecución del programa Podemos ejecutar el programa mediante: Execute → Run (Ctrl+F10) Execute → Compile & Run (F9) Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 13 Breve explicación del programa (I) int main() Indica que el siguiente bloque de sentencias (delimitado por { ... }) es el contenido de la función principal del programa. La ejecución de un programa en C++ siempre comienza con la ejecución j ió d de lla ffunción ió principal, i i l iindependientemente d di t t d de su situación it ió en el programa. En nuestro ejemplo, la función main se compone de tres sentencias: cout << Hola, mundo << endl; cout << "Hola, mundo" system("pause"); return 0; Cada sentencia siempre va finalizada por el símbolo (;). Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 14 Breve explicación del programa (II) cout << "…" cout es una variable que representa la salida estándar (en nuestro caso, la pantalla). Esta sentencia envía el texto delimitado entre comillas dobles (“”) a la pantalla. L di Las distintas ti t salidas lid pueden d encadenarse: d cout << "Hola," << "mundo"; Mediante endl dl indicamos que las salidas posteriores se impriman en la siguiente línea. cout << "Linea Linea 1" 1 << endl << "Linea Linea 2"; 2 ; cout << endl << "Linea 3"; Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 15 Variables #include <iostream> using namespace std; g p ; int main() { int edad; Declaración de variable Asignación cout << "Hola, mundo" << endl; edad = 34; cout << "Mi edad es" << edad << endl; system("pause"); y ( p ); return 0; } Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 16 Variables El resultado de ejecutar este programa es: Hola, mundo Mi edad es34 Corrección: cout << "Mi edad es " << edad << endl; ¿Qué ocurre si cambiamos esta sentencia por la siguiente? cout << "Mi edad es " << "edad" << endl; Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 17 Directiva #include Toda identificador que se utilice ha de ser declarado previamente. int edad, dias; ¿Dónde se encuentran declarados cout y endl? La directiva #include <iostream> indica que se incluya el fichero iostream.h, donde se encuentran las definiciones de estas dos variables, junto con otras definiciones relacionadas con la entrada y salida. El archivo hi iostream.h forma f parte de d la l librería lib í estándar de C++ Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 18 Librerías estándar de C/C++ Nombre Contenido iostream Entrada/Salida estándar fstream Entrada/Salida mediante ficheros cmath Funciones matemáticas: log, cos, tan,… ctime para obtener la hora y fecha actuales Funciones p cctype Funciones relacionadas con caracteres string Manejo de cadenas de caracteres … … http://www cplusplus com/reference/ http://www.cplusplus.com/reference/ Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 19 Operaciones aritméticas Op #include <iostream> using namespace std; int main() { int edad, dias; Significado + S Suma - Resta * Multiplicación / División % Módulo (resto de una división) cout << "Hola, mundo" << endl; edad = 34; dias = edad * 365; edad 365; cout << "Mi edad es" << edad << endl; cout << "Esto son " << dias << " dias" << endl; system("pause"); t (" ") return 0; } Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 20 Tipos de errores Errores de compilación Errores en tiempo de ejecución Ejemplos: sintaxis incorrecta, uso de variables no declaradas, … S detectan Se d t t antes t de d la l ejecución j ió d dell programa. Ejemplos: divisiones por cero, … Aparece un error durante la ejecución del programa advirtiendo de tal circunstancia circunstancia. Errores lógicos El programa no ffunciona i d de acuerdo d a llo esperado. d No se reflejan en ningún mensaje de error. Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 21 Depuración Es el proceso de identificar y corregir los errores de programación. En C++ se realiza normalmente mediante la ejecución, instrucción a instrucción, del programa. Las herramientas que nos permiten hacer esto son los depuradores. Compilador IDE Depurador (GDB) Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 22 Configuración de Dev-C++ Dev C++ Tools → Compiler Options Hacer click en Settings Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 23 Configuración de Dev-C++ Dev C++ En la sección Linker, activar la opción Generate d b debugging i information. i f ti Volver a compilar mediante: Execute → Rebuild All (Ctrl + F11) Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 24 Puntos de ruptura (Breakpoints) Líneas del código en las que la ejecución del programa se detendrá en modo depuración. Debug → Toggle breakpoint (Ctrl+F5) Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 25 Modo depuración Se activa mediante la opción Debug → Debug (F8) El programa se ejecutará normalmente hasta llegar a un punto de ruptura, en el cual se detendrá. C Cuando d ell programa se d detiene, ti puede d ejecutarse j t instrucción por instrucción: Debug → Next Step (F7): Avanza hasta la siguiente sentencia. Debug → Continue (Ctrl+F7): Avanza hasta el próximo punto de ruptura. Debug → Run to cursor (Mayus+F4): Avanza hasta la posición actual del cursor cursor. Debug → Stop Execution (Ctrl+Alt+F2): Aborta la ejecución del programa y abandona el modo depuración. Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 26 Inspección de variables Cuando el programa está detenido en modo depuración puede observarse el valor de una determinada variable mediante la opción: Debug → Add Watch. Programación I – Dpto. de Sistemas Informáticos y Computación (UCM) 27