Está en la página 1de 54

2009 - Fundacin Proydesa

Introduccin a la Programacin
Elementos de Programacin
EP-100

2009 - Fundacin Proydesa

Programacin
Hacer que las computadoras hagan lo que nosotros queremos que hagan Algunos mbitos de aplicacin:
Control de Procesos Industriales, mquinas herramientas Electrodomsticos, Comunicaciones Gestin de Negocios, Oficina

Objetivo: Definir los pasos a seguir para resolver un problema dado, para conseguir un resultado esperado Consistente, repetible, confable

2009 - Fundacin Proydesa

Programa
Instrucciones ejecutables por el procesador que llevan a cabo un algoritmo que permite resolver un problema dado El algoritmo normalmente define siempre el mismo comportamiento para un conjunto dado de variables El primer paso consiste en encontrar el algoritmo, el mecanismo que -codificado en un cierto lenguaje- nos permita resolver el problema Bsicamente comprende dos conceptos:
Datos, que representan objetos sobre los que operamos Procedimientos, reglas que definen cmo manipular los datos

2009 - Fundacin Proydesa

Procesador
ENTRADA PROCESADOR PROCESADOR SALIDA

DATOS A PROCESAR + PROCEDIMIENTO

RESULTADO ESPERADO

2009 - Fundacin Proydesa

Procesador
Es quien ejecuta el programa y hace visible el resultado esperado del programa Misma estructura, distintos tamaos:
Marcapasos cardaco, implantes inteligentes Micros embebidos (PDA, celular, mobile, etc) Microprocesadores (Notebooks & PCs) Microprocesadores Alta Gama (Midrange) Procesadores Hbridos (Mainframe)

2009 - Fundacin Proydesa

El lenguaje del procesador


Sistema Binario
1101 1010 0100 1000 (DA68) Activar motor #4

Originalmente especificado a travs de diversos mecanismos


Cintas / Tarjetas perforadas (Jacquard) Llaves ( on off )

Lenguajes
Bajo Nivel: Alto Nivel: Assembler MOV A, X COBOL, Java, Python print PI * pow(x,2) / 2

2009 - Fundacin Proydesa

Caractersticas
La mayora de los lenguajes (por no decir todos) son capaces de realizar:
Operaciones aritmticas Manipulacin y anlisis de texto Loops: ejecutar grupos de instrucciones repetidamente Condicionales: ejecutar grupos de instrucciones segn criterios Entrada/Salida: recibir y entregar datos de y al mundo exterior Funciones y procedimientos para manipular los datos Utilizar libreras de funciones y procedimientos prefabricados Organizar el programa combinando estructuras simples para formar otras ms complejas

2009 - Fundacin Proydesa

Cdigo fuente
Se conoce como cdigo fuente (source code) al documento de texto que contiene las instrucciones en el lenguaje correspondiente:
__author__ = "Mark Pilgrim (mark@diveintopython.org)" __author__ = "Mark Pilgrim (mark@diveintopython.org)" __version__ = "$Revision: 1.2 $" __version__ = "$Revision: 1.2 $" __date__ = "$Date: 2004/05/05 21:57:19 $" __date__ = "$Date: 2004/05/05 21:57:19 $" __copyright__ = "Copyright (c) 2004 Mark Pilgrim" __copyright__ = "Copyright (c) 2004 Mark Pilgrim" __license__ = "Python" __license__ = "Python" def fibonacci(max): def fibonacci(max): a, b = 0, 1 a, b = 0, 1 while a < max: while a < max: yield a yield a a, b = b, a+b a, b = b, a+b for n in fibonacci(1000): for n in fibonacci(1000): print n, print n,

2009 - Fundacin Proydesa

Ejecucin del cdigo


