Ambientes de Programacion

64
Ambientes de programación

description

ambientes de programacion

Transcript of Ambientes de Programacion

Page 1: Ambientes de Programacion

Ambientes de programación

Page 2: Ambientes de Programacion

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

Page 3: Ambientes de Programacion

3

Objetivos

Conocer ambientes de programación multiplataforma (Unix/Win/Mac)

Escribir código portable Mantenimiento de código multiplataforma

debuggers Control de versiones

Page 4: Ambientes de Programacion

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?

Page 5: Ambientes de Programacion

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

Page 6: Ambientes de Programacion

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

Page 7: Ambientes de Programacion

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

Page 8: Ambientes de Programacion

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

Page 9: Ambientes de Programacion

9

Ambientes de programación completos Ms .net

En sistemas Unix puede ser ejecutado con mono con restricciones

Qt Nokia Multiplataforma

Qt Creator

Otros

Page 10: Ambientes de Programacion

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

Page 11: Ambientes de Programacion

11

Mantenimiento y depuración de código Unix

Gdb Windows

Ms Visual Studio

Page 12: Ambientes de Programacion

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.

Page 13: Ambientes de Programacion

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

Page 14: Ambientes de Programacion

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

Page 15: Ambientes de Programacion

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.

Page 16: Ambientes de Programacion

16

Sistemas de control de version CVS SVN Trac

Page 17: Ambientes de Programacion

Introducción a los lenguajes de alto nivel

Page 18: Ambientes de Programacion

18

Objetivos

Comprender

Donde estamos

Lenguajes de alto nivel

Introducción al lenguaje C++

Almacenamiento de datos

Tipos de sentencias

Page 19: Ambientes de Programacion

19

Objectivos

Juntando las piezas

Manejando complexidad

Programación orientada a objetos

Programación Gráfica

El objetivo principal: Ingeniería de software

Page 20: Ambientes de Programacion

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.

Page 21: Ambientes de Programacion

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

Page 22: Ambientes de Programacion

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

Page 23: Ambientes de Programacion

23

Page 24: Ambientes de Programacion

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

Page 25: Ambientes de Programacion

25

Un programa C++ Simple

Page 26: Ambientes de Programacion

26

La forma general de un programa C++

Page 27: Ambientes de Programacion

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

Page 28: Ambientes de Programacion

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

Page 29: Ambientes de Programacion

29

Algunos tipos de datos C++ Standard

Page 30: Ambientes de Programacion

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

Page 31: Ambientes de Programacion

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

Page 32: Ambientes de Programacion

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

Page 33: Ambientes de Programacion

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

Page 34: Ambientes de Programacion

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

Page 35: Ambientes de Programacion

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

Page 36: Ambientes de Programacion

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

Page 37: Ambientes de Programacion

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)

Page 38: Ambientes de Programacion

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;

Page 39: Ambientes de Programacion

39

Flujo de control condicional

(If-Else)

Page 40: Ambientes de Programacion

40

If-Else con Else vacio

Page 41: Ambientes de Programacion

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;

Page 42: Ambientes de Programacion

42

While Loop

Page 43: Ambientes de Programacion

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

Page 44: Ambientes de Programacion

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.

Page 45: Ambientes de Programacion

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

Page 46: Ambientes de Programacion

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

Page 47: Ambientes de Programacion

47

Page 48: Ambientes de Programacion

48

Usando funciones

Función

Un modulo de código en C++

Funciones de subtareas: Opcional

La función “main”: Obligatorio

Page 49: Ambientes de Programacion

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

Page 50: Ambientes de Programacion

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

Page 51: Ambientes de Programacion

51

Una función en C++

Page 52: Ambientes de Programacion

52

Terminología C++

Page 53: Ambientes de Programacion

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

Page 54: Ambientes de Programacion

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

Page 55: Ambientes de Programacion

55

Que ganamos con esto?

Dos ventajas importantes

Reuso de software

Una forma natural de abstraer el mundo

Page 56: Ambientes de Programacion

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

Page 57: Ambientes de Programacion

57

Coordenadas del sistema de píxeles en el display

Page 58: Ambientes de Programacion

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.

Page 59: Ambientes de Programacion

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

Page 60: Ambientes de Programacion

60

Pasos del ciclo de vida del desarrollo de software

Page 61: Ambientes de Programacion

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

Page 62: Ambientes de Programacion

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

Page 63: Ambientes de Programacion

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

Page 64: Ambientes de Programacion

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