Algoritmo y Estructura de Datos I (AEDI)

Slides:



Advertisements
Presentaciones similares
Curso de Java Capitulo 6: Cadenas y Arrays Profesor:
Advertisements

PROF. ING. JULIO CESAR CANO RAMIREZ
ESTRUCTURA DE DECISION LOGICA
ALGORITMOS Y LENGUAJES Estructuras de Control CONDICIONAL
Estructuras de decisión en C
Elementos de Pascal Escribir un programa en Pascal que lea los valores de los catetos de un triángulo rectángulo y calcule y muestre la hipotenusa. program.
Archivos Implementar un método que lea una secuencia de números enteros de un archivo y compute la cantidad de elementos leídos.
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Técnico en programación de Software
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
1.2 Sintaxis del lenguaje Java.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Complemento a los Diagrama de Flujos Fundamentos de la Programación
3. INTRODUCCIÓN A LA PROGRAMACIÓN
ESTRUCTURAS DE SECUENCIA
Introducción a la Computación
ESTRUCTURAS DE DECISION MULTIPLES
Algoritmo y Estructura de Datos I
Introducción a la Computación (7ma Semana) Lunes 16 de Abril del 2007
Introducción a la Computación
Facultad de Ingeniería y Arquitectura Introducción a la Computación 2007 – I (11va Semana) Lunes 14 de Mayo Ing. Juan José Montero Román.
Algoritmo y Estructura de Datos I
Introducción a la Computación (8va Semana) Lunes 23 de Abril del 2007
Algoritmo y Estructura de Datos I
Algoritmo y Estructura de Datos I
Facultad de Ingeniería y Arquitectura Introducción a la Computación 2006 – II (8va Semana) Lunes 25 de Setiembre del 2006 Juan José Montero Román.
Introducción a la Computación
Facultad de Ingeniería y Arquitectura Introducción a la Computación 2006 – II (7ma Semana) Lunes 18 de Setiembre del 2006 Juan José Montero Román.
VISUAL BASIC CONSOLA Todas las ordenes o instrucciones se digitan dentro de sub Main() y End Sub ÁREA DE TRABAJO: Las aplicaciones de consola son aquellas.
METODOLOGIA DE LA PROGRAMACION
Conceptos Básicos de Java
POO Java Módulo 3 Elementos de programas Identificadores
Unified Modeling Language (Lenguaje de Modelamiento unificado)
Tema 6. Conceptos básicos de programación
ESTRUCTURAS DE CONTROL
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Introducción a la Computación
Programación en Matlab
JAVA J.A.C..
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 1)
Capítulo 1 “Elementos de Programación”
INTRODUCCIÓN A LA COMPUTACIÓN
Capítulo 2 – Estructuras de Control
ESTRUCTURA DE DECISION LOGICA
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
ESTRUCTURA DE DATOS ESD-243
COMPONENTES DE UN ALGORITMOS
Teoría – Alejandro Gonzalez
Introducción a la Ingeniería de Sistemas
Introducción a la programación
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Elementos básicos del lenguaje
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
PRINCIPIOS DE PROGRAMACIÓN
Elaboración de algoritmos usando lógica de programación
Presente un cuestionario con los aspectos mas importantes sobre los
TEMA: DISEÑO DE LA SOLUCION INTREGRANTES DE EQUIPO: ERIKA CRUZ MARTINEZ RODOLFO LOPEZ ANOTA LUIS ARMANDO LIÑA QUECHA JOSE FRANCISCO MEZO VARELA LUIS ENRIQUE.
Fundamentos de Programación
Lic. Carla Aguirre Montalvo
FUNDAMENTOS DE PROGRAMACIÓN
Unified Modeling Language (Lenguaje de Modelamiento unificado)
Universidad Domingo Savio
ESTRUCTURAS DE DECISION MULTIPLE
INFORMÁTICA II TEMA: DISEÑA Y ELABORA ALGORITMOS DOCENTE: MARÍA DOLORES GARCÍA PONCE CAMPUS TONALÁ JALISCO.
Tema 8: Programación estructurada Introducción La importancia del conocimiento de programación es mucho mayor de lo que se piensa. Aprender a programar.
ESTRUCTURAS SELECTIVAS Elaborado por; Ing. Alberto Pérez.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Transcripción de la presentación:

Algoritmo y Estructura de Datos I (AEDI) Facultad de Ingeniería y Arquitectura Algoritmo y Estructura de Datos I (AEDI) 2006 - II Guía Teórica desarrollada por los profesores del curso: Ing. Pablo Iván Casma Angulo. Bach. Jessica Paulino Torre. Ing. Juan José Flores Cueto (Jefe de SubArea). Ing. Cindy Sotelo Mendoza (Jefe de Curso). Ing. Iveth Marcelino Ponce. Ing. Ronald Santos Paredes Vargas. Ing. Carmen Bertolotti Zuñiga.

Algoritmo y Estructura de Datos I I N T R O D U C C I Ó N

Algoritmo y Estructura de Datos I Plan de Estudios IC AEDI AEDII BD SWI SWII DI II FDWeb Prog I Prog II Electivos Prácticas en FIA-DATA Prácticas en EMPRESA I II III IV V VI VII VIII 4 Años

Algoritmo y Estructura de Datos I Sílabo Objetivos generales: HOY Comprender la importancia de utilizar un método para el desarrollo de soluciones básicas. Entender los diagramas básicos utilizados para el modelamiento de problemas del mundo real. Destacar el uso de los algoritmos para el manejo de datos y objetos. AEDI III Durante el desarrollo del curso, el estudiante desarrollará un programa de laboratorio, sustentado en los aspectos teóricos impartidos en el salón de clase.

Algoritmo y Estructura de Datos I Sílabo Unidades: Unidad I: Desarrollo de soluciones básicas. Uso de estructuras lógicas y variables. (semana 01 a semana 04). Unidad II: Introducción al desarrollo de soluciones OO. Uso de objetos, métodos y atributos (semana 05). Unidad III: Desarrollo de soluciones OO. Uso de estructuras lógicas y arreglos. (semana 06 a semana 08). Unidad IV: Desarrollo de soluciones básicas usando interfaz gráfica de usuario. (semana 10). Unidad V: Estructuras dinámicas lineales de datos. (semana 11 a semana 12). Unidad VI: Estructuras dinámicas no lineales de datos. (semana 13 a semana 14). Unidad VII: Programación gráfica. (semana 15) HOY AEDI III Durante el desarrollo del curso, el estudiante desarrollará un programa de laboratorio, sustentado en los aspectos teóricos impartidos en el salón de clase.

Algoritmo y Estructura de Datos I Sílabo Evaluación: El curso es de evaluación permanente. El sistema de evaluación del presente curso consta de promedio de prácticas calificadas (PP), promedio de proyectos (PT), un examen final de laboratorio (E1) y un examen final de teoría (E2). El promedio final se obtiene de la siguiente manera: P F = PP + PT + E1*2 + E2*2 6

Algoritmo y Estructura de Datos I Sílabo Bibliografía: Método de las 6’D. UML – Pseudocódigo – Java (Enfoque algorítmico) 2005. Juan José Flores Cueto. Método para la Solución de Problemas utilizando la programación Orientada a Objetos. Aspectos Básicos. 2003. Como programar en Java. Quinta Edición. Prentice Hall, 2004. Deitel & Deitel.

Proyecto Parcial y Final Algoritmo y Estructura de Datos I Proyecto Parcial y Final Indicaciones: Formar equipos de trabajo de 5 alumnos. Seleccionar una empresa o un negocio en el cual pueda desarrollar una solución. Inscriba su tema con el profesor de teoría. Tiene como plazo máximo dos semanas. Solicite el formato para la elaboración de su proyecto final al profesor. El proyecto de mitad de curso (parcial) se entregará en la semana 10 sesión 01(en el salón de clase). El proyecto final se entregará en la semana 16 sesión 01 (en el salón de clase), fecha en la cual se iniciarán las sustentaciones de los mismos.

Proyecto Parcial y Final Algoritmo y Estructura de Datos I Proyecto Parcial y Final Monografía: Presentación en disquete (2 ptos). Calidad, limpieza y orden (1.5 ptos). Copia de seguridad (0.5 ptos). Estructura (4 ptos). Enunciado del problema. Definición de la solución. Diseño de la solución. Modelamiento. Algoritmo. Desarrollo de la solución Codificación. Depuración y pruebas. Carátula (0.5 ptos). Índice (0.5 ptos). Contenido. Conclusiones (2.0 ptos). Bibliografía (1.0 ptos). Contenido (14 ptos). La monografía deberá ser presentada en base al modelo utilizado en la FIA. Recuerde agregar en contenido los puntos aquí establecidos.

Algoritmo y Estructura de Datos I Proyecto Final Sustentación: Aspectos Ponderación Presentación. Organización. Exposición. Contenido. Material adicional. 1. 4. Escala: 1 a 5 (1 muy malo y 5 excelente). La asistencia a las sustentaciones es obligatoria. En la primera sesión de la semana 16 sustentarán equipos en forma voluntaria y en la segunda sesión serán seleccionados por el profesor. En caso de no haber equipos voluntarios el profesor procederá a seleccionarlos.

Algoritmo y Estructura de Datos I Anotaciones:

Algoritmo y Estructura de Datos I Unidad I: Desarrollo de soluciones básicas Uso de estructuras lógicas y variables Semana 01 a semana 05

Algoritmo y Estructura de Datos I Semana 01 – sesión 01 Objetivos: Identificar las etapas de un método para solucionar problemas utilizando la computadora. Definir y ejemplificar cada uno de los conceptos básicos de la teoría de objetos. Definir el concepto de modelamiento y la notación a utilizar.

Definición Diseño Desarrollo Depuración Document. MÉTODO PARA LA SOLUCION DE PROBLEMAS UTILIZANDO LA COMPUTADORA Método de las 6’D Etapa 01 Descripción Problema Etapa 02 Definición Solución Etapa 03 n veces Diseño Solución Ingeniería reversa Etapa 04 Desarrollo Solución Etapa 05 Modelamiento Depuración Pruebas Etapa 06 Algoritmo Document. Codificación

Método de las 6’D – Ingeniería reversa MÉTODO PARA LA SOLUCION DE PROBLEMAS UTILIZANDO LA COMPUTADORA Método de las 6’D – Ingeniería reversa Diseño Solución Desarrollo Depuración Pruebas n veces Ingeniería reversa La ingeniería reversa nos permite crear o actualizar el modelo preliminar realizado en la ETAPA 03 “Diseño de la solución” a partir del código del programa realizado en la ETAPA 04 “Desarrollo de la solución” y corregido en la ETAPA 05 “Depuración y pruebas”.

Modelamiento Definición: Vf = Vo + at – a%3 CONCEPTOS BÁSICOS DE MODELAMIENTO Y TOO Modelamiento Definición: Todo problema informático, procedente del mundo real, esta afecto, a que su solución pueda ser planteada en términos de un modelo que refleje la realidad observada y analizada. Un modelo es una representación gráfica o simbólica de algún aspecto del mundo real, que está bajo observación o estudio. Vf = Vo + at – a%3 Modelo matemático Modelo de clases

Modelamiento - UML Definición: CONCEPTOS BÁSICOS DE MODELAMIENTO Y TOO Modelamiento - UML Definición: El Lenguaje Unificado de Modelado (Unified Modeling Language, UML) es un lenguaje gráfico que nos permite: Visualizar. Especificar (construir modelos precisos, no ambiguos). Construir (se establecen correspondencias con lenguajes OO, como Java, C++, Visual Basic,...). Documentar los componentes de un sistema de software (arquitectura, requisitos, diseño, pruebas, versiones, planificación,...). Describir el ciclo de vida completo del desarrollo OO.

TOO - Paquetes Definición: dominioDeLaAplicación. biblioteca. CONCEPTOS BÁSICOS DE MODELAMIENTO Y TOO TOO - Paquetes Definición: Paquete: Conjunto de clases similares. Un paquete permite organizar las clases. Un paquete contiene clases que tienen funciones similares. dominioDeLaAplicación. biblioteca. EJEMPLOS nombrePaquete

(NombrePaquete al que pertenece) CONCEPTOS BÁSICOS DE MODELAMIENTO Y TOO TOO - Clases Definición: Clase: Colección de objetos del mismo tipo. Una Clase es una implantación de un “tipo de objeto”. Especifica una estructura para almacenar los atributos y los métodos operativos permisibles que se aplican a cada uno de sus objetos (comparten datos o atributos y métodos comunes). El mundo real se modela mediante clases. Una clase es una abstracción y no referencia a ningún objeto en particular. Carpeta. Perro. EJEMPLOS NombreClase (NombrePaquete al que pertenece) Atributos Operaciones

Modelamiento - UML Ejemplo: SeresVivos Hombre nombres. apellidos. CONCEPTOS BÁSICOS DE MODELAMIENTO Y TOO Modelamiento - UML Ejemplo: SeresVivos Hombre (SeresVivos) nombres apellidos edad correr() caminar() nombres. apellidos. edad. ATRIBUTOS correr(). caminar(). OPERACIONES

¿Qué datos manejan los objetos?. CONCEPTOS BÁSICOS DE MODELAMIENTO Y TOO Modelamiento - UML Ejemplo: SeresVivos Hombre (SeresVivos) nombres apellidos edad correr() caminar() ¿Qué datos manejan los objetos?. ATRIBUTOS Expresado en: Estructuras de Datos. ¿Qué pueden hacer los objetos?. OPERACIONES Expresado en: Algoritmos.

Modelamiento - UML Diagramas: Use Case Diagrams Scenario State CONCEPTOS BÁSICOS DE MODELAMIENTO Y TOO Modelamiento - UML Diagramas: Use Case Diagrams Diagramas de Casos de Uso Scenario Colaboración State Componentes Component Distribución Objetos Estados Secuencia Clase Paquete Actividad Modelo

Modelamiento - UML Diagrama de paquetes CONCEPTOS BÁSICOS DE MODELAMIENTO Y TOO Modelamiento - UML Diagrama de paquetes La dependencia es una relación que se puede establecer entre dos o más paquetes. La dependencia en este caso significa que todas las clases que pertenecen al paquete dominioDeLaAplicacion podrán tener acceso a todas o algunas de las clases que pertenecen al paquete biblioteca (el sentido de la flecha marca la dependencia). Dependencia

Método de las 6’D – Modelamiento TEMAS TRATADOS SEMANA 01 – SESIÓN 01 Método de las 6’D – Modelamiento Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Modelamiento Notación UML

Algoritmo y Estructura de Datos I Semana 01 – sesión 02 Objetivos: Definición y descripción del método empleado para definir los métodos de las clases. Algoritmos. Definición y descripción de la herramienta empleada para definir los métodos de las clases. Pseudocódigo. Descripción del lenguaje de programación utilizado para codificar soluciones. Java.

Definición Diseño Desarrollo Depuración Document. MÉTODO PARA LA SOLUCION DE PROBLEMAS UTILIZANDO LA COMPUTADORA Método de las 6’D Etapa 01 Descripción Problema Etapa 02 Definición Solución Etapa 03 n veces Diseño Solución Ingeniería reversa Etapa 04 Desarrollo Solución Etapa 05 Modelamiento Depuración Pruebas Etapa 06 Algoritmo Document. Codificación

Algoritmo Definición: ALGORITMO - CONCEPTOS BÁSICOS Algoritmo Definición: El algoritmo constituye una lista completa de pasos secuenciales y una descripción de datos necesarios para resolver un determinado problema. Una lista de pasos secuenciales que deben ser ejecutados. Una descripción de los datos que son manipulados por estos pasos.

Algoritmo PrgMensaje – main() ALGORITMO - CONCEPTOS BÁSICOS Algoritmo - Pseudocódigo Definición: Un pseudocódigo permite expresar un algoritmo con palabras en castellano que son semejantes a las instrucciones de un lenguaje de programación. Los Algoritmos permiten expresar los métodos de las clases. Algoritmo PrgMensaje – main() ENTRADA: sueldo SALIDA: sueldo INICIO NUMERO sueldo sueldo = 0 LEER sueldo sueldo = sueldo * 0.85 ESCRIBIR sueldo FIN

Algoritmo - Pseudocódigo ALGORITMO - CONCEPTOS BÁSICOS Algoritmo - Pseudocódigo Tipos de datos: En Pseudocódigo se reconocen los siguiente tipos de datos : NUMERO. TEXTO. CARACTER. LOGICO. Tenga presente que las palabras NUMERO, TEXTO, CARACTER y LOGICO son reglas o pautas utilizadas en el pseudocódigo por lo que no podrán ser usadas como nombre de variable o constante.

Algoritmo - Pseudocódigo ALGORITMO - CONCEPTOS BÁSICOS Algoritmo - Pseudocódigo Pautas - Generales y de asignación: Todo algoritmo debe tener un nombre el cual deberá comenzar con una letra mayúscula. Si es un nombre compuesto, la primera letra de cada palabra simple deberá estar en mayúscula. No se permiten los espacios en blanco en el nombre del algoritmo. Es necesario que se determinen los datos de entrada y la información de salida. Para declarar una variable “x” se deberá determinar que tipo de dato va almacenar. Por ejemplo. Si deseamos declarar una variable de tipo texto se realizaría de la siguiente manera TEXTO x. Para asignar un valor a una variable “x” se utiliza el signo igual. Por ejemplo, si deseamos asignar 5 a la variable “x” se realizaría de la siguiente manera x = 5.

Algoritmo - Pseudocódigo ALGORITMO - CONCEPTOS BÁSICOS Algoritmo - Pseudocódigo Pautas - Generales y de asignación: Para indicar que la computadora lea un valor desde un dispositivo externo y lo almacene en la variable “z” se utiliza LEER z. Para indicar que la computadora escriba hacia un dispositivo externo: Para escribir un mensajes (observe que el mensaje está entre comillas) se utiliza: ESCRIBIR “hola” Para escribir el valor de la variable “x” (observe que no se utilizan comillas) se utiliza: ESCRIBIR x Para escribir el resultado de una expresión (observe que no se utilizan comillas) se utiliza: ESCRIBIR x + 2

Algoritmo - Pseudocódigo ALGORITMO - CONCEPTOS BÁSICOS Algoritmo - Pseudocódigo Pautas - Operadores aritméticos: Los operadores que están encerrados entre paréntesis se evalúan primero. Si existen paréntesis anidados las expresiones mas internas se evalúan primero. Orden de prioridad: 1. ** 2. * , / 3. DIVIDIR , RESTO 4. + , - En caso de coincidencia de operadores de igual prioridad en una expresión, el orden de prioridad será de izquierda a derecha. + Suma. - Resta. * Multiplicación / División. ** Exponenciación. DIVIDIR División Entera. RESTO Módulo o resto. RAIZ Raíz de un número. POTENCIA Potencia de número.

Algoritmo - Pseudocódigo ALGORITMO - CONCEPTOS BÁSICOS Algoritmo - Pseudocódigo Pautas - Operadores relacionales y lógicos: < Menor que. > Mayor que. = Igual que. <= Menor o igual que. >= Mayor o igual que. <> Distinto de. NO (Not) Negación. Y (And) Conjunción. O (Or) Disyunción.