El cdigo fuente contiene el programa en un formato legible, en el lenguaje de alto nivel correspondiente (ej. COBOL, Java, Python) Existen varios mecanismos para que el procesador ejecute las instrucciones del cdigo:
Interpretado: El cdigo fuente se lee y se ejecuta instruccin por instruccin, con poca o ninguna optimizacin. Compilado: El cdigo fuente es procesado por un compilador, el cual genera
Objeto ejecutable (binario): Optimizado para la plataforma de hardware y sistema operativo correspondiente. Bytecodes: Es un paso intermedio, que luego ser interpretado por una mquina virtual VM.

2009 - Fundacin Proydesa

Compilador vs. Intrprete


El compilador genera un objeto binario
Muy compacto Optimizado Especfico para el sistema operativo / procesador objetivo

El intrprete ejecuta instrucciones paso a paso (script)


Muy flexible, se cambia el cdigo y se corre Se interpreta en el momento No est optimizado

2009 - Fundacin Proydesa

Mquina Virtual
Para que el ejecutable sea independiente del sistema operativo (portable) se ejecuta en una mquina virtual Esta mquina interpreta el programa compilado (bytecode) Cada sistema operativo tiene una versin de la mquina virtual, pero todas son iguales de cara al programa compilado Ejecutable Ejecutable (Bytecode) (Bytecode)

Virtual Virtual Machine Machine

OS OS

2009 - Fundacin Proydesa

Ciclo de Vida del Software


Disear el algoritmo de la solucin Escribir el cdigo fuente y generar el objeto ejecutable (script / bytecode / exe) Ejecutar la solucin y verificar el resultado Debug

2009 - Fundacin Proydesa

Disear el algoritmo

2009 - Fundacin Proydesa

Elementos de Programacin
Hay 5 elementos presentes en la mayora de los lenguajes de programacin:

Variables Loops Condicionales Entrada/Salida Subrutinas y Funciones

2009 - Fundacin Proydesa

Variables
Es la forma en que se representan los datos. Puede ir desde algo tan simple como la edad o el nombre de una persona, hasta algo complejo como el conjunto de afiliados de una prepaga, con sus nmeros de carnet, sus nombres y apellidos, domicilios, qu prestaciones utiliz cada uno, en qu fecha, con qu mdico, etc.
nombre = Juan Manuel apellido = Fangio campeonatosObtenidos = 5 aosCampeon = [1951, 1954, 1955, 1956, 1957] cv = [ X, [Ing.Civil, Bachiller],[Roggio]..]

2009 - Fundacin Proydesa

Uso de las Variables


Es la memoria del programa:
saldo = 1000 saldo = saldo 200 saldo = saldo + 40
SALDO SALDO 1000 1000 800 800 840 840

Son posiciones de memoria donde se guardan:


Datos de entrada (parmetros) Resultados intermedios y datos de salida

El contenido de la variable se actualiza desde:


Parmetros externos Dispositivos de entrada (interfaz usuario) Lectura de medios magnticos / pticos (archivos, etc.) Clculos y manipulacin interna

2009 - Fundacin Proydesa

Tipos de Variables
a = Esto es un texto b = 12345 c = 3.14159 d = False e = [0,0,1][0,1,0][1,0,0] f = x0F14BE20200DEAF130 g = [ Lunes, Martes, Domingo]

2009 - Fundacin Proydesa

Tipos de Variable
Para algunos lenguajes (ej. JavaScript) cada variable puede contener distintos tipos de datos:
var nombre = Duke var edad = 12 var importe = 123.456 var comodin = Blink comodin = 182

Para detectar posibles errores en forma temprana, algunos lenguajes (como Java) exigen que se declare el tipo de dato a contener:
string nombre = Duke integer edad = 12 float importe = 123.456

ERROR!!!

2009 - Fundacin Proydesa

Inicializacin de Variables
Algunos lenguajes exigen declarar la variable antes de utilizarla

En general, al declarar la variable se inicializa con un valor vaco (espacio, 0, 0.00, etc). Algunos lenguajes NO inicializan la variable error al utilizarla

