Ambientes de Programacion

Preview:

DESCRIPTION

ambientes de programacion

Citation preview

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