Codificación - Java Definición: CONCEPTOS BÁSICOS DEL LENGUAJE DE PROGRAMACIÓN Codificación - Java Definición: Java es un lenguaje de Programación Orientado a Objetos desarrollado por Sun Microsystems. Es un lenguaje de propósito general que puede ser utilizado para el desarrollar cualquier tipo de aplicaciones. Sirve para confeccionar “APPLETS”. Permite convertir un WebSite en dinámico e interactivo.

Codificación - Java Identificadores: CONCEPTOS BÁSICOS DEL LENGUAJE DE PROGRAMACIÓN Codificación - Java Identificadores: Los identificadores como su nombre lo indica, sirven para identificar variables, métodos o clases. Java es sensible a las mayúsculas y minúsculas. Variables. Métodos. Clases. Interfaces. Paquetes. Almacenamiento de datos. Para especificar funciones. Para especificar objetos. Para especificación de protocolos. Para agrupar clases.

Identificadores reservados: CONCEPTOS BÁSICOS DEL LENGUAJE DE PROGRAMACIÓN Codificación - Java Identificadores reservados: Los identificadores reservados conocidos también como palabras reservadas son de uso exclusivo del lenguaje de programación Java. Entre las palabras reservadas podemos mencionar: boolean. break. case. class else. false. float. for. if. int. new. private. static. return. super. Identificadores reservados Existen 50 identificadores o palabras reservadas de JAVA. abstract, boolean, break, byte, byvalue, case, catch, char, class, const, continue, default, do, double, else, extends, false, final, finally, float, for, goto, if, implements, import, instanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, super, switch, synchronized, this, threadsafe, throw, transient, true, try, void, while.

Definición de un paquete: CONCEPTOS BÁSICOS DEL LENGUAJE DE PROGRAMACIÓN Codificación - Java Definición de un paquete: package nombrePaquete ; class ... { … } nombrePaquete Paquete: Conjunto de clases similares. Un paquete permiten organizar las clases. Un paquete contiene clases que tienen funciones similares.

