Date post: | 22-Jan-2016 |
Category: |
Documents |
Upload: | clavileno-madera |
View: | 215 times |
Download: | 0 times |
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