Es una buena prctica de programacin asignarle un valor inicial a cada variable, evitando as sorpresas y garantizando la integridad del programa ( no hay estados invlidos)

2009 - Fundacin Proydesa

Operaciones con Variables


La mayora de los lenguajes provee operadores aritmticos (+, -, *, /, etc) para las operaciones bsicas
suma = 13; suma = 13; suma = suma + 5; suma = suma + 5; print suma; print suma; 18 18 print 14 + 8 - 2 * (2 + 4)/ 5; print 14 + 8 - 2 * (2 + 4)/ 5; 20 20

Ntese la construccin Dato = Dato + 1 Otras: X += 2 X *= 5 X++

2009 - Fundacin Proydesa

Loops
Permiten ejecutar grupos de instrucciones de programa repetidas veces bajo ciertos criterios, caracterstica fundamental de todo lenguaje. Construccin for:
for mes in [ "Enero", "Febrero", "Marzo" ]:print mes Enero Febrero Marzo

Construccin while:
i=0 while ( i < 3 ) : print i; i += 1; 0 1 2

2009 - Fundacin Proydesa

Condicionales
Permiten ejecutar grupos de instrucciones segn si se cumple un determinado criterio, caracterstica fundamental de todo lenguaje. Se basan en la comparacin de variables
age = 14 age = 14 if (age < 20) :: print "Purrete!"; if (age < 20) print "Purrete!"; Purrete! Purrete! Purrete!

Hay que diferenciar la comparacin de variables


Numricas (integer, float, etc) Alfanumricas (string)

Sintaxis: IF (expresion) THEN ELSE

2009 - Fundacin Proydesa

Condiciones Mltiples
IFTHENELIF ELSE

2009 - Fundacin Proydesa

Estructuras de Programacin
Todo programa se puede construir utilizando tres tipos de estructura:
Secuencia: Las instrucciones se ejecutan en el orden en que estn escritas. Decisin: Al entrar en este bloque, el valor de una variable determina qu sub.-bloque(s) se ejecutar(n) a continuacin Iteracin: Al entrar en este bloque, el valor de una variable determina cuntas veces se ejecutar el contenido del mismo

2009 - Fundacin Proydesa

Enfoques
Tcnicas Estructuradas
Refinamiento progresivo Dividir y conquistar Reducir la complejidad utilizando una estructura de bloques ms simples y manejables

Orientacin a Objetos
Modelar el problema basados en los objetos reales Asignarle a cada objeto un comportamiento Resolver mediante colaboracin e interaccin entre objetos

2009 - Fundacin Proydesa

Estructuras anidadas
SECUENCIA A B X1? C X2? D E DECISION ITERACION

2009 - Fundacin Proydesa

Secuencia
Importe() {cantidad * precio}

Hacer Subtotal = SUM( Cant * Precio )


subtotal = sum( importe )

alicuota = 0.21

Hacer Alicuota = 21%


IVA = subtotal * alicuota

Hacer IVA = Subtotal * Alicuota

Imprimir factura

2009 - Fundacin Proydesa

Decisin
IF THEN ? A A ? B IF THEN ELSE

CASE

A1

A2

A3

2009 - Fundacin Proydesa

Iteracin
A

? A

DO...WHILE

REPEATUNTIL

2009 - Fundacin Proydesa

Manejo de Errores
Dependiendo del tipo de lenguaje, los errores pueden detectarse como cualquier otra condicin (ej. IF ERROR THEN X) o manejarse como una excepcin: El control del programa pasa a una seccin especial (el error handler) Esto ltimo permite separar el manejo de errores y excepciones del flujo normal del programa El mantenimiento del programa se hace ms fcil

2009 - Fundacin Proydesa

Instrucciones & Mtodos


Es lo que podemos hacer con un programa Lenguajes tradicionales: Instrucciones
READ RCONT01, WRITE TABLA PRINT TOTAL, PERFORM SALDO UNTIL EOF, etc. Estn dadas por el fabricante conjunto limitado