(NombrePaquete al que pertenece) CONCEPTOS BÁSICOS DEL LENGUAJE DE PROGRAMACIÓN Codificación - Java Definición de una clase: package nombrePaquete ; class NombreClase { // Atributos… // Métodos… } NombreClase (NombrePaquete al que pertenece) Atributos Operaciones Una clase es una implantación de un tipo de objeto. Especifica una estructura de datos y los métodos operativos permisibles que se aplican a cada uno de sus objetos. El mundo real se modela mediante clases. Una clase es una abstracción y no refencia a ningún objeto en particular.

package dominioDeLaAplicacion ; import biblioteca.Lectura ; CONCEPTOS BÁSICOS DEL LENGUAJE DE PROGRAMACIÓN Codificación - Java Diagrama de paquetes: package dominioDeLaAplicacion ; import biblioteca.Lectura ; class NombreClase { ……….. } DEPENDENCIA

Estructura básica de una aplicación: CONCEPTOS BÁSICOS DEL LENGUAJE DE PROGRAMACIÓN Codificación - Java Estructura básica de una aplicación: Método principal en Java. Existen clases que tienen un método especial conocido en Java como el método main(). Las clases que tienen implementado el método main() son clases que pueden ejecutarse. package dominioDeLaAplicacion ; class PrgBienvenida { public static void main (String arg [ ] ) { System.out.println (“Bienvenidos a JAVA”) ; } class: Hace referencia a una clase. Primero: Nombre de la clase. public: Indica que el método podrá ser llamado desde cualquier lugar, dentro o fuera de la clase. static: Indica que el método no manipula instancias de objetos, por lo que podrá invocarse sin tener que referirse a una instancia en particular. void: Indica ningún tipo de dato. El método no retornará valor. main: Método o función miembro main es donde empieza la ejecución. Siempre debe ser parte de una clase. args []: Arreglo de objetos tipo cadena STRING pasados a la clase en tiempo de ejecución. System: Encapsula la funcionalidad del sistema. out: Variable estática miembro de la clase System. println: Método que permite enviar la cadena a la pantalla con salto de línea. Los programas en JAVA son implementados a través de clases debido a que se basan en el paradigma de objetos. public es un especificador de acceso. También existen otros como private (privado) y protected (protegido.). main siempre debe declarase como static pues cuando empieza un programa no existen objetos (instancias creadas). Los métodos estáticos solo pueden referirse a variables estáticas e invocar métodos a su vez estáticos. Las variables y métodos estáticos son mas conocidos como variables de clase y métodos de clase

Codificación - Java Tipos de datos: CONCEPTOS BÁSICOS DEL LENGUAJE DE PROGRAMACIÓN Codificación - Java Tipos de datos: En Java se reconocen los siguiente tipos de datos : byte. short. int. long. float. double. boolean. char. Tenga presente que byte, short, int, long, float, double, boolean, char son palabras reservadas utilizadas en Java por lo que no podrán ser usadas como nombre de variable o constante.

Lenguaje de programación TEMAS TRATADOS SEMANA 01 – SESIÓN 02 Método de las 6’D – Algoritmo y Codificación Algoritmo Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Diseñado en PSEUDOCODIGO Codificación Lenguaje de programación JAVA

Algoritmo y Estructura de Datos I Semana 02 – sesión 01 Objetivos: Describir el Método de las 6’D en soluciones con uno y dos paquete (sin objeto). Desarrollar soluciones básicas utilizando el método propuesto. Ingreso de datos utilizando el teclado. Uso de la clase LE.

Algoritmo y Estructura de Datos I Método de las 6’D – Soluciones con uno y dos paquetes (sin objeto) Estructuras de datos Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Variables y constantes. Estructuras lógicas de asignación Ingreso, proceso y visualización de datos.

Variables y constantes ESTRUCTURAS DE DATOS Variables y constantes Definición: Una variable es una estructura de datos que permite reservar un espacio con la finalidad de almacenar temporalmente los datos. Una variable sólo puede almacenar un solo dato a la vez y del mismo tipo. Declaración En Pseudocódigo En Java tipoDato identificador final tipoDato identificador ; Almacenamiento de datos En Pseudocódigo En Java identificador = valor identificador = valor ;

Variables y constantes ESTRUCTURAS DE DATOS Variables y constantes Ejemplos: Anote los ejemplos planteados por el profesor.

Soluciones con un paquete (sin objeto) MÉTODO PARA LA SOLUCION DE PROBLEMAS UTILIZANDO LA COMPUTADORA Método de las 6’D Soluciones con un paquete (sin objeto) ENUNCIADO Definición Solución Diseño Solución Desarrollo Solución Modelamiento Codificación Determinar el nombre del proyecto. Definir el paquete y las clases que formarán parte de la solución del problema. Utilice UML. Diseñar el algoritmo para los diferentes métodos. Utilice pseudocódigo o diagrama de flujo. Determinar la información deseada (salida). Determinar los datos de entrada (entrada). Establecer como se va ha solucionar el problema (proceso). Codificar el diseño de la solución del problema utilizando el lenguaje de programación Java. Algoritmo

PROBLEMA 01: ETAPA 1 Identificación del problema. MÉTODO 6’D – SOLUCIONES CON UN PAQUETE (sin objeto) PROBLEMA 01: ETAPA 1 ENUNCIADO CLARO Y PRECISO DEL PROBLEMA: Desarrollar una solución que permita mostrar el nombre “Pedro” con el mensaje “hola” por la pantalla de la computadora. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema.

PROBLEMA 01: ETAPA 2 Resultado deseado. Datos necesarios. MÉTODO 6’D – SOLUCIONES CON UN PAQUETE (sin objeto) PROBLEMA 01: ETAPA 2 RESULTADO DESEADO: Mostrar el mensaje de bienvenida “Hola” junto con el nombre “Pedro”. Definición Solución DATOS NECESARIOS: Ninguno. Resultado deseado. Datos necesarios. Procesamiento. PROCESAMIENTO: El mensaje “Hola” será almacenada junto con el nombre “Pedro” en una variable (nombre) y luego se mostrará la variable.

PROBLEMA 01: ETAPA 3 Modelamiento Definir un nombre para el proyecto. MÉTODO 6’D – SOLUCIONES CON UN PAQUETE (sin objeto) PROBLEMA 01: ETAPA 3 NOMBRE DEL PROYECTO: ProyMensaje.     DEFINICIÓN DE PAQUETE Y CLASE: Diseño Solución Modelamiento Definir un nombre para el proyecto. Definición de diagramas y relaciones. Desarrollar el algoritmo y la codificación.

Soluciones con dos paquetes (sin objeto) MÉTODO PARA LA SOLUCION DE PROBLEMAS UTILIZANDO LA COMPUTADORA Método de las 6’D Soluciones con dos paquetes (sin objeto) ENUNCIADO Definición Solución Diseño Solución Desarrollo Solución Determinar el nombre del proyecto. Definir los paquetes y el diagrama de paquetes. Definir las clases que formarán parte de cada paquete (atributos y métodos). Diseñar el algoritmo para los diferentes métodos. Modelamiento Codificación Determinar la información deseada (salida). Determinar los datos de entrada (entrada). Establecer como se va ha solucionar el problema (proceso). Codificar el diseño de la solución del problema utilizando el lenguaje de programación Java. Algoritmo

Ingreso de datos Definición: ESTRUCTURAS LÓGICAS Ingreso de datos Definición: El ingreso de datos nos permite ingresar datos desde un dispositivo de entrada y asignarlo a una variable para su posterior procesamiento. En Pseudocódigo En Java – Clase LE LEER nombreVariable nombreVariable = LE.leerInt(“Ingrese Edad:”) ; Analice el uso de los diferentes métodos de la clase LE. leerString (String ). leerChar (String). leerInt (String ). leerLong (String ). leerFloat (String ) leerDouble (String ). leerShort (String ).

Visualización de datos ESTRUCTURAS LÓGICAS Visualización de datos Definición: La visualización de datos nos permite mostrar los datos a través de la pantalla de la computadora. En Pseudocódigo En Java – Clase LE ESCRIBIR nombreVariable ESCRIBIR x + 2 ESCRIBIR “Hola” LE.mostrarInformacion (nombreVariable) ; LE.mostrarInformacion (x + 2); LE.mostrarInformacion ( “Hola” ) ; Para el ingreso de datos también puede utilizar la clase System de Java. System.out.print ( “Hola” ) ; Analice los modificadores “\n” y “\t”.

PROBLEMA 02: ETAPA 1 Identificación del problema. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 02: ETAPA 1 ENUNCIADO CLARO Y PRECISO DEL PROBLEMA: Ingrese el sueldo de un obrero de la empresa “El Triunfo S.A.” y calcule su respectivo descuento del 15% por concepto de impuesto y el 5% por concepto de cafetería. Se deberá visualizar por pantalla el total de descuento y el sueldo a cobrar. Utilice la clase LE de Java para el ingreso de datos y visualización de la información. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema.

PROBLEMA 02: ETAPA 2 Resultado deseado. Datos necesarios. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 02: ETAPA 2 RESULTADO DESEADO: Mostrar el total de descuento y el sueldo a cobrar de un obrero de la empresa Definición Solución DATOS NECESARIOS: El sueldo total del obrero. PROCESAMIENTO: Resultado deseado. Datos necesarios. Procesamiento. El sueldo total será ingresado por teclado y almacenado en la variable sueldo. Luego se realizan los cálculos del descuento y del sueldo a cobrar del obrero. descuento = sueldo *0.2 pago = sueldo - descuento Los resultados se almacenan en las variables descuento y pago para luego ser mostradas por pantalla.

PROBLEMA 02: ETAPA 3 Modelamiento Definir un nombre para el proyecto. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 02: ETAPA 3 NOMBRE DEL PROYECTO: ProySueldoObrero DIAGRAMA DE PAQUETES:       Diagrama de paquetes Diseño Solución Modelamiento DEFINICIÓN DE PAQUETES Y CLASES: Definir un nombre para el proyecto. Definición de diagramas y relaciones. Definición de paquetes y clase. Desarrollar el algoritmo y la codificación.

Método de las 6’D – Soluciones con uno y dos paquetes TEMAS TRATADOS SEMANA 02 – SESIÓN 01 Método de las 6’D – Soluciones con uno y dos paquetes (sin objeto) Estructuras de datos Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Variables y constantes.. Estructuras lógicas de asignación Ingreso, proceso y visualización de datos.

Algoritmo y Estructura de Datos I Semana 02 – sesión 02 Objetivos : Describir la conversión básica de datos, el uso de funciones matemáticas y el manejo de cadenas en el lenguaje de programación. Desarrollar soluciones básicas utilizando el método propuesto. Uso de funciones matemáticas. Manejo de cadenas.

Algoritmo y Estructura de Datos I Método de las 6’D – Soluciones con dos paquetes (sin objeto) Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Uso de clases incorporadas en el lenguaje de programación Conversión de datos. Funciones matemáticas. Manejo de cadenas.

Conversión de datos Definición: CLASES INCORPORADAS EN EL LENGUAJE DE PROGRAMACIÓN Conversión de datos Definición: La conversión de datos permite almacenar en variables valores de tipo diferente al tipo de dato con el que fueron declaradas. Genera error No genera error double num1 = 20, num2 = 3 ; int div ; div = num1 / num2 ; System.out.println ( div ) ; double num1 = 20, num2 = 3 ; int div ; div = ( int ) ( num1 / num2 ) ; System.out.println ( div ) ;

PROBLEMA 03: ETAPA 1 Identificación del problema. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 03: ETAPA 1 ENUNCIADO CLARO Y PRECISO DEL PROBLEMA: Ingrese dos números enteros (num1 y num2 respectivamente) a través del teclado. Calcule la suma (sum), resta (res), multiplicación (mul) y división (div) de los dichos números. Muestre los resultados obtenidos. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema.

PROBLEMA 03: ETAPA 3 Modelamiento Definir un nombre para el proyecto. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 03: ETAPA 3 NOMBRE DEL PROYECTO: ProyOperaciones DIAGRAMA DE PAQUETES:       Diagrama de paquetes Diseño Solución Modelamiento DEFINICIÓN DE PAQUETES Y CLASES: Definir un nombre para el proyecto. Definición de diagramas y relaciones. Definición de paquetes y clase. Desarrollar el algoritmo y la codificación.

Funciones matemáticas CLASES INCORPORADAS EN EL LENGUAJE DE PROGRAMACIÓN Funciones matemáticas Definición: La clase Math de Java, es una clase que viene incluida como parte del paquete java.lang (el paquete del lenguaje), el cual nos permite hacer uso de diversas funciones matemáticas. Métodos: abs( ). acos( ).   asin( ). cos( ). log( ). max( ). min( ). pow( ). random( ). round( ). sqrt( ). floor( ).

PROBLEMA 04: ETAPA 1 Identificación del problema. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 04: ETAPA 1 ENUNCIADO CLARO Y PRECISO DEL PROBLEMA: Desarrollar una solución que permita calcular la nota final (prom) que ha obtenido un alumno en base a 2 notas obtenidas durante el desarrollo del curso (nota1 y nota2). Se deberá tener presente que para el cálculo de la nota final se ha considerado duplicar la nota mayor. Muestre la nota final redondeada. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema.

PROBLEMA 04: ETAPA 3 Modelamiento Definir un nombre para el proyecto. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 04: ETAPA 3 NOMBRE DEL PROYECTO: ProyNotaFinal DIAGRAMA DE PAQUETES:       Diagrama de paquetes Diseño Solución Modelamiento DEFINICIÓN DE PAQUETES Y CLASES: Definir un nombre para el proyecto. Definición de diagramas y relaciones. Definición de paquetes y clase. Desarrollar el algoritmo y la codificación.

Manejo de cadenas Definición: Métodos: CLASES INCORPORADAS EN EL LENGUAJE DE PROGRAMACIÓN Manejo de cadenas Definición: La clase String de Java, es una clase que viene incluida como parte del paquete java.lang (el paquete del lenguaje), el cual nos permite declarar y manipular variables de tipo TEXTO. Métodos: charAt( ). compareTo( ). endsWith( ). equals( ). equalsIgnoreCase( ). indexOf( ). lastIndexOf( ). length( ). replace( ). startsWith( ). substring( ). toCharArray( ). toLowerCase( ). trim( ). toUpperCase( ). concat( ).

PROBLEMA 05: ETAPA 1 Identificación del problema. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 05: ETAPA 1 ENUNCIADO CLARO Y PRECISO DEL PROBLEMA: Desarrollar una solución que permita ingresar el nombre de dos productos de la librería “El Boligrafito” (nomProd1 y nomProd2), de tal forma que muestre el nombre de ambos productos con la primera letra en mayúscula y el resto de letras en minúscula. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema.

PROBLEMA 05: ETAPA 3 Modelamiento Definir un nombre para el proyecto. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 05: ETAPA 3 NOMBRE DEL PROYECTO: ProyNotaFinal2 DIAGRAMA DE PAQUETES:       Diagrama de paquetes Diseño Solución Modelamiento DEFINICIÓN DE PAQUETES Y CLASES: Definir un nombre para el proyecto. Definición de diagramas y relaciones. Definición de paquetes y clase. Desarrollar el algoritmo y la codificación.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 06 INTÉNTALO!! SEMANA 02 – SESIÓN 02 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 06 Desarrollar una solución que permita ingresar dos número en variables tipo cadena (texto1 y texto2 respectivamente), y convierta dichas cadenas en números para finalmente poder sumarlos (suma). Sugerencia: - Utilice el método parseInt( ) de la clase Integer o parseDouble() de la clase Double (clases conocidas como Wrappers.). El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 07 INTÉNTALO!! SEMANA 02 – SESIÓN 02 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 07 Desarrollar una solución que permita ingresar la cantidad de boletos vendidos para una rifa (numBoletos) y permita obtener un boleto ganador generado en forma aleatoria (ganador). Sugerencia: - Utilice el método random( ) de la clase Math de Java para obtener un número aleatorio. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 08 INTÉNTALO!! SEMANA 02 – SESIÓN 02 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 08 Desarrollar una solución que permita ingresar el nombre de dos alumnos de un salón de clase. Mostrar el primer nombre en letra mayúscula y el segundo nombre en letra minúscula. Asegúrese de eliminar los espacios en blanco del inicio y del final de cada nombre, indicando la cantidad de caracteres de cada uno de los nombres. Sugerencia: - Utilice los métodos toUpperCase( ), toLowerCase( ), trim( ) y length( ) de la clase String de Java. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

Método de las 6’D – Soluciones con uno y dos paquetes (sin objeto) TEMAS TRATADOS SEMANA 02 – SESIÓN 02 Método de las 6’D – Soluciones con uno y dos paquetes (sin objeto) Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Uso de clases incorporadas en el lenguaje de programación Conversión de datos. Funciones matemáticas. Manejo de cadenas.

Algoritmo y Estructura de Datos I Semana 03 Objetivos : Conocer las diferentes estructuras lógicas de decisión. Describir la Estructura Lógica de Decisión Simple SI (if), la Estructura Lógica de Decisión Doble SI / SINO (if - else) y las Estructuras de Decisión Múltiples CUANDO (switch) y SI ANIDADOS. Desarrollar soluciones básicas utilizando el método propuesto y las Estructuras Lógicas de Decisión.

Algoritmo y Estructura de Datos I Método de las 6’D – Soluciones con dos paquetes (sin objeto) Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Estructuras Lógicas de Decisión Simple (SI). Doble (SI/SINO). Múltiple (CUANDO). (SI Anidados).

Estructura Lógica de Decisión Simple (SI) ESTRUCTURAS LÓGICAS Estructura Lógica de Decisión Simple (SI) Definición: Una estructura de decisión simple “SI... FINSI” permite alterar el flujo secuencial (o pasos secuenciales) de una solución ejecutando un conjunto de pasos adicionales si el resultado de una condición lógica es verdadera. FORMATOS: SI (condición) ENTONCES instrucciones... FINSI PSEUDOCODIGO if (condición) { sentencias... } JAVA

PROBLEMA 09: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 09: ETAPA 1 ENUNCIADO Determinar el sueldo neto de un trabajador (sueldo), ingresando la tarifa (tarifa) y el número (numHoras) de horas trabajadas. Si el trabajador supera las 45 horas trabajadas se le deberá dar un aumento del 15% del sueldo. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema.

PROBLEMA 09: ETAPA 3 Modelamiento Definir un nombre para el proyecto. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 09: ETAPA 3 ProySueldoTrabajador Diagrama de paquetes     Diseño Solución Modelamiento Definir un nombre para el proyecto. Definición de diagramas y relaciones. Definición de paquetes y clase. Desarrollar el algoritmo y la codificación.

Estructura Lógica de Decisión Doble (SI/SINO) ESTRUCTURAS LÓGICAS Estructura Lógica de Decisión Doble (SI/SINO) Definición: Una estructura de decisión doble “SI... SINO... FINSI” permite alterar el flujo secuencial (o pasos secuenciales) de una solución, ejecutando un conjunto de pasos dependiendo del resultado de una condición lógica. FORMATOS: PSEUDOCODIGO if (condición) { sentencias... } else { JAVA SI (condición) ENTONCES instrucciones... SINO FINSI

PROBLEMA 10: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 10: ETAPA 1 ENUNCIADO Calcular y mostrar la nota final (nf) de un alumno en base a 3 notas (n1, n2 y n3). Si la nota final (nf) es menor a 14 se deberá mostrar el mensaje “Desaprobado”, caso contrario se mostrará el mensaje “Aprobado”. Fórmula: nf = (n1+n2+n3) / 3. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema.

PROBLEMA 10: ETAPA 3 Modelamiento Definir un nombre para el proyecto. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 10: ETAPA 3 ProyNotaFinal Diagrama de paquetes       Diseño Solución Modelamiento Definir un nombre para el proyecto. Definición de diagramas y relaciones. Definición de paquetes y clase. Desarrollar el algoritmo y la codificación.

Estructura Lógica de Decisión Múltiple (CUANDO) ESTRUCTURAS LÓGICAS Estructura Lógica de Decisión Múltiple (CUANDO) Definición: Una estructura de decisión múltiple “CUANDO... FINCUANDO” permite alterar el flujo secuencial de una solución ejecutando un conjunto de pasos dependiendo del valor de una variable. FORMATOS: CUANDO variable SEA CASO valor 1 : instrucciones... CASO valor 2 : CASO valor n : sentencias... OTROS : FINCUANDO PSEUDOCODIGO switch (variable) { case valor 1 : sentencias... case valor 2 : case valor n : default : } JAVA

PROBLEMA 11: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 11: ETAPA 1 ENUNCIADO Ingresar la categoría (categoria) y el sueldo (sueldo) de un trabajador, y calcular su aumento de sueldo teniendo en cuenta la siguiente mostrada. Mostrar el nuevo sueldo del trabajador (sueldo). Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Categoría Aumento 1 38 % 2 21 % 3 12 % 4 08 % Desarrollar el algoritmo y la codificación.

Estructura Lógica de Decisión Múltiple (SI Anidados) ESTRUCTURAS LÓGICAS Estructura Lógica de Decisión Múltiple (SI Anidados) Definición: Una estructura de decisión múltiple “SI Anidados” permite alterar el flujo secuencial de una solución ejecutando un conjunto de pasos que dependen del resultado de evaluar diferentes condiciones lógicas dentro de estructuras de decisión simple o doble. SI (condición1) ENTONCES instrucciones1… SINO SI (condición2) ENTONCES instrucciones2… SI (condición3) ENTONCES instrucciones3… FINSI PSEUDOCODIGO JAVA FORMATOS: if (condición1) { sentencias1... } else { if (condición2) { sentencias2... if (condición3) { sentencias3… }

PROBLEMA 12: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 12: ETAPA 1 ENUNCIADO Un curso se evalúa de la siguiente forma: se toma cinco prácticas calificadas (n1, n2, n3, n4, n5), se determina el promedio de las cuatro notas más altas (prom) y se le da al estudiante una categoría (A, B, C), en base a la tabla mostrada. Determinar la categoría del alumno. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Rango Categoria Desde 16 a 20 A Desde 11 a 15 B Desde 00 a 10 C Desarrollar el algoritmo y la codificación.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 13 INTÉNTALO!! SEMANA 03 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 13 Ingresar un número (num) y determine si el número ingresado es un número par o impar. Muestre un mensaje (mensaje) indicando si el número es par o si el número impar. Sugerencia: - Utilice el resto de la división (para obtener el resto de una división en Java se utiliza el %). El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 14 INTÉNTALO!! SEMANA 03 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 14 Ingresar el apellido paterno de dos obreros (ape1 y ape2), elimine los espacios en blanco del inicio y del final de los apellidos y determine la longitud de cada apellido (tam1 y tam2). Muestre la última letra de cada apellido (letra1 y letra2) y si son iguales muestre un mensaje. Sugerencia: - Utilice los métodos trim(), length() y charAt() de la clase String. - Para obtener el carácter final de una cadena utilice el método charAt() de la clase String y como argumento de este método utilice length() -1. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 15 INTÉNTALO!! SEMANA 03 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 15 Calcular y mostrar el promedio final (prom) de un alumno redondeado a un decimal. El cálculo del promedio final se realiza en base a las notas del alumno (n1, n2 y n3) considerando que se elimina la menor nota (nMe). Muestre un mensaje de felicitaciones (mensaje) a todos los alumnos aprobados y un mensaje de desaprobado a todos los alumnos con un promedio menor a 12. Sugerencia: - Utilice el método min() de la clase Math. - Utilice la siguiente fórmula: prom = (n1 + n2 + n3 + nMa – nMe) / 3 El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 16 INTÉNTALO!! SEMANA 03 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 16 Desarrollar una solución que permita ingresar el nombre de dos libros de la biblioteca de nuestra facultad (libro1 y libro2), de tal forma que muestre los nombres de los productos ordenados alfabéticamente en forma ascendente. Sugerencia: - Utilice el método compareTo() o compareToIgnoreCase() de la clase Math. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 17 INTÉNTALO!! SEMANA 03 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 17 Desarrollar la codificación en Java de una solución que permita ingresar el nombre, la categoría y el sueldo de un trabajador, y calcule el aumento correspondiente teniendo en cuenta la siguiente tabla. Muestre el nombre (la primera letra en mayúscula y el resto en minúscula), la categoría en Mayúscula y el sueldo redondeado a dos decimales. Categoría Aumento A 30% B 10% C 05% El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 18 INTÉNTALO!! SEMANA 03 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 18 Calcular y mostrar el costo total que representa un paciente para un hospital de acuerdo al tipo de enfermedad, según los datos de la tabla. Adicionalmente debe considerar que las mujeres tienen un incremento del 15% para el segundo tipo de enfermedad. Tipo Enfermedad Costo / Paciente / Dia A 30% B 10% C 05% El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 19 INTÉNTALO!! SEMANA 03 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 19 Desarrollar una solución que permita determinar la suma de las cifras de un número de cuatro cifras ingresado por teclado. Adicionalmente determine si el número es capicúa o no. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 20 INTÉNTALO!! SEMANA 03 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 20 Desarrolle un programa que permita ingresar un número entero menor que 100 y permita mostrar su equivalente en letras. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 21 INTÉNTALO!! SEMANA 03 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 21 Desarrolle un programa que permita ingresar el día, el mes y el año de una determinada fecha (día, mes y año respectivamente). Determinar si la fecha ingresada es correcta y si el año es bisiesto o no. Dato: Un año es bisiesto si es múltiplo de 4, por ejemplo 1984, pero los años múltiplos de 100 solo son bisiestos cuando a su vez son múltiplos de 400, por ejemplo 1800 no es bisiesto, mientras que 2000 si lo es. (año%4==0 && año%100!=0 || año%400==0). El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

Método de las 6’D – Soluciones con dos paquetes (sin objeto) TEMAS TRATADOS SEMANA 03 Método de las 6’D – Soluciones con dos paquetes (sin objeto) Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Estructuras Lógicas de Decisión Simple (SI). Doble (SI/SINO). Múltiple (CUANDO). (SI Anidados).

Algoritmo y Estructura de Datos I Semana 04 Objetivos : Conocer las diferentes estructuras de repetición. Describir las Estructura Lógicas de Repetición HACER (do - while), MIENTRAS (while) y DESDE (for). Describir el uso de los contadores, acumuladores e interruptores. Describir la estructura para el manejo de errores. Conocer las instrucciones de bifurcación. Solucionar problemas aplicando el método planteado y las Estructuras Lógicas de Repetición.

Algoritmo y Estructura de Datos I Método de las 6’D – Soluciones con dos paquetes (sin objeto) Estructuras Lógicas de Repetición y manejo de errores Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo HACER MIENTRAS DESDE PROBAR. Uso de contadores, acumuladores e interruptores en Estructuras Lógicas de Repetición. Uso de instrucciones de bifurcación.

Estructura Lógica de Repetición (HACER) ESTRUCTURAS LÓGICAS Estructura Lógica de Repetición (HACER) Definición: Una estructura lógica de repetición “HACER... MIENTRAS”, permite repetir una instrucción o un bloque de instrucciones mientras que una condición se cumpla o sea verdadera. Esta estructura de repetición permite que se ejecuten al menos una vez las instrucciones o instrucción antes de probar la condición. Esta estructura es utilizada para el desarrollo de menú y para la consistencia de los datos. FORMATOS: PSEUDOCODIGO HACER instrucción 1 . instrucción n MIENTRAS (condición) JAVA do { sentencia 1 . sentencia n } while (condición) ;

PROBLEMA 22: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 22: ETAPA 1 ENUNCIADO Desarrolle una solución que permita calcular el promedio de 10 alumnos utilizando la siguiente fórmula: prom = (n1 + n2+ n3*2) / 5 Ingrese las notas a través del teclado (n1, n2 y n3). Valide el ingreso de datos y muestre el promedio redondeado a dos decimales. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar el algoritmo y la codificación.

contador = contador + cantidadConstante ESTRUCTURAS DE DATOS Variables Uso de contadores Definición: Un contador es una variable entera que toma un valor inicial y cuyo valor se incrementa o decrementa en una cantidad fija cada vez que se ejecutan los pasos que forman parte de una estructura de repetición. Un contador puede ser creciente o decreciente. contador = contador + cantidadConstante Ejemplos: En Pseudocódigo En Java - Incremento de 1 en 1  c = c + 1 C++ - Incremento de 2 en 2  contar = contar + 2 contar += 2 ;

PROBLEMA 23: ETAPA 1 Identificación del problema. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 23: ETAPA 1 Analice el cuerpo del siguiente algoritmo: INICIO NUMERO numAlu, i = 1 HACER LEER numAlu SI ( numAlu < 1 ) ENTONCES ESCRIBIR “Dato no válido…” FINSI MIENTRAS ( numAlu < 1 ) LEER nota1, nota2, nota3 prom = (nota1 + nota2 + nota3) / 3 prom = prom REDONDEAR 2 ESCRIBIR prom i = i + 1 MIENTRAS ( i <= numAlu ) FIN Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Plantear el enunciado del problema y desarrollar la codificación.

Estructura Lógica de Repetición (MIENTRAS) ESTRUCTURAS LÓGICAS Estructura Lógica de Repetición (MIENTRAS) Definición: Una estructura lógica de repetición “MIENTRAS… FINMIENTRAS”, permite repetir una instrucción o un bloque de instrucciones mientras que una condición se cumpla o sea verdadera. Esta estructura de repetición prueba la condición antes de ejecutar la instrucción o instrucción. FORMATOS: PSEUDOCODIGO MIENTRAS (condición) instrucción 1 . instrucción n FINMIENTRAS JAVA while (condición) { sentencia 1 . sentencia n }

PROBLEMA 24: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 24: ETAPA 1 ENUNCIADO Desarrollar una solución que permita ingresar un número entero (validar el ingreso de datos) y muestre los números múltiplos de 3 menores al número ingresado. Utilice la estructura MIENTRAS. Observe el uso de la variable contador. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar el algoritmo y la codificación.

acumulador = acumulador + cantidadVariable ESTRUCTURAS DE DATOS Variables Uso de acumuladores Definición: Un acumulador es una variable numérica que toma un valor inicial, normalmente cero (O) y luego va variando en una cantidad diferente cada vez que se ejecutan los pasos que forman parte de una estructura de repetición. acumulador = acumulador + cantidadVariable Ejemplo: En Pseudocódigo En Java suma = suma + num suma += num ;

PROBLEMA 25: ETAPA 1 Identificación del problema. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 25: ETAPA 1 Analice el cuerpo del siguiente algoritmo: INICIO NUMERO num, i = 1, suma = 0 HACER LEER num SI ( num < 1 ) ENTONCES ESCRIBIR “Ingrese número entero” FINSI MIENTRAS ( num < 1 ) MIENTRAS ( i < num ) SI ( i RESTO 5 = 0 ) ENTONCES suma = suma + i i = i + 1 FINMIENTRAS ESCRIBIR suma FIN Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Plantear el enunciado del problema y desarrollar la codificación.

Estructura Lógica de Repetición (DESDE) ESTRUCTURAS LÓGICAS Estructura Lógica de Repetición (DESDE) Definición: Una estructura de repetición “DESDE... FINDESDE” permite repetir una instrucción, o un bloque de instrucciones, un número determinado de veces o hasta que una condición se cumpla. Con frecuencia se utiliza para iteraciones sencillas en donde se repite un bloque de instrucciones un cierto número de veces y después se detiene. FORMATOS: PSEUDOCODIGO DESDE i = valorInicial HASTA valorFinal instrucción 1 . instrucción n FINDESDE JAVA for ( i = valorInicial ; i < valorFinal ; i++ ) { sentencia 1 . sentencia n }

PROBLEMA 26: ETAPA 1 serie: 1 – 4 + 9 – 16 + … ENUNCIADO MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 26: ETAPA 1 ENUNCIADO Mostrar la serie aritmética que se muestra a continuación. Debe tener presente que el número de términos (numTer) se ingresará por teclado. serie: 1 – 4 + 9 – 16 + … Ejemplo: Si numTer = 6 La serie es: 1 – 4 + 9 – 16 + 25 – 36 Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar la codificación.

Variables Uso de interruptores Definición: ESTRUCTURAS DE DATOS Variables Uso de interruptores Definición: Un interruptor o conmutador (denominado también centinela, bandera o flag) es una variable lógica o numérica que puede tomar dos posibles valores (1/0, verdadero/falso, si/no, encendido/apagado) dentro de una determinada solución Ejemplo: En Pseudocódigo En Java sw = FALSO sw = false ;

PROBLEMA 27: ETAPA 1 Identificación del problema. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 27: ETAPA 1 Analice el cuerpo del siguiente algoritmo: INICIO LOGICO sw = FALSO NUMERO i, num LEER num DESDE i = 2 HASTA i = num - 1 SI ( num RESTO i = 0 ) ENTONCES sw = VERDADERO FINSI FINDESDE SI ( sw || num = 0 || num = 1 || num = 2 ) ENTONCES ESCRIBIR “Número primo” SINO ESCRIBIR “Número no es primo” FIN Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Plantear el enunciado del problema y desarrollar la codificación.

Estructura Lógica para el manejo de errores (PROBAR) ESTRUCTURAS LÓGICAS Estructura Lógica para el manejo de errores (PROBAR) Definición: Una estructura de manejo de errores “PROBAR... FINPROBAR” evita que un programa se detenga en forma inadecuada debido a la ocurrencia de un error o del lanzamiento de una excepción, permitiendo capturar y manejar dichos problemas. FORMATOS: PSEUDOCODIGO PROBAR instrucción 1 . instrucción n ERROR FINPROBAR JAVA try { sentencia 1 . sentencia n } catch (Excepción) { }

PROBLEMA 28: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 28: ETAPA 1 ENUNCIADO Desarrollar una solución que permita ingresar dos números enteros. Mostrar el resultado de dividir ambos números. Considerar que existe la posibilidad que el divisor sea igual a cero. Maneje excepciones. Sugerencia; Utilice la excepción ArithmeticException. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar la codificación.

Instrucciones de bifurcación. TIPOS En Java, la instrucción de bifurcación TERMINAR es conocida como la sentencia break y tiene tres usos: TERMINAR CONTINUAR Permite finalizar una secuencia de sentencias en un switch (específicamente en el case). Se utiliza para salir de un bucle, sin analizar la condición y sin ejecutar el resto de código del cuerpo del bucle. Se emplea para proporcionar un mecanismo que permita cambiar el flujo de ejecución a otra parte de la solución (equivalente a un goto en otros lenguajes de programación). RETORNAR

PROBLEMA 29: ETAPA 1 Identificación del problema. MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) PROBLEMA 29: ETAPA 1 Analice el cuerpo del siguiente algoritmo: INICIO LOGICO sw = FALSO NUMERO i = 2, num LEER num MIENTRAS ( i < num ) SI ( num RESTO i = 0 ) ENTONCES sw = VERDADERO TERMINAR FINSI i = i + 1 FINMIENTRAS SI ( sw || num = 0 || num = 1 || num = 2 ) ENTONCES msg = “Número primo” SINO msg = “Número no es primo” ESCRIBIR msg FIN Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Plantear el enunciado del problema y desarrollar la codificación.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 30 INTÉNTALO!! SEMANA 04 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 30 Desarrollar un programa que permita calcular y visualizar la cantidad de números pares comprendidos entre los números 20 y 400. Utilice la estructura HACER. Modifique el programa de tal forma que permita calcular y visualizar la cantidad de números pares comprendidos entre dos números cualesquiera ingresados por el teclado. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 31 INTÉNTALO!! SEMANA 04 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 31 Desarrolle un programa que implemente un menú con las siguientes opciones: [1] Ingrese el radio de un círculo. (validar el ingreso de datos). [2] Calcular y mostrar el perímetro del círculo. [3] Calcular y mostrar el área del círculo. [4] Finalizar. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 32 INTÉNTALO!! SEMANA 04 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 32 Desarrolle un programa que permita ingresar 20 números a través del teclado, y determine y muestre la suma de todos los números pares ingresados. Utilice la estructura MIENTRAS. Modifique el programa de tal forma que la cantidad de números se ingrese por teclado (validar el ingreso de datos). Adicionalmente, determinar y mostrar la cantidad de números primos ingresados. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 33 INTÉNTALO!! SEMANA 04 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 33 Desarrollar un programa que permita obtener la siguiente información: ¿Cuántos alumnos están matriculado en el curso?. ¿Cuántas alumnas son mayores de 18 años?. No ingrese la cantidad de alumnos que hay en el salón de clase. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! * ** *** **** ENUNCIADO DEL PROBLEMA 34 INTÉNTALO!! SEMANA 04 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 34 Desarrolle un programa que permita mostrar la siguiente figura: * ** *** **** En la figura mostrada el número de filas=4. Asuma que el número de filas tiene un rango entre 2 y 20. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 35 INTÉNTALO!! SEMANA 04 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 35 Desarrolle un programa que implemente un menú con las siguientes opciones: [1] Ingrese un número. (validar el ingreso de datos). [2] Calcular la cantidad de números múltiplos de 3 menores al número ingresado. [3] Determinar si el número ingresado es capicúa o no. [4] Determinar si el número ingresado es primo o no. [5] Finalizar. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 36 INTÉNTALO!! SEMANA 04 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 36 Desarrollar una solución que permita ingresar la fecha en una variable de tipo cadena con el siguiente formato: dd-mm-aaaa. Validar que a fecha ingresada tenga el formato especificado. Manejar excepciones. Sugerencia; Utilice la excepción NumberFormatException. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 37 INTÉNTALO!! SEMANA 04 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 37 Desarrollar una solución que permita ingresar la fecha de nacimiento de una persona y la fecha actual en dos variables de tipo cadena con el siguiente formato: dd-mm-aaaa. Mostrar el nombre del mes en que nació la persona y la edad que tiene (expresada en años y meses). Manejar excepciones. Sugerencia; Utilice la excepción NumberFormatException. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

Método de las 6’D – Soluciones con dos paquetes (sin objeto) TEMAS TRATADOS SEMANA 04 Método de las 6’D – Soluciones con dos paquetes (sin objeto) Estructuras Lógicas de Repetición y manejo de errores Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo HACER MIENTRAS DESDE PROBAR. Uso de contadores, acumuladores e interruptores en Estructuras Lógicas de Repetición. Uso de instrucciones de bifurcación.

Algoritmo y Estructura de Datos I Unidad II: Introducción al desarrollo de soluciones OO Uso de objetos, métodos y atributos Semana 05

Algoritmo y Estructura de Datos I Semana 5 Objetivos: Definir y ejemplificar conceptos adicionales de la teoría de objetos y su representación en UML. Conocer el diagrama de secuencia. Definir pautas adicionales en pseudocódigo para diseñar soluciones utilizando métodos. Especificar las sentencias necesarias para codificar soluciones utilizando métodos. Desarrollar soluciones OO en una clase. Uso de estructuras lógicas y variables. (operaciones de ingreso de datos, proceso y visualización de información).

Definición Diseño Desarrollo Depuración Document. MÉTODO PARA LA SOLUCION DE PROBLEMAS UTILIZANDO LA COMPUTADORA Método de las 6’D Etapa 01 Descripción Problema Etapa 02 Definición Solución Etapa 03 n veces Diseño Solución Ingeniería reversa Etapa 04 Desarrollo Solución Etapa 05 Modelamiento Depuración Pruebas Etapa 06 Algoritmo Document. Codificación

(NombrePaquete al que pertenece) CONCEPTOS ADICIONALES DE LA TEORÍA DE OBJETOS Y UML CLASES – Atributos. ATRIBUTOS NombreClase (NombrePaquete al que pertenece) Atributos Métodos ¿Qué datos manejan los objetos? Expresado en: Estructuras de Datos. DEFINICIÓN: Un atributo es una características que tienen un conjunto de objetos que pertenecen a una misma clase. Dichas características pueden ser almacenadas en variables, arreglos o cualquier estructura de datos existente.

¿Qué datos manejan los objetos? CONCEPTOS ADICIONALES DE LA TEORÍA DE OBJETOS Y UML ATRIBUTOS ¿Qué datos manejan los objetos? Expresado en: Estructuras de Datos. CLASIFICACIÓN: TIPOS: Atributo de clase. Atributo de instancia. Variables globales. Variables locales.

(NombrePaquete al que pertenece) CONCEPTOS ADICIONALES DE LA TEORÍA DE OBJETOS Y UML CLASES – Métodos. METODOS NombreClase (NombrePaquete al que pertenece) Atributos Métodos ¿Qué pueden hacer los objetos?. Expresado en: Algoritmos. DEFINICIÓN: Los métodos representan pequeños subprogramas encapsulados dentro de las clases y contribuyen a definir el comportamiento típico de los objetos. Los métodos especifican la forma en que se controlan los datos de un objeto. Los métodos definen el comportamiento de un objeto.

¿Qué pueden hacer los objetos?. CONCEPTOS ADICIONALES DE LA TEORÍA DE OBJETOS Y UML METODOS ¿Qué pueden hacer los objetos?. Expresado en: Algoritmos. CLASIFICACION: TIPOS: Método de clase. Método de objeto o instancia. Métodos especiales void que no reciben parámetros. void que reciben parámetros. tipeados que no reciben parámetros. tipeados que reciben parámetros. Método principal. Método constructor.

nombreObjeto : NombreClase CONCEPTOS ADICIONALES DE LA TEORÍA DE OBJETOS Y UML OBJETOS / INSTANCIA. DEFINICIÓN Objetos: Modelos de entes del mundo. Un objeto del mundo real es cualquier cosa acerca del cual conocemos sus características comunes: estado y comportamiento. Un objeto de software es cualquier cosa, real o abstracta, acerca de la cual almacenamos datos y las métodos que controlan dichos datos. EJEMPLOS UML La 1ra carpeta. El perro “Boby”. nombreObjeto : NombreClase

LENGUAJE UNIFICADO DE MODELADO UML. CONCEPTOS ADICIONALES DE LA TEORÍA DE OBJETOS Y UML LENGUAJE UNIFICADO DE MODELADO UML. EJEMPLO ATRIBUTOS METODOS

LENGUAJE UNIFICADO DE MODELADO UML. CONCEPTOS BÁSICOS DE MODELAMIENTO UTILIZANDO UML LENGUAJE UNIFICADO DE MODELADO UML. DIAGRAMAS Use Case Diagrams Diagramas de Casos de Uso Scenario Colaboración State Componentes Component Distribución Objetos Estados Secuencia Clase Paquete Actividad Modelo

LENGUAJE UNIFICADO DE MODELADO UML. CONCEPTOS BÁSICOS DE MODELAMIENTO UTILIZANDO UML LENGUAJE UNIFICADO DE MODELADO UML. DIAGRAMA DE SECUENCIA Un diagrama de secuencia es una vista gráfica de un escenario que muestra la interacción del objeto en una secuencia basada en intervalos de tiempo para saber lo que pasa primero y lo que pasa luego. Principales elementos: Objetos. Mensajes. Línea de vida. Enfoques de control fuente/destino. Puede incluir un actor.

PAUTAS – ADICIONALES CREAR EJECUTAR PARAMETRO RETORNO CLASE ALGORITMO – PAUTAS ADICIONALES EN PSEUDOCÓDIGO PAUTAS – ADICIONALES Permite crear un arreglo o un objeto de una clase. CREAR EJECUTAR PARAMETRO RETORNO CLASE Permite ejecutar un algoritmo desde otro algoritmo. Permite especificar los datos que recibe un algoritmo. Permite especificar si un algoritmo retorna un resultado. Permite referenciar a una clase determinada.

NombreClase nombreObjeto = new NombreMetodoConstructor() ; CODIFICACIÓN - LENGUAJE DE PROGRAMACIÓN JAVA DEFINICION DE OBJETOS Declaración NombreClase nombreObjeto = new NombreMetodoConstructor() ; Creación El método constructor es un método especial que se ejecuta en forma automática cuando se crea un objeto. La definición del método constructor es opcional siendo su finalidad principal inicializar variables y crear arreglos y objetos de otra clases.

Los tipos de datos primitivos (simples o básicos) son: CODIFICACIÓN - LENGUAJE DE PROGRAMACIÓN JAVA ATRIBUTOS DE CLASE Los atributos de clase están ubicados dentro de las clases. Solo existirá una copia de cada atributo de clase para todas las instancias de la clase que se creen. class NombreClase { // variables de clase static tipoDato nombreVar …. } Ejemplo: int var01, var02, var03 = 0; float promedio; Los tipos de datos primitivos (simples o básicos) son: Tipos de datos enteros: byte…….. 8 bits. Short…… 16 bits. Int………. 32 bits. Long……. 64 bits. Tipos de datos de punto flotante: float…….. 32 bits. bouble…. 64 bits. boolean Tipo de dato carácter char……… 16 bits (entero sin signo, que sirve de índice para tabla UNICODE). Para poder obtener el valor de un atributo de clase deberá colocar el nombre del objeto o el nombre de la clase en la que fue declarado el atributo, luego el operador punto (.) y finalmente el nombre del atributo cuyo valor se desea obtener. (Para obtener el valor de un atributo hay que considerar el modo de acceso con el que fue declarado el atributo en su clase).

ATRIBUTOS DE INSTANCIA CODIFICACIÓN - LENGUAJE DE PROGRAMACIÓN JAVA ATRIBUTOS DE INSTANCIA Los atributos de instancia están ubicadas dentro de los objetos. Cada objeto nuevo obtiene una copia nueva de las variables de instancia que la clase define. class NombreClase { // Atributo de instancia tipoDato nombreVar; …. } Ejemplo: int var01, var02, var03 = 0; float promedio; Los tipos de datos primitivos (simples o básicos) son: Tipos de datos enteros: byte…….. 8 bits. Short…… 16 bits. Int………. 32 bits. Long……. 64 bits. Tipos de datos de punto flotante: float…….. 32 bits. bouble…. 64 bits. boolean Tipo de dato carácter char……… 16 bits (entero sin signo, que sirve de índice para tabla UNICODE). Para poder obtener el valor de un atributo de instancia deberá colocar el nombre del objeto, luego el operador punto (.) y finalmente el nombre del atributo cuyo valor se desea obtener. (Para obtener el valor de un atributo hay que considerar el modo de acceso con el que fue declarado el atributo en su clase).

METODOS DE CLASE package dominioDeLaAplicacion ; import biblioteca.* ; CODIFICACIÓN - LENGUAJE DE PROGRAMACIÓN JAVA METODOS DE CLASE package dominioDeLaAplicacion ; import biblioteca.* ; class NombreClase { ... static tipoRetorno nombreMetodo (args) { … } Para poder ejecutar un método de clase deberá colocar el nombre del objeto o el nombre de la clase en la que fue definido el método, luego el operador punto (.) y finalmente el nombre del método que desea ejecutar. (Para ejecutar un método hay que considerar el modo de acceso con el que fue definido el método en su clase).

METODOS DE INSTANCIA package dominioDeLaAplicacion ; CODIFICACIÓN - LENGUAJE DE PROGRAMACIÓN JAVA METODOS DE INSTANCIA package dominioDeLaAplicacion ; import biblioteca.* ; class NombreClase { ... tipoRetorno nombreMetodo (args) { } Para poder ejecutar un método de instancia deberá colocar el nombre del objeto en la que fue definido el método, luego el operador punto (.) y finalmente el nombre del método que desea ejecutar. (Para ejecutar un método hay que considerar el modo de acceso con el que fue definido el método en su clase).

METODOS DE INSTANCIA void nombreMetodo ( ) { ... } CODIFICACIÓN - LENGUAJE DE PROGRAMACIÓN JAVA METODOS DE INSTANCIA void nombreMetodo ( ) { ... } void nombreMetodo (parametros) { ... } tipoDato nombreMetodo ( ) { ... return valor ; } tipoDato nombreMetodo (parametros) { ... return valor ; } Durante el desarrollo de nuestras soluciones utilizaremos métodos de instancia. Es importante comprender que los métodos de instancia pueden ser de 4 tipos. (Para ejecutar un método hay que considerar el modo de acceso con el que fue definido el método en su clase).

PROBLEMA 38: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES OO EN UNA CLASE PROBLEMA 38: ETAPA 1 ENUNCIADO Desarrollar una solución que permita ingresar las dos notas de un alumno (de 0 a 20) y permita calcular el promedio de las notas. Mostrar el promedio de notas del alumno (redondeado) y un mensaje indicando si el alumno aprobó o no aprobó el curso. Nota: El promedio del alumno se determina en base a la suma de las dos notas ingresadas, más la nota mayor entre ambas dividido entre tres. En la solución utilice métodos. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar el modelamiento, algoritmo y la codificación.

PROBLEMA 39: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES OO EN UNA CLASE PROBLEMA 39: ETAPA 1 ENUNCIADO Desarrollar una solución que permita ingresar las dos notas de un alumno (de 0 a 20) y permita calcular el promedio de las notas. Mostrar el promedio de notas del alumno (redondeado) y un mensaje indicando si el alumno aprobó o no aprobó el curso. Nota: El promedio del alumno se determina en base a la suma de las dos notas ingresadas, más la nota mayor entre ambas dividido entre tres. En la solución utilice métodos y considere como atributos solo datos de entrada. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar el modelamiento, algoritmo y la codificación.

PROBLEMA 38: ETAPA 3 Modelamiento Definir un nombre para el proyecto. DESARROLLO DE SOLUCIONES OO PROBLEMA 38: ETAPA 3 NOMBRE DEL PROYECTO: ProyNotas. DEFINICIÓN DE DIAGRAMAS Y RELACIONES:     2.1 Diagrama de paquetes y especificación de clase. Diseño Solución Modelamiento Definir un nombre para el proyecto. Definición de diagramas y relaciones.

PROBLEMA 38: ETAPA 3 Modelamiento Definir un nombre para el proyecto. DESARROLLO DE SOLUCIONES OO PROBLEMA 38: ETAPA 3 DEFINICIÓN DE DIAGRAMAS Y RELACIONES:   2.1 Diagrama de secuencia. Diseño Solución Modelamiento Definir un nombre para el proyecto. Definición de diagramas y relaciones.

Desarrolle el algortimo DESARROLLO DE SOLUCIONES OO PROBLEMA 38: ETAPA 3 DESARROLLO DE ALGORITMO EN PSEUDOCODIGO     Diseño Solución Algoritmo Desarrolle el algortimo en clase Desarrollo de Algoritmos.

Desarrolle la codifcación DESARROLLO DE SOLUCIONES OO PROBLEMA 38: ETAPA 4 CODIFICAR EL PROYECTO:     Desarrollo Solución Codificación Desarrolle la codifcación en clase Codificar el proyecto. Comentarios internos. Copias de seguridad.

Algoritmo y Estructura de Datos I Semana 6 Objetivos: Definir pautas adicionales en pseudocódigo para diseñar soluciones utilizando métodos. Especificar las sentencias necesarias para codificar soluciones utilizando métodos. Desarrollar soluciones OO en una clase. Uso de estructuras lógicas y variables. (operaciones de ingreso de datos, proceso y visualización de información).

PROBLEMA 39: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES OO EN UNA CLASE PROBLEMA 39: ETAPA 1 ENUNCIADO Desarrollar una solución que permita ingresar las dos notas de un alumno (de 0 a 20) y permita calcular el promedio de las notas. Mostrar el promedio de notas del alumno (redondeado) y un mensaje indicando si el alumno aprobó o no aprobó el curso. Nota: El promedio del alumno se determina en base a la suma de las dos notas ingresadas, más la nota mayor entre ambas dividido entre tres. En la solución utilice métodos y considere como atributos solo datos de entrada. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar el modelamiento, algoritmo y la codificación.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 40 … INTÉNTALO!! SEMANA 05 Sugerencia; El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 41 … INTÉNTALO!! SEMANA 05 Sugerencia; El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 42 … INTÉNTALO!! SEMANA 05 Sugerencia; El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

Lenguaje de programación TEMAS TRATADOS SEMANA 05 Método de las 6’D – Modelamiento Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Modelamiento Notación UML Algoritmo Diseñado en PSEUDOCODIGO Codificación Lenguaje de programación JAVA

Desarrollo de soluciones OO Uso de estructuras lógicas y arreglos Algoritmo y Estructura de Datos I Unidad III: Desarrollo de soluciones OO Uso de estructuras lógicas y arreglos Semana 06 a semana 08

Algoritmo y Estructura de Datos I Semana 02 Objetivos : Describir las diferentes estructuras de datos. Describir la estructura de datos tipo arreglo. Uso de vectores. Desarrollo de soluciones OO en una clase. Uso de estructuras lógicas y arreglos. (operaciones de ingreso de datos, proceso y visualización de información).

Soluciones OO, usando una Clase Algoritmo y Estructura de Datos I Soluciones OO, usando una Clase Estructuras de datos Arreglos: Unidimensional : Vectores. Bidimensional : Matrices. Uso de estructuras lógicas para el manejo de arreglos.

Unidimensionales : Vectores Bidimensionales : Matrices ESTRUCTURAS DE DATOS Arreglos Definición: Los arreglos son estructuras de datos que almacenan datos del mismo tipo. Los arreglos son entidades estáticas en cuanto a que su tamaño no cambia una vez que han sido creadas. Los arreglos pueden ser: Unidimensionales : Vectores Bidimensionales : Matrices En ambos casos se debe declarar, crear e inicializar el arreglo antes de usar el mismo.

Arreglo Unidimensional - Vector ESTRUCTURAS DE DATOS Arreglo Unidimensional - Vector Arreglos unidimensionales o vectores simples Representación gráfica: numeros[ ] tamaño=4 2 1 3 32 -2 174 nombres[ ] tamaño=6 1 2 3 4 5 “Juan” “Jose” “Cindy” “Ivette” “Jessica” “Wilbe”

Arreglo Tipo Vector Simple Declaración: ó ESTRUCTURAS DE DATOS En Pseudocódigo En Java tipoDato nombre_del_vector [ ] ; tipoDato nombre_del_vector [ ] ó tipoDato [ ] nombre_del_vector ; Ejemplos: Ejemplos: TEXTO nombres [ ] NUMERO sueldos [ ] CARACTER letras [ ] String nombres [ ] ; double sueldos [ ] ; char letras [ ] ;

Arreglo Tipo Vector Simple Creación: ESTRUCTURAS DE DATOS En Pseudocódigo En Java CREAR nombre_del_vector [tamaño] nombre_del_vector = new tipoDato [tamaño] ; Ejemplos; Ejemplos; CREAR nombres [10 ] CREAR sueldos [numNot] CREAR letras [LONGITUD texto] nombres = new String [10] ; sueldos = new double [numNot] ; letras = new char [texto.length()] ;

Arreglo Tipo Vector Simple Inicialización: ESTRUCTURAS DE DATOS En Pseudocódigo nombre_del_vector[ ] = { valor1, valor2, valor3, valor4, … , valorN } Ejemplos; edades[] = {12,14,15,23,76,3,10} En Java nombre_del_vector[ ] = { valor1, valor2, valor3, valor4, … , valorN }; Ejemplos; edades[] = {12,14,15,23,76,3,10};

Arreglo Tipo Vector Simple Ingreso de datos: ESTRUCTURAS DE DATOS En Pseudocódigo En Java nombre_del_vector[índice] = valor nombre_del_vector[índice] = valor ; Ejemplos; Ejemplos; nombres [0 ] = “Danae” sueldos [1] = 100.5 letras [x] = ‘J’ nombres [0 ] = “Danae” ; sueldos [1] = 100.5 ; letras [x] = ‘J’ ; Cuando empleamos vectores podemos utilizar las estructuras lógicas de repetición para optimizar de manera significativa el proceso de ingreso de datos especialmente utilizando la estructura DESDE.

Arreglo Tipo Vector Simple Tamaño: ESTRUCTURAS DE DATOS En Pseudocódigo En Java variable = LONGITUD nombre_del_vector [ ] variable = nombre_del_vector.length ; Ejemplos: Ejemplos: tamaño = LONGITUD nombres [ ] tamaño = LONGITUD sueldos [ ] tamaño = LONGITUD letras [ ] tamaño = nombres.length ; tamaño = sueldos.length ; tamaño = letras.length ;

Declaración y creación: ESTRUCTURAS DE DATOS Arreglo Tipo Vector Simple Declaración y creación: En Java tipoDato nombre_del_vector [ ] = new tipoDato [tamaño] ; Declaración, creación e inicialización: En Java tipoDato nombre_del_vector[ ] = { valor1, valor2, valor3, valor4, … , valorN } ;

Ingreso de datos - Usando estructura de repetición for ESTRUCTURAS DE DATOS Arreglo Tipo Vector Simple Ingreso de datos - Usando estructura de repetición for String nombre[]; nombre= new String[10]; for(int i=0;i<nombre.length;i++){ nombre[i]=LE.leerString("Ingrese nombre"); }

Mostrar datos - Usando estructura de repetición for ESTRUCTURAS DE DATOS Arreglo Tipo Vector Simple Mostrar datos - Usando estructura de repetición for String listado=""; for(int i=0;i<nombre.length;i++){ listado+=nombre[i]+"\n"; } LE.mostrarInformacion(listado); Mostrar que sucede si no se usa el acumulador listado.

PROBLEMA 43: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES OO EN UNA CLASE PROBLEMA 43: ETAPA 1 ENUNCIADO Desarrollar una solución que permita ingresar y almacenar la nota (notas[]) de 10 alumnos de un salón de clase y determinar el promedio final (prom). Mostrar el promedio. Consistenciar el ingreso de datos. Utilice vectores simples. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar el modelamiento, el algoritmo y la codificación.

PROBLEMA 44: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES OO EN UNA CLASE PROBLEMA 44: ETAPA 1 ENUNCIADO Desarrollar una solución que permita ingresar y almacenar la nota (notas[]) de todos los alumnos de un salón de clase y determinar el promedio final (prom) redondeado a dos decimales. Mostrar el promedio. Consistenciar el ingreso de datos. Utilice vectores simples. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar la codificación.

PROBLEMA 45: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES OO EN UNA CLASE PROBLEMA 45: ETAPA 1 ENUNCIADO Desarrollar una solución que permita ingresar y almacenar el sueldo (sueldos[]) de todos los trabajadores de una empresa. Calcular y mostrar el sueldo neto (sueldoNeto) de cada trabajador, sabiendo que se tienen que descontar el 12% por impuestos y el 3% por seguro. Consistenciar el ingreso de datos. Utilice vectores simples. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar la codificación.

PROBLEMA 46: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES OO EN UNA CLASE PROBLEMA 46: ETAPA 1 ENUNCIADO Desarrollar una solución que permita ingresar y almacenar el nombre de todos los artículos (nombres[]) de una bodega. Mostrar la cantidad de vocales que tiene cada nombre. Consistenciar el ingreso de datos. Utilice vectores simples. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar la codificación.

Algoritmo y Estructura de Datos I Semana 03 Objetivos : Describir las diferentes estructuras de datos. Describir la estructura de datos tipo arreglo. Uso de matrices. Desarrollo de soluciones OO en una clase. Uso de estructuras lógicas y arreglos. (operaciones de ingreso de datos, proceso y visualización de información).

Soluciones OO, usando una Clase Algoritmo y Estructura de Datos I Soluciones OO, usando una Clase Estructuras de datos Arreglos: Vectores. Matrices. Uso de estructuras lógicas para el manejo de arreglos.

Preguntar por tamaño y orden ESTRUCTURAS DE DATOS Arreglos - Matrices Arreglos bidimensionales o matrices Representación: 32 -2 174 1 2 3 numeros[][] 14 12 -5 129 filas = 2 columnas = 4 Orden = 2 x 4 Preguntar por tamaño y orden

Arreglos tipo matriz Declaración: ó ESTRUCTURAS DE DATOS En Pseudocódigo En Java tipoDato identificador [ ][ ] ; tipoDato identificador [ ][ ] ó tipoDato [ ][ ] identificador ; Ejemplos; Ejemplos; TEXTO nombres [ ][ ] NUMERO sueldos [ ][ ] - CARACTER letras [ ][ ] String nombres [ ][ ] ; double sueldos [ ][ ] ; - char letras [ ][ ] ;

Arreglos tipo matriz Creación: ESTRUCTURAS DE DATOS En Pseudocódigo En Java CREAR identificador [filas][columnas] identificador = new tipoDato [filas][columnas] ; Ejemplos; Ejemplos; CREAR nombres [2 ][4] CREAR sueldos [numAlu][numNot] - CREAR letras [4][total] nombres = new String [2][10] ; sueldos = new double [numAlu][numNot] ; - letras = new char [4][total] ;

Arreglos tipo matriz Ingreso de datos: ESTRUCTURAS DE DATOS En Pseudocódigo En Java identificador [índice] = valor identificador [índice] = valor ; Ejemplos; Ejemplos; nombres [0 ][0] = “Danae” sueldos [1][x] = 100.5 - letras [y][x] = ‘J’ nombres [0 ][0] = “Danae” ; sueldos [1][x] = 100.5 ; - letras [y][x] = ‘J’ ; Cuando utilizamos matrices podemos utilizar las estructuras lógicas de repetición para optimizar de manera significativa el proceso de ingreso de datos especialmente utilizando la estructura DESDE dos veces.

PROBLEMA 47: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES OO EN UNA CLASE PROBLEMA 47: ETAPA 1 ENUNCIADO Desarrollar una solución que permita ingresar y almacenar números enteros en una matriz de 3 por 3 (a[][]) y permita calcular la suma (suma) de los números ubicados en la diagonal principal. Consistenciar la entrada de datos. Utilice matrices. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar el modelamiento, el algoritmo y la codificación.

PROBLEMA 48: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES OO EN UNA CLASE PROBLEMA 48: ETAPA 1 ENUNCIADO Desarrollar una solución que permita ingresar y almacenar el precio de compra y el precio de venta de todos los artículos de una bodega (precios[][]). Calcular y mostrar la utilidad que se obtiene por la venta de cada artículo redondeado a dos decimales. Adicionalmente determine cual es la mayor utilidad. Utilice matrices. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar la codificación.

PROBLEMA 49: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES OO EN UNA CLASE PROBLEMA 49: ETAPA 1 ENUNCIADO Desarrollar una solución que permita ingresar y almacenar el código y el nombre de los empleados de una compañía (empleados[][]). Calcular y mostrar las dos primeras letras del código de cada empleado en letra mayúscula. Adicionalmente determine cual es el código alfabéticamente menor. Utilice matrices. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar la codificación.

PROBLEMA 50: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES OO EN UNA CLASE PROBLEMA 50: ETAPA 1 ENUNCIADO Desarrollar una solución que permita ingresar y almacenar el promedio de prácticas, la nota del examen parcial y la nota del examen final de todos los alumnos de MBIII de la FIA (notas[][]). Calcular y mostrar el promedio que obtuvo cada alumno redondeado. Adicionalmente indicar el porcentaje de alumnos que aprobaron el curso. Utilice matrices. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar la codificación.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 51 INTÉNTALO!! SEMANA 06 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 51 Desarrollar una solución que permita ingresar y almacenar la nota (notas[]) de todos los alumnos de un salón de clase. Determinar la nota mayor, la nota menor, el promedio de las notas, la cantidad de aprobados y cantidad de desaprobados. Consistenciar el ingreso de datos. Utilice vectores. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 52 INTÉNTALO!! SEMANA 06 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 52 Desarrollar una solución que permita ingresar y almacenar 20 números (numeros[]) enteros mayores que cero. Determinar y mostrar la cantidad de números múltiplos de 5 y la suma de todos los números pares. Consistenciar el ingreso de datos. Utilice vectores. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 53 INTÉNTALO!! SEMANA 06 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 53 Desarrollar una solución que permita ingresar y almacenar el promedio de prácticas, la nota del examen parcial y la nota del examen final de todos los alumnos de MBIII de la FIA (notas[][]). Calcular y mostrar el promedio general del salón de clase y el número de alumnos que obtuvieron la mayor nota. Utilice matrices. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 54 INTÉNTALO!! SEMANA 06 INTÉNTALO !! ENUNCIADO DEL PROBLEMA 54 Desarrollar una solución que permita ingresar y almacenar las notas de todos los alumnos de MBIII de la FIA (notas[][]). Calcular y mostrar el promedio de cada alumno redondeado, el porcentaje de alumnos aprobados, el promedio general de todo el salón de clase y el número de alumnos que obtuvieron la menor nota. Utilice matrices. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

Método de las 6’D – Soluciones OO en una clase TEMAS TRATADOS SEMANA 06 Método de las 6’D – Soluciones OO en una clase Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Estructuras de datos Arreglos: Vectores. Matrices. Uso de estructuras lógicas para el manejo de arreglos.

Algoritmo y Estructura de Datos I Semana 07 Objetivos: Creación de arreglos de gran tamaño para el almacenamiento y manejo de datos. Entender y desarrollar algoritmo de búsqueda secuencial y ordenamiento de datos por intercambio en arreglos de gran tamaño. Desarrollo de soluciones OO en una clase. Uso de estructuras lógicas y arreglos. (operaciones de ingreso de datos, proceso, visualización de información, ordenamiento y búsqueda. Uso de menú).

Algoritmo y Estructura de Datos I Método de las 6’D – Soluciones OO en una clase Algoritmos para el manejo de datos en arreglos Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Búsqueda de datos. Ordenamiento de datos. Uso de estructuras lógicas para el manejo de datos en arreglos de gran tamaño.

Arreglos de gran tamaño ARREGLOS – MANEJO DE DATOS Arreglos de gran tamaño Definición: Un arreglo de gran tamaño es aquel que se crea con una capacidad mayor a la cantidad de datos que va almacenar. Los arreglos de gran tamaño se utilizan cuando no se puede determinar desde un inicio cual debe ser el tamaño de un arreglo. . codigos (long) 1 2 3 9999 numAlu = 0 (int) Observe el vector codigos[ ]. Dicho vector ha sido creado con un tamaño de 10000. Tamaño suficiente para almacenar todos los códigos de los alumnos de un salón de clase. Para manejar los datos almacenados en un arreglo de gran tamaño se necesita una variable que indica el tamaño lógico del arreglo. Observe el valor de la variable numAlu. ¿Qué significa?

Búsqueda de Datos Introducción: Tipos: ARREGLOS – MANEJO DE DATOS Búsqueda de Datos Introducción: La búsqueda de datos consiste en ubicar un determinado elemento, su posición o ambos entre un conjunto de elementos almacenados en una estructura de datos específica. Se dice que la búsqueda es exitosa cuando el elemento buscado es encontrado, caso contrario, la búsqueda es no exitosa o fallida. Tipos: Búsqueda secuencial. Búsqueda binaria.   Búsqueda de hashing.

Método de Búsqueda Secuencial ARREGLOS – MANEJO DE DATOS Método de Búsqueda Secuencial Definición: Este es el método más sencillo de búsqueda de datos y se basa en recorrer el arreglo en forma secuencial desde el principio hasta el final. codigos INICIO 1 2 3 . . . FIN numAlu = X 9999 ¿Cuándo se finaliza la búsqueda? (int) (long)

Búsqueda Secuencial de Datos ARREGLOS – MANEJO DE DATOS Búsqueda Secuencial de Datos Dado los datos siguientes: codigos 10 1 20 2 30 3 . . numAlu = 3 9999 (int) (long) Supongamos que se desea buscar un determinado código. ¿Qué operaciones se deberían realizar? ¿Qué restricciones deberían existir? Desarrolle un algoritmo en pseudocódigo para la búsqueda de un nombre. ¿Qué consideraciones debería tener si el vector fuera de tipo TEXTO?

PROBLEMA 55: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES OO EN UNA CLASE PROBLEMA 55: ETAPA 1 ENUNCIADO Desarrollar una solución que permita almacenar los códigos de todos los alumnos de un salón de clase. Utilice un menú con las opciones siguientes: 1. Ingreso de códigos. 2. Búsqueda de código. 3. Mostrar códigos. 4. Finalizar Utilice vectores de gran tamaño para almacenar los datos. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar la codificación.

Ordenamiento de Datos Introducción: Tipos: ARREGLOS – MANEJO DE DATOS Ordenamiento de Datos Introducción: La ordenación o clasificación de datos es la operación de organizar un conjunto de datos en algún orden dado, tal como creciente o decreciente en datos numéricos, o bien en orden alfabético directo o inverso. Estructuras de datos típicas que suelen requerir ordenación son: lista de números, archivos de clientes de banco, nombres de una agenda telefónica, etc. Tipos: Método de la Burbuja (intercambio). Método de Inserción.   Método de Selección Método QuickSort.

Método de la Burbuja Definición: ARREGLOS – MANEJO DE DATOS Método de la Burbuja Definición: Este método de ordenación se fundamenta en el principio de comparar e intercambiar pares de elementos contiguos hasta ordenar todos los elementos. nombres nombres nombres Danae Angella Danae 1 Angella Camila Camila 2 Camilla VECTOR ORDENADO Danae Angella 3 . . . . numAlu = 3 9999 (int) (String) (String) (String)

Ordenamiento de Datos por Burbuja ARREGLOS – MANEJO DE DATOS Ordenamiento de Datos por Burbuja Dado los datos siguientes: nombres Danae 1 Angella 2 Camilla 3 . . numAlu = 3 9999 (int) (String) Supongamos que se desea ordenar los nombres alfabéticamente. ¿Qué operaciones se deberían realizar? ¿Qué restricciones deberían existir? Desarrolle un algoritmo en pseudocódigo para ordenar los datos. ¿Qué consideraciones debería tener si el vector fuera de tipo NUMERO?

PROBLEMA 56: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES OO EN UNA CLASE PROBLEMA 56: ETAPA 1 ENUNCIADO Desarrollar una solución que permita almacenar los nombres de todos los alumnos de un salón de clase. Utilice un menú con las opciones siguientes: 1. Ingreso de nombres. 2. Ordenar nombres. 3. Mostrar nombres. 4. Finalizar Utilice vectores de gran tamaño para almacenar los datos. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar la codificación.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 57 … INTÉNTALO!! SEMANA 07 Sugerencia; El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 58 … INTÉNTALO!! SEMANA 07 Sugerencia; El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

Método de las 6’D – Soluciones OO en una clase TEMAS TRATADOS SEMANA 07 Método de las 6’D – Soluciones OO en una clase Algoritmos para el manejo de datos en arreglos Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Búsqueda de datos. Ordenamiento de datos. Uso de estructuras lógicas para el manejo de datos en arreglos de gran tamaño.

Algoritmo y Estructura de Datos I Semana 08 Objetivos: Introducción al uso de arreglos en paralelo. Entender y desarrollar algoritmo para la modificación y eliminación de datos en arreglos paralelos de gran tamaño. Desarrollo de soluciones OO en una clase. Uso de estructuras lógicas y arreglos. (operaciones de ingreso de datos, proceso, visualización de información, ordenamiento, búsqueda, modificación y eliminación. Uso de menú).

Algoritmo y Estructura de Datos I Método de las 6’D – Soluciones OO en una clase Algoritmos para el manejo de datos en arreglos Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Modificación de datos. Eliminación de datos. Uso de estructuras lógicas para el manejo de datos en arreglos en paralelo de gran tamaño.

Arreglos en Paralelo Definición: ARREGLOS – MANEJO DE DATOS Arreglos en Paralelo Definición: Cuando en una solución se utiliza más de un arreglo y el orden en que se disponen los datos entre los arreglos tiene un significado se les denomina arreglos paralelos.

Arreglos en Paralelo Ejemplo: ARREGLOS – MANEJO DE DATOS Arreglos en Paralelo Ejemplo: Desarrolle la Gráfica de Estructura de una solución que utilice vectores en paralelo. De tal forma, que permita almacenar el código, el nombre y el promedio final de todos los alumnos de un salón de clase. Extienda la gráfica de tal forma que en lugar de almacenar el promedio final se almacenen las 4 notas de todos los alumnos de un salón de clase. Anote sus conclusiones.

Modificación de Datos Definición: Gráfica de ARREGLOS – MANEJO DE DATOS Modificación de Datos Definición: La modificación de datos consiste en cambiar el valor de un dato o de un conjunto de datos almacenados en una estructura de datos. En el caso de los arreglos, la modificación de datos es necesaria para mantener actualizados los datos almacenados. Gráfica de Estructuras (del ejemplo anterior) codigos nombres promedios 1 2 3 . . . . numAlu = 0 9999 (int) (long) (String) (double)

Modificación de Datos Dado los datos siguientes: ARREGLOS – MANEJO DE DATOS Modificación de Datos Dado los datos siguientes: codigos nombres promedios 10 Danae 18 1 20 Angella 12 2 30 Camilla 15 3 . . . . numAlu = 3 9999 (int) (long) (String) (double) Supongamos que se desea modificar los datos del alumno con código = 20. ¿Qué operaciones se deberían realizar? ¿Qué restricciones deberían existir? Desarrolle un algoritmo en pseudocódigo para la modificación de datos de un alumno.

PROBLEMA 59: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES OO EN UNA CLASE PROBLEMA 59: ETAPA 1 ENUNCIADO Desarrollar una solución que permita almacenar los códigos, nombres y promedios de todos los alumnos de un salón de clase. Utilice un menú con las opciones siguientes: 1. Ingreso de datos. 2. Búsqueda de datos por código. 3. Modificación de datos por código. 4. Mostrar datos. 5. Finalizar Utilice vectores paralelos para almacenar los datos. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar la codificación.

Eliminación de Datos Definición: Gráfica de ARREGLOS – MANEJO DE DATOS Eliminación de Datos Definición: La eliminación de datos consiste en eliminar el valor de un dato o de un conjunto de datos almacenados en una estructura de datos. En el caso de los arreglos, la eliminación de datos es necesaria para mantener actualizados los datos almacenados . Gráfica de Estructuras (del ejemplo anterior) codigos nombres promedios 1 2 3 . . . . numAlu = 0 9999 (int) (long) (String) (double)

Eliminación de Datos Dado los datos siguientes: ARREGLOS – MANEJO DE DATOS Eliminación de Datos Dado los datos siguientes: codigos nombres promedios 10 Danae 18 1 20 Angella 12 2 30 Camilla 15 3 . . . . numAlu = 3 9999 (int) (long) (String) (double) Supongamos que se desea eliminar los datos del alumno con código = 20. ¿Qué operaciones se deberían realizar? ¿Qué restricciones deberían existir? Desarrolle un algoritmo en pseudocódigo para la eliminación de datos de un alumno.

PROBLEMA 60: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES OO EN UNA CLASE PROBLEMA 60: ETAPA 1 ENUNCIADO Modifique la solución anterior de tal forma que pueda incluir dos opciones adicionales en el menú. Dicho menú deberá tener las opciones siguientes: 1. Ingreso de datos. 2. Búsqueda de datos por código. 3. Ordenación de datos por código. 4. Modificación de datos por código. 5. Eliminación de datos or código. 6. Mostrar datos. 7. Finalizar. Utilice vectores paralelos para almacenar los datos. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema. Desarrollar la codificación.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 61 … INTÉNTALO!! SEMANA 08 Sugerencia; El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTÉNTALO !! ENUNCIADO DEL PROBLEMA 62 … INTÉNTALO!! SEMANA 08 Sugerencia; El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

Método de las 6’D – Soluciones OO en una clase TEMAS TRATADOS SEMANA 08 Método de las 6’D – Soluciones OO en una clase Algoritmos para el manejo de datos en arreglos Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Modificación de datos. Eliminación de datos. Uso de estructuras lógicas para el manejo de datos en arreglos en paralelo de ran tamaño.

Desarrollo de soluciones básicas Usando Interfaz Grafica de Usuario Algoritmo y Estructura de Datos I Unidad IV: Desarrollo de soluciones básicas Usando Interfaz Grafica de Usuario Semana 10

Algoritmo y Estructura de Datos I Semana 10 – sesión 01 Objetivos: Comprender el empleo de herencia y el uso de interfaces dentro de la Programación Visual. Describir los diferentes componentes que integran la programación visual.

PROGRAMACION EN ENTORNO VISUAL INTERFAZ GRÁFICA DE USUARIO PROGRAMACION EN ENTORNO VISUAL INTERFAZ DE USUARIO El interfaz de usuario es la parte del programa que permite a éste interactuar con el usuario. Las interfaces de usuario pueden adoptar muchas formas, que van desde la simple línea de comandos hasta las interfaces gráficas que proporcionan las aplicaciones más modernas. Java proporciona los elementos básicos para construir decentes interfaces de usuario a través del AWT, y opciones para mejorarlas mediante Swing

PROGRAMACION EN ENTORNO VISUAL DESARROLLO DEL DIAGRAMA DE CLASE CARACTERÍSTICAS DE LA TOO Y UML – GUI PROGRAMACION EN ENTORNO VISUAL Descripción de componentes básicos En la interfaz gráfica que se muestra, los componentes son representados por objetos de las clases TextField, Label y Button. Contenedor Label TextField Button DESARROLLO DEL DIAGRAMA DE CLASE

Interfaz gráfica de usuario DISEÑO: Etapa en la cual se colocan los componentes gráficos sobre la ventana. En Java, podemos utilizar componentes awt (paquete awt) o swing (paquete swing). PROGRAMACIÓN: Etapa en la cual se asocia métodos a los componentes gráficos. En Java, se utiliza la interfaz ActionListener (paquete event en Java).

PAQUETE AWT. Componentes (Component) AWT Contenedor(Conteiner) INTERFAZ GRÁFICA DE USUARIO PAQUETE AWT. Es el paquete de Java que contienen los elementos necesarios para la creación de Interfaces Graficas de Usuario. La estructura básica del AWT se basa en Componentes y Contenedores. Componentes (Component) AWT Contenedor(Conteiner)

COMPONENTES El AWT proporciona varias clases de Componentes: INTERFAZ GRÁFICA DE USUARIO COMPONENTES El AWT proporciona varias clases de Componentes: Button Canvas Checkbox Choice Container Label List Scrollbar TextComponent TextArea TextField Componentes La clase Component es una clase abstracta que representa todo lo que tiene una posición, un tamaño, puede ser pintado en pantalla y puede recibir eventos.

Componentes mas utilizados INTERFAZ GRÁFICA DE USUARIO Componentes mas utilizados En Java, algunos de los componentes mas utilizados son: Button, Label, TextField,etc Label: LblUsuario Button: BtnAceptar TextField:TxtClave

CARACTERÍSTICAS DE LA TOO Y UML – Herencia DEFINICIÓN Herencia: Creación de clase a partir de clases existentes. Es una de las características mas importantes de la programación orientada a objetos que facilita el planteamiento de soluciones adecuadas, y constituye un mecanismo que permite crear clases a partir de clases existentes. Rectangulo CLASE BASE, PADRE, SUPERCLASE O GENERAL. Cuadrado CLASE DERIVADA, HIJO, SUBCLASE O ESPECÍFICA. * El término herencia es utilizado en biología para referirse a ciertas características físicas y de comportamiento que son comunes entre familiares (padres e hijos).

HERENCIA EJEMPLOS CARACTERÍSTICAS DE LA TOO Y UML – Herencia Persona Factura Vendedor Cliente FacturaContado FacturaCredito EN CLASE: Proponga otros ejemplos donde se puede apreciar el concepto de herencia.

INTERFACES INTRODUCCIÓN Interfaz: Clase abstracta a nivel superior. CARACTERÍSTICAS DE LA TOO Y UML – Interfaces INTERFACES INTRODUCCIÓN Interfaz: Clase abstracta a nivel superior. Es una de las características mas importantes de la programación orientada a objetos. Este mecanismo permite abstraer los métodos a un nivel superior, lo que permite simular la herencia múltiple y obtener más polimorfismo que el que se puede obtener de una simple jerarquía de clases. Una interfaz es un conjunto de métodos que indican que una clase tiene un comportamiento particular además del que hereda de su superclase.

CARACTERÍSTICAS DE LA TOO Y UML – Interfaces Una interfaz es como un molde, solamente permite declarar nombres de métodos (pueden ser public, static y final), listas de argumentos, tipos de retorno y adicionalmente miembros dato. (los cuales solo pueden ser constantes de tipos básicos de datos). Jerarquías de clases distintas pueden utilizar la misma interfaz. INTERFAZ COMÚN Animal Persona … … Pajaro Hombre

CONCLUSIONES Las interfaces son utilices para: CARACTERÍSTICAS DE LA TOO Y UML – Interfaces CONCLUSIONES Las interfaces son utilices para: Recoger similitudes entre clases no relacionadas forzando una relación entre ellas. Declarar métodos que forzosamente una o mas clases tienen que implementar. Tener acceso a un objeto, para permitir el uso de objetos anónimos (útil cuando se vende un paquete de clases a otros desarrolladores).

Algoritmo y Estructura de Datos I Semana 10 – sesión 02 Objetivos: Solucionar problemas básicos empleando Programación Visual. Comprender los fundamentos de la solución de problemas con Programación Visual.

DESARROLLO EL DIAGRAMA DE CLASE CARACTERÍSTICAS DE LA TOO Y UML – Herencia EJEMPLO PRÁCTICO En base a los conceptos tratados en la clase anterior desarrolle la siguiente Jerarquía de Clases. Figura JERARQUÍA DE CLASES [clases entidad] Circulo Rectangulo DESARROLLO EL DIAGRAMA DE CLASE DESARROLLO EN JAVA Cuadrado

EJEMPLO PRÁCTICO Diseño de la Ventana CARACTERÍSTICAS DE LA TOO Y UML – Interfaz gráfica EJEMPLO PRÁCTICO Diseño de la Ventana

Estructura Dinámicas Lineales de Datos Algoritmo y Estructura de Datos I Unidad VI: Estructura Dinámicas Lineales de Datos Semana 11 a Semana 12

Algoritmo y Estructura de Datos II Semana 11 – sesión 01 Objetivos : Describir el uso de objetos de la clase Vector para el uso y manejo de estructuras de datos tipo arreglo unidimensional Describir el uso de la interfaz Enumeration para mostrar datos almacenados en una estructura de datos Ejemplificar el uso de la Clase Vector y la interfaz Enumeration para el manejo de arreglo de objetos.

Algoritmo y Estructura de Datos II Método de las 6’D – Soluciones Orientadas a Objetos Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Clases e Interfases incorporadas en el lenguaje de programación Clase Vector Interfaz Enumeration

(en memoria principal) Algoritmo y Estructura de Datos II Estructuras de Datos (en memoria principal) LINEALES NO LINEALES Estáticas Dinámicas Jerárquicas No jerárquicas Variables Arreglos Listas Pilas Colas Árboles Grafos Forma de organización de los datos en la memoria principal del computador

(en memoria secundaria) Algoritmo y Estructura de Datos I Estructuras de Datos (en memoria secundaria) Archivos Mañana BD V Forma de organización de los datos en la memoria secundaria del computador

(en memoria principal) Algoritmo y Estructura de Datos II Estructuras de Datos (en memoria principal) LINEALES CLASE: Vector INTERFAZ: Estáticas Dinámicas Enumeration Variables Arreglos Listas Pilas Colas

VECTORES DEFINICIÓN Representación índices ESTRUCTURA DE DATOS ARREGLO - Arreglos VECTORES DEFINICIÓN Vectores: Almacenamiento de datos del mismo tipo. Los vectores son estructuras de datos que consisten en elementos del mismo tipo. Los arreglos son entidades estáticas en cuanto a que su tamaño no cambia una vez que han sido creadas. Se debe tener en cuenta que antes de usar los elementos de un arreglo, se debe declarar, crear e inicializar el arreglo. Representación índices 1 2 3 vector vector[0] vector[1] vector[2] vector[3]

ARREGLO DE OBJETOS DEFINICIÓN Arreglos simples Arreglos de objetos ESTRUCTURA DE DATOS ARREGLO – Arreglo de objetos ARREGLO DE OBJETOS DEFINICIÓN Arreglo de objetos: Almacenamiento de datos compuestos del mismo tipo. Estos permiten almacenar objetos en lugar de datos simples. Arreglos simples Arreglos de objetos codigo 10 ( int ) datos 10 “Danae” 1000.0 nombre “Danae” ( String ) sueldo 1 2 1000.10 ( double ) ( Empleado ) 1 2

ARREGLO DE OBJETOS ESTRUCTURA DE DATOS ARREGLO – Arreglo de objetos “Danae” 1000.0 10 - setNombre() - getNombre() - setSueldo() - getSueldo() - setCodigo() - getCodigo() datos 10 “Danae” 1000.0 1 2 ( Empleado )

Uso de la clase Vector Definición: CLASES INCORPORADAS EN EL LENGUAJE DE PROGRAMACIÓN Uso de la clase Vector Definición: La clase Vector de Java, es una clase que viene incluida como parte del paquete java.util (el paquete de utilidad del lenguaje), y se utiliza con la finalidad de crear objetos tipo arreglo unidimensional con la capacidad de aumentar y reducir su tamaño en forma dinámica a medida que cambian los requerimientos de datos de una aplicación.

Uso de la clase Vector Métodos: CLASES INCORPORADAS EN EL LENGUAJE DE PROGRAMACIÓN Uso de la clase Vector Los objetos de la clase Vector permiten almacenar referencias a objetos de la clase Object. Esto significa, que a través de los objetos Vector, podemos almacenar referencias a cualquier tipo de objeto. Si se desea almacenar valores de tipo primitivo deberá utilizar las clases de envoltura o Wrappers. Métodos: Crear objetos Vector: Vector () Vector (Collection c).   Vector (int initialCapacity). Vector (int initialCapacity, int capacityIncrement )

Uso de la clase Vector Métodos: Agregar elementos: Eliminar elementos: CLASES INCORPORADAS EN EL LENGUAJE DE PROGRAMACIÓN Uso de la clase Vector Métodos: Agregar elementos: Eliminar elementos: add (int index, Object element) : void add (Object o) : boolean   addAll (Collection c) : boolean addAll (int index, Collection c) : boolean addElement (Object o) : void clear () : void remove (int index) : Object   remove (Object o) : boolean removeAll (Collection c) : boolean removeAllElement () : void removeElement (Object obj) : boolean removeElementAt(int index) : void retainAll (Collection c) : bolean Insertar elementos: insertElementAt (Object o, int index) : void

Uso de la clase Vector Métodos: Buscar elementos: Tamaño y capacidad: CLASES INCORPORADAS EN EL LENGUAJE DE PROGRAMACIÓN Uso de la clase Vector Métodos: Buscar elementos: Tamaño y capacidad: contains (Object element) : boolean containsAll (Collection c) : boolean   equals (Object o) : boolean indexOf (Object o) : int indexOf (Object o, int index) : int lastIndexOf (object o) : int lastIndexOf (Object o, int index) : int capacity () : int isEmpty () : boolean   setSize (int newSize) : void size () : int trimToSize () : void Recorrer elementos: elementAt (int index) : Object firstElement () : Object   lastElement () : Object get (int index) : Object Modificar elementos: set (int index, Object o) : Object setElementAt (Object o, int index) : void

Uso de la clase Vector Métodos: Copiar elementos: CLASES INCORPORADAS EN EL LENGUAJE DE PROGRAMACIÓN Uso de la clase Vector Métodos: Copiar elementos: clone () : Object copyInto (Object [ ] array) : boolean   elements () : Enumeration toArray () : Object [ ] toString () : String subList (int fromIndex, toIndex) : List

PROBLEMA 63: ETAPA 1 Identificación del problema. MÉTODO 6’D – SOLUCIONES ORIENTADAS A OBJETOS PROBLEMA 63: ETAPA 1 ENUNCIADO CLARO Y PRECISO DEL PROBLEMA: Desarrollar una solución que permita ingresar la nota final (prom) de todos los alumnos de un salón de clase. Muestre el tamaño y la capacidad del vector, así como el primer y ultimo elemento almacenado. Utilice la clase Vector del paquete java.util. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema.

Uso de la interfaz Enumeration INTERFASES INCORPORADAS EN EL LENGUAJE DE PROGRAMACIÓN Uso de la interfaz Enumeration Definición: La interfaz Enumeration de Java, es una interfaz que viene incluida como parte del paquete java.util (el paquete de utilidad del lenguaje), y se utiliza para recorrer a través de los elementos almacenados en un contenedor tal como un objeto de tipo Vector El método hasMoreElements() devuelve true si hay mas elementos en el objeto Vector El método nextElement() devuelve una referencia al siguiente objeto en el objeto Vector

PROBLEMA 64: ETAPA 1 Identificación del problema. MÉTODO 6’D – SOLUCIONES ORIENTADAS A OBJETOS PROBLEMA 64: ETAPA 1 ENUNCIADO CLARO Y PRECISO DEL PROBLEMA: Desarrollar una solución que permita ingresar los nombres de todos los alumnos de un salón de clase. Elimine el segundo elemento y el nombre “Luis” si existe. Mostrar los nombres almacenados. Utilice la clase Vector y la interfaz Enumeration del paquete java.util. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema.

PROBLEMA 65: ETAPA 1 Identificación del problema. MÉTODO 6’D – SOLUCIONES ORIENTADAS A OBJETOS PROBLEMA 65: ETAPA 1 ENUNCIADO CLARO Y PRECISO DEL PROBLEMA: Diseñar una solución utilizando una interfaz gráfica de usuario que permita manejar los nombres de todos los alumnos de un salón de clase. Utilice la clase Vector y la interfaz Enumeration del paquete java.util. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema.

Algoritmo y Estructura de Datos II Método de las 6’D – Soluciones Orientadas a Objetos Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Clases e Interfases incorporadas en el lenguaje de programación Clase Vector Interfaz Enumeration

Algoritmo y Estructura de Datos I Semana 11 – sesión 02 Objetivos: Desarrollar soluciones utilizando la clase Vector y la Interfaz Enumeration de Java Describir el uso de la clase Arrays de Java para el manejo de arreglos

INTÉNTALO !! INTÉNTALO!! SEMANA 11 El profesor del curso explicará los problemas que se han incluido en el PLACE sobre el tema tratado.

PROBLEMA : 66 ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES DE PROBLEMAS PROBLEMA : 66 ETAPA 1 ENUNCIADO Desarrollar una solución que permita ingresar y almacenar el nombre, sueldo y código de los trabajadores de una empresa. Considerar los procesos de registro y control de los datos. Descripción Problema Identificación del problema. Descripción general del problema. Enunciado claro y preciso del problema.

Uso de la clase Arrays Definición: Métodos: sort( ) binarySearch ( ) CLASES INCORPORADAS EN EL LENGUAJE DE PROGRAMACIÓN Uso de la clase Arrays Definición: La clase Arrays de Java, es una clase que viene incluida como parte del paquete java.util (el paquete de utilidad del lenguaje), y se utiliza para manipular arreglos. Contiene métodos estáticos. Métodos: sort( ) binarySearch ( ) equals ( ) fill ( )

INTÉNTALO !! INTÉNTALO!! SEMANA 11 El profesor del curso explicará los problemas que se han incluido en el PLACE sobre el tema tratado.

Algoritmo y Estructura de Datos I Semana 12 – sesión 01 Objetivos : Introducción a las estructuras de datos tipo : Listas Definición de listas Representación de listas: en memoria y en forma de nodos Describir el uso de la clase LinkedList de Java para el manejo de listas

LISTAS DEFINICIÓN Lista: Colección de datos. ESTRUCTURA DE DATOS – Listas LISTAS DEFINICIÓN Lista: Colección de datos. Es una estructura de datos que permite almacenar datos del mismo tipo, denominados elementos o nodos. Las listas puedan aumentar o disminuir su tamaño a medida que van incorporándose nuevos elementos o eliminando elementos. El orden de la lista se establece mediante referencia a objetos. Relación de alumnos 17C 2005-I Alvarez Valderrama, Maritza Margot. Anicama Canales, Pedro David. Aranibar Dìaz, Aldo Arnaldo. …

LISTAS VENTAJAS Lista: Colección de datos. ESTRUCTURA DE DATOS – Listas LISTAS VENTAJAS Lista: Colección de datos. No requieren de un índice para acceder a un determinado elemento o nodo. El consumo de memoria dependerá únicamente de la cantidad de información almacenada en la misma.

LISTAS CLASIFICACIÓN LINEALES Estáticas Dinámicas Listas Pilas Colas ESTRUCTURA DE DATOS – Listas LISTAS CLASIFICACIÓN LINEALES Estáticas Dinámicas Listas Pilas Colas Variables Arreglos LISTAS SIMPLES Nodos que contienen objetos y un enlace al siguiente nodo. LISTAS DOBLES Nodos que contienen objetos y dos enlaces, uno al siguiente nodo y otro al anterior. LISTAS CIRCULARES Nodos que contienen objetos y el último elemento contiene una referencia al primer nodo.

LISTAS SIMPLES DEFINICIÓN ESTRUCTURA DE DATOS – Listas simples LISTAS SIMPLES DEFINICIÓN Son listas unidireccionales que solo se pueden recorrer del inicio de la lista hasta el final de la lista en un solo sentido. Operaciones: Adición. Recorrido. Búsqueda. Modificación. Eliminación. Ordenamiento.

LISTAS SIMPLES sig info DEFINICIÓN ESTRUCTURA DE UN NODO ESTRUCTURA DE DATOS – Listas simples LISTAS SIMPLES DEFINICIÓN ESTRUCTURA DE UN NODO Llamadas también unidireccionales: sólo se pueden recorrer del principio hacia el final. info: contiene información asociada al elemento sig : Campo de enlace, contiene la dirección de memoria donde se encuentra ubicado el siguiente elemento de la lista. Adicionalmente se utiliza una variable llamada cabecera, la cual contiene la dirección del primer nodo de la Lista. Asimismo, el campo de enlace del último nodo contiene una dirección nula. sig info

LISTAS SIMPLES REPRESENTACIÓN GRÁFICA cabecera null ESTRUCTURA DE DATOS – Listas simples LISTAS SIMPLES REPRESENTACIÓN GRÁFICA cabecera null Ejemplo: selecciones que han obtenido el campeonato mundial de fútbol: Brasil, Italia, Argentina, Francia. Ordenar alfabéticamente los elementos de la Lista Cuando se ordenan los elementos, sólo se intercambia el contenido del campo info; no se cambian las direcciones de memoria.

LISTAS SIMPLES REPRESENTACIÓN ESTRUCTURA DE DATOS – Listas simples LISTAS SIMPLES REPRESENTACIÓN EN MEMORIA: VISUALMENTE: nombre siguiente Relación de alumnos 21D 2005-I 1 Almond… 3 Agüero… 5 Alva… Acuña… 2 Alarcón… 1 inicio 2 Acuña Azarte, Maritza Haydee. Agüero Herrera, Jorge Alberto. Alarcón Suarez, Juan José. Almond Ruiz, George William. Alva Pimentel, César Eduardo. 3 4 fin 5 A través del uso de listas simples podemos acceder a los datos recorriéndolos hacia delante hasta el final.

LISTAS SIMPLES REPRESENTACIÓN ESTRUCTURA DE DATOS – Listas simples LISTAS SIMPLES REPRESENTACIÓN EN NODOS: VISUALMENTE: Relación de alumnos 21D 2005-I cabecera Acuña… sig Agüero… sig Alarcón… Acuña Azarte, Maritza Haydee. Agüero Herrera, Jorge Alberto. Alarcón Suarez, Juan José. null 1 2 3 A través del uso de listas simples podemos acceder a los datos recorriéndolos hacia delante hasta el final.

LISTAS SIMPLES EJEMPLO Lista Elemento o nodo ESTRUCTURA DE DATOS – Listas simples LISTAS SIMPLES Lista EJEMPLO Inicio (cabecera) Relación de alumnos 21D 2005-I Elemento o nodo (datos simples) Acuña Azarte, Maritza Haydee. Agüero Herrera, Jorge Alberto. Alarcón Suarez, Juan José. Almond Ruiz, George William. Alva Pimentel, César Eduardo. (siguiente) Fin (null)

Uso de la clase LinkedList CLASES INCORPORADAS EN EL LENGUAJE DE PROGRAMACIÓN Uso de la clase LinkedList Definición: La clase LinkedList de Java, es una clase que viene incluida como parte del paquete java.util (el paquete de utilidad del lenguaje), y se utiliza para manipular colecciones de datos conocidas como listas.

PROBLEMA 67: ETAPA 1 ENUNCIADO Identificación del problema. MÉTODO 6’D – SOLUCIONES DE PROBLEMAS PROBLEMA 67: ETAPA 1 ENUNCIADO Diseñe una aplicación para almacenar y administrar los datos de empleados de una empresa, considere lo siguientes datos: código y nombre. Utilice la clase LinkedList. Descripción Problema Identificación del problema. Descripción general del problema. Descripción de la estructura de datos a utilizar

PROBLEMA 67: ETAPA 2 Diseño de ventana MÉTODO 6’D – SOLUCIONES DE PROBLEMAS PROBLEMA 67: ETAPA 2 Diseño de la Solución Diseño de ventana

Algoritmo y Estructura de Datos I Semana 12 – sesión 02 Objetivos : Introducción a las estructuras de datos tipo : pilas y colas. Definición y clasificación de las pilas. Descripción de la implementación de pilas con vectores y listas. Definición de las colas. Representación de las colas

PILAS CLASIFICACIÓN LINEALES Estáticas Dinámicas Listas Pilas Colas ESTRUCTURA DE DATOS – Pilas PILAS CLASIFICACIÓN LINEALES Estáticas Dinámicas Listas Pilas Colas Variables Arreglos PILAS Estructura de datos lineales, dinámicas. A B C Cima Elemento

PILAS DEFINICIÓN Pila: Colección de datos. ESTRUCTURA DE DATOS – Pilas PILAS DEFINICIÓN Pila: Colección de datos. Es una estructura de datos que permite almacenar datos del mismo tipo, en la cual en un extremo se puede insertar y eliminar elementos, llamado la parte superior de la pila o cima. A este tipo de estructura de datos se le conoce como LIFO (primero en entrar, último en salir).

PILAS CARACTERISTICAS ESTRUCTURA DE DATOS – Pilas PILAS CARACTERISTICAS Utiliza una Estructura lineal para implementarla esta puede ser: Lista Arreglo El acceso a la pila se hace a través de sus operaciones apilar (push) y desapilar (pop) No se puede recorrer

PILAS OPERACIONES Agregar (apilar) Empujar (push). ESTRUCTURA DE DATOS – Pilas PILAS OPERACIONES Agregar (apilar) Agrega un elemento a la pila. Pila empujada hacia abajo. Empujar (push). Eliminar (desapilar) Retira un elemento de la pila. Validación de la pila vacía. Retirar (pop).

LIFO (primero en entrar, último en salir). ESTRUCTURA DE DATOS – Pilas PILAS REPRESENTACIÓN D D Apilar Desapilar A B C Cima Elemento LIFO (primero en entrar, último en salir).

REPRESENTACIÓN DE UNA PILA ESTRUCTURA DE DATOS – Pilas REPRESENTACIÓN DE UNA PILA

EJEMPLOS DEL USO DE UNA PILA ESTRUCTURA DE DATOS – Pilas EJEMPLOS DEL USO DE UNA PILA COMPROBAR PARENTESIS

EJEMPLOS DEL USO DE UNA PILA ESTRUCTURA DE DATOS – Pilas EJEMPLOS DEL USO DE UNA PILA COMPROBAR PARENTESIS

EJEMPLOS DEL USO DE UNA PILA ESTRUCTURA DE DATOS – Pilas EJEMPLOS DEL USO DE UNA PILA COMPROBAR PARENTESIS

Índice último elemento ingresado ESTRUCTURA DE DATOS – Pilas PILAS IMPLEMENTACIÓN UTILIZANDO VECTORES A B C CIMA PILA Índice último elemento ingresado x [-1] PILA VACÍA índice -1 A B C x [0] x [1] x [2]  i=7

Índice último elemento ingresado ESTRUCTURA DE DATOS – Pilas PILAS IMPLEMENTACIÓN UTILIZANDO LISTAS A B C CIMA PILA Índice último elemento ingresado x [-1] PILA VACÍA índice -1 C B A 1 2 3 fin

COLAS DEFINICIÓN Cola: Colección de datos. ESTRUCTURA DE DATOS – Colas COLAS DEFINICIÓN Cola: Colección de datos. Una cola es una lista lineal de elementos en las que las eliminaciones se realizan en un extremo, llamado primero, y las inserciones se realizan sólo en el otro extremo, llamado último. Las colas abundan en la vida diaria. Ejemplo La cola del autobús La cola de la impresora

COLAS CARACTERISTICAS ESTRUCTURA DE DATOS – Colas COLAS CARACTERISTICAS Utiliza una Estructura lineal para implementarla esta puede ser: Lista Arreglo El acceso a la cola se hace a través de sus operaciones por un extremo se inserta y por el otro se retira. No se puede recorrer

ESTRUCTURA DE DATOS – Colas Es una estructura de datos que permite almacenar datos del mismo tipo, los datos se insertan al final al cual se le conoce como ultimo y se procesan primero los que se encuentran al inicio Una cola es una estructura FIFO, es decir el primero en entrar, es el primero en salir. First In, First Out(FIFO) primero último

FIFO (primero en entrar, primero en salir). ESTRUCTURA DE DATOS – Colas COLAS REPRESENTACIÓN Acolar Decolar D A A B C primero ultimo FIFO (primero en entrar, primero en salir).

FIFO (primero en entrar, primero en salir). ESTRUCTURA DE DATOS – Colas COLAS IMPLEMENTACIÓN UTILIZANDO VECTORES A cola [ ] B C max primero ultimo FIFO (primero en entrar, primero en salir).

Estructuras Dinámicas No Lineales Algoritmo y Estructura de Datos I Unidad VI: Estructuras Dinámicas No Lineales De Datos Semana 13 a Semana 14

Algoritmo y Estructura de Datos I Semana 13 – sesión 01 Objetivos : Introducción a la recursividad Recursividad en la programación y ejemplos de recursividad Metodos Recursivos Definición de Árboles Características de los árboles Árboles binarios

Se define un método recursivo cuando puede llamarse a si mismos ESTRUCTURA DE DATOS – Recursividad METODOS RECURSIVOS Se define un método recursivo cuando puede llamarse a si mismos Se debe consideran dentro de los métodos recursivos lo siguiente: Parámetros Condición antes de invocarse Debe tener un fin

RECURSIVIDAD EN LA PROGRAMACION ESTRUCTURA DE DATOS – Recursividad RECURSIVIDAD EN LA PROGRAMACION Se puede utilizar la recursividad como una alternativa a la iteración. La recursividad la encontramos en variables recursivas y métodos recursivos Eficiente en términos de tiempo de computadora que una solución iterativa debido a las operaciones auxiliares que llevan consigo las llamadas suplementarias a las funciones. La solución recursiva muchas veces permite a los programadores especificar soluciones naturales, que en otros casos sería difícil de resolver.

EJEMPLOS DE RECURSIVIDAD ESTRUCTURA DE DATOS – Recursividad EJEMPLOS DE RECURSIVIDAD Algunas ejemplos de recursión: Factorial -- n! = n × (n-1)! Sucesión de Fibonacci -- f(n) = f(n-1) + f(n-2) Números de Catalan -- C(2n, n)/(n+1) Las Torres de Hanoi Función de Ackermann

EJEMPLOS DE METODOS RECURSIVOS ESTRUCTURA DE DATOS – Recursividad EJEMPLOS DE METODOS RECURSIVOS Función recursiva para calcular el factorial de un número entero. n! = n * (n-1) * (n-2) * ... * 1 No se puede calcular el factorial de números negativos, y el factorial de cero es 1, de modo que una función bien hecha para cálculo de factoriales debería incluir un control para esos casos:

EJEMPLOS DE RECURSIVIDAD ESTRUCTURA DE DATOS – Recursividad EJEMPLOS DE RECURSIVIDAD Llamada al método recursivo int x=factorial(5); /* Función recursiva para cálculo de factoriales */ public int factorial(int n) { if(n ==1) return 1; else return n*factorial(n-1); /* Recursividad */ }

EJEMPLOS DE METODOS RECURSIVOS ESTRUCTURA DE DATOS – Recursividad EJEMPLOS DE METODOS RECURSIVOS Diseñe un método recursivo que permita la potencia de un numero A elevado a B Análisis 32=3*3 32=3*31=3*3*30 =3*3*1

EJEMPLOS DE RECURSIVIDAD ESTRUCTURA DE DATOS – Recursividad EJEMPLOS DE RECURSIVIDAD Llamada al método recursivo int x=potencia(3,2); /* Función recursiva para cálculo de potencia */ public int potencia(int a,int b) { if(b ==0) return 1; else return a*potencia(a,b-1); /* Recursividad */ }

Jerárquica porque los componentes estan a distinto nivel. ESTRUCTURA DE DATOS – Árboles DEFINICION DE ARBOL Los árboles son estructuras de datos jerarquizadas, organizadas y dinámicas: formada por un conjunto de nodos y un conjunto de aristas que conectan pares de nodos. Jerárquica porque los componentes estan a distinto nivel. Organizada porque importa la forma en que este dispuesto el contenido. Dinámica porque su forma, tamaño y contenido pueden variar durante la ejecución. El primer nodo se le conoce con el nombre de RAIZ

REPRESENTACION DE UN ARBOL ESTRUCTURA DE DATOS – Árboles REPRESENTACION DE UN ARBOL a b e f c d RAIZ A C D B E F Representation Textual Representación Nodal

Todo árbol tiene un único nodo raíz. ESTRUCTURA DE DATOS – Árboles CARACTERISTICAS Todo árbol tiene un único nodo raíz. Todo nodo, excepto la raíz esta conectado por medio de una arista a un único nodo, donde existe correspondencia se dice que es nodo padre aquel que antecede y es hijo a aquel nodo que le precede. Hay un único camino desde la raíz a cada nodo. Todo nodo que no tiene mas ramificaciones se le conoce como nodo terminal u hoja.

Padre es el antecesor inmediato de un nodo ESTRUCTURA DE DATOS – Árboles CARACTERISTICAS Padre es el antecesor inmediato de un nodo Hijo, cualquiera de sus descendientes inmediatos. Hermano de un nodo, es otro nodo con el mismo padre. El grado de un nodo cualesquiera, es el numero de descendientes directos que tenga. Grado de un Árbol, es el máximo grado de todos los nodos. Nivel, es el número de aristas o arcos que deben ser recorridos para llegar a un determinado nodo. Altura, es el máximo número de niveles de todos los nodos del árbol.

CARACTERISTICAS DE LOS ÁRBOLES ESTRUCTURA DE DATOS – Árboles CARACTERISTICAS DE LOS ÁRBOLES A raiz Grado 2 B C D hijos E F G H I hojas Grado del Arbol 3 Nivel 3

APLICACIONES DE ÁRBOLES ESTRUCTURA DE DATOS – Árboles APLICACIONES DE ÁRBOLES Representación de un árbol genealógico. Representación de operaciones algebraicas. Para realizar la administración de directorios como para UNIX, DOS, Windows. Crear directorio de ficheros, etc.

Son los árboles cuyo grado es 2 como máximo. ESTRUCTURA DE DATOS – Árboles ÁRBOLES BINARIOS Son los árboles cuyo grado es 2 como máximo. Se dice que es un árbol binario si tiene 0, 1 o 2 hijos

RECORRIDO DE UN ARBOL BINARIO ESTRUCTURA DE DATOS – Árboles RECORRIDO DE UN ARBOL BINARIO Los árboles binarios se pueden recorrer de la siguiente manera: Pre-Orden (Prefijo)  RID - Visitar la raiz - Recorrer el sub-arbol izquierdo. - Recorrer el sub-arbol derecho. In-Orden (Infijo)  IRD - Visitar la raiz. Post-Orden (Postfijo)  IDR

PreOrden (RID): _____________ InOrden (IRD): PostOrden (IDR): A C B D ESTRUCTURA DE DATOS – Árboles PreOrden (RID): _____________ InOrden (IRD): PostOrden (IDR): A C B D E F PreOrden (RID): ABDGCEHIF InOrden (IRD): DGBAHEICF PostOrden (IDR): GDBHIEFCA H I G

PreOrden (RID): _____________ InOrden (IRD): PostOrden (IDR): A B C D ESTRUCTURA DE DATOS – Árboles PreOrden (RID): _____________ InOrden (IRD): PostOrden (IDR): A B C D E F G H J K L M I

ÁRBOLES BINARIOS DE BÚSQUEDA ESTRUCTURA DE DATOS – Árboles ÁRBOLES BINARIOS DE BÚSQUEDA Definición: Un árbol binario de búsqueda también llamado árbol ordenado es aquel donde se cumple que nodos menores que la raíz van a la izquierda y los que son mayores que la raíz van a la derecha. Los nodos insertados en árboles de búsqueda binarios se insertan como hojas.

REPRESENTACIÓN DE UN ARBOL ORDENADO ESTRUCTURA DE DATOS – Árboles REPRESENTACIÓN DE UN ARBOL ORDENADO 6 6 4 4 9 9 1 5 1 5 3 3 8

INSERCION DE UN ELEMENTO A UN ARBOL (AGREGAR) ESTRUCTURA DE DATOS – Árboles INSERCION DE UN ELEMENTO A UN ARBOL (AGREGAR) Se crea un nuevo elemento Si la raíz esta vacía entonces raíz será el nuevo elemento Si la raíz tiene datos, comparamos si es menor se va a la izquierda y si es mayor a la derecha siempre y cuando sea una hoja (d) 6 raiz 4 nuevo nuevo null raiz (b) raiz 9 raiz 6 nuevo (a) 6 6 raiz 4 9 (c) 4 (e)

IMPLEMENTACION DE LA CLASE ARBOL: RECORRER (PROFUNDIDAD) ESTRUCTURA DE DATOS – Árboles IMPLEMENTACION DE LA CLASE ARBOL: RECORRER (PROFUNDIDAD) EJEMPLO: public class Arbol { Elemento raiz ; public String inOrden( Elemento p){ if(p != null) return inOrden(p.izq) + " " + p.info + "\n" + inOrden(p.der); return ""; } public String preOrden( Elemento p){ return p.info + "\n"+preOrden(p.izq) + " " + preOrden(p.der); public String postOrden( Elemento p){ return postOrden(p.izq) + postOrden(p.der)+ p.info + “\n " +;

Algoritmo y Estructura de Datos I Semana 13 – sesión 02 Objetivos : Definición de Grafos. Ejemplos aplicativos

(en memoria principal) Algoritmo y Estructura de Datos I Estructuras de Datos (en memoria principal) LINEALES NO LINEALES Estáticas Dinámicas Jerárquicas No jerárquicas Variables Arreglos Listas Pilas Colas Arboles Grafos Forma de organización de los datos en la memoria principal del computador

Lima La Libertad Tacna Arequipa Ica GRAFOS DEFINICIÓN ESTRUCTURA DE DATOS – Gráfos GRAFOS Un grafo es una estructura de datos compuesta por vértices y arcos. Es la representación gráfica de los datos de una situación particular. Los grafos representan conjuntos de objetos que no tienen restricción de relación entre ellos. Un grafo puede representar varias cosas de la realidad cotidiana, tales como mapas de carreteras, vías férreas, circuitos eléctricos, etc DEFINICIÓN Lima Ica Tacna Arequipa La Libertad

G A B C D E F J I H K L GRAFOS DEFINICIÓN ESTRUCTURA DE DATOS – Gráfos GRAFOS Un grafo, G, es un par ordenado de V y A, donde V es el conjunto de vértices o nodos del grafo.Un vértice puede tener 2 o más aristas, pero toda arista debe unir exactamente a dos vértices. DEFINICIÓN G A B C D E F J I H K L V= A,B,C,D,E,F,G,H,I,J,K,L ARCOS : JK,EG,GE,etc NO ARCOS : AC, BG, BF, etc

ESTRUCTURA DE DATOS – Gráfos GRAFOS Gracias a la teoría de Grafos se pueden resolver diversos problemas como por ejemplo la síntesis de circuitos secuenciales, contadores o sistemas de apertura. Los grafos se utilizan también para modelar trayectos como el de una línea de autobús a través de las calles de una ciudad, en el que podemos obtener caminos óptimos para el trayecto aplicando diversos algoritmos como puede ser el algoritmo de Floyd Para la administración de proyectos, utilizamos técnicas como PERT en las que se modelan los mismos utilizando grafos y optimizando los tiempos para concretar los mismos. APLICACIONES

ESTRUCTURA DE DATOS – Gráfos GRAFOS La notación G = A ( V, A ) se utiliza comúnmente para identificar un grafo. Los grafos se constituyen principalmente de : aristas, vértices y los caminos que pueda contener el mismo grafo.

GRAFOS Conceptos: Aristas: ESTRUCTURA DE DATOS – Gráfos GRAFOS Conceptos: Aristas: Son las líneas con las que se unen los vértices de un grafo y con las que se construyen también caminos. Si la arista carece de dirección se denota indistintamente {a,b} o {b,a}, siendo a y b los vértices que une. Sï {a,b} es una arista, a los vértices a y b se les llama extremos

GRAFOS Conceptos: Vértices: ESTRUCTURA DE DATOS – Gráfos GRAFOS Conceptos: Vértices: Son los puntos o nodos con los que está conformado un grafo. Llamaremos grado de un vértice al número de aristas de las que es un extremo. Se dice que un vértice es “par” o “impar” según sea su grado.

GRAFOS Conceptos: Caminos: ESTRUCTURA DE DATOS – Gráfos GRAFOS Conceptos: Caminos: Sean x, y V, se dice que hay un camino en G de x a y si existe una sucesión finita no vacía de aristas {x,V1}, {V1,V2},.....{Vn,Y}. En este caso x e y se llaman los extremos del camino. El número de aristas del camino se llama la longitud del camino.

GRAFOS Clasificación: ESTRUCTURA DE DATOS – Gráfos GRAFOS Clasificación: Podemos clasificar los grafos en dos grupos : dirigidos y no dirigidos. En un grafo no dirigido.- el par de vértices que representa un arco no está ordenado. Por tanto, los pares (v1,v2) y (v2,v1) representan el mismo arco. En un grafo dirigido o dígrafo.- es aquel en el que sus arcos tienen una orientación. Cada arco está representado por un par ordenado de vértices, de forma que representen dos arcos diferentes.

GRAFOS Ejemplo 1: 1 2 3 4 G1 = ( V1, A1 ) ESTRUCTURA DE DATOS – Gráfos GRAFOS Ejemplo 1: G1 = ( V1, A1 ) V1 = {1, 2, 3, 4} A1 = { (1,2), (1,3), (1,4), (2,3), (2,4), (3,4) } 1 2 3 4

GRAFOS Ejemplo 2: 2 1 3 6 4 5 G2 = ( V2, A2 ) ESTRUCTURA DE DATOS – Gráfos GRAFOS Ejemplo 2: G2 = ( V2, A2 ) V2 = {1, 2, 3, 4, 5, 6} A2 = { (1, 2), (1, 3), (2, 4), (2, 5), (3, 6) } 2 1 3 6 4 5

GRAFOS Ejemplo 3: 1 2 3 G3 = ( V3 , A3 ) ESTRUCTURA DE DATOS – Gráfos GRAFOS Ejemplo 3: G3 = ( V3 , A3 ) V3 = { 1, 2 , 3 } A2 = { < 1, 2 >, < 2 , 1 >, < 2, 3 > } 1 2 3

GRAFOS Algoritmo de PRIM: Ejemplo: ESTRUCTURA DE DATOS – Gráfos GRAFOS Algoritmo de PRIM: Es un algoritmo de la teoría de grafos para encontrar un subconjunto de aristas que forman un grafo con todos los vértices, en donde el peso total de todas las aristas en el grafo es el mínimo camino posible. Ejemplo:

GRAFOS Pseudocódigo del algoritmo PRIM: ESTRUCTURA DE DATOS – Gráfos    Entrada: Un grafo ponderado conexo con todos sus pesos diferentes. Salida: Las aristas de un árbol generador minimal.  i : = 1; N := tamaño del grafo de Entrada en número de vértices;  mientras (i < N) hacer escoger la arista de peso mínimo A de entre todas las que aún no han sido escogidas si la Salida aún está vacía, es decir, que estamos en la primera iteración entonces escoge la arista A de menor peso; fin_si si A no forma ciclo con las que ya forman parte de la Salida entonces añadir A a la Salida; i := i + 1; Fin_si Fin_mientras

EJEMPLO:Ejecución de un grafo usando Applet ESTRUCTURA DE DATOS – Gráfos GRAFOS EJEMPLO:Ejecución de un grafo usando Applet

Algoritmo y Estructura de Datos I Semana 14 Objetivos : Definición de Archivos Tipos de archivos Archivos textos Clasificación Diagrama de Bloques Clase Archivo. Introducción

Método de las 6’D – Soluciones con dos paquetes Algoritmo y Estructura de Datos I Método de las 6’D – Soluciones con dos paquetes (sin objeto) Diseño Solución Desarrollo Depuración Pruebas Ingeniería reversa n veces Codificación Modelamiento Algoritmo Estructuras de Datos Archivos texto.

Estructura de Datos Archivo ESTRUCTURA DE DATOS – Archivos Semana 14 Sesión 01 Estructura de Datos Archivo Definición: Una estructura de Datos Archivo es una colección de datos que se almacenan en un almacenamiento secundario (dispositivos tales como discos, diskettes, cds, etc). Los datos de un archivo pueden ser leídos y utilizados por otros medios. Operaciones básicas: - Apertura del archivo. - Escritura de datos en el archivo. - Lectura de datos del archivo. - Cierre del archivo. Ventajas: 1.- Permite almacenar diferentes tipos de datos. 2.- Permite almacenar los datos en forma permanente. 3.- Su capacidad depende del espacio disponible en el disco.

Estructura de Datos Archivo ESTRUCTURA DE DATOS – Archivos Semana 14 Sesión 01 Estructura de Datos Archivo Tipos: Archivos de TEXTO: Archivos BINARIOS: Su contenido es totalmente textual, es decir solo se guardan caracteres ASCII. Dichos archivos por lo general tienen extensión txt o dat. Los archivos pueden ser modificados utilizando un editor de texto, ya que estos se visualizan sin formato, tal y como se almacenaron los datos. Son conocidos también como archivos planos. Son aquellos que almacenan datos o instrucciones en otro tipo de estructura, que no puede ser modificado con un editor de texto cualquiera. Generalmente, son modificados utilizando el programa con el que fueron almacenados.

ARCHIVOS TEXTOS O PLANOS ESTRUCTURA DE DATOS – Archivos Semana 14 Sesión 01 ARCHIVOS TEXTOS O PLANOS Estructura: Archivo: Esta conformado por un conjunto de registros. Registro: Esta conformado por un conjunto de campos. Campo: Esta conformado por un conjunto de datos todos del mismo tipo. Archivo: Empleado.dat Nombre del Campo Tipo de Dato Longitud codigo TEXTO 10 nombre 40 sueldo NUMERO 12 2

ARCHIVOS TEXTOS O PLANOS ESTRUCTURA DE DATOS – Archivos Semana 14 Sesión 01 ARCHIVOS TEXTOS O PLANOS Clase Archivo: Es una clase reutilizable que pertenece al paquete biblioteca y ha sido creada con la finalidad de facilitar el manejo de operaciones básicas con un archivo texto. Métodos: abrirArchivo(): Permite abrir un archivo de texto. Si el archivo de texto no existe automáticamente crea el archivo. cerrarArchivo(): Permite cerrar un archivo de texto. eof(): Permite indicar que se ha llegado al fin del archivo. grabarDatos(): Permite grabar los datos en un archivo de texto. leerDatos(): Permite leer datos de un archivo de texto. totalRegistros(): Indica la cantidad total de registros que contiene el archivo. La clase Archivo tiene también atributos y otros métodos. Dichos atributos y métodos son privados por lo que son utilizados internamente por los métodos que aquí se detallan.

PROBLEMA : ETAPA 1 ENUNCIADO Enunciado MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) Semana 14 Sesión 01 PROBLEMA : ETAPA 1 ENUNCIADO Desarrolle una solución que permita almacenar el nombre y la clave de todos los usuarios de una aplicación en un archivo de texto denominado usuarios.dat. Utilice la clase Lectura para el ingreso de datos y la clase Archivo para el manejo de operaciones básicas con un archivo texto. Descripción Problema Enunciado

PROBLEMA : ETAPA 3 Modelamiento ProyArchivoUsuarios MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) Semana 14 Sesión 01 PROBLEMA : ETAPA 3 NOMBRE DEL PROYECTO: ProyArchivoUsuarios DIAGRAMA DE PAQUETES:     Diagrama de paquetes   Diseño Solución Modelamiento DEFINICIÓN DE CLASES: 4. DEFINICIÓN DE LA ESTRUCTURA DEL ARCHIVO: Desarrollar la definición de clases y la estructura del archivo.

PROBLEMA : ETAPA 4 Codificación MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) Semana 14 Sesión 01 PROBLEMA : ETAPA 4 package domApli; import biblioteca.*; public class PrgArchivoUsuarios { public static void main(String[] args) { char opc; Archivo usuarios = new Archivo(); usuarios.abrirArchivo("C:\\","Usuarios.dat","rw"); String datos[] = new String[2]; // Ingresando datos do { System.out.println ("Escriba nombre de usuario: "); datos[0] = Lectura.leerString(); System.out.println ("Escriba clave de usuario: "); datos[1] = Lectura.leerString(); usuarios.grabarDatos(datos); System.out.println ("Desea continuar (s/n): "); opc = Lectura.leerChar(); } while (opc =='s' || opc =='S'); // Mostrando datos for (int i=0; i<usuarios.totalRegistros(); i++) { datos = usuarios.leerDatos(i); System.out.println ("Usuario: " + datos[0] + ", Clave: " + datos[1]); } usuarios.cerrarArchivo(); System.exit(0);       Desarrollo Solución Codificación Explique detalladamente

ARCHIVOS TEXTOS O PLANOS ESTRUCTURA DE DATOS – Archivos Semana 14 Sesión 02 ARCHIVOS TEXTOS O PLANOS Clasificación por función: Maestro : Son aquellos que poseen datos permanentes, no cambian fácilmente su contenido. Ejemplo: Maestro de alumnos, profesores, artículos, clientes, proveedores. Transacciones : Son archivos que se actualizan constantemente. Ejemplo: archivo de notas, cuenta corriente, entradas y salidas de materiales. Históricos : Son archivos con información que no tiene vigencia a la fecha y se referencia cuando se necesita cualquier información histórica. Back-up : Son archivos de respaldo. Temporales : Son archivos que se crean de forma momentánea y luego se eliminan.

ARCHIVOS TEXTOS O PLANOS ESTRUCTURA DE DATOS – Archivos Semana 14 Sesión 02 ARCHIVOS TEXTOS O PLANOS Clasificación por acceso: SECUENCIAL : Los registros están organizados de la forma que fueron grabados. INDEXADO : Los registros están ordenados por un campo o conjunto de campos determinado. a b c a b c a = codigo b = nombre c = sexo ordenado por el campo a

ARCHIVOS TEXTOS O PLANOS ESTRUCTURA DE DATOS – Archivos Semana 14 Sesión 02 ARCHIVOS TEXTOS O PLANOS Diagrama de bloque: Es mediante el cual se muestran todas las entradas y salidas de un programa determinado. Extiéndase por entrada información necesaria para producir la salida en base a un proceso determinado. Alumno.dat PrgCalculo Proceso de Calculo becas.dat reporte

PROBLEMA : ETAPA 1 ENUNCIADO Enunciado MÉTODO 6’D – SOLUCIONES CON DOS PAQUETES (sin objeto) Semana 14 Sesión 02 PROBLEMA : ETAPA 1 ENUNCIADO Desarrolle una solución que permita almacenar el código, nombre, apellido y promedio final de los alumnos de un salón de clase en un archivo de texto denominado alumnos.dat. Utilice un menú con las siguientes opciones: [1] Ingresar datos. [2] Mostrar datos. [3] Finalizar. Utilice la clase LE para el ingreso de datos y la clase Archivo para el manejo de operaciones básicas con un archivo texto. Descripción Problema Enunciado

PROPUESTO 14-01 ENUNCIADO DEL PROBLEMA PROPUESTOS!! SEMANA 14 Semana 14 Laboratorio PROPUESTO 14-01 ENUNCIADO DEL PROBLEMA Desarrolle una solución que permita almacenar el nombre y la clave de todos los usuarios de una aplicación en un archivo de texto. Utilice un cuadro de dialogo para abrir o crear el archivo de texto donde se van almacenar los datos. Utilice la clase LE para el ingreso de datos y la clase Archivo para el manejo de operaciones básicas con un archivo texto.

PROPUESTO 14-02 ENUNCIADO DEL PROBLEMA PROPUESTOS!! SEMANA 14 Semana 14 Laboratorio PROPUESTO 14-02 ENUNCIADO DEL PROBLEMA Desarrolle una solución que permita almacenar el código, nombre y la clave de todos los usuarios de una aplicación en un archivo de texto denominado usuarios.dat. Utilice un menú de opciones, la clase LE para el ingreso de datos y la clase Archivo para el manejo de operaciones básicas con un archivo texto.

PROPUESTO 14-03 ENUNCIADO DEL PROBLEMA PROPUESTOS!! SEMANA 14 Semana 14 Laboratorio PROPUESTO 14-03 ENUNCIADO DEL PROBLEMA Desarrolle una solución que permita almacenar el código, nombre, apellido y las 2 notas de los alumnos de un salón de clase en un archivo de texto denominado alumnos.dat. Utilice un menú con las siguientes opciones: [1] Ingresar datos. [2] Calcular promedios. [3] Mostrar datos. [4] Finalizar. Utilice la clase LE para el ingreso de datos y la clase Archivo para el manejo de operaciones básicas con un archivo texto.

PROPUESTO 14-04 ENUNCIADO DEL PROBLEMA PROPUESTOS!! SEMANA 14 Semana 14 Laboratorio PROPUESTO 14-04 ENUNCIADO DEL PROBLEMA Desarrollar una solución que permita almacenar los códigos y nombres de todos los empleados de una empresa en un archivo de texto denominado empleados.dat. Utilice la interfaz gráfica mostrada y la clase Archivo para el manejo de operaciones básicas con un archivo texto. ADICIONAR MOSTRAR El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

INTENTALO 14-01 !! ENUNCIADO DEL PROBLEMA INTENTALO!! SEMANA 14 INTENTALO 14-01 !! ENUNCIADO DEL PROBLEMA Desarrollar una solución que permita implementar la interfaz gráfica mostrada. Utilice la clase Archivo para el manejo de operaciones básicas con un archivo texto. El profesor del curso puede solicitar este problema resuelto a partir de la siguiente sesión de clase.

Algoritmo y Estructura de Datos I Unidad VII: Programación Gráfica Semana 15

Algoritmo y Estructura de Datos I Semana 15 – sesión 1 y 2 Objetivos : Introducción a la Programación Gráfica

Algoritmo y Estructura de Datos I PROGRAMACION GRAFICA Estas funciones permiten dibujar gráficos en la pantalla. El API de Java nos permite fácilmente: Dibujar líneas de cualquier anchura Rellenar formas con gradientes y texturas Mover, rotar, escalar y recortar texto y gráficos. Componer texto y gráficos solapados.

ESTRUCTURA DE DATOS – Programación Gráfica PROGRAMACION GRAFICA Por ejemplo, podríamos usar el API de Java para mostrar gráficos y charts complejos que usan varios estilos de línea y de relleno para distinguir conjuntos de datos, como se muestra en la siguiente figura:

ESTRUCTURA DE DATOS – Programación Gráfica PROGRAMACION GRAFICA Esto comprende aprender conocimientos básicos sobre herramientas, librerías y APIs y desarrollar aplicaciones gráficas con un lenguaje de programación. Introducir el manejo de algunas librerías conocidas y explicar no solo su uso, también su integración en Java o C++.

import java.awt.Graphics; ESTRUCTURA DE DATOS – Programación Gráfica PROGRAMACION GRAFICA Para el caso de Java, por ejemplo, para comenzar a trabajar con gráficos se debe de importar un paquete que permite realizar este tipo de funciones, llamado Graphics. import java.awt.Graphics;

Métodos para hacer gráficos: ESTRUCTURA DE DATOS – Programación Gráfica Métodos para hacer gráficos: drawLine( x1,y1,x2,y2 ) drawRect( x,y,ancho,alto ) fillRect( x,y,ancho,alto ) clearRect( x,y,ancho.alto ) drawRoundRect( x,y,ancho,alto,anchoArco,altoArco ) fillRoundRect( x,y,ancho,alto,anchoArco,altoArco ) draw3DRect( x,y,ancho,alto,boolean elevado ) fill3DRect( x,y,ancho,alto,boolean elevado )

Métodos para hacer gráficos: ESTRUCTURA DE DATOS – Programación Gráfica Métodos para hacer gráficos: drawOval( x,y,ancho,alto ) fillOval( x,y,ancho,alto ) drawArc( x,y,ancho,alto,anguloInicio,anguloArco ) fillArc( x,y,ancho,alto,anguloInicio,anguloArco ) drawPolygon( int[] puntosX,int[] puntosY[],numPuntos ) fillPolygon( int[] puntosX,int[] puntosY[],numPuntos )

EJEMPLOS ESTRUCTURA DE DATOS – Programación Gráfica // draw Line2D.Double g2.draw(new Line2D.Double(x, y+rectHeight-1, x + rectWidth, y)); // draw Rectangle2D.Double g2.setStroke(stroke); g2.draw(new Rectangle2D.Double(x, y, rectWidth, rectHeight)); // draw RoundRectangle2D.Double g2.setStroke(dashed); g2.draw(new RoundRectangle2D.Double(x, y, rectWidth, rectHeight, 10, 10)); // draw Arc2D.Double g2.setStroke(wideStroke); g2.draw(new Arc2D.Double(x, y, rectWidth, rectHeight, 90, 135, Arc2D.OPEN));

Dibujar lo siguiente: EJEMPLO 1: import java.awt.Graphics; ESTRUCTURA DE DATOS – Programación Gráfica EJEMPLO 1: Dibujar lo siguiente: import java.awt.Graphics; public class Linea extends java.applet.Applet { public void paint(Graphics g) { g.drawLine(25,25,300,150); } importando el paquete Graphics

Dibujar lo siguiente: EJEMPLO 2: import java.awt.Graphics; ESTRUCTURA DE DATOS – Programación Gráfica EJEMPLO 2: Dibujar lo siguiente: import java.awt.Graphics; public class Ejemplo2 extends java.applet.Applet { public void paint(Graphics g) {g.drawRoundRect(40,40,120,120,20,20); }

Dibujar lo siguiente: EJEMPLO 3: import java.awt.Graphics; ESTRUCTURA DE DATOS – Programación Gráfica EJEMPLO 3: Dibujar lo siguiente: import java.awt.Graphics; public class Ejemplo3 extends java.applet.Applet { public void paint(Graphics g) { g.fillArc(120,20,60,60,90,180); }

GUÍA TEÓRICA DEL DOCENTE. Todos los derechos reservados. Algoritmo y Estructura de Datos I 2006 - I GUÍA TEÓRICA DEL DOCENTE. Todos los derechos reservados.