nivel 1. problemas, soluciones y programas fundamentos de programación villalobos j.a., casallas r....

48
Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Upload: clavileno-madera

Post on 22-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Nivel 1. Problemas, soluciones y programas

Fundamentos de programaciónVillalobos J.A., Casallas R. Prentice Hall, 2006

Presentación creada por M.J. Gaitán

Page 2: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Problemas y soluciones

Problema

Cliente

Usuario

Programa Solución

Etapa 1

Etapa 2

Etapa N

Proceso

Programador

Page 3: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Especificación de un problema

Problema

ClienteProgramador

Análisis

Requerimientosfuncionales

Mundo del problema

Requerimientosno funcionales

Page 4: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Análisis de un problemaProblema Una compañía quiere hacer un programa para que

los consumidores puedan consultar la información nutricional de sus productos.

Cliente Compania de alimentos

Usuario Consumidor

Requerimientos funcionales

R1.Dado el codigo de barras de un producto, dar la informacion de: calorias, carbohidratos, proteinas, lipidos, sales, tamano de porcion,

Mundo del problema

Lista de productos, informacion nutricional de cada producto

Requerimientos no funcionales

Distribuido en los supermercados, lector de barras, presentacion agradable, anuncio de la comapania

Page 5: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

El proceso y las herramientas

Solución

Análisis delproblema

Diseño dela solución

Construcciónde la solución

Proceso

Programador

Herram

ientas y lenguajes

Problema

Entender y especificar elproblema:

Requerimientos funcionalesMundo del problema

Requerimientos no funcionalesDetallar características de lasolución antes de construirla.

Uso de algún lenguaje

Implementar el programay probar su funcionamiento

Page 6: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Elementos que forman parte de la solución de un problema

Diseño del programa

Pruebas del programa Datos de prueba

Código fuente Código ejecutable

Archivos de construcción

compilador

programa

Page 7: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Construcción de un programa

Programador

Usuario

Ambiente dedesarrollo

Editor

Código fuente

Compilador

Lenguaje deprogramación

Código ejecutable

usa

tiene

crea traducido por

entiende

escrito en

crea

Se instala donde

Page 8: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Caso de estudio 1

Programa que administra la información de un paciente adulto

Nombre, apellido, sexo, fecha de nacimiento, fecha de inicio del tratamiento, peso, estatura

Cambiar: peso Calcular: edad actual, índice de masa corporal,

peso ideal

Page 9: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Comprensión y especificación del problema Análisis del problema

¿Cómo se especifica un requerimiento funcional?

¿Cómo saber qué es un requerimiento funcional?

¿Cómo se describe el mundo del problema?

Page 10: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Requerimientos funcionalesNombre R1. Introducir datos del paciente

Resumen Permite al usuario introducir la información del paciente: datos personales y datos del estado actual

Entradas Nombre del paciente

Apellido del paciente

Sexo del paciente

Fecha de nacimiento

Fecha de inicio del tratamiento

Estatura

Peso

Resultado Datos en memoria

Page 11: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Requerimientos funcionalesNombre R2. Actualizar el índice de masa corporal

Resumen Permite actualizar el índice de masa corporal, de acuerdo con la información

Entradas Peso

Estatura

Resultado El índice de masa corporal ha sido actualizado

Page 12: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Requerimientos funcionalesNombre R3. Actualizar edad actual

Resumen Permite modificar la edad actual del paciente

Entradas Fecha de nacimiento

Fecha actual

Resultado La edad del paciente ha sido actualizada

Page 13: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Requerimientos funcionalesNombre R4. Actualizar el peso ideal

Resumen Permite modificar el peso ideal del paciente de acuerdo con su estatura, edad y sexo

Entradas Estatura

Edad

Sexo

Resultado El peso ideal del paciente ha sido actualizado

Page 14: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

El modelo del mundo del problema

Modelo del mundo

Identificar entidades

Modelar suscaracterísticas

Buscar susrelaciones

Documentar

Clases

atributos

asociacionesnombre

Page 15: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

El modelo del mundo del problema

Identificación de entidades o clasesElementos concretos o abstractosProgramas pequeños: buscar sustantivos en

el enunciado del problema

Entidad

Entidad

Page 16: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

El modelo del mundo del problemaModelado de características o atributos

Clase:

Atributo Valores posibles UML

Page 17: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

El modelo del mundo del problemaModelado de características o atributos

Clase:

Atributo Valores posibles UML

Page 18: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

El modelo del mundo del problema

Relación entre entidadesPaciente Fecha

fechaNacimiento

fechaIngreso

Page 19: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Requerimientos no funcionales

Contexto de utilización del programa Restricciones definidas por el cliente Ejemplos:

Múltiples usuariosSistema de computación específico Capacidades de almacenamientoTiempo de procesamiento

Page 20: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Elementos de un programa

Datos

Procedimientos Algoritmos

Clases y objetos Tipos de datos

Métodos Instrucciones

Lenguaje de programación

Page 21: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Clases y objetos Clases

Definen la estructura del programa

Entidades del mundo del problema

Definido por atributos y métodos

Objeto Instancia o ejemplar de una