Lenguajes modernos: Mtodos


compra.calcularTotal(), document.print(), window.close() cliente.setScoring(149), canvas.drawCircle(100,100,50, ROJO) No hay lmite es como extender el lenguaje

2009 - Fundacin Proydesa

Procedimientos & Funciones


Son bloques o grupos de instrucciones que producen un resultado especfico Imprescindible para la buena organizacin del cdigo Idealmente trabajan con parmetros, no afectan variables globales (mala prctica!)

========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ==========

ABCDEFG ABCDEFG CONTAR CONTAR LETRAS LETRAS 7 7

2009 - Fundacin Proydesa

Prctica
Revisar cdigo fuente y reconocer
Mtodos, procedimientos, bloques, funciones

2009 - Fundacin Proydesa

Interfaz Usuario
La mayora de las aplicaciones de software tendrn que interactuar con una persona el usuario
Inscribirse en Curso Alumno

El componente que maneja esta interaccin es la llamada interfaz del usuario (hombre/mquina)

2009 - Fundacin Proydesa

Dispositivos
La interaccin con el usuario del sistema puede realizarse a travs de distintos mecanismos:
Monitor, impresora, fax, dispenser de dinero, brazo robtico Teclado, pantalla tctil, botones, sensores, etc.

Existen una amplia variedad de dispositivos para interactuar:


PC, Workstation, terminal boba (texto verde) Personal Digital Assistant PDA (ej. Palm) Telfonos (?) celulares Paneles de control (botones + display + altavoz)

2009 - Fundacin Proydesa

Interfaz Usuario
Es el componente ms crtico en el diseo del sistema, porque es la cara visible de la aplicacin Determina qu puede hacer y qu NO puede hacer el sistema Requiere balancear cuidadosamente:
Lo que el usuario quiere porque vio en otra aplicacin Lo que el usuario quiere porque se imagina que sera til Lo que el diseador propone porque cree que es mejor Lo que la moda y el mercado imponen porque es ms fashion

Es una especialidad en s misma, pero puede ser encargada a un Diseador Grfico con experiencia.

2009 - Fundacin Proydesa

Tipos de interfaz
Para los dispositivos de pantalla, podemos identificar dos tipos de interfaz:

Interfaz Textual (green screen terminal boba)

Interfaz Grfica (ej. Windows)

2009 - Fundacin Proydesa

Interfaz Textual

Era el modo predominante antes de la difusin masiva de las PCs y las Macintosh
Orientado a lnea de comandos (ej. DOS): toda la interaccin se produce en la ltima lnea, el resto es historia previa Orientado a pantalla (ej. 3270/5250): la interaccin se realiza enviando y recibiendo la pantalla completa (24 x 80) como un solo bloque

2009 - Fundacin Proydesa

Interfaz Grfica (GUI)

Standard Mayor riqueza visual Mayor productividad / facilidad de uso / ergonoma

2009 - Fundacin Proydesa

Interfaz Grfica (web page)

Futuro, cliente liviano

cliente universal

Fcil portabilidad a mltiples dispositivos Reinventar la terminal boba

2009 - Fundacin Proydesa

Prctica
Explorar distintos tipos de interfaces y dispositivos

2009 - Fundacin Proydesa

Trabajando con datos


Almacenamiento. Registros, tablas, archivos. Modelado de entidades. Entidades, atributos, relaciones. Tipos de relaciones. Subtipos y Supertipos. Tablas. Claves. Clave primaria, claves alternativas. Diagramas de Entidades y Relaciones. XML. Qu es y para qu se usa?

2009 - Fundacin Proydesa

Almacenamiento
Siempre necesitamos contar con datos
Datos de referencia permanentes (ej. Cliente) Movimientos y transacciones (ej. Pedido) Resultados de un proceso (ej. Liquidaciones) Resultados intermedios, pasando de un programa a otro

