Metodología y Tecnología de la Programación Elementos de Programación • Introducción • Tipos de datos primitivos • Variables y asignación • Entrada y salida • Operadores aritméticos • Decisiones • Iteración • Desarrollo de programas • Algoritmos Escuela Superior de Informática. UCLM Tema 3:1 Metodología y Tecnología de la Programación Elementos de programación - Introducción • Pasemos a ver los elementos básicos en programación • El Capítulo 3 se centra en: – – – – – tipos de datos declaración y uso de las variables operadores y expresiones decisiones y bucles (lazos) entrada y salida Escuela Superior de Informática. UCLM Tema 3:2 Metodología y Tecnología de la Programación Tipos de Datos Primitivos • Un tipo de dato es definido por un conjunto de valores y los operadores que pueden operar sobre ellos • Cada valor almacenado en memoria se asocia con algún tipo de dato en particular. • El lenguaje Java posee diversos tipos predefinidos, llamados tipos de datos primitivos. • Las siguientes palabras reservadas representan ocho tipos primitivos diferentes. – byte, short, int, long, float, double, boolean, char Escuela Superior de Informática. UCLM Tema 3:3 Metodología y Tecnología de la Programación Valores Enteros • Existen cuatro tipos de datos primitivos para los enteros. • Difieren por la cantidad de memoria que requieren para ser guardados: Tipo Memoria Valor Mínimo Valor Máximo byte short int long 8 bits 16 bits 32 bits 64 bits Escuela Superior de Informática. UCLM -128 -32,768 -2,147,483,648 < -9 x 1018 127 32,767 2,147,483,647 > 9 x 1018 Tema 3:4 Metodología y Tecnología de la Programación Valores en Punto Flotante • Hay dos tipos de valores en punto flotante (Reales): Tipo Valor Mínimo Memoria Aproximado float double 32 bits 64 bits -3.4 x 1038 -1.7 x 10308 Valor Máximo Aproximado 3.4 x 1038 1.7 x 10308 • El tipo float almacena 7 dígitos significativos • El tipo double almacena 5 dígitos significativos Escuela Superior de Informática. UCLM Tema 3:5 Metodología y Tecnología de la Programación Caracteres • Un valor char almacena un carácter simple del conjunto de caracteres Unicode • Un conjunto de caracteres es una lista ordenada de caracteres • El conjunto de caracteres Unicode utiliza 16 bits para representar cada carácter pudiendo representar 65,536 caracteres diferentes • Unicode es un conjunto internacional de caracteres y contiene los caracteres y símbolos provenientes de muchas lenguas del mundo. Escuela Superior de Informática. UCLM Tema 3:6 Metodología y Tecnología de la Programación Caracteres • El conjunto de caracteres ASCII se utiliza aún en muchos lenguajes de programación. • ASCII es un subconjunto de Unicode e incluye: Letras mayúsculas Letras minúsculas Signos de puntuación Dígitos Símbolos especiales Caracteres de control Escuela Superior de Informática. UCLM A, B, C, … a, b, c, … punto, punto y coma, … 0, 1, 2, … &, |, \, … retorno, tab, ... Tema 3:7 Metodología y Tecnología de la Programación Valores lógicos o Booleanos • Un valor boolean representa una condición verdadera o falsa • Pueden usarse para representar dos estados cualesquiera como que un foco esté encendido o apagado • Las palabras reservadas true y false son los únicos valores válidos para los datos booleanos. Escuela Superior de Informática. UCLM Tema 3:8 Metodología y Tecnología de la Programación Clases Contenedoras (Wrappers) • Para cada tipo de dato primitivo hay una clase contenedora que le corresponde. Por ejemplo: Tipo Primitivo Clase contenedora int double char boolean Integer Double Character Boolean • Las clases contenedoras son útiles en situaciones en las cuales se necesita un objeto en lugar de un tipo primitivo • Estas clases contienen también algunos métodos útiles Escuela Superior de Informática. UCLM Tema 3:9 Metodología y Tecnología de la Programación Variables • Una variable es un identificador que representa una localización en la memoria y pertenece a algún tipo de dato • Las variables tienen que declararse antes de usarse • La sintaxis de la declaración de una variable es: tipo-de-dato nombre-de-la-variable; Por ejemplo: int total; Escuela Superior de Informática. UCLM Tema 3:10 Metodología y Tecnología de la Programación Variables • Pueden declararse varias variables en una misma línea: int total, cuenta, suma; • Las variables pueden inicializarse (darles un valor inicial) en la propia declaración: int total = 0, cuenta = 20; float precio_unitario = 57.25; • Ver Piano_Keys.java Escuela Superior de Informática. UCLM Tema 3:11 Metodología y Tecnología de la Programación La instrucción de asignación • Una instrucción de asignación tiene la forma: nombre-de-variable = expresión; • La expresión es evaluada y el resultado es almacenado en la variable, escribiendo su valor sobre el valor que hubiera antes en la variable. • Ver United_States.java • Una expresión puede ser un valor simple o representar un cálculo mas complicado que involucre varias operaciones Escuela Superior de Informática. UCLM Tema 3:12 Metodología y Tecnología de la Programación Constantes • Una constante es similar a una variable excepto que ellas conservan su valor durante todo el tiempo de existencia • Se especifican utilizando la palabra reservada final en la declaración • Por ejemplo: final double PI = 3.14159; final int ESTUDIANTES = 25; Escuela Superior de Informática. UCLM Tema 3:13 Metodología y Tecnología de la Programación Constantes • Cuando se utilizan adecuadamente, las constantes resultan útiles porque: – se previene la aparición de errores inadvertidos ya que no pueden cambiar de valor • Son más apropiadas que los valores literales porque: – Hacen el código más legible al darle significado al valor – Facilitan los cambios porque su valor es especificado en un solo lugar Escuela Superior de Informática. UCLM Tema 3:14 Metodología y Tecnología de la Programación Entrada y Salida • La E/S en Java se basa en corrientes de entrada y corrientes de salida (streams) • Hay tres corrientes standard predefinidas: Stream Propósito Dispositivo por defecto System.in System.out System.err lectura entrada escritura salida errores escritura teclado monitor monitor • Los métodos print y println escriben hacia la salida standard Escuela Superior de Informática. UCLM Tema 3:15 Metodología y Tecnología de la Programación Entrada y Salida • La API de Java le permite crear diversos tipos de streams para realizar varios tipos de entrada y salida • Para leer cadenas de caracteres, podemos convertir la corriente System.in en otro tipo de corriente usando: BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in)); • Esta declaración crea un nuevo stream llamado stdin • Discutiremos en detalle la creación de objetos mas adelante Escuela Superior de Informática. UCLM Tema 3:16 Metodología y Tecnología de la Programación Secuencias de escape • Ver Echo.java • Una secuencia de escape es una secuencia de caracteres especial precedida por un backslash (\) • Indican algún propósito especial, por ejemplo: Secuencia de escape Significado \t \n \" \' \\ tabulación nueva línea dobles comillas comilla simple backslash Escuela Superior de Informática. UCLM Tema 3:17 Metodología y Tecnología de la Programación Buffers • A medida que uno escribe, los caracteres se almacenan en un área especial de memoria llamada buffer de entrada. • Al terminar la entrada (poner enter), el programa comienza a procesar los datos • Del mismo modo, la información de salida se almacena temporalmente en un buffer de salida • El buffer de salida puede ser explícitamente descargado (flushed) (enviado a pantalla) usando el método flush • Ver Python.java Escuela Superior de Informática. UCLM Tema 3:18 Metodología y Tecnología de la Programación Entrada numérica • La conversión de una cadena que contiene un entero a un valor entero puede hacerse a través del método parseInt de la clase contenedora Integer: valor = Integer.parseInt (mi_cadena); • Un valor puede ser leído y convertido en una sola línea: num = Integer.parseInt (stdin.readLine()); • Ver Addition.java y Addition2.java Escuela Superior de Informática. UCLM Tema 3:19 Metodología y Tecnología de la Programación Expresiones • Una expresión es una combinación de operadores y operandos • Los operadores aritméticos incluyen: adicción (+), sustracción (-), multiplicación (*), y división (/) • Los operandos pueden ser valores literales, variables, u otras fuentes de datos • El programador determina que hacer con el resultado de una expresión (almacenarlo, imprimirlo, etc.) Escuela Superior de Informática. UCLM Tema 3:20 Metodología y Tecnología de la Programación División • Si los operandos en el operador / son ambos enteros, el resultado es un entero (se trunca la parte fraccionaria) • Si uno o ambos operandos en el operador / son valores de punto flotante, el resultado será un valor de punto flotante • El operador resto (%) devuelve el entero restante después de dividir el primer operando entre el segundo • Ambos operandos en el operador % deben ser enteros • Ver Division.java • El resultado restante toma el signo del numerador Escuela Superior de Informática. UCLM Tema 3:21 Metodología y Tecnología de la Programación División Expresión Resultado 17 / 5 17.0 / 5 17 / 5.0 3 3.4 3.4 9 / 12 9.0 / 12.0 0 0.75 6 % 2 14 % 5 -14 % 5 0 4 -4 Escuela Superior de Informática. UCLM Tema 3:22 Metodología y Tecnología de la Programación Precedencia de Operadores • El orden en que los operandos de una expresión son evaluados se determina por una jerarquía de precedencia bien definida • Los operadores con el mismo nivel de precedencia se evalúan de acuerdo a su asociatividad (de derecha a izquierda o de izquierda a derecha) • Los paréntesis se utilizan para forzar la precedencia Escuela Superior de Informática. UCLM Tema 3:23 Metodología y Tecnología de la Programación Precedencia de Operadores • Los operadores de multiplicación, división, y resto tienen mayor precedencia que la adición y la sustracción • Ambos grupos se asocian de izquierda a derecha Expresión: 5 + 12 / 5 - 10 % 3 3 Orden de evaluación: Resultado: Escuela Superior de Informática. UCLM 1 4 2 6 Tema 3:24 Metodología y Tecnología de la Programación Precedencia de Operadores Expresión Resultado 2 + 3 * 4 / 2 8 3 * 13 + 2 (3 * 13) + 2 3 * (13 + 2) 41 41 45 4 * (11 - 6) * (-8 + 10) 40 (5 * (4 - 1)) / 2 7 Escuela Superior de Informática. UCLM Tema 3:25 Metodología y Tecnología de la Programación La instrución if • La instrucción if de Java tiene la siguiente sintaxis: if (condición) instrucción; • Si la condición booleana es verdadera, se ejecuta la instrucción, pero si es falsa no se ejecuta • Esta es la forma básica de realizar la toma de decisiones Escuela Superior de Informática. UCLM Tema 3:26 Metodología y Tecnología de la Programación La instrucción if condición false true instrucción Escuela Superior de Informática. UCLM Tema 3:27 Metodología y Tecnología de la Programación Expresiones Booleanas • La condición de una instrucción if siempre debe dar un resultado verdadero o falso • Java posee varios operadores de igualdad y de relación: Operador Significado == != < <= > >= igual que no igual que menor que menor o igual que mayor que mayor o igual que • Ver Temperature.java Escuela Superior de Informática. UCLM Tema 3:28 Metodología y Tecnología de la Programación Bloques de instrucciones • Varias instrucciones pueden agruparse para formar un bloque de instrucciones • Los bloques se delimitan con llaves • Un bloque de instrucciones puede colocarse en cualquier lugar en que pueda usarse una instrucción simple • Ver Temperature2.java Escuela Superior de Informática. UCLM Tema 3:29 Metodología y Tecnología de la Programación La instrucción if-else • En una instrucción if puede añadirse una cláusula else obteniéndose la instrucción de control if-else : if (condición) instrucción1; else instrucción2; • Si la condición resulta true, se ejecuta instrucción1 si resulta false, se ejecuta instrucción2 • Ver Temperature3.java Right_Triangle.java Escuela Superior de Informática. UCLM y Tema 3:30 Metodología y Tecnología de la Programación La instrucción if-else condición false true instrucción1 Escuela Superior de Informática. UCLM instrucción2 Tema 3:31 Metodología y Tecnología de la Programación Instrucciones if anidadas • El cuerpo de la una instrucción if o la cláusula else pueden ser, a su vez, otra instrucción if • Esto se denomina anidamiento de instrucciones if • Ver Football_Choice.java • Nota: una cláusula else corresponde al último if no ejecutado Escuela Superior de Informática. UCLM Tema 3:32 Metodología y Tecnología de la Programación La instrucción while • La instrucción while posee el siguiente formato: while (condición) instrucción; • Si la condición es verdadera, la instrucción es ejecutada; y la condición es evaluada nuevamente • La instrucción se ejecuta una y otra vez hasta que en algún momento, la condición devenga falsa Escuela Superior de Informática. UCLM Tema 3:33 Metodología y Tecnología de la Programación La instrucción while condición false true instrucción Escuela Superior de Informática. UCLM Tema 3:34 Metodología y Tecnología de la Programación La instrucción while • Si la condición de una instrucción while es false inicialmente, la instrucción nunca llega a ser ejecutada • Por eso decimos que una instrucción while se ejecuta ninguna o varias veces • Ver Counter.java, Powers_of_Two.java Escuela Superior de Informática. UCLM Factors.java, y Tema 3:35 Metodología y Tecnología de la Programación Bucles (lazos, loops) infinitos • El cuerpo de un bucle while debe en algún momento provocar el valor falso en la condición • Si esto no ocurriese, tendríamos un bucle infinito, el cual estaría ejecutandose sin parar hasta que el programa fuera interrumpido • Este es un tipo de error lógico muy frecuente. Siempre chequee dos o tres veces que sus bucles terminarán normalmente • Ver Forever.java Escuela Superior de Informática. UCLM Tema 3:36 Metodología y Tecnología de la Programación Desarrollo de programas • La creación de básicas: – – – – software involucra cuatro actividades establecer los requerimientos crear un diseño implementar el código (escribirlo y editarlo) probar y poner en funcionamiento el programa • El proceso de desarrollo de programas es mucho mas elaborado, pero éstos pasos básicos pueden constituir un buen punto de partida para nuestro trabajo Escuela Superior de Informática. UCLM Tema 3:37 Metodología y Tecnología de la Programación Requerimientos • En los requerimientos, especificamos las tareas que nuestro programa deberá realizar (que hay que hacer, no cómo hacerlo) • Es usual que dispongamos de un conjunto inicial de requerimientos pero también es normal que posteriormente sean criticados, modificados o ampliados • A veces es difícil establecer requerimientos completos, detallados y sin ambigüedades • El prestar atención cuidadosa a los requerimientos nos ahorrarán mucho tiempo y recursos en el desarrollo posterior del proyecto Escuela Superior de Informática. UCLM Tema 3:38 Metodología y Tecnología de la Programación Diseño (programación imperativa) • Un programa sigue un algoritmo que es un proceso paso a paso para resolver un problema • Con el diseño especificamos el algoritmo y los datos necesarios. • En el esquema orientado a objetos, el diseño incluye el establecimiento de las clases, objetos y métodos requeridos • Una práctica usual es la de expresar los métodos en seudocódigo el cual es parecido al código de un lenguaje pero sin seguir reglas sintácticas necesariamente fijas Escuela Superior de Informática. UCLM Tema 3:39 Metodología y Tecnología de la Programación Implementación • La implementación es el proceso de traducción de un diseño a código fuente • Muchos programadores inexpertos creen que la escritura del código es lo mas importate en el desarrollo del software. En realidad esta actividad es muy poco creativa • Casi todas las decisiones importantes son tomadas durante el análisis de requerimientos y el diseño • La implementación se centra en los detalles de la codificación que incluyen el uso de estilos adecuados y realizar la documentación Escuela Superior de Informática. UCLM Tema 3:40 Metodología y Tecnología de la Programación Prueba • Todo programa debe ejecutarse muchas veces y con diversas entradas con el fin de detectar posibles errores • La depuración es el proceso por el cual descubrimos las causas de los problemas y los resolvemos • Los programadores suelen pensar que ”solo habrá un error mas" • Las pruebas deben considerar los detalles de diseño así como en los requerimientos generales Escuela Superior de Informática. UCLM Tema 3:41 Metodología y Tecnología de la Programación El desarrollo de programas • Ver Average.java • Siga siempre los pasos del proceso: análisis de requerimientos, diseño, implementación y prueba • Siempre habrá diversas implementar un programa maneras de diseñar e • Todo diseño tendrá ventajas y desventajas; Siempre habrá posibilidades de hacer cambalaches • Ver Average2.java Escuela Superior de Informática. UCLM Tema 3:42