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
2
Objetivos
3
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?
4
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
5
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
6
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
7
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
8
Ambientes de programación completos
Ms .net
En sistemas Unix puede ser ejecutado con mono
con restricciones
Qt Nokia
Multiplataforma
Qt Creator
Otros
9
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
10
Mantenimiento y depuración de código
Unix
Gdb
Windows
Ms Visual Studio
11
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
recuperadas.
Versiones diferentes archivos de texto pueden ser comparados
12
Version Control System Conceptual
Design
John
edit
Mary
Repository
checkout
update
commit
edit
Conflicto!
Mary no tiene los ultimos
Working copies
cambios de John’s
13
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
14
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.
15
Sistemas de control de version
CVS
SVN
Trac
16
Introducción a los lenguajes
de alto nivel
Objetivos
Comprender
Donde estamos
Almacenamiento de datos
Tipos de sentencias
18
Objectivos
Manejando complexidad
Programación Gráfica
19
Donde estamos
Actualmente
Programadores buscan un ambiente de
programación cómodo
Programas pueden ser escritos por personal no
técnico.
20
Lenguajes de alto nivel
Llamados lenguajes de tercera generación
21
Lenguajes de alto nivel
22
23
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
24
Un programa C++ Simple
25
La forma general de un programa C++
26
Almacenamiento de datos
Identificadores: Nombres en un lenguaje de
programación
27
Almacenamiento de datos
28
Algunos tipos de datos C++ Standard
29
Almacenamiento virtual de datos
Un arreglo (array)
Son una colección de posiciones de memoria,
todos almacenan datos del mismo tipo
30
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
31
Tipos de sentencias
Sentencias de asignacion
Sentencias de control
32
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
33
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
34
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
35
Sentencias de control
36
Sentencias de control
37
Sentencias de control
38
Flujo de control
condicional
(If-Else)
39
If-Else con Else vacio
40
Sentencias de control
Iteraciones
Sentencia while
S1;
41
While Loop
42
Poniendo todas la piezas juntas
43
Encuentro con las espectativas
44
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
45
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
46
47
Usando funciones
Función
48
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
49
Escribiendo funciones
Lista de parametros
50
Una función en C++
51
Terminología C++
52
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
53
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
54
Que ganamos con esto?
Reuso de software
55
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
56
Coordenadas del sistema de píxeles en el display
57
Primitivas gráficas
Librerias gráficas
58
El asunto central: Ingeniería de Software
59
Pasos del ciclo de vida del desarrollo de software
60
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
61
Ciclo de vida de un Software
Pasos en el software
Tiene un proposito especifico y actividades
El estudio de factibilidad
62
Ciclo de vida de un Software
63
Ambientes de desarrollo modernos
64