clase Valores propios para cada

atributo {valores de atributos}

estado del objeto

Paciente

nombreapellidosexoestaturapeso

algoritmos

Fecha

diamesanio

algoritmos

fechaNacimiento

fechaIngreso

fechaNacimiento

fechaIngreso

:Paciente

nombre=“Ana”apellido=“Ruiz”sexo=Femeninoestatura=155peso=50

:Fecha

dia=24mes=10anio=1989

:Fecha

dia=15mes=1anio=2005

fechaNacimiento

fechaIngreso

:Paciente

nombre=“Luis”apellido=“Laos”sexo=Masculinoestatura=168peso=72

:Fecha

dia=14mes=5anio=1972

:Fecha

dia=22mes=5anio=2006

Page 22: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Tipos de datosJava Características Ejemplos

SimplesEnteros int -32768 32767 48

-360

Reales double -2.9E39 1.7E38 49.5

-3.1416

Carácter char Un solo carácter alfanumérico o especial

‘a’ ’A’ ‘7’ ‘+’

97 65 55 43

Lógicos boolean true false

CompuestosCadena String Secuencia de caracteres “Qué bien”

“”

Page 23: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Paquetes Estructura jerárquica de las clases de un

programainstitucion

proyecto

programa

interfaz mundo util prueba

ClaseInterfaz1

ClaseInterfaz2

ClaseMundo1

ClaseMundo2

ClaseUtil1

ClaseUtil2

ClasePrueba1

Page 24: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Java Bloque de instrucciones { } Comentarios

De línea // De sección

Declaración de una clase Archivo: Fecha.java

public class Fecha{// Aquí va la declaración de la clase Fecha

}

Page 25: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Java Declaración del paquete de la clase

package uami.intProg.paciente/** * Esta clase representa a un paciente */public class Fecha{// Aquí va la declaración de la clase Fecha

}

Page 26: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Java Declaración de atributos de la clase

package uami.intProg.paciente/* Esta clase representa una fecha */public class Fecha{// Atributos-------------------private int dia;private int mes;private int anio;

}

Fecha

int diaint mesint anio

algoritmos

Page 27: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Java Declaración de atributos de la clase

package uami.intProg.paciente/* Esta clase representa a un paciente */public class Paciente{

// Atributosprivate String nombre;private String apellido;private int sexo;//1=masculino,2=femeninoprivate int estatura;private double peso;

private Fecha fechaNacimiento;private Fecha fechaIngreso;

}

Paciente

String nombreString apellidoint sexoint estaturadouble peso

algoritmos

Fecha

int diaint mesint anio

algoritmos

fechaNacimiento

fechaIngreso

Page 28: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Métodos Cada algoritmo de una clase es un método

Solución de un problema puntual Servicio que la clase presta a las demás o a ella

misma Elementos

Nombre Lista de parámetros (con su tipo)

Información que no tiene el objeto pero que se necesita para resolver el problema puntual

Tipo de respuesta (si no hay salida, void ) Cuerpo del método

Conjunto de instrucciones Signatura: encabezado (método sin cuerpo)

Page 29: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Métodos

Nombre: public tipo nombre(tipo parametros)

{

//Cuerpo del método

}

Parámetros:

Retorno:

Descripción:

Page 30: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Métodos

Paciente

String nombreString apellidoint sexoint estaturadouble peso

void cambiarPeso(double nuevoPeso)double calcularIMC()double calcularPesoIdeal(Fecha fechaActual)

Fecha

int diaint mesint anio

int darDia()int darMes()int datAnio()

fechaNacimiento

fechaIngreso

Page 31: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Métodos

Nombre: public tipo nombre(tipo parametros)

{

//Cuerpo del método

}

Parámetros:

Retorno:

Descripción:

Page 32: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Instrucciones Retornopublic class Fecha{

// Atributos-------------------private int dia;private int mes;private int anio;

// Metodos---------------------public int darDia(){

return dia;}public int darMes(){

return mes;}public int darAnio(){

return anio;}

}

Page 33: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Instrucciones Expresiones Aritméticas

var1 11var2 2Operator Descripción Ejemplo Resultado

- Negación -var1 -11

++ Incremento var1++ 12

- - Decremento var1-- 10

* Multiplicación var1*var2 22

/ División var1/var2 5.5

% Módulo var1%var2 1

+ Adición var1+var2 13

- Substracción var1-var2 9

= Asignación var1=var2 var1 2

Orden de operadores

Page 34: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Instrucciones Expresiones

Lógicas Resultado: falso / verdadero

(false / true) Operadores relacionales

< menor que <= menor o igual > mayor que >= mayor o igual != diferente == igual

Operadores lógicos && y (and) || o (or) ! negación (not)

valor NOT(valor)

!valor

V F

F V

valor1 valor2 valor1 OR valor2

valor1||valor2

V V V

V F V

F V V

F F F

valor1 valor2 valor1 AND valor2

valor1&&valor2

V V V

V F F

F V F

F F F

Page 35: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Instrucciones Expresiones Reglas de prioridad o precedencia

Expresiones entre paréntesis Si hay anidados, de adentro hacia fuera