Como la memoria de la mquina es voltil, necesitamos mecanismos de almacenamiento (medios magnticos) y archivo (medios magnticos / pticos) Posibles tecnologas:
Archivos planos Base de Datos
Jerrquica Relacional

2009 - Fundacin Proydesa

Archivos planos
Datos organizados en un solo nivel (plano) Acceso tpicamente secuencial Optimizado a travs de ndices

AGERO AVELLANEDA BRASIL CAMARGO .. ZARATUSTRA

- 002 - 215 - 004 - 001 - 003

001 | CAMARGO | . 002 | AGERO | . 003 | ZARATUSTRA | . 004 | BRASIL | . .. 215 | AVELLANEDA | .

2009 - Fundacin Proydesa

Base de Datos (DBMS)


En realidad es un motor de base de datos Maneja las operaciones de insercin, cambio, modificacin, y remocin de datos Organiza los datos en tablas relacionales

2009 - Fundacin Proydesa

Datos Almacenados
Archivos planos Para acceder a los datos es necesario conocer la forma en que fueron grabados Los datos se acceden en forma secuencial, eventualmente a travs de los ndices Tablas relacionales La tabla incluye informacin sobre su contenido (metadata) Los datos se acceden luego de haber seleccionado los registros de inters

2009 - Fundacin Proydesa

Un modelo (parcial)
CLIENTE CLIENTE PEDIDO PEDIDO

CUENTA CUENTA CORRIENTE CORRIENTE ITEM ITEM PEDIDO PEDIDO MOVIMIENTO MOVIMIENTO PRODUCTO PRODUCTO

Enfoques de Programacin

2009 - Fundacin Proydesa

2009 - Fundacin Proydesa

Cmo encarar el problema?


Hay varias formas de estudiar un problema y disear su solucin Bsicamente:
Procedural: El tradicional conjunto de instrucciones. Es el titiritero (programador) quien maneja los hilos. Orientado a Objetos: Modela un universo de objetos con comportamiento propio interactuando entre s. El programador define el comportamiento de cada objeto y deja que entre todos hagan su trabajo.

2009 - Fundacin Proydesa

Enfoque procedural
Tanto el problema como la solucin pueden descomponerse en partes cada vez ms simples La solucin es una secuencia formada por tres tipos de bloques (programacin estructurada):
Secuencia: Las instrucciones se ejecutan en el orden en que estn escritas. Decisin: Al entrar en este bloque, el valor de una variable determina qu bloque(s) se ejecutarn a continuacin Iteracin: Al entrar en este bloque, el valor de una variable determina cuntas veces se ejecutar el contenido del mismo

2009 - Fundacin Proydesa

Enfoque procedural
Es el ms arraigado de los enfoques Es ideal para problemas sencillos, mecnicos, determinsticos Su complejidad crece exponencialmente Es difcil de apreciar en toda su extensin, se pierde el contexto Difcil de particionar para trabajar en equipo

2009 - Fundacin Proydesa

Orientacin a Objetos
Objetos con un comportamiento y una responsabilidad especfica colaborando entre s Se comunican mediante el envo de mensajes Cada mensaje es un pedido para que el otro objeto haga algo o responda con otro objeto

2009 - Fundacin Proydesa

Enfoque OO
Permite modelar mejor el mundo real Solucin alineada con la realidad Permite particionar el problema en forma natural, no arbitraria Cada elemento es reutilizable, si est bien diseado Es mucho ms complejo que el enfoque procedural Ideal para problemas complejos, orgnicos (ej. organizaciones)

2009 - Fundacin Proydesa

Elementos de OO
Objetos: Son los componentes bsicos Clases: Definen las caractersticas de cada objeto instancia de clase Mensaje: Invoca un mtodo en el objeto, con o sin datos (argumentos) Interfaz: Conjunto de mtodos pblicos, es el contrato entre un objeto y su entorno