You are on page 1of 64

Ambientes de programación

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

 Conocer ambientes de programación


multiplataforma (Unix/Win/Mac)
 Escribir código portable
 Mantenimiento de código multiplataforma
 debuggers
 Control de versiones

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

 “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.

12
Version Control System Conceptual
Design
John

edit

VCS Server checkout


commit
Working copies

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

 Lenguajes de alto nivel

 Introducción al lenguaje C++

 Almacenamiento de datos
 Tipos de sentencias

18
Objectivos

 Juntando las piezas

 Manejando complexidad

 Programación orientada a objetos

 Programación Gráfica

 El objetivo principal: Ingeniería de software

19
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.

20
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

21
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

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

 Palabras clave: Tienen significado especial en C++

 C++ es sensible a los caracteres

 Items de datos pueden ser constantes o variables

27
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

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

Una colección de 12-Elementos

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

 Escribe un mensaje o el valor de una variable del


programa en una pantalla o un archivo

31
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

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

 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

36
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)

37
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;

38
Flujo de control
condicional
(If-Else)

39
If-Else con Else vacio

40
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;

41
While Loop

42
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

43
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.

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

 Unir estos módulos para que trabajar juntos para


solucionar el problema original

46
47
Usando funciones

 Función

 Un modulo de código en C++

 Funciones de subtareas: Opcional

 La función “main”: Obligatorio

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

 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

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?

 Dos ventajas importantes

 Reuso de software

 Una forma natural de abstraer el mundo

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

 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.

58
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

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

 Debe retornar algun resultado visual o impreso

 El estudio de factibilidad

 La especificación del problema

 Diseñoo del programa

62
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

63
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

64

You might also like