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

Post on 22-Jan-2016

216 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Problemas y soluciones

Problema

Cliente

Usuario

Programa Solución

Etapa 1

Etapa 2

Etapa N

Proceso

Programador

Especificación de un problema

Problema

ClienteProgramador

Análisis

Requerimientosfuncionales

Mundo del problema

Requerimientosno funcionales

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

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

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

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

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

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?

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

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

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

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

El modelo del mundo del problema

Modelo del mundo

Identificar entidades

Modelar suscaracterísticas

Buscar susrelaciones

Documentar

Clases

atributos

asociacionesnombre

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

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

Clase:

Atributo Valores posibles UML

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

Clase:

Atributo Valores posibles UML

El modelo del mundo del problema

Relación entre entidadesPaciente Fecha

fechaNacimiento

fechaIngreso

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

Elementos de un programa

Datos

Procedimientos Algoritmos

Clases y objetos Tipos de datos

Métodos Instrucciones

Lenguaje de programació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

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”

“”

Paquetes Estructura jerárquica de las clases de un

programainstitucion

proyecto

programa

interfaz mundo util prueba

ClaseInterfaz1

ClaseInterfaz2

ClaseMundo1

ClaseMundo2

ClaseUtil1

ClaseUtil2

ClasePrueba1

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

}

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

}

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

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

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)

Métodos

Nombre: public tipo nombre(tipo parametros)

{

//Cuerpo del método

}

Parámetros:

Retorno:

Descripció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

Métodos

Nombre: public tipo nombre(tipo parametros)

{

//Cuerpo del método

}

Parámetros:

Retorno:

Descripció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;}

}

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

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

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

Instrucciones Asignación

atributoModificarse = expresión;

OperandosElementos de una expresión

OperadoresAritméticosLógicosRelaciones entre los operandos

areaTriangulo = base*altura/2;

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);}

…}

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()

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

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

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)

{…

}}

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.

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

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

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

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

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)

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

top related