Beruflich Dokumente
Kultur Dokumente
Introduccin a la Programacin
Elementos de Programacin
EP-100
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
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
Procesador
ENTRADA PROCESADOR PROCESADOR SALIDA
RESULTADO ESPERADO
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)
Lenguajes
Bajo Nivel: Alto Nivel: Assembler MOV A, X COBOL, Java, Python print PI * pow(x,2) / 2
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
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,
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)
OS OS
Disear el algoritmo
Elementos de Programacin
Hay 5 elementos presentes en la mayora de los lenguajes de programacin:
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]..]
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]
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!!!
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)
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
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!
Condiciones Mltiples
IFTHENELIF ELSE
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
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
Estructuras anidadas
SECUENCIA A B X1? C X2? D E DECISION ITERACION
Secuencia
Importe() {cantidad * precio}
alicuota = 0.21
Imprimir factura
Decisin
IF THEN ? A A ? B IF THEN ELSE
CASE
A1
A2
A3
Iteracin
A
? A
DO...WHILE
REPEATUNTIL
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
========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ========== ==========
Prctica
Revisar cdigo fuente y reconocer
Mtodos, procedimientos, bloques, funciones
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)
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.
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.
Tipos de interfaz
Para los dispositivos de pantalla, podemos identificar dos tipos de interfaz:
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
cliente universal
Prctica
Explorar distintos tipos de interfaces y dispositivos
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
Archivos planos
Datos organizados en un solo nivel (plano) Acceso tpicamente secuencial Optimizado a travs de ndices
001 | CAMARGO | . 002 | AGERO | . 003 | ZARATUSTRA | . 004 | BRASIL | . .. 215 | AVELLANEDA | .
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
Un modelo (parcial)
CLIENTE CLIENTE PEDIDO PEDIDO
CUENTA CUENTA CORRIENTE CORRIENTE ITEM ITEM PEDIDO PEDIDO MOVIMIENTO MOVIMIENTO PRODUCTO PRODUCTO
Enfoques de Programacin
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
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
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
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)
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