Download Programación 1

Document related concepts

Rust (lenguaje de programación) wikipedia , lookup

Programación funcional wikipedia , lookup

Little man computer wikipedia , lookup

F Sharp wikipedia , lookup

Lisp wikipedia , lookup

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
[email protected]
Martes 10:00-13:00
Diego Viejo
[email protected]
Lunes 11:00-13:00 y
martes 9:00-11:00.
Jesús Martínez
[email protected]
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