Ambientes de Programacion
-
Upload
aldo-zanabria -
Category
Documents
-
view
1.407 -
download
0
description
Transcript of Ambientes de Programacion
Ambientes de programación
2
Herramientas a usar
Lenguaje C++ Sistemas Windows y Linux/Unix Ambientes de programación ya instalados en
el laboratório Ambiente de programación básico y de fácil
instalación
3
Objetivos
Conocer ambientes de programación multiplataforma (Unix/Win/Mac)
Escribir código portable Mantenimiento de código multiplataforma
debuggers Control de versiones
4
Ambientes de programación multiplataforma Unix
Herramientas de construccion de software Makefile (1970), cmake, scons, jam, Otros
IDEs KDevelop, mono
Windows Ms .Net Codegear
Multiplataforma?
5
Make
Default en sistemas UNIX Windows requiere instalar MSYS (minimal unix system) cerca de
5Mb El comando make permite compilar programas con un numero
grande de archivos, de acuerdo a un conjunto de dependencias Al ejecutar “make” sin argumento busca automáticamente el
archivo Makefile, en otro caso es necesario especifical el nombre con “make –f archivo”
Ejemplo:main.obj : main.c
gcc -c main.c
6
Ejemplo completo
project.exe : main.obj io.obj
gcc -o project.exe main.obj io.obj
main.obj : main.c
gcc -c main.c
io.obj : io.c
gcc - c io.c
7
Make
Problemas: shell scripts complejos
Difíciles de mantener Difíciles para debugar Puede ser necesario usar diferentes comandos shell en
plataformas diferentes
Alternativas Scons
Basado en lenguaje python
8
MSYS como herramienta de desarrollo en Windows Necesario un compilador
MinGW (cerca de 100Mb) Compilador GNU C++ para windows Compatible con UNIX C++ estandar
Un IDE básico Editor Crimson + mingw + msys + make
9
Ambientes de programación completos Ms .net
En sistemas Unix puede ser ejecutado con mono con restricciones
Qt Nokia Multiplataforma
Qt Creator
Otros
10
Escribir código portable
Sinónimo de multiplataforma No Ms MFC Ms Forms parcialmente con mono C++ Standard
Soportado por Visual Studio C++ con diferencias mínimas
11
Mantenimiento y depuración de código Unix
Gdb Windows
Ms Visual Studio
12
Control de versiones
Una forma de manejar complejidad y modificar vía colaboración (equipo de trabajo), comunicación, y coordinación.
Una central de almacenamiento para el proyecto (documentación, código, etc.) Miembros del equipo
“check out” y “check in” en archivos modificados. Mantener cambios de cada archivo del proyecto (historial).
Cuando un miembro del equipo modifica un archivo y realiza un check in, el VCS incrementa un número de revisión y mantiene la versión anterior del archivo.
Versiones anteriores de cada archivo siempre pueden ser recuperadas.
Versiones diferentes archivos de texto pueden ser comparados para ver los cambios o pequeñas diferencias.
13
Version Control System Conceptual Design
VCS Server
John
Mary
Repository
checkout
checkout
edit
commit
update
Working copies
Working copies
editcommit
Conflicto!Mary no tiene los ultimos cambios de John’s
14
Resolviendo de conflictos Commit Solución
Cuando Mary intenta enviar (commit) sus modificaciones, ve que hay un conflicto.
Mary debe hacer una actualizaciónpara obtener los cambios de John.
Ahora Mary debe resolver el conflicto manualmente con sus cambios y los de John.
Finalmente, Mary puede enviar el archivo
15
Resumen VCS
checkout Crear una copia local del repositorio.
commit Enviar las modificaciones para el repositorio.
update Actualiza a su copia local las ultimas versiones de
archivos del repositorio. Conflictos
Resolver conflictos manualmente entre su copia local y la ultima versión del repositorio.
16
Sistemas de control de version CVS SVN Trac
Introducción a los lenguajes de alto nivel
18
Objetivos
Comprender
Donde estamos
Lenguajes de alto nivel
Introducción al lenguaje C++
Almacenamiento de datos
Tipos de sentencias
19
Objectivos
Juntando las piezas
Manejando complexidad
Programación orientada a objetos
Programación Gráfica
El objetivo principal: Ingeniería de software
20
Donde estamos
Primeros días de la computación
Lenguaje ensamblador
Programas escritos por personal técnico
Actualmente
Programadores buscan un ambiente de programación cómodo
Programas pueden ser escritos por personal no técnico.
21
Lenguajes de alto nivel
Llamados lenguajes de tercera generación
Supera deficiencias encontradas con el lenguaje ensamblador
El programador no necesita manejar detalles de almacenamiento de datos
22
Lenguajes de alto nivel
Lo que se espera de un lenguaje de alto nivel
El programa será portable
El código será cercano a un estándar, con notaciones estándar
23
24
Introducción al lenguaje C++ La figura anterior muestra algunos componentes
Comentarios Provee información para lectores humanos
Directivas de inclusión El enlazador incluye código objeto o de librerías
Usando directivas Le dice al compilador que verifique en los
“namespace” si existe definiciones no mencionadas en el programa
25
Un programa C++ Simple
26
La forma general de un programa C++
27
Almacenamiento de datos
Identificadores: Nombres en un lenguaje de programación
Palabras clave: Tienen significado especial en C++
C++ es sensible a los caracteres
Items de datos pueden ser constantes o variables
28
Almacenamiento de datos
Una declaración de item de datos dice:
Si el item es una constante o una variable
El identificador usado para nombrar el item
El tipo de dato del item
29
Algunos tipos de datos C++ Standard
30
Almacenamiento virtual de datos Un arreglo (array)
Son una colección de posiciones de memoria, todos almacenan datos del mismo tipo
Una colección de 12-Elementos
31
Tipos de sentencias
Sentencias de entrada/salida
Sentencias de entrada
Guarda un valor especifico del usuario para una variable dentro del programa
Sentencias de salida
Escribe un mensaje o el valor de una variable del programa en una pantalla o un archivo
32
Tipos de sentencias
Sentencias de asignacion
Asigna un valor a una variable del programa
Sentencias de control
Dirigen el flujo de control
Puede causar que se desvie del flujo secuencial usual
33
Sentencias de entrada/salida
Ejemplo Pseucodigo
Get value for Radius C++
cin >> Radius;
cin: flujo de entrada Operador de extracción (>>) y la definición de cin están en la librería iostream del std namespace
34
Sentencias de entrada/salida
Ejemplo Pseudo código
Print the value of Circumference C++
cout << Circumference;
cout: Flujo de salida Operador de inserción (<<) la definición de cout
stream están en la librería iostream del std namespace
35
Sentencias de asignación
Forma general Pseudo código
Set the value of “variable” to “arithmetic expression” C++
variable = expression;
1. Expression en el lado derecho es evaluado
2. El resultado es escrito en la localización de memoria de la variable
36
Sentencias de control
Tipos de mecanismos de control Secuencial
Las instrucciones son ejecutadas en orden
Condicional Escoger cual instrucción ejecutar despues depende
de alguna condicion
Iteraciones Grupos of instrucciones pueden ser ejecutados
varias veces
37
Sentencias de control
Secuencial es el modo común de ejecución
Control de flujo condicional
Evaluación de una condición booleana (también llamada expresión booleana)
Cual sentencia de programación a ser ejecutada después es determinada en base al valore de la condición boleana (verdadero o falso)
38
Sentencias de control
Flujo de control condicional Sentencia if-else
if (Boolean condition)
S1;
else
S2; Sentencia if es variación de if-else
if (Boolean condition)
S1;
39
Flujo de control condicional
(If-Else)
40
If-Else con Else vacio
41
Sentencias de control
Iteraciones
El cuerpo de la iteración puede ser ejecutado repetitivamente basado en el valor de la condición booleana
Sentencia while
while (Boolean condition)
S1;
42
While Loop
43
Poniendo todas la piezas juntas En este punto, podemos
Ejecutar entrada y salida
Asignar valores a variables
Controlar el flujo de control de sentencias de control e iteraciones
Para un programa completo, necesitamos Ensamblar las sentencias en el correcto orden
Llenar las piezas que faltan
44
Encuentro con las espectativas C++ reúne las cuatro expectativas para un
lenguaje de alto nivel
Un programador no necesita manejar los detalles del movimiento de items de datos dentro de la memoria, ni prestar atencion donde ellos estan almacenador.
45
Encuentro con las espectativas
El programador puede tomar una visión macroscopica de las tareas, pensando a un alto nivel para solucionar el problema
Programas escritos en lenguajes de alto nivel serán portables
Sentencias de programación en un lenguaje de alto nivel
Serán cercanos al standard English
Usaran notación matematica standard
46
Menejando complexidad: Divide y conquista
Para solucionar un problema divide en pequeños pedazos
En un programa de computadora
Divide el codigo en módulos (sub programas), cada uno haciendo una parte de toda la tarea
Unir estos módulos para que trabajar juntos para solucionar el problema original
47
48
Usando funciones
Función
Un modulo de código en C++
Funciones de subtareas: Opcional
La función “main”: Obligatorio
49
Usando funciones
Para invocar una función de subtarea, la funcion “main” da
Nombre de la función
Lista de argumentos de la función
Lista de argumentos: lista de identificadores para variables que conciernen a la función
Toda función puede tener sus propias constantes y declaraciones de variables
50
Escribiendo funciones
La declaración de una función consiste de:
Indicador de retorno: clasifica a una función de tipo void o no void
Identificador de función (nombre)
Lista de parametros
Por defecto, los argumentos en C++ son pasador por valor
51
Una función en C++
52
Terminología C++
53
Programación orientada a objetos
Un programa es una simulación de una parte del mundo que es el dominio de interés
Cada objeto es un ejemplo de una clase de objetos similares
Puntos clave Encapsulación
Una clases consiste de sus módulos y propiedades Ambos son encapsulados en la clase
54
Programación orientada a objetos
Herencia
Una vez que una clase A de objetos es definido, una clase B of objetos puede ser definido como una subclase de A
Polimorfismo
Una clase C de objetos es definido a partir de dos (A y B) o mas clases de objetos, entonces un objeto de la clase C puede adoptar la forma de uyn objeto de la clase A o B
55
Que ganamos con esto?
Dos ventajas importantes
Reuso de software
Una forma natural de abstraer el mundo
56
Programación gráfica: Primitivas gráficas Display de pixels
Grid bidimensional de pixels
Frame buffer
La memoria de video almacena la actual imagen de la pantalla
57
Coordenadas del sistema de píxeles en el display
58
Primitivas gráficas
Librerias gráficas
Software que contiene una colección de funciones que controlan la atribución/configuración/cambios de píxeles
La mayoría de lenguajes modernos tienen una librería gráfica.
59
El asunto central: Ingeniería de Software Ciclo de vida de un Software
Sobre todo una secuencia de pasos que necesitan ser completados en un proyecto de software de grande porte
La implementación representa una pequeña parte del ciclo
60
Pasos del ciclo de vida del desarrollo de software
61
Planificando
Programas escritos por estudiantes No mas que pocos miles de lineas
Programas del mundo real 2, 3, o 4 veces mas grandes
Desarrollo de software de grande escala Requiere planeamiento y diseño extensivo
Requiere un equipo de programadores
Ingeniería de Software
62
Ciclo de vida de un Software
Pasos en el software
Tiene un proposito especifico y actividades
Debe retornar algun resultado visual o impreso
El estudio de factibilidad
La especificación del problema
Diseñoo del programa
63
Ciclo de vida de un Software
Selección del algoritmo o técnica de desarrollo, y analisis
Codificación
Debug
Prueba, verificación, y comparaciones
Documentación
Mantenimiento
64
Ambientes de desarrollo modernos Integrated Development Environment (IDE)
agiliza el proceso de desarrollo proveyendo
Un editor de texto
Un manipulador de archivos
Un compilador
Un enlazador (linker)
Herramientas para debug