Download Programación 1
Document related concepts
Transcript
Programación 1 Grado de ingeniería Robótica Programación y robótica ● Pilar fundamental de vuestro currículum ● Competencia imprescindible para futuras asignaturas ● Grado de robótica: primero en España y uno de los más novedosos del mundo 2 Información general ● ● ● ● Clases de teoría: miércoles de 11:00 a 13:00 aula B12 aulario 2 Clases de prácticas: martes de 11:00 a 13:00 y de 13:00 a 15:00 aula L24 Politécnica 1 Profesores: Nombre Correo Tutorías Miguel Cazorla miguel.cazorla@ua.es Martes 10:00-13:00 Diego Viejo dviejo@dccia.ua.es Lunes 11:00-13:00 y martes 9:00-11:00. Jesús Martínez Jesus.Martinez@uclm.es Para atender las tutorías se tiene que solicitar cita por tutoría virtual o email 3 Objetivos ● ● ● ● ● ● Dominar los principios de la programación procedural. Resolver problemas de programación básica aplicando adecuadamente los tipos de datos elementales, los tipos de datos estructurados y las estructuras de control. Asimilar el concepto de programación modular y saber aplicarlo en la resolución de problemas. Conocer el concepto de recursividad, aplicándolo a problemas sencillos. Comprender el concepto de fichero y saber utilizarlos. Ser capaz de utilizar herramientas de programación para editar, compilar, ejecutar y verificar un programa. 4 Teoría ● ● ● ● ● ● ● ● ● Tema 1: Introducción a la programación: Representación de la información. Concepto de programa. Fases de desarrollo de un programa. El lenguaje C. Estructura de un programa. Comentarios en un programa. Entornos de programación Tema 2: Tipos de datos simples: Concepto de dato. Constantes y variables. Sentencias de asignación. Expresiones y operadores. Sentencias de entrada/salida de datos. Tema 3: Sentencias de control: Algoritmos y programas. Estructura secuencial. Estructuras de selección. Estructuras de repetición. Tema 4: Programación modular: Descomposición modular. Concepto de módulo. Comunicación entre módulos. Procedimientos y funciones. Parámetros actuales y formales. Paso de parámetros por valor y por referencia. Ámbito de una variable. Variables globales y locales. Efecto lateral. Funciones predefinidas Tema 5: Reserva dinámica de memoria: Memoria estática vs. dinámica. Creación, inicialización, asignación y liberación de memoria. Conversión de tipos. Tema 6: Recursividad: Definición. Esquema básico. Codificación en C. Características Tema 7: Tipos de datos estructurados. Arrays: Concepto de dato estructurado. El tipo array. Arrays unidimensionales, bidimensionales y multidimensionales. Cadenas de caracteres (String) Tema 8: Tipos de datos estructurados. Registros: Concepto de registro. Registros en C. Operaciones sobre registros. Arrays de registro Tema 9: Entrada/salida: Declaración, apertura, lectura y escritura de ficheros de texto y binarios en C. 5 Prácticas ● Máquina virtual en el laboratorio con Linux ● Dos prácticas, la segunda continuación de la primera ● Trabajo individual!! – Se usarán sistemas anticopia para detectar plagios. Se suspenderán todas las prácticas que se detecten. Se procederá a tomar acciones legales contra los infractores. 6 Evaluación ● ● Control de prácticas 1: funcionamiento de la primera práctica y prueba en el laboratorio. No recuperable 10% Control de prácticas 2: funcionamiento de la segunda práctica y prueba en el laboratorio. Mínima nota 4. Recuperable 30% ● Control de teoría 1. No recuperable. 10% ● Prueba escrita. Recuperable. Mínima nota 4. 50%. 7 Bibliografía ● ● El lenguaje de programación C. Kernighan, Brian W.; Ritchie, Dennis M. Prentice-Hall Fundamentos de programación. Carretero Pérez, Jesús... [et al.] Thomson-Paraninfo, 2007. 8 Tema 1: Introducción a la programación ● Índice: – Representación de la información – Concepto de programa. – Fases de desarrollo de un programa. – Estructura de un programa. – Lenguajes de programación – El lenguaje C. – Comentarios en un programa. 9 Representación de la información ● Un ordenador o procesador maneja datos binarios, 1 y 0. ● Bit: 0,1 ● Byte: 8 bits. ● Capacidad de representación de un ordenador: palabra: 64 bits (8 bytes). Importante para saber el rango de determinados datos 10 Programa de ordenador ● ● ● ● Conjunto de instrucciones ordenadas escritas en un lenguaje de programación para que un ordenador lleve a cabo una determinada tarea Para que el ordenador lo pueda ejecutar debe contener “órdenes” entendibles por él. Se suele llamar código máquina, ejecutable, y contiene código binario Estas órdenes suelen ser un conjunto de instrucciones sencillas (mover dato, sumar datos, saltar) Ejemplo: UHâÂHÅÏ∞Hâ}òHâuêHâUàHã}òËP≈®ÖȃHã}ò˃®ÖÈÆHãuòHçΩxˇˇˇ1“ ËgƒHçΩhˇˇˇËaƒÈÈHçΩxˇˇˇHçµhˇˇˇËj— àÖÓ˛ˇˇÈäÖÓ˛ˇˇ®ÖÈ∆Ö'ˇˇˇHçΩxˇˇˇË}“HâÖ‡˛ˇˇÈ1¿â¬HçΩ@ˇˇˇH㵇˛ˇˇË&ƒ ÈHç 11 Pasos para desarrollar un programa 1) Entender el problema 2) Diseñar la solución 3) Desarrollar (implementar) el programa 4) Verificar y probar el programa 5) Documentar!!! 12 Entender el problema ● Datos de entrada ● Datos de salida ● ¿Qué hay que resolver? ● ¿Cómo se puede resolver? ● Documentar!! 13 Diseñar la solución ● Detectar los pasos a seguir para solucionar el problema ● Estructurar el programa ● Plasmar esa solución de alguna manera ● Documentar!! 14 Implementar el programa ● ● ● ● ● Desarrollar en un lenguaje de programación los pasos a seguir para resolver el problema Importante: la solución debe ser (lo suficientemente óptima). Se pueden encontrar distintas soluciones para resolver el mismo problema Este paso implica un bucle donde se programa (implementa) la solución (total o parcial), se prueba, se resuelven errores Principio de un buen informático: un programa jamás funciona a la primera. Si lo hace, está mal seguro Documentar!! 15 Verificar y probar el programa ● Comprobar que el resultado obtenido es el adecuado ● Sino, volver al paso anterior ● Documentar!! 16 Documentar ● ● La documentación es un parte fundamental en el desarrollo de código Hay varias partes: – El diseño o especificación del programa. – La memoria del programa. – El propio código. 17 Documentar el diseño ● ● ● Esta parte nos permitirá revisar lo que estamos haciendo para, por ejemplo, acordarnos de detalles o bien comprobar si lo estamos haciendo bien Es conveniente incluir la entrada (datos que leemos de un fichero, de un sensor, etc.) y la salida (escritura en un fichero, en un motor, etc.) Debe quedar lo suficientemente claro para que una persona no especialista lo entienda 18 La memoria final ● ● ● Debemos describir qué hace nuestro programa. Cualquier consideración que debamos tener en cuenta para que pueda ser interpretado por alguien que no haya trabajado en él. Por ejemplo, “No leemos la primera línea de fichero porque es errónea” Siempre pensad: Qué pondría si lo tuviera que leer dentro de un tiempo y entender qué he hecho 19 Documentar el código ● En C los comentarios son: – /* uno o varios comentarios */ – /* Pueden ser – multilínea */ El preprocesador elimina el texto del comentario. – Se puede usar para comentar código no usado, pero OJO: en el programa final hay que eliminar ese código no usado!! 20 Documentar el código ● No abusar de ellos – ● ● if (x==5) /* Si x es igual a 5 */ Usar lenguaje apropiado Si tenemos funciones, comentar justo antes de la función lo que hace: – /* Realiza la suma ponderada de los valores de pasados por parámetro */ double sumap (double a, double b) { ● La principal función de los comentarios es el mantenimiento: tanto por ti como por otros programadores 21 Experiencia de un programador ● Programar, programar, programar ● Estudiar ● Programar, programar, programar ● Buscar información por Internet ● Programar, programar, programar 22 Lenguajes de programación ● ● ● ● Conjunto de símbolos y reglas sintácticas que permiten programar. Existen multitud de lenguajes de programación Cada lenguaje puede ser más apropiado para un determinado dominio o tarea Nosotros veremos el lenguaje C 23 Lenguaje de programación C ● ● Lenguaje simple con funcionalidades añadidas por bibliotecas Biblioteca: conjunto de funcionalidades (por ejemplo, entrada-salida, matemáticas) ● Uso de preprocesado mediante macros ● Acceso a memoria de bajo nivel mediante punteros ● No tiene recolector de basura. ● Otras características que iréis viendo. 24 Ejemplo de programa en C #include <stdio.h> int main() { printf("Hola mundo"); return 0; } 25 Compilación ● ● Un compilador “traduce” el programa en un determinado lenguaje a un ejecutable. Es dependiente del SO La compilación se produce en dos pasos: – A partir del fichero de texto con nuestro programa en lenguaje C se genera un fichero con código objeto (gcc -c holaMundo.c). Nos genera holaMundo.o – El fichero objeto se debe enlazar con las librerías para generar el ejecutable. Esto se puede realizar en un paso con gcc holaMundo.c -o holaMundo 26 Otras compiladores ● ● Existen lenguajes de programación interpretados. El intérprete (una especie de compilador) va leyendo el código y traduciéndolo a órdenes. Ejemplo: python Otros lenguajes son en dos pasos. Java es un ejemplo. Al compilar genera un lenguaje intermedio que es ejecutado por una máquina virtual. 27 Importancia de la indentación #include <stdio.h>int main(){int x,y,z;printf ("Escribe el primer lado");scanf("%i",&x);printf ("\nEscribe el segundo lado");scanf("%i",&y);printf ("\nEscribe el tercer lado");scanf("%i",&z);printf("\n\n\n"); //Saltar tres líneas/*Comprobación de si es un tiángulo, damos por hecho que los números son positivos */if ((x+y>z) && (x+z>y) && (y+z)>x){if (x==y && x==z) printf ("Equilátero"); else if (x==y || x==z || y==z) printf ("Isósceles"); else printf("Escaleno");}else printf("Esos números no forman un triángulo");} 28 Importancia de la indentación #include <stdio.h> int main() { int x,y,z; printf ("Escribe el primer lado"); scanf("%i",&x); printf ("\nEscribe el segundo lado"); scanf("%i",&y); printf ("\nEscribe el tercer lado"); scanf("%i",&z); printf("\n\n\n"); //Saltar tres líneas /*Comprobación de si es un triángulo, damos por hecho que los números son positivos */ if ((x+y>z) && (x+z>y) && (y+z)>x){ if (x==y && x==z) printf ("Equilátero"); else if (x==y || x==z || y==z) printf ("Isósceles"); else printf("Escaleno"); } else printf("Esos números no forman un triángulo"); } 29 Estilo de programación ● El código que hagáis en prácticas deberá cumplir con estas normas: – Comentarios: se usa /*adfdaf*/ No hace falta poner cada cosa, pero sí lo importante y las consideraciones que estiméis oportunas – Indentación – Documentación del código: pequeña memoria. Dejaremos ejemplos. 30