Orden !,-(negación) ++,-- *, /, %, &&, +, -, || <, > ,==,<=,>=,!= Si coinciden varios operadores de igual prioridad

en una expresión, de izquierda a derecha

Page 36: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Instrucciones Asignación

atributoModificarse = expresión;

OperandosElementos de una expresión

OperadoresAritméticosLógicosRelaciones entre los operandos

areaTriangulo = base*altura/2;

Page 37: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Instrucciones Asignaciónpublic class Paciente{

// Atributos------------------------------private String nombre;private String apellido;private int sexo; //1=masculino,2=femeninoprivate int estatura;private double peso;private Fecha fechaNacimiento;private Fecha fechaIngreso;//Metodos----------------------------------public void cambiarPeso(double nuevoPeso){

peso = nuevoPeso;}public double calcularIMC(){

return peso/(estatura*estatura);}

…}

Page 38: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Instrucciones Llamada de un método sin parámetros

Uso del servicio que proporciona una claseMisma clase

nombreMetodo()

Otra clase referenciada como atributo nombreAtributo.nombreMetodo()

Page 39: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Llamada de un método con parámetros ¿Cuándo?

Información en sus atributos no es suficiente

Declaración Signatura o encabezado de un métodomodificador tipo de nombre del lista de parametros: tipo nombre

de control retorno método

de acceso

public void metodo1(int a, double b, char c)

¿Cómo se utilizan los valores? Utilizar el nombre del parámetro en el cuerpo, como con los

atributos

Instrucciones

Page 40: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Instrucciones Llamada de un método con parámetros

¿Cómo se definen los valores? Al hacer la llamada al método, pasar los valores con los que

se desea que el método trabaje Constantes Atributos del objeto que hace la llamada Parámetros del método desde el que se hace la llamada Expresiones con los anteriores

Relación entre valores y parámetros Los valores se pasan el orden en el que están declarados

los parámetros Mismos tipos de datos Mismo número de valores y parámetros

Page 41: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Instruccionespublic class C2{

private int art1;private C1 obj;

public void m2(int x){

obj.m1(x,34+atr1,”prueba”);}

}

public class C1{

public void m1(int param1, int param2, String param3)

{…

}}

Page 42: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Instrucciones

Creación de objetosnew NombreObjeto( )

Objetos del modelo del mundo: creados tipicamente por la interfaz de usuario

Una referencia a un objeto se puede guardar en cualquier atributo o variable del mismo tipo.

Page 43: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Diseño de la solución

Segunda etapa del proceso de desarrollo de un programaRefinamientos sucesivos

Requerimientosfuncionales

Mundo delproblema

Requerimientosno funcionales

Diseño de la solución

Interfaz deusuario

Arquitecturade la solución

Diseño delas clases

Page 44: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Arquitectura de la solución

División del problema en problemas más pequeños

Diseño de alto nivel que permita la unión Arquitectura básica con tres grupos de clases:

Interfaz de usuario Modelo del mundo Pruebas

Cada grupo de clases en un paquete

Page 45: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Construcción de la solución

Interfaz deusuario

Arquitecturade la solución

Diseño delas clases

Construcción de la solución

Archivosfuente

Archivoscompilados

Archivos dedocumentación

Organización yconvenciones

Archivosempaquetados

Archivosejecutables Usuario

Cliente

Page 46: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Nivel 1

Especificación del problema Análisis del problema

Requerimientos funcionales Mundo del problema Requerimientos no funcionales

Diseño de la solución Programa: datos y métodos Interfaz de usuario, arquitectura de la solución,

diseño de las clases Construcción de la solución

Page 47: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Ejercicios de expresionesExpresión Resultado Operadores

1.0>=2*(3.1-2.6)

17>-8

3>2

(17>-8)&&(3>2)

(17>-8)||(3>2)

!(17>-8)

!(17>-8)&&(3>2)

(3/4>0.6)&&(5<3)

39%4=

(25%8)>(47%6)

39/4=

!(!((3>1)&&(2<10))||((4>1)&&(1<2)))

Expresión Resultado Operadores

2+3*11=

(2+3)*11=

3+7*2-4*6=

-3*5+2/4-5=

-3*5+2/(4-5)=

-(3*5+2)/(4-5)=

(-3*5+2)/(4-5)=

3<6

4!=2+1

4.8/(2.6-3)*2=

‘a’==‘A’

!(7>=-2)

Page 48: Nivel 1. Problemas, soluciones y programas Fundamentos de programación Villalobos J.A., Casallas R. Prentice Hall, 2006 Presentación creada por M.J. Gaitán

Ejercicios de expresiones

Expresión matemática Expresión algorítmica

(pasar de oC a oF)

(pasar de oF a oK)

2 33 3

5 1

x ya xy

x y

(3)(5)

12 8

7 25

36 6

xy x

y

2 2( ) 2( )( ) ( )a b a b a c a c

3

1 2 1

a r a r

r

23.6( 3)(3 )7.2 (3.8 2)

5.2 2

xxx x

x

( 1)( 1)2( 2) 1

( 2)( 2)

x xx

x x

( 1)

qd

qd n q