Вы находитесь на странице: 1из 113

Fundamentos de Programación

Ingeniería en Tecnologías de la Información y Comunicaciones

Objetivo del curso:

Analizar y solucionar problemas informáticos y representar su solución mediante herramientas de software orientado a objetos.

Competencias previas

Habilidad para el manejo de la computadora.

Navegación en Internet.

Capacidad de análisis y síntesis.

Manejar herramientas de software mediante menús.

Manejar

comandos

y

funciones

básicas

en

computadora.

algún

sistema

operativo

de

Aplicar lógica matemática en la solución de problemas informáticos.

Aportación del curso al perfil profesional:

La asignatura de Fundamentos de Programación aporta al perfil del Ingeniero en Tecnologías de la Información y Comunicaciones, los conocimientos, habilidades, metodología, así como capacidades de análisis y síntesis, para plantear la solución de problemas susceptibles de ser computarizados, a través de diagramas de flujo, pseudocódigo, algoritmos y el paradigma de programación orientada a objetos.

Temario:

I. Fundamentos de programación orientada a objetos.

I.1.

Evolución de la programación

I.2.

Conceptos fundamentales de la Programación Orientada a Objetos

I.3.

Lenguajes orientados a objetos

I.4.

Relaciones entre clases y objetos

I.5.

Papel de clases y objetos en el análisis y el diseño

II. Metodología de Solución de Problemas.

II.1.

Descripción del problema (enunciado)

II.2.

Definición de solución (especificaciones)

II.3.

Diseño de la solución (modelado)

II.4.

Desarrollo de la solución (codificación)

II.5.

Depuración y pruebas (pruebas)

II.6.

Documentación (manuales)

III. Herramientas de programación. III.1. Simbología

III.2.

III.3. Pseudocódigo

Reglas para la construcción de diagramas

III.4.

Tipos de datos y expresiones

III.5.

Estructuras lógicas

1

IV.

Programación orientada a objetos y modelado.

IV.1.

Características del modelo orientado a objetos

IV.2.

Elementos primordiales en el modelo de objetos

IV.3.

Representación gráfica del diseño

IV.4.

Relación entre la programación orientada a objetos y la estructurada

V. Implementación Orientada a Objetos.

V.1.

Estructura de una clase

V.2.

Elementos de una clase

V.3.

Clase principal

V.4.

Crear objetos

VI. Modularidad.

VI.1.

Declaración de métodos

VI.2.

Métodos de clase

VI.3.

Métodos de instancia

Bibliografía

1. Hjalmar Jacobson, Ivar. El Lenguaje Unificado de Modelado Guía del Usuario. 2a. edición. Ed. Addison Wesley.

2. Flores Cueto, Juan José. Método de las 6’D UML – Pseudocódigo Java Enfoque Algorítmico, Serie Textos Universitarios Facultad de Ingeniería y Arquitectura. ed. Universidad de San Martín de Porres, (http://books.google.com/).

3. Joyanes Aguilar, Luis; Fernández Azuela, Matilde y Rodríguez Baena, Luis. Fundamentos de Programación Libro de Problemas Algoritmos Estructura de Datos y Objetos. 2a. edición. Ed. McGraw Hill.

4. Ramírez, Felipe. Introducción a la Programación, Algoritmos y su Implementación en Vb.Net, C#, Java y JAVA. 2a. edición. Ed. Alfaomega Grupo Editor.

5. Cairo Battistutti, Osvaldo. Metodología de la Programación, Algoritmos Diagramas de Flujo y Programas. 3a. edición. Ed. Alfaomega Grupo Editor.

6. Martin Robert, C. UML for Java(TM) Programmers. Ed. Robert C. Martin Series, Pearson. 2003.

7. Grady Booch, James. Rumbaugh E., Greg Perry. Aprendiendo Principios de Programación en 24 horas. Ed. Prentice Hall.

8. Sintes, Anthony. Aprendiendo Programación Orientada a Objetos en 21 Lecciones Avanzadas. Ed. Pearson Educación, 2002.

Fechas de Exámenes

Examen

Fecha

Unidades

1er

   

I y II

2º.

 

III

y IV

3er

 

V

y VI

2ª Oportunidad

 

Calificación Final

 

2

Criterios de evaluación y acreditación

Exámenes 60%

Productos de Aprendizaje 40% (Tareas, Trabajos, Investigaciones, etc.)

Otras Observaciones:

Personificador

Hora de entrada

Asistencia a clase

2ª Oportunidad

Revisión equitativa

3

I.

Fundamentos de programación orientada a objetos.

El paradigma orientado a objetos nació en 1969 de la mano del doctor noruego Kristin Nygaard que intentando escribir un programa que describiera el movimiento de los barcos a través de un fiordo, descubrió que era muy difícil simular las mareas, los movimiento de los barcos, y las formas de las líneas costeras con los métodos de programación existentes en ese momento. Además descubrió que los elementos del entorno que trataba de modelar (Barcos, Mareas y Líneas de la costa de los fiordos) así como las acciones de cada elemento eran más fácil de manejar utilizando otro modelo, es aquí donde surge la Programación Orientada a Objetos (OOP de sus siglas en ingles).

I.1.

Evolución de la programación

sus siglas en ingles). I.1. Evolución de la programación La evolución de la programación se puede

La evolución de la programación se puede sintetizar en tres modelos o paradigmas Un paradigma es una forma establecida de pensar acerca de cómo hacer algo. En el libro “La Revolución Científica Estructural” de Thomas Kuhn describe los paradigmas como un conjunto de teorías, estándares y métodos que juntos representa un medio de organización de conocimiento, es decir un medio de visualizar el mundo.

Los tres modelos o paradigmas de la evolución de la programación son:

La programación mediante procedimientos (procedural o modular)

La programación estructurada

La programación orientada a objetos

Programación Procedural o Modular

Los programas se dividen módulos (partes independientes), cada una de las cuales ejecuta una única actividad o tarea y se codifican independientemente uno de otro. Cada uno de estos módulos se analiza, codifica y pone a punto por separado.

4

Raíz Modulo Modulo Modulo Modulo 1 2 3 4 Modulo Modulo Modulo Modulo Modulo Modulo
Raíz
Modulo
Modulo
Modulo
Modulo
1
2
3
4
Modulo
Modulo
Modulo
Modulo
Modulo
Modulo
Modulo
1.1 1.2
2.1
2.2 3.1
4.1 4.2
Modulo
Modulo
2.2.1
2.2.2

Cada programa contiene un modulo denominado programa principal (por ejemplo en el lenguaje c se llama main al igual que en Java) que controla todo que sucede, transfiriendo el control a los submódulos (subprogramas o procedimientos) y estos al terminar transfieren el control a modulo principal. Si la tarea asignada a cada submódulo es demasiado compleja, este podrá dividirse en otros submódulos más pequeños. Estas tares pueden ser procesos de entrada, salida, manipulación de datos, control de otros módulos o alguna combinación de estas.

Programación Estructurada

Se refiere a un conjunto de técnicas que han ido evolucionando desde los primeros trabajos de Edgar Dijkstra. Esta técnica aumenta la productividad del programa reduciendo el tiempo para escribir, verificar, depurar y mantener los programas. La programación estructurada utiliza un número limitado de estructuras de control que minimiza la complejidad de los problemas y, por consiguiente reduce los errores.

de los problemas y, por consiguiente reduce los errores. El conjunto de técnicas que incorpora la

El conjunto de técnicas que incorpora la programación estructurada son:

Diseño descendente (TopDown)

Recursos Abstractos

Estructuras básicas

Diseño descendente (TopDown)

Es el proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento. Para establecer un refinamiento pasamos de qué hace a cómo lo hace.

5

¿Cómo lo hace? ¿Qué hace?
¿Cómo lo hace?
¿Qué hace?
¿Cómo lo hace? ¿Qué hace? Recursos Abstractos Diseño descendente La abstracción es el proceso de extraer
¿Cómo lo hace? ¿Qué hace? Recursos Abstractos Diseño descendente La abstracción es el proceso de extraer
¿Cómo lo hace? ¿Qué hace? Recursos Abstractos Diseño descendente La abstracción es el proceso de extraer
¿Cómo lo hace? ¿Qué hace? Recursos Abstractos Diseño descendente La abstracción es el proceso de extraer

Recursos Abstractos

¿Cómo lo hace? ¿Qué hace? Recursos Abstractos Diseño descendente La abstracción es el proceso de extraer
¿Cómo lo hace? ¿Qué hace? Recursos Abstractos Diseño descendente La abstracción es el proceso de extraer
¿Cómo lo hace? ¿Qué hace? Recursos Abstractos Diseño descendente La abstracción es el proceso de extraer

Diseño descendente

La abstracción es el proceso de extraer las propiedades relevantes de un objeto al tiempo que se ignora los detalles no esenciales. Las propiedades extraídas definen una vista del objeto. En esencia la abstracción supone la capacidad de encapsular y aislar la información del diseño.

Según Dijkstra, la abstracción descompone un programa en términos de recursos abstractos, es decir, descompone una acción compleja en una serie de acciones más simples, capaces de ser implementadas en una computadora.

Estructuras básicas

En mayo de 1966 Böhm y Jacopini demostraron que un programa puede ser escrito utilizando solamente tres tipos de estructura de control:

Secuenciales

Selectivas

Repetitivas

6

Secuenciales

La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia.

Diagrama de Flujo

Inicio Acción 1 Acción 2 Acción n Fin
Inicio
Acción 1
Acción 2
Acción n
Fin

Diagrama NassiSchneiderman (NS)

Inicio

Inicio

Inicio
Inicio

Acción 1

Acción 2

Acción 2 Acción n Fin

Acción n

Fin

Fin

Fin

Pseudocódigo

Inicio

Acción 1

Acción 2

Acción n

Fin

Selectivas

Diagrama de Flujo Verdadero Falso Condición Acción 1
Diagrama de Flujo
Verdadero
Falso
Condición
Acción 1

7

Diagrama NassiSchneiderman (NS)

Verdadero
Verdadero
Falso
Falso

Condición

Acción 1
Acción 1
Acción 1
Acción 1

Acción 1

Acción 1
Acción 1
Acción 1
Acción 1
Acción 1
Acción 1
Acción 1
Pseudocódigo Si Condición Acción 1 Fin Si Diagrama de Flujo Verdadero Falso Condición Acción 1
Pseudocódigo
Si Condición
Acción 1
Fin Si
Diagrama de Flujo
Verdadero
Falso
Condición
Acción 1
Acción 2

Diagrama NassiSchneiderman (NS)

Verdadero
Verdadero
Falso
Falso

Condición

Acción 1 Acción 2
Acción 1 Acción 2
Acción 1 Acción 2
Acción 1 Acción 2

Acción 1

Acción 1 Acción 2
Acción 1 Acción 2
Acción 1 Acción 2
Acción 1 Acción 2
Acción 1 Acción 2
Acción 1 Acción 2
Acción 1 Acción 2
Acción 1 Acción 2

Acción 2

Acción 1 Acción 2
Acción 1 Acción 2
Acción 1 Acción 2
Acción 1 Acción 2

8

Pseudocódigo

Si Condición Acción 1 En otro caso Acción 2 Fin Si

Repetitivas Diagrama de Flujo For/Next While/Mientras Inicio Falso Condición Condición Proceso Verdadero
Repetitivas
Diagrama de Flujo
For/Next
While/Mientras
Inicio
Falso
Condición
Condición
Proceso
Verdadero
Inc/Dec
Proceso
Repeat/Repite
Proceso
Verdadero
Condición
Falso
Diagrama NassiSchneiderman (NS)
For/Next
While/Mientras
Inicio
While Condición
Proceso
Proceso
Inc/Dec

9

Repeat/Repite Proceso Repeat Condición Pseudocódigo For/Next While/Mientras Para I = VI Hasta VF Proceso Fin
Repeat/Repite
Proceso
Repeat Condición
Pseudocódigo
For/Next
While/Mientras
Para I = VI Hasta VF
Proceso
Fin Para
Mientras Condición
Proceso
Fin Mientras
Repeat/Repite
Repite
Proceso
Hasta Condición
Mientras Repeat/Repite Repite Proceso Hasta Condición I.2. Conceptos fundamentales de la Programación Orientada a

I.2.

Conceptos fundamentales de la Programación Orientada a Objetos

La programación orientada a objetos, tal vez el paradigma de programación más utilizado en el mundo del desarrollo de software y de la ingeniería de software del siglo XXI, trae un nuevo enfoque a los retos que se plantean en la programación estructurada cuando los problemas a resolver son complejos. Al contrario que la programación procedimental que enfatiza en los algoritmos, la programación orientada a objetos (POO) enfatiza en los datos. En lugar de intentar ajustar un problema al enfoque procedimental de un lenguaje, POO intenta ajustar el lenguaje al problema. La idea es diseñar formatos de datos que se correspondan con las características esenciales de un problema.

La idea fundamental de los lenguajes orientados a objetos es combinar en una única unidad o módulo, tanto los datos como las funciones que operan a esos datos. Tal unidad se llama Objeto. A las operaciones que realiza un objeto se les llama “Métodosy es el

10

único medio para acceder a sus datos. Los datos de un objeto, se conocen también como Atributos. Si se desea leer datos de un objeto, se invoca a uno de sus Método. No se puede acceder a los datos directamente, se debe de realizar por medio de los mecanismos de “Comportamiento” (Métodos). Los datos son ocultos, de modo que están protegidos de alteraciones accidentales. Los datos y los Métodos se dice que están “Encapsuladosen una única entidad. El Encapsulamientode datos y la Ocultaciónde los datos son términos clave en la descripción de lenguajes orientados a objetos.

Si se desea modificar los datos de un objeto, se debe de conocer exactamente cuáles son funciones que interactúan con los Métodos para poder realizar esta acción. Un programa en Java se compone normalmente de un número de objetos que se comunican unos con otros mediante Mensajesfunciones miembro (Métodos). La organización de un programa en Java se muestra en la siguiente figura. La llamada a una función miembro de un objeto se denomina enviar un mensaje a otro objeto.

Objeto A Datos Función Miembro (Método) Función Miembro (Método) Objeto B Objeto C Mensaje Mensaje
Objeto A
Datos
Función Miembro
(Método)
Función Miembro
(Método)
Objeto B
Objeto C
Mensaje
Mensaje
Datos
Datos
Función Miembro
Función Miembro
Mensaje
(Método)
(Método)
Función Miembro
Función Miembro
(Método)
(Método)

En el paradigma orientado a objetos, el programa se organiza como un conjunto finito de objetos que contiene datos y operaciones (función miembro o Métodos) que llaman a esos datos y que se comunican entre sí mediante Mensajes.

11

Propiedades fundamentales de la orientación a objetos

Existen diversas características ligadas a la orientación a objetos. Todas las propiedades que se suelen considerar, no son exclusivas de este paradigma, ya que pueden existir en otros paradigmas, pero en su conjunto definen claramente los lenguajes orientados a objetos. Estas propiedades son:

Abstracción

Clase

Objeto

Encapsulación

Ocultamiento

Herencia

Polimorfismo

Mensajes

Abstracción

La abstracción es la propiedad de los objetos que consiste en tener en cuenta sólo los aspectos más importantes desde un punto de vista determinado y no tener en cuenta los restantes aspectos. El término abstracción que se suele utilizar en programación se refiere al hecho de diferenciar entre las propiedades externas de una entidad y los detalles de la composición interna de dicha entidad. Es la abstracción la que permite ignorar los detalles internos de un dispositivo complejo tal como una computadora, un automóvil, una lavadora o un horno de microondas, etc., y usarlo como una única unidad comprensible. Mediante la abstracción se diseñan y fabrican estos sistemas complejos en primer lugar y, posteriormente, los componentes más pequeños de los cuales están compuestos. Cada componente representa un nivel de abstracción en el cual el uso del componente se aísla de los detalles de la composición interna del componente. La abstracción posee diversos grados denominados niveles de abstracción.

Nivel de abstracción Externo:

componente. La abstracción posee diversos grados denominados niveles de abstracción. Nivel de abstracción Externo: 12

12

Nivel de abstracción Conceptual:

Nivel de abstracción Conceptual: Nivel de abstracción Interno: En consecuencia, la abstracción posee diversos grados de

Nivel de abstracción Interno:

de abstracción Conceptual: Nivel de abstracción Interno: En consecuencia, la abstracción posee diversos grados de

En consecuencia, la abstracción posee diversos grados de complejidad que se denominan niveles de abstracción que ayudan a estructurar la complejidad intrínseca que poseen los sistemas del mundo real. En el modelado orientado a objetos de un sistema esto significa centrarse en qué es y qué hace un objeto y no en cómo debe implementarse. Durante el proceso de abstracción es cuando se decide qué características y comportamiento debe tener el modelo.

Aplicando la abstracción se es capaz de construir, analizar y gestionar sistemas de computadoras complejos y grandes que no se podrían diseñar si se tratara de modelar a un nivel detallado. En cada nivel de abstracción se visualiza el sistema en términos de componentes, denominados herramientas abstractas, cuya composición interna se ignora. Esto nos permite concentrarnos en cómo cada componente interactúa con otros componentes y centrarnos en la parte del sistema que es más relevante para la tarea a realizar en lugar de perderse a nivel de detalles menos significativos.

13

En estructuras o registros, las propiedades individuales de los objetos se pueden almacenar en los miembros. Para los objetos es de interés cómo están organizados sino también qué se puede hacer con ellos. Es decir, las operaciones que forman la internan de un objeto son también importantes. El primer concepto en el mundo de la orientación a objetos nació con los tipos abstractos de datos (TAD). Un tipo abstracto de datos describe no sólo los atributos de un objeto, sino también su comportamiento (las operaciones). Esto puede incluir también una descripción de los estados que puede alcanzar un objeto. Un medio de reducir la complejidad es la abstracción. Las características y los procesos se reducen a las propiedades esenciales, son resumidas o combinadas entre sí. De este modo, las características complejas se hacen más manejables.

Clase

En términos prácticos, una clase es un tipo definido por el usuario. Las clases son los bloques de construcción fundamentales de los programas orientados a objetos. Booch define una clase como “un conjunto de objetos que comparten una estructura y un comportamiento comunes”. Una clase contiene la especificación de los datos que describen un objeto junto con la descripción de las acciones que un objeto conoce cómo ha de ejecutar. Estas acciones se conocen como servicios o métodos. Una clase incluye también todos los datos necesarios para describir los objetos creados a partir de la clase. Estos datos se conocen como atributos, variables o variables instancia. El término atributo se utiliza en análisis y diseño orientado a objetos, y el término variable instancia se suele utilizar en programas orientados a objetos.

Declaración de un a clase

Antes de que un programa pueda crear objetos de cualquier clase, ésta debe ser definida. La definición de una clase significa que se debe dar a la misma un nombre, dar nombre también a los elementos que almacenan sus datos y describir los métodos que realizarán las acciones consideradas en los objetos.

Las definiciones o especificaciones no son un código de programa ejecutable. Se utilizan para asignar almacenamiento a los valores de los atributos usados por el programa y reconocer los métodos que utilizará el programa. Normalmente, se sitúan en archivos formando los denominados packages, se utiliza un archivo para varias clases que están relacionadas.

Formato:

class NombreClase

{

lista_de_miembros

}

14

En el Lenguaje Unificado de Modelado (UML, Unifield Modeling Language), una clase es representada por un rectángulo que posee tres divisiones:

Nombre de la clase

Nombre de la clase Atributos Comportamiento

Atributos

Nombre de la clase Atributos Comportamiento

Comportamiento

En donde:

La parte superior: Contiene el nombre de la Clase

La intermedia: Contiene los atributos (o variables de instancia) que caracterizan a la Clase.

La parte Inferior:

Contiene los métodos u operaciones, los cuales son la forma como interactúa el objeto con su entorno.

Atributos y Métodos:

Atributos:

Los atributos o características de una Clase pueden ser de tres tipos, los que definen el grado de comunicación y visibilidad de ellos con el entorno, estos son:

public (+,

Indica que el atributo será visible tanto dentro como fuera de la clase, es decir, es accesible desde todos lados.de ellos con el entorno, estos son:  public (+, ):  private (-, Indica que

):

private (-,

Indica que el atributo sólo será accesible desde dentro de la clase (sólo sus métodos lo pueden accesar).es decir, es accesible desde todos lados. ):  private (-, ):  protected (#, ):

):

de la clase (sólo sus métodos lo pueden accesar). ):  protected (#, ): Indica que

protected (#, ): Indica que el atributo no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de las subclases que se deriven (herencia).

defecto Si no especifica ningún tipo de acceso, se utiliza el acceso por defecto, esto significa que la variable es accesible a todas las clases contenidas en le mismo paquete.

15

Métodos:

Cada método tiene asociado un tipo que se utiliza para controlar el acceso al método. Entre estos se encuentra:

controlar el acceso al método. Entre estos se encuentra:  ): public (+, Indica que el

):

public (+,

Indica que el método será visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados.

private (-,

es decir, es accsesible desde todos lados.  private (-, ): Indica que el método sólo

):

Indica que el método sólo será accesible desde dentro de la clase (sólo otros métodos de la clase lo pueden accesar).

clase (sólo otros métodos de la clase lo pueden accesar).  protected (#, ): Indica que

protected (#, ): Indica que el método no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de métodos de las subclases que se deriven (herencia).

defecto Si no especifica ningún tipo de acceso, se utiliza el acceso por defecto, esto significa que el método es accesible a todas las clases contenidas en el mismo paquete.

Ejemplo: Punto - int x; - int y; + Punto() + Punto(int valorX, int Valory)
Ejemplo:
Punto
- int
x;
- int y;
+ Punto()
+ Punto(int valorX, int Valory)
+ int regresaX()
+ int regresaY()
+ void asignaX(int valorX)
+ void asignaY(int valorY)
class Punto
{
private int x;
private int y;
// coordenada x
// coordenada y

16

public Punto()

// constructor sin argumentos

{

x = 0;

y = 0;

}

public Punto(int valorX , int valorY)

{

x = valorX;

y = valorY;

// constructor

}

public int regresaX() // devuelve el valor de x

{

return x;

}

public int regresaY() // devuelve el valor de y

{

return y;

}

void asignaX(int valorX) // establece el valor de x

{

x = valorX;

}

void asignaY(int valorY) // establece el valor de y

{

y = valorY;

}

}

Objeto

En el mundo real, las personas identifican los objetos como cosas que pueden ser percibidas por los cinco sentidos. Los objetos tienen propiedades específicas, como posición, tamaño, color, forma, textura, etc. que definen su estado. Los objetos también poseen ciertos comportamientos que los hacen diferentes de otros objetos.

Booch define un objeto como “algo que tiene un estado, un comportamiento y una identidad”.

Imaginemos una máquina de una fábrica. El estado de la máquina puede estar funcionando/ parando (“on/off”), hay que tener en cuenta su potencia, velocidad máxima, velocidad actual, temperatura, etc. Su comportamiento puede incluir acciones para arrancar y parar la máquina, obtener su temperatura, activar o desactivar otras máquinas, conocer las condiciones de señal de error o cambiar la velocidad. Su identidad se basa en

17

el hecho de que cada instancia de una máquina es única, tal vez identificada por un número de serie. Las características que se eligen para enfatizar el estado y el comportamiento se apoyarán en cómo un objeto máquina se utilizará en una aplicación. En un diseño de un programa orientado a objetos, se crea una abstracción (un modelo simplificado) de la máquina basada en las propiedades y en el comportamiento que son útiles en el tiempo.

Martin y Odell definen un objeto como “cualquier cosa, real o abstracta, en la que se almacenan datos y aquellos métodos (operaciones) que manipulan los datos”.

Para realizar esa actividad, se añaden a cada objeto de la clase los propios datos asociados con sus propios métodos miembro que pertenecen a la clase.

Un mensaje es una instrucción que se envía a un objeto y que, cuando se recibe, ejecuta sus acciones. Un mensaje incluye un identificador que contiene la acción que ha de ejecutar el objeto junto con los datos que necesita el objeto para realizar su trabajo. Los mensajes, por consiguiente, forman una ventana del objeto al mundo exterior.

El usuario de un objeto se comunica con el objeto mediante su interfaz, un conjunto de operaciones definidas por la clase del objeto de modo que sean todas visibles al programa. Una interfaz se puede considerar como una vista simplificada de un objeto. Por ejemplo, un dispositivo electrónico como una máquina de fax tiene una interfaz de usuario bien definida; por ejemplo, esa interfaz incluye el mecanismo de avance del papel, botones de marcado, el receptor y el botón “enviar”. El usuario no tiene que conocer cómo está construida la máquina internamente, el protocolo de comunicaciones u otros detalles. De hecho, la apertura de la máquina durante el periodo de garantía puede anularla.

La representación gráfica de un objeto en UML:

Objeto : Clase X

Objeto : Clase X Atributo1 = Expresión … Método () …

Atributo1 = Expresión

Método () …
Método ()

(a) Notación completa de un objeto

18

Objeto : Clase X

(b) Notación reducida de un objeto

Porsche911 : Carro

Porsche911 : Carro Color = “Amarillo” … ArrancarMotor () …

Color = “Amarillo”

Porsche911 : Carro Color = “Amarillo” … ArrancarMotor () …

ArrancarMotor ()

(c) Objeto Porsche911 de la clase

Carro

Encapsulación

Marco : Alumno

(d) Objeto Marco de la clase Alumno

El encapsulado o encapsulación de datos es el proceso de agrupar datos y operaciones relacionadas bajo la misma unidad de programación. En el caso de los objetos que poseen las mismas características y comportamientos se agrupan en clases, que no son más que unidades o módulos de programación que encapsulan datos y operaciones.

Ocultamiento

La ocultación de datos permite separar el aspecto de un componente, definido por su interfaz con el exterior, de sus detalles internos de implementación.

Diferencia entre Encapsulación y Ocultamiento

Los términos ocultación de la información y encapsulación de datos se suelen utilizar como sinónimos, pero no siempre es así, y muy al contrario, son términos similares pero distintos. En Java no es lo mismo, ya los datos internos están protegidos del exterior y no se pueden acceder a ellos más que desde su propio interior y por tanto, no están ocultos. El acceso al objeto está restringido sólo a través de una interfaz bien definida.

Herencia

Las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un

19

comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple.

Polimorfismo

La quinta propiedad significativa de los lenguajes de programación orientados a objetos es el polimorfismo. Es la propiedad que indica, literalmente, la posibilidad de que una entidad tome muchas formas. En términos prácticos, el polimorfismo permite referirse a objetos de clases diferentes mediante el mismo elemento de programa y realizar la misma operación de diferentes formas, según sea el objeto que se referencia en ese momento.

Por ejemplo, cuando se describe la clase mamíferos se puede observar que la operación comer es una operación fundamental en la vida de los mamíferos, de modo que cada tipo de mamífero debe poder realizar la operación o función comer. Por otra parte, una cabra o una vaca que pastan en un campo, un niño que se come un caramelo y un león que devora a otro animal, son diferentes formas que utilizan diferentes mamíferos para realizar la misma función (comer).

El polimorfismo adquiere su máxima expresión en la derivación o extensión de clases, es decir, cuando se obtiene una clase a partir de una clase ya existente, mediante la propiedad de derivación de clases o herencia.

I.3.

Lenguajes orientados a objetos

Históricamente el lenguaje Simula (1967) es aceptado como el primer lenguaje que posee las características principales de un lenguaje orientado a objetos. Fue creado para hacer programas de simulación, en donde los "objetos" son la representación de la información más importante. Smalltalk (1972 a 1980) es posiblemente el ejemplo canónico, y con el que gran parte de la teoría de la programación orientada a objetos se ha desarrollado.

Lenguaje

Maquina

LISP

LM

SCHEMA

C++   SMALLTALK VISUAL BASIC FORTRAN BASIC C ADA COBOL ALGOL APL PASCAL GPSS
C++   SMALLTALK VISUAL BASIC FORTRAN BASIC C ADA COBOL ALGOL APL PASCAL GPSS
C++   SMALLTALK VISUAL BASIC FORTRAN BASIC C ADA COBOL ALGOL APL PASCAL GPSS
C++   SMALLTALK VISUAL BASIC FORTRAN BASIC C ADA COBOL ALGOL APL PASCAL GPSS
C++   SMALLTALK VISUAL BASIC FORTRAN BASIC C ADA COBOL ALGOL APL PASCAL GPSS
C++   SMALLTALK VISUAL BASIC FORTRAN BASIC C ADA COBOL ALGOL APL PASCAL GPSS
C++   SMALLTALK VISUAL BASIC FORTRAN BASIC C ADA COBOL ALGOL APL PASCAL GPSS
C++   SMALLTALK VISUAL BASIC FORTRAN BASIC C ADA COBOL ALGOL APL PASCAL GPSS

C++

C++   SMALLTALK VISUAL BASIC FORTRAN BASIC C ADA COBOL ALGOL APL PASCAL GPSS
 

SMALLTALK

VISUAL BASIC

FORTRAN

BASIC

C

ADA

COBOL

ALGOL

APL

PASCAL

GPSS

PROLOG

  SMALLTALK VISUAL BASIC FORTRAN BASIC C ADA COBOL ALGOL APL PASCAL GPSS PROLOG

JAVA

SMALLTALK VISUAL BASIC FORTRAN BASIC C ADA COBOL ALGOL APL PASCAL GPSS PROLOG JAVA
SMALLTALK VISUAL BASIC FORTRAN BASIC C ADA COBOL ALGOL APL PASCAL GPSS PROLOG JAVA

C#

1950

1960

1970

1980

1990

2000

Funcional

Orientados a Objetos

Imperativos

Declarativos

El lenguaje de programación C fue desarrollado por Dennis Ritche de AT&T en los Laboratorios Bell que se utilizó para escribir y mantener el sistema operativo UNIX (hasta que apareció C, el sistema operativo UNIX fue desarrollado por Ken Thompson en AT&T mediante en lenguaje ensamblador o en lenguaje B). C es un lenguaje de propósito

20

general que se puede utilizar para escribir cualquier tipo de programa, pero su éxito y popularidad está especialmente relacionado con el sistema operativo UNIX. Fue desarrollado como lenguaje de programación de sistemas, es decir, un lenguaje de programación para escribir sistemas operativos.

Entre los lenguajes orientados a objetos se destacan los siguientes:

Ada

PHP

C#

PowerBuilder

Clipper

Python

Object Pascal (Delphi)

Ruby

Gambas

Smalltalk

Eiffel

VB.NET

Java

Visual FoxPro

JavaScript

Visual Basic

ObjectiveC

Visual Objects

R

XBase++

Perl

I.4.

Relaciones entre clases y objetos

Ahora ya definido el concepto de Clase, es necesario explicar cómo se pueden interrelacionar dos o más clases (cada uno con características y objetivos diferentes).

Antes es necesario explicar el concepto de cardinalidad de relaciones: En UML, la cardinalidad de las relaciones indica el grado y nivel de dependencia, se anotan en cada extremo de la relación y éstas pueden ser:

uno o muchos: 1

*

(1

n)

0 o muchos: 0

*

(0

n)

número fijo: m (m denota el número).

Ejemplo:

n)  número fijo: m (m denota el número). Ejemplo: Un cliente puede tener asociadas muchas

Un cliente puede tener asociadas muchas Órdenes de Compra, en cambio una orden de compra solo puede tener asociado un cliente.

21

Ejercicios:

En los Institutos Tecnológicos cuenta con una plantilla de Catedráticos de entre 30 a 350 maestros y una población Estudiantil de entre 100 y 500 alumnos. Cada Catedrático imparte clase a grupos de entre 5 a 45 Estudiantes.

Análisis Orientado a Objetos (AOO)

a) Identifique las clases y proporcione una breve descripción

Clases

Clases Descripción
Clases Descripción
Clases Descripción
Clases Descripción

Descripción

Clases Descripción
Clases Descripción
Clases Descripción
Clases Descripción

b) Por cada clase describa los atributos o características, descripción de cada concepto y el conjunto de valores permitidos (Dominio).

Clase Atributo Descripción Dominio
Clase
Atributo
Descripción
Dominio

c) Describa el comportamiento que tendrá cada clase y su descripción

Clase Comportamiento Descripción
Clase
Comportamiento
Descripción

22

Diseño Orientado a Objetos (DOO)

d) Ahora desarróllelos como clase

e) Establezca la relación entre las clases

Producto de Aprendizaje 1:

De los siguientes conceptos seleccione 10 y desarróllelo como clase, una vez desarrolladas como clase relacione tres mediante cardinalidad, entregarlo de forma impresa (25 puntos). Exponer en clase las tres clases relacionadas (15 puntos).

1

Actor

21 Empleado

41 Notebook

2

Avión

22 EquipoSonido

42 Pantalón

3

Blusa

23 Escuela

43 Periódico

4

Camión

24 Estadio

44 Persona

5

Camioneta

25 Estudiante

45 Pickup

6

Camisa

26 Fabrica

46 Pluma

7

Carro

27 Farmacia

47 Portafolio

8

Casa

28 Fraccionamiento

48 Profesionista

9

Catedrático

29 Hospital

49 ProgramaRadio

10

CertificadoMédico

30 Ingeniero

50 ProgramaTV

11

CertificadoCalifiaciones

31 Lápiz

51 Revista

12

Coche

32 Laptop

52 Supermercado

13

Computadora

33 Libro

53 Teléfono

14

Cuaderno

34 Licenciado

54 Terreno

15

Cuenta

35 Maestro

55 Tienda

16

CuentaAhorros

36 Mascota

56 Universidad

17

CuentaBancaria

37 Medico

57 Vehículo

18

CuentaCrédito

38 Mochila

58 Ventana

19

Director

39 Modulo

59 Vestido

20

Doctor

40 Museo

60 Zapato

23

Cada clase deberá tener los siguientes términos:

Nombre de clase

Atributos y Descripción

Comportamiento y Descripción

Para las tres clases establezca:

Relación de las Clases

Programación Orientada a Objetos (POO)

Programar las clases en un lenguaje orientado a objetos.

I.5.

Papel de clases y objetos en el análisis y el diseño

Durante el análisis y las primeras etapas del diseño, el desarrollador tiene dos tareas principales:

Identificar las clases y objetos que forman el vocabulario del dominio del problema.

Idear los comportamientos de las clases para que satisfagan los requerimientos del problema.

En conjunto, se llama a esas clases y objetos las abstracciones del problema, y se denomina a esas estructuras cooperativas los mecanismos de la implantación. Durante estas fases del desarrollo, el interés principal del desarrollo debe estar en la vista externa de estas abstracciones y mecanismos.

Esta vista representa el marco de referencia lógico del sistema y, por tanto, abarca la estructura de clases y la estructura de objetos del mismo. En las etapas finales del diseño y entrando ya en la implantación, la tarea del desarrollador cambia: el centro de atención está en la vista interna de estas abstracciones y mecanismos, involucrando a su representación física. Pueden expresarse estas decisiones de diseño como parte de la arquitectura de módulos y la arquitectura de procesos del sistema.

La experiencia de algunos analistas nos lleva a aplicar en primer lugar el criterio orientado a objetos porque esta aproximación es mejor a la hora de servir de ayuda para organizar la complejidad innata de los sistemas de software, al igual que ha servido de ayuda para describir la complejidad organizada de sistemas complejos tan diversos como las computadoras, plantas, galaxias o grandes instituciones sociales.

24

Básicamente los productos del análisis orientado a objetos (AOO) sirven como modelos de los que se puede partir para un diseño orientado a objetos (DOO); los productos del diseño orientado a objetos pueden utilizarse entonces como anteproyectos para la implementación completa de unos sistemas utilizando métodos de programación orientado a objetos (POO), de esta forma se relacionan AOO, DOO y POO.

25

II.

Metodología de Solución de Problemas.

La principal razón por lo que las personas aprenden a programar es para solucionar problemas utilizando como herramienta la computadora. El proceso de resolución de un problema con una computadora conduce a la escritura de un programa y a su ejecución. Aunque el proceso de diseñar programas es, esencialmente, creativo, se puede considerar una serie de fases o pasos comunes, que generalmente deben seguir todos los programadores.

Las fases de resolución de un problema con computadora son:

Análisis del problema El problema es analizado teniendo presente las especificaciones de los requisitos dados por el cliente de la empresa o la persona que encarga el programa. AOO Diseño del algoritmo Una vez analizado el problema, se diseña una solución que conducirá a un algoritmo que resuelva el problema. DOO Codificación La solución se escribe en un lenguaje de alto nivel y se obtiene el programa fuente. POO Ejecución, verificación y depuración El programa se ejecuta (se corre), se verifica que realice correctamente que realice lo que se analizo y diseño, y se depuran todos los errores.

Implementación

Mantenimiento El programa se actualiza realizando los cambios que sean necesarios, de modo que cumpla con las necesidades del

usuario. Documentación Escritura de las diferentes fases del ciclo de vida del software esencialmente del análisis, diseño y codificación (Manuales del usuario y Manuales del programador (o Manuales del Sistema)).

Se pone en producción el programa (gradual, parcial o total)

II.1.

Descripción del problema (enunciado)

La resolución de problemas se puede dividir en tres fases importantes:

Análisis del problema

Diseño del algoritmo

Resolución del algoritmo en la computadora

26

Resolución de un problema Resolución del Análisis del Diseño del problema con la problema Algoritmo
Resolución de
un problema
Resolución del
Análisis del
Diseño del
problema con la
problema
Algoritmo
computadora

II.2.

Definición de solución (especificaciones)

El propósito del análisis de un problema es ayudar al programador para llegar a una cierta compresión de la naturaleza del problema. El problema debe estar bien definido, si se desea llegar a una solución satisfactoria. Para poder definir con precisión el problema se requiere de las especificaciones de entrada y salida descritas en detalle.

El análisis del problema requiere de una lectura previa del problema, a fin de obtener una idea general de lo que solicita. La segunda lectura deberá servir para responder a las siguientes preguntas:

¿Qué datos necesita para resolver el problema? (Entrada)

¿Qué información debe de proporcionar la resolución del problema? (Salida)

¿Qué pasos se requieren para que con los datos de entrada se transformen en información de salida? (Algoritmo)

Análisis del problema Definición del Especificaciones Especificaciones problema de entrada de salida
Análisis del
problema
Definición del
Especificaciones
Especificaciones
problema
de entrada
de salida

27

Ejemplo:

Definición del problema: Obtenga la superficie y la longitud de un circulo.

Análisis:

II.3.

Entrada: ¿Qué datos necesita para resolver el problema? Radio Salida: ¿Qué información debe de proporcionar la resolución del problema? Superficie y Longitud

Algoritmo:

¿Qué pasos se requieren para que con los datos de entrada se transformen en información de salida? (Unidad III)

Diseño de la solución (modelado)

Una computadora no tiene la capacidad para resolver problemas, más que cuando se le proporcionan los pasos sucesivos a realizar para solucionar dicho problema. Estos pasos indican las instrucciones a ejecutar por la maquina, conociéndoseles como algoritmo.

La información que se le proporciona al algoritmo constituye la entrada y la información producida
La información que se le proporciona al algoritmo constituye la entrada y la información
producida por el algoritmo constituye la salida.
Superficie y
Longitud de
un circulo
Entrada de
Calculo de la
Calculo de la
Salida de
datos
Superficie
longitud
resultados
Radio
S= Radio 2
L=2 Radio
S y L

Ejercicio: Desarrolle el diseño de la solución del siguiente problema.

Calcule el salario neto de un trabajador a partir de la lectura del nombre, horas trabajadas, precio por hora y el cálculo de impuesto son el 25% del salario bruto (horas trabajadas por precio por hora). Como resultado final imprima el nombre, salario bruto, impuestos y salario neto.

28

II.4.

Desarrollo de la solución (codificación)

La codificación es la escritura en un lenguaje de programación de la representación del algoritmo desarrollada en las etapas precedentes. Dado que el diseño de un algoritmo es independiente del lenguaje de programación utilizado para la implementación, el código puede ser escrito con igual facilidad en un lenguaje o en otro.

Para realizar la conversión del algoritmo en programa se debe utilizar las instrucciones y sentencias diseñadas en el lenguaje de programación y siguiendo los pasos del algoritmo.

II.5.

Depuración y pruebas (pruebas)

La prueba de los programas consiste en ejecutar el programa utilizando datos similares a los reales o en su caso datos reales y observar los resultados arrojados por el sistema, tratando de depurar los errores de sintaxis, los errores de ejecución y los errores lógicos:

Errores de sintaxis. Ocurren cuando una o varias sentencias violan una o más reglas gramaticales de lenguaje de programación.

Errores de ejecución. Son errores que producen una terminación anómala o una terminación no esperada en tiempo de ejecución, por ejemplo una división por cero.

Error lógico. Es cuando un programa no realiza la operación que estaba prevista.

II.6.

Documentación (manuales)

Todos los sistemas independientemente de su aplicación tienen una documentación asociada. Esta se clasifica en 2 grupos:

Documentación del usuario

Documentación del sistema

Documentación del usuario

Contiene información relevante para la persona que manejara el sistema y contiene los siguientes tópicos:

o

Requerimientos de hardware y software

o

Instalación y configuración del sistema

o

Explicación del funcionamiento del sistema

o

Manual de referencias (informes de errores en forma detallada)

29

Documentación del sistema

Son todos los documentos relacionados con la aplicación del sistema, desde las especificaciones de los requisitos hasta el plan de pruebas de la depuración.

Este tipo de documentación puede incluir los siguientes temas:

o

Lenguaje de programación utilizado para el desarrollo del sistema (Compañía, versión, etc.)

o

Por cada procedimiento, función o método, una descripción de su funcionamiento, describiendo a detalle los parámetros que recibe así como la salida que produce.

o

Plan de pruebas (por modulo, por unidad de programa, por sistema).

Los siguientes problemas realice su correspondiente análisis:

1. Obtenga la superficie de un triangulo

2. Obtenga el total a pagar aplicando un descuento del 5%.

3. Obtenga los valores de X 1 y X 2 para resolver ecuaciones de segundo grado:

4. De los valores a y b, obtenga cuantas veces cabe el valor b en el valor a.

5. Obtenga la suma de los números del 1 al 100

Producto de Aprendizaje 2: De los siguientes problemas realice el análisis (40 puntos).

1. Obtenga el cuadrado de 243

2. Obtenga el perímetro y la superficie de un cuadrado

3. Obtenga la suma de dos números

4. Obtenga el producto de dos números

5. Obtenga la resta de dos números

6. Obtenga la división de dos números

7. Obtenga el cuadrado de un numero

8. Obtenga el perímetro de un rectángulo

30

9.

Obtenga la hipotenusa de un triangulo rectángulo

10.

Obtenga el área y el volumen de un cilindro

 

11.

Obtenga la conversión de grados Celsius a grados Fahrenheit

12.

Obtenga la conversión de grados Fahrenheit a grados Celsius

13.

Obtenga el área de un triangulo en función de las longitudes de sus lados:

Donde:

14.

Dado x numero de metros convertirlos a pies y pulgadas (1 metro = 39.37 pulgadas, 1 pie = 12 pulgadas)

15.

Obtenga el salario de un obrero en base a las horas extras trabajadas

16.

Obtenga la fuerza de atracción entre dos masas m 1 y m 2 separadas por una distancia d:

Donde G es la constante de gravitación universal:

31

III. Herramientas de programación.

Para la representación de algoritmos se debe utilizar algún método que permita la independización del lenguaje de programación elegido para su ejecución. Para conseguir este objetivo se precisa que el algoritmo sea representado gráficamente o numéricamente. Los métodos más utilizados para la representación de algoritmos son:

Diagramas de Flujo

Diagrama NassiSchneiderman (NS)

Lenguaje de especificación de algoritmos (Pseudocódigo)

III.1.

Simbología

Diagramas de Flujo

EL diagrama de flujo (Flowchart) es una de las técnicas de representación de algoritmos más antigua y a la vez más utilizada. Un diagrama de flujo (DF) es un diagrama que utiliza cajas y líneas que indican el flujo de la información.

cajas y líneas que indican el flujo de la información. Símbolo Función Inicio/Fin. Comienzo y último

Símbolo

y líneas que indican el flujo de la información. Símbolo Función Inicio/Fin. Comienzo y último símbolo
y líneas que indican el flujo de la información. Símbolo Función Inicio/Fin. Comienzo y último símbolo

Función

Inicio/Fin. Comienzo y último símbolo de los diagramas de flujos.

Entrada. Se especifican los datos de entrada del algoritmo.

32

Símbolo

Símbolo Función Salida. Se especifican los datos de salida del algoritmo. Proceso. Se especifica cualquier tipo
Símbolo Función Salida. Se especifican los datos de salida del algoritmo. Proceso. Se especifica cualquier tipo
Símbolo Función Salida. Se especifican los datos de salida del algoritmo. Proceso. Se especifica cualquier tipo

Función

Salida. Se especifican los datos de salida del algoritmo.

Proceso. Se especifica cualquier tipo de operación expresión matemáticas (calculo, almacenamiento, transferencia)

Conector. Enlaza diferentes partes del diagrama de flujo

Fechas. Indican el flujo de datos en el algoritmo

Diagrama NassiSchneiderman (NS)

El diagrama NS también conocido como diagrama Chapin, es semejante al DF pero sin flechas de dirección, por lo cual utiliza un rectángulo para representar los pasos del algoritmo.

Pseudocódigo

Esta técnica es una combinación entre lenguaje natural y lenguaje de alto nivel.

Inicio

Acción 1

Acción 2

Acción n

Fin

III.2.

Reglas para la construcción de diagramas

Diagramas de Flujo

Los diagramas de flujo comienzan con el símbolo de inicio/fin indicando el comienzo del diagrama:

Y terminan con el símbolo de inicio/fin indicando el término del diagrama:

33

Inicioindicando el comienzo del diagrama: Y terminan con el símbolo de inicio/fin indicando el término del

Finindicando el comienzo del diagrama: Y terminan con el símbolo de inicio/fin indicando el término del

Entre los símbolos de inicio/fin se ponen las acciones (asignación, proceso, entrada, salida, etc.) que forman parte del diagrama.

Inicio Acción 1 Acción 2 Acción n Fin
Inicio
Acción 1
Acción 2
Acción n
Fin

Diagrama NassiSchneiderman (NS)

Para este tipo de diagrama se utiliza un rectángulo, en el cual comienza con la leyenda Inicio y termina con la leyenda Fin. Entre estos dos recuadros de desarrolla el contenido del algoritmo.

Inicio

Inicio

Inicio

Acción 1

Acción 2 Acción n Fin

Acción 2

Acción 2 Acción n Fin

Acción n

Fin

Fin

Fin

Ejercicio:

Definición del problema: Obtenga la superficie y la longitud de un circulo.

34

Análisis:

Entrada: Radio Salida: Superficie, Longitud Algoritmo:

Diagrama de Flujo

InicioSalida: Superficie, Longitud Algoritmo: Diagrama de Flujo Leer Radio Superficie= π *Radio^2 Longitud=2* π *Radio

Leer Radio
Leer Radio

Superficie= π *Radio^2

Longitud=2* π *Radio Superficie, Longitud Fin
Longitud=2* π *Radio
Superficie,
Longitud
Fin

III.3.

Pseudocódigo

Diagrama NS

Inicio

Inicio

Inicio

Leer Radio

Superficie= π *Radio^2 Longitud=2* π *Radio Imprimir Superficie, Longitud Fin

Superficie= π *Radio^2

Longitud=2* π *Radio

Imprimir

Superficie, Longitud

Fin

Fin

Fin

En este tipo de representación se comienza con la leyenda Inicio y termina con Fin y entre los términos de comienzo y terminación se escribe el desarrollo del algoritmo.

Inicio Leer Radio Superficie=*Radio^2 Longitud=2**Radio Imprimir Superficie, Longitud

Fin

35

Ejercicios:

1. Calcule el salario neto de un trabajador a partir de la lectura del nombre, horas trabajadas, precio por hora y el cálculo de impuesto son el 25% del salario bruto (horas trabajadas por precio por hora). Como resultado final imprima el nombre, salario bruto, impuestos y salario neto.

2. Obtenga la superficie de un triangulo

3. Obtenga el total a pagar aplicando un descuento del 5%.

4. Obtenga los valores de X 1 y X 2 para resolver ecuaciones de segundo grado:

5. De los valores a y b, obtenga cuantas veces cabe el valor b en el valor a.

6. Obtenga la suma de los números del 1 al 100.

7. Diseñar el algoritmo que lea el valor correspondiente a una distancia en millas marinas y las escriba expresadas en metros. Sabiendo que 1 milla marina equivale a 1852 metros.

8. Elabore un algoritmo que lea dos valores y los intercambie.

Estructura selectivas

Las estructuras selectivas se utilizan para forma decisiones lógicas. En las estructuras se evalúa una condición y en función del resultado se puede realizar una acción u otra.

Diagrama de Flujo Verdadero Falso Condición Acción 1 Diagrama NS Verdadero Acción 1 Falso Condición

Diagrama de Flujo

Verdadero Falso Condición Acción 1
Verdadero
Falso
Condición
Acción 1
Diagrama de Flujo Verdadero Falso Condición Acción 1 Diagrama NS Verdadero Acción 1 Falso Condición

Diagrama NS

Verdadero
Verdadero

Acción 1

Falso
Falso
Verdadero Acción 1 Falso Condición

Condición

Verdadero Acción 1 Falso Condición

Estructuras selectivas simples

36

Pseudocódigo

Si Condición

Acción 1

Fin Si

9. La tienda “Artículos de Limpieza S.A. de C.V.” realiza un descuento del 5% a todas las compras mayores a 2500.00 pesos. Elabore un algoritmo que resuelva este problema.

10. La empresa “Electrónica Digital” desea un programa que determine si una persona es solvente económicamente en base a los ingresos y los gastos; si los ingresos son mayores a los gastos la persona es solvente. Elabore un algoritmo que resuelva este problema.

11. En la clínica “Salud Eterna” desean un programa que determine si una persona está enferma en base a su temperatura corporal; si la temperatura corporal es mayor a 36.5 el programa debe mandar un mensaje que diga “Enfermo”.

Diagrama de Flujo Verdadero Falso Condición Acción 1 Acción 2 Diagrama NS Verdadero Falso Condición

Diagrama de Flujo

Verdadero Falso Condición Acción 1 Acción 2
Verdadero
Falso
Condición
Acción 1
Acción 2
de Flujo Verdadero Falso Condición Acción 1 Acción 2 Diagrama NS Verdadero Falso Condición Acción 1
de Flujo Verdadero Falso Condición Acción 1 Acción 2 Diagrama NS Verdadero Falso Condición Acción 1

Diagrama NS

Verdadero
Verdadero
Falso
Falso

Condición

Acción 1
Acción 1
Acción 2
Acción 2
Falso Condición Acción 1 Acción 2 Estructuras selectivas dobles Pseudocódigo Si Condición

Estructuras selectivas dobles

Pseudocódigo

Si Condición Acción 1 En otro caso Acción 2 Fin Si

1 Acción 2 Estructuras selectivas dobles Pseudocódigo Si Condición Acción 1 En otro caso Acción 2

12. Escriba un algoritmo que calcule el total a pagar en una tienda departamental, si la compra excede de 15,000 pesos se concede un descuento del 10%, en caso contrario el descuento es del 5%.

13. Elabora un algoritmo que en base a dos números imprima el mayor.

37

14. Elabore un algoritmo que en base a tres números imprima el mayor.

15. Elabore un algoritmo que en base a cuatro números, los imprima en forma descendente.

Estructuras de selección múltiple

En la vida se presentan problemas en los cuales presentan más de dos alternativas como posibilidades y eso se soluciona con estructuras de selección múltiple.

Diagrama de Flujo

Selector n 1 2 Acción 2 … Acción n
Selector
n
1
2
Acción 2
Acción n

Otro Caso

Acción 1
Acción 1
Acción OC
Acción OC

Diagrama NS

Selector Otro Verdadero Caso 1 2 n Acción 1 Acción 2 Acción n Acción OC
Selector
Otro
Verdadero
Caso
1
2
n
Acción 1
Acción 2
Acción n
Acción OC

Pseudocódigo

Según sea Selector hacer 1: Acción 1 2: Acción 2

n: Acción n En otro caso:

Acción OC

Fin Según

16. Elabore

un

algoritmo

que

en

base

al

número

del

correspondiente como cadena de caracteres.

38

mes

imprima

el

mes

17. Elabore un algoritmo que en base a un número (entre 10 y 20) imprima su valor con letra.

18. Elabore un algoritmo que en base al número de día de la semana imprima que día es.

Estructuras de repetición

Cuando se requiere que un conjunto de instrucciones se repita varias veces se utiliza las estructuras de repetición.

Diagrama de Flujo For/Next While/Mientras Inicio No Falso Condición Condición Proceso Verdadero Inc/Dec Si
Diagrama de Flujo
For/Next
While/Mientras
Inicio
No
Falso
Condición
Condición
Proceso
Verdadero
Inc/Dec
Si
Proceso
Repeat/Repite
Proceso
Verdadero
Condición
Falso
Diagrama NassiSchneiderman (NS)
For/Next
While/Mientras
Inicio
While Condición
Proceso
Proceso
Inc/Dec

39

Repeat/Repite Proceso Repeat Condición Pseudocódigo For/Next While/Mientras Para I = VI Hasta VF [Inc Valor/Dec
Repeat/Repite
Proceso
Repeat Condición
Pseudocódigo
For/Next
While/Mientras
Para I = VI Hasta VF [Inc Valor/Dec Valor]
Proceso
Fin Para
Mientras Condición
Proceso
Fin Mientras
Repeat/Repite
Repite
Proceso
Hasta Condición

19. Elabore un algoritmo que lea 10 calificaciones e imprima el promedio.

20. Elabore un algoritmo que lea dos números e imprima la serie de números que existe entre el número menor a el número mayor.

21. Elabore un algoritmo que lea una serie de valores e imprima el valor más grande de la serie. El fin de la serie esta denotado por el valor 9999.

22. Calcular la media de una serie de números positivos. El valor cero como entrada indican que se ha finalizado la serie de números positivos.

Producto de Aprendizaje 3.1: De los siguientes problemas elabore el análisis y algoritmo (20 puntos).

1. Obtenga el cuadrado de 243

2. Obtenga el perímetro y la superficie de un cuadrado

3. Obtenga la suma de dos números

4. Obtenga el perímetro de un rectángulo

5. Obtenga la hipotenusa de un triangulo rectángulo

6. Diseñar el algoritmo que pida por teclado dos números enteros y muestre su suma, resta, multiplicación, división y el resto (módulo) de la división. Si la

40

operación no es conmutativa, también se mostrará el resultado invirtiendo los operadores.

7.

Lea las horas, minutos y segundos; calcule el tiempo total en segundos.

8.

Suponiendo que una paella se puede cocinar exclusivamente con arroz y gambas, y que para cada cuatro personas se utiliza medio kilo de arroz y un cuarto de kilo de gambas, escribir un algoritmo que pida por pantalla el número de comensales para la paella, el precio por kilo de los ingredientes y muestre las cantidades de los ingredientes necesarios y el costo de la misma.

9.

Obtenga el área y el volumen de un cilindro

 

10.

Dado x grados Celsius obtenga su conversión a grados Fahrenheit

11.

Obtenga el área de un triangulo en función de las longitudes de sus lados:

Donde:

12.

Dado x numero de metros convertirlos a pies y pulgadas (1 metro = 39.37 pulgadas, 1 pie = 12 pulgadas)

13.

Una tonelada métrica equivale a 35,273.92 onzas. Elabore un algoritmo que lea el peso de un paquete de cereal para el desayuno en onzas y que obtenga como salida el número de cajas necesarias para llenar una tonelada métrica de cereal, así como deberá proporcionar cuantas onzas sobran. El algoritmo deberá permitir al usuario repetir este proceso las veces que desee.

14.

Dado tres números, determinar si la suma de cualquier pareja de ellos es igual al tercer número. Si se cumple la condición, escribir “iguales” en caso contrario “Distintos”.

15.

Elabore un algoritmo lea 3 calificaciones de la materia de Fundamentos de Programación y determine si el alumno “Aprobado” o “Reprobado” en base a su promedio.

16.

Elabore un algoritmo que en base a un valor numérico determine si es Alto o Bajo. Si el número es mayor a 100 imprima Alto, en caso contrario imprima Bajo.

17.

Realice un algoritmo que calcule el monto a pagar por el servicio de estacionamiento, teniendo en cuenta que por la primera hora o fracción de estadía se tiene una tarifa de 10 pesos y las restantes tienen un costo de 6 pesos. Se tiene como datos: hora de entrada, hora de salida (formato militar).

41

18.

Desarrolle un algoritmo que permita convertir calificaciones numéricas, según la siguiente tabla:

A = 10, B =9, C = 8, D = 7, E = 6 y F= 5 a 0.

19. Elabore un algoritmo que lea 4 números e imprima el mayor de ellos.

20. Desarrolle un algoritmo que permita determinar a partir de un número de días, ingresado por teclado, ¿Cuántos años, meses, semanas y días; constituyen el número de días proporcionado?

21. Elabore un algoritmo que lea un número e imprima sus dígitos en forma individual:

Ejemplo: Dame un número? 7539

9

3

5

7

22. Obtenga el salario de un obrero en base a las horas extras trabajadas. El salario se calcula sumando al sueldo base las horas extra. El sueldo base es equivale a $450.00 y las horas extra se calculan en base a la siguiente tabla:

1 a 10 hrs

$11.50

11

a 12 hrs

$ 13.00

13

a 20 hrs

$ 14.00

21

y más hrs

$ 15.00

23. Elabore un algoritmo que lea un número decimal e imprima su representación en binario.

24. Desarrolle un algoritmo para la empresa Constructora Tecnovivir Casas C.A., que le permita calcular e imprimir la nómina para un total de 50 obreros a quien se le paga por horas trabajadas, la cual se paga a 50 pesos.

25. Elabore un algoritmo que lea un número e imprima su factorial. Ejemplo: 5 = 5 * 4 * 3 * 2 * 1 = 120

Nota: El factorial de 0 (cero) por notación es 1.

42

III.4.

Tipos de datos y expresiones

Tipos de datos

Existen dos grupos de tipos de datos:

Simples (básicos, primitivos, sin estructura)

Compuestos (Estructurados, Complejos)

Dentro de los tipos de datos Simples se encuentran:

Numéricos

o

Enteros 5, 15, 1350, 50000, etc.

o

Punto Flotante (Reales) 0.00008, 3.7452, 8.72, 370000.0, etc. En aplicaciones científicas se requiere una notación especial para manejar números muy grandes (como la masa de la tierra) o muy pequeños (como la masa de un electrón) esta notación es llamada notación exponencial o notación científica:

367 520 100 000 000 000 00

3.675201E+20

0.000 000 000 030 257

3.0257E11

Lógicos (Booleanos) Los datos tipo lógico es aquel que solo puede tomar dos valores:

Verdadero (True) Falso (False)

Carácter (Char) El tipo de datos carácter es un conjunto finito y ordenado de caracteres. Un dato tipo carácter contiene un solo carácter. Un carácter se delimita por comillas sencillas:

‘A’, ‘a’, ‘1’, ‘$’, etc.

Los grupos de caracteres son los siguientes:

o

Caracteres alfabéticos: ‘A’, ‘B’,…,’Z’, ‘a’, ‘b’,…,’z’

o

Caracteres numéricos: ‘0’, ‘1’, ‘2’,…,’9’

o

Caracteres Especiales: +, , /, *, ^, ., ;, <, >, $, #, etc.

Y dentro los Compuestos o Estructurados se encuentran:

43

Cadena de caracteres (String) Una cadena de caracteres es una sucesión de caracteres que se encuentra delimitado por comillas dobles:

“Hola Mundo” “30 de septiembre de 2010” “Esta es una cadena de caracteres llamada también String”

Clases (Class)

Arreglos (Array)

Registros (Records)

Listas (LinkerList)

Conjuntos (Set)

Árboles (Tree)

Grafos (Graph)

Abstractos (Abstract)

Archivos (Files)

En la siguiente tabla presentamos los 8 tipos de dato primitivos de Java, el número de bits que ocupan y el rango de valores que pueden tomar.

de bits que ocupan y el rango de valores que pueden tomar. Tipo Tamaño en bits
de bits que ocupan y el rango de valores que pueden tomar. Tipo Tamaño en bits

Tipo

Tamaño en bits

Rango de valores

 

boolean

1

true o false Nota: El No. de bits puede variar según la

 

plataforma

 

char

16

byte

8

\u0000’ hasta ‘\uFFFF' Conjunto Unicode de ISO 128 a +127

short

16

2 7 a 2 7 1 32,768 a +32,767

int

32

2 15 a 2 15 1 2,147,483,648 a +2,147,483,647

 

2 31 a 2 31 1 9,223,372,036,854,775,808 a

long

64

+9,223,372,036,854,775,807

 

2 63 a 2 63 1

 
 

Rango negativo:

3.4028234663852886E+38 hasta

1.40129846432481707E45

 

float

32

Rango positivo:

 

1.40129846432481707E45 hasta

3.4028234663852886E+38

 
 

Rango negativo:

1.797693134862157E308 hasta

double

64

4.94065645841246544E324

 

Rango positivo:

4.94065645841246544E324 hasta

1.797693134862157E308

double 64 4.94065645841246544E324   Rango positivo: 4.94065645841246544E324 hasta 1.797693134862157E308 44

44

Tokens elementos léxico de los programas

Existen 5 clase de tokens: identificadores, palabras reservadas, literales, operadores y otros.

Identificadores

Los identificadores pueden representar variables, constantes, métodos, nombres de archivos, etc.

Diagrama de contexto de los identificadores:

archivos, etc. Diagrama de contexto de los identificadores: Regla para formar un identificador: 1. Debe comenzar

Regla para formar un identificador:

1. Debe comenzar por una letra

2. Después de la 1er. Letra puede contener letras, dígitos o guión de piso

3. No están permitidos los espacios en blanco

4. No deben formar palabras reservadas

5. Java es sensibles a las mayúsculas y minúsculas

6. En Java la longitud de los identificadores no tiene límite.

Expresiones

Las expresiones son combinaciones de constantes, variables, operadores, operandos, paréntesis, funciones, etc.

Constante Función
Constante
Función
operandos, paréntesis, funciones, etc. Constante Función Operando V a r i a b l e a

Operando

paréntesis, funciones, etc. Constante Función Operando V a r i a b l e a 
paréntesis, funciones, etc. Constante Función Operando V a r i a b l e a 

Variable

a (b 3 ) c

paréntesis, funciones, etc. Constante Función Operando V a r i a b l e a 

Operador

45

Expresiones aritméticas

Las expresiones aritméticas son análogas a las expresiones matemáticas.

Operadores aritméticos:

+

Suma

Resta

*

Multiplicación

/

División

%

Modulo

Ejemplos:

5

3

5

17/2 = 8 17/2.0 = 8.5 (double) 17/2 = 8.5 20 % 7 = 6

+ 3 = 8 2 = 1 * 3 = 15

Transforme las siguientes formulas en expresiones computacionales:

46

III.5.

Estructuras lógicas

Otro tipo de expresiones son las lógicas, o booleanas, cuyo valor puede ser true (verdadero) o false (falso) y se denominan expresiones booleanas en honor a matemático George Boole, quien desarrollo el álgebra booleana.

Mediante los operadores relacionales se pueden hacer comparaciones entre valores tipo numérico y carácter.

Por ejemplo:

3

0

< 6 V > 9 F

8 <= 5 F

Operadores Lógicas

A = 3 y B = 4

A>B F A<B V A<=B V B==4 V

X=2

Y = 3 X>Z F Y<X F Z!=X V

Z = 9

Java cuenta con los operadores lógicos para formar condiciones más complejas. Los operadores lógicos son:

condiciones más complejas. Los operadores lógicos son: Operador Descripción Corto Circuito && And
condiciones más complejas. Los operadores lógicos son: Operador Descripción Corto Circuito && And

Operador

Descripción

Corto Circuito

&&

And condicional

Si

||

Or condicional

&

And lógico

 

No

|

Or lógico

 

^

Or exclusivo

   

!

Negación

   

Tablas de verdad de los operadores lógico:

&& And Condicional

verdad de los operadores lógico: && And Condicional A B A && B false false false
verdad de los operadores lógico: && And Condicional A B A && B false false false

A

B

A && B

false

false

false

false

true

false

true

false

false

true

true

true

Con un operador && (And condicional) será true si y solo si todas sus entradas son true.

47

|| Or Condicional

|| Or Condicional A B A || B false false false false true true true false
|| Or Condicional A B A || B false false false false true true true false

A

B

A || B

false

false

false

false

true

true

true

false

true

true

true

true

Con un operador || (Or condicional) será true si por lo menos una de sus entradas es true. Operadores & And lógico y | Or lógico funcionan de manera idéntica a los operadores && And condicional y || Or condicional, con la excepción de de que los operadores lógicos siempre se evaluaran todas las expresiones (es decir, no realizan una evaluación de corto circuito).

^ Or Exclusivo

realizan una evaluación de corto circuito). ^ Or Exclusivo A B A ^ B false false
realizan una evaluación de corto circuito). ^ Or Exclusivo A B A ^ B false false

A

B

A ^ B

false

false

false

false

true

true

true

false

true

true

true

false

Con un operador ^ (Or exclusivo) es true si y solo si una de sus operandos es true y el otro es false

! Negación

una de sus operandos es true y el otro es false ! Negación A !A false
una de sus operandos es true y el otro es false ! Negación A !A false

A

!A

false

true

true

false

Por medio del operador ! (Negación) se invierte el significado de la condición. A diferencia de los operadores &&, ||, &, | y ^ que son operadores binarios, el operador ! es unario.

Por ejemplo: Si A=3, B=2 y C=7

a) (A>5) || (B<C)

b) (A!=B) && (B==C)

c) (A>=B) & (C>=5)

d) !(A<=9) | (5>B)

V

Reglas de prioridad

Las expresiones que tienen dos o más operadores requieren de reglas matemáticas que permitan determinar el orden de las operaciones, a estas reglas se les llama reglas de prioridad.

48

Prioridad Operadores Asociatividad 1 () Agrupación   ID 2 (tipo) Cast   DI 3 *
Prioridad Operadores Asociatividad 1 () Agrupación   ID 2 (tipo) Cast   DI 3 *

Prioridad

Operadores

Asociatividad

1

() Agrupación

 

ID

2

(tipo) Cast

 

DI

3

*

/

%

ID

4

+

 

ID

5

<

<=

>

>=

ID

6

==

!=

ID

7

&

 

ID

8

^

 

ID

9

|

ID

10

&&

 

ID

11

||

 

ID

12

=

*=

/= %=

+=

=

DI

||   ID 12 = *= /= %= += = DI ¿Cuál es el valor de

¿Cuál es el valor de las siguientes expresiones?

a) 15 * 14 3 *7

b) (24 + 2 * 6) / 4

c) 3 + 4 * (8 * (4 (9 + 31) / 4))

d) 15 + 3 10 40 / (23 % 6)

Estructura general de un programa en Java

import Importación de paquetes con clases predefinidas.

public class NombreDeLaClase {

Declaración de variables miembro de la clase public static tipo main (String[] args) {

Declaración de variables locales Sentencias de la función main() [return tipo;]

}

acceso static tipo NombreDelMétodo1 (Lista de Argumentos) {

Declaración de variables del método 1 Sentencias del método 1 [return tipo;]

}

49

acceso static tipo NombreDelMétodo2 (Lista de Argumentos) {

Declaración de variables del método 2 Sentencias del método 2 [return tipo;]

}

}

Variables

Una variable es un identificador donde se almacena un valor con un cierto tipo de dato. Las variables de tipos básicos almacena datos del tipo primitivos, las variables de clases o variables de objetos, hacen referencias a objetos. Una constante es una variable cuyo contenido no puede ser modificado.

Declaración de variables

Ejemplo:

int x, y; float a, b, c; char letra1;

de variables Ejemplo: int x, y; float a, b, c; char letra1; Inicialización de variables tipo

Inicialización de variables

tipo

identificador

,
,
letra1; Inicialización de variables tipo identificador , ; Una de las variantes que se puede hacer
letra1; Inicialización de variables tipo identificador , ; Una de las variantes que se puede hacer
;
;

Una de las variantes que se puede hacer en una declaración es inicializar una variable con un valor a ser declarada.

tipo identificador = ,
tipo
identificador
=
,
con un valor a ser declarada. tipo identificador = , Expresión Ejemplos: int x, y =

Expresión

valor a ser declarada. tipo identificador = , Expresión Ejemplos: int x, y = 0; float
valor a ser declarada. tipo identificador = , Expresión Ejemplos: int x, y = 0; float

Ejemplos:

int x, y = 0; float a, b, c = 100.0f; char letra1 = ‘A’;

Se pueden declarar una variable en tres lugares:

En una clase, como miembro de clase

Al principio de un método o bloque de código

En el punto de utilización.

50

;
;

Ejemplo de las tres formas de declarar una variable:

Ejemplo de las tres formas de declarar una variable: Objetos que permiten E/S por consola. En

Objetos que permiten E/S por consola.

En Java, la entrada y salida se lee y escribe en flujos (streams). La fuente básica de entrada de datos es el teclado y la fuente de salida es pantalla. La clase System define dos referencias a objetos static para la gestión de entrada (in) y salida (out).

Salida (System.out)

El objeto out definida en la clase System está asociado con el flujo de salida, que dirige los datos a consola y permite visualizarlos en pantalla, por ejemplo:

System.out.println(“Esta es una cadena”); Se visualizará en pantalla: Esta es una cadena.

51

Descripción del método print:

void print(cadena) Despliega una cadena en pantalla. void println(cadena) Despliega una cadena en pantalla y al final un carácter de nueva línea (‘\n’).

Con estos métodos se puede escribir cualquier cadena o dato de los tipos primitivos, como por ejemplo:

System.out.println( "Valores de las Variables: \n" + "a=" + a +"\n" + "b=" + b +"\n" + "x=" + x +"\n" +

"y=" + y

);

Entrada (System.in)

Por medio de un objeto Scanner se puede leer datos desde un programa, esta clase pertenece al paquete java.util y debe ser importada. Para poder utilizarlo instancie un objeto de la siguiente forma:

Scanner identificador = new Scanner (System.in);

Esta expresión crea un objeto Scanner y determina que leerá los datos desde teclado mediante los siguientes métodos:

identificador.nextBoolean()

identificador.nextByte()

identificador.nextShort()

identificador.nextInt()

identificador.nextLong()

identificador.nextFloat()

identificador.nextDouble()

identificador.next()

identificador.nextLine()

Para Booleanos Para números Enteros tipo byte Para números Enteros tipo short Para números Enteros tipo int Para números Enteros tipo long Para números flotantes Para números doubles Para el siguiente token Para una línea

52

Recordemos el siguiente ejemplo: Obtenga la superficie y la longitud de un círculo. Análisis: Entrada:
Recordemos el siguiente ejemplo: Obtenga la superficie y la longitud de un círculo. Análisis: Entrada:

Recordemos el siguiente ejemplo: Obtenga la superficie y la longitud de un círculo.

Análisis:

Entrada: Radio Salida: Cálculos de Superficie y Longitud Algoritmo:

53

Inicio Leer Radio Superficie= π *Radio^2 Longitud=2* π *Radio Superficie, Longitud Fin
Inicio
Leer
Radio
Superficie= π *Radio^2
Longitud=2* π *Radio
Superficie,
Longitud
Fin
*Radio^2 Longitud=2* π *Radio Superficie, Longitud Fin El siguiente ejemplo lee dos números enteros, los suma

El siguiente ejemplo lee dos números enteros, los suma y muestra el resultado mediante ventanas de Windows.

Fin El siguiente ejemplo lee dos números enteros, los suma y muestra el resultado mediante ventanas

54

Las instrucciones: num1 = Integer.parseInt(primerNumero); num2 = Integer.parseInt(segundoNumero); Convierten los datos
Las instrucciones: num1 = Integer.parseInt(primerNumero); num2 = Integer.parseInt(segundoNumero); Convierten los datos
Las instrucciones: num1 = Integer.parseInt(primerNumero); num2 = Integer.parseInt(segundoNumero); Convierten los datos

Las instrucciones:

num1 = Integer.parseInt(primerNumero); num2 = Integer.parseInt(segundoNumero);

Convierten los datos tipo String a tipo int y en caso de que ocurra una un error envían una excepción de formato de numérico.

55

El método showMessageDialog de la clase JOptionPane tiene varias formas de enviarles parámetros:

1.

public static void showMessageDialog(Component componentePadre,

Donde los parámetros:

Object Mensaje)

componentePadre

Determina la ventana en que se desplegara el mensaje, si es null,

Mensaje

se despliega en la ventana por defecto. Objeto a desplegar

2.

public static void showMessageDialog(Component componentePadre,

Donde los parámetros:

Object Mensaje, String Titulo, int TipodeMensaje)

componentePadre

Determina la ventana en que se desplegara el mensaje, si es null,

Mensaje

se despliega en la ventana por defecto. Objeto a desplegar

Titulo

Cadena de caracteres de la caja de dialogo

TipodeMensaje

Valor entero que determina que imagen se despliega según la siguiente tabla:

determina que imagen se despliega según la siguiente tabla: Tipo de cuadro de diálogo de mensaje
determina que imagen se despliega según la siguiente tabla: Tipo de cuadro de diálogo de mensaje

Tipo de cuadro de diálogo de mensaje

Icono

Descripción

Tipo de cuadro de diálogo de mensaje Icono Descripción JOptionPane.ERROR_MESSAGE Ventana de Error

JOptionPane.ERROR_MESSAGE

JOptionPane.ERROR_MESSAGE Ventana de Error

Ventana de Error

JOptionPane.INFORMATION_MESSAGE

JOptionPane.INFORMATION_MESSAGE Ventana Informativa

Ventana Informativa

 
  Ventana de

Ventana de

JOptionPane.WARNING_MESSAGE

Advertencia

JOptionPane.QUESTION_MESSAGE

JOptionPane.QUESTION_MESSAGE

Ventana de introducción de datos o selección de alguna alternativa

Advertencia JOptionPane.QUESTION_MESSAGE Ventana de introducción de datos o selección de alguna alternativa 56

56

Tipo de cuadro de diálogo de mensaje Icono Descripción JOptionPane.PLAIN_MESSAGE Sin Icono Ventana estándar Ejercicios:
Tipo de cuadro de diálogo de mensaje Icono Descripción JOptionPane.PLAIN_MESSAGE Sin Icono Ventana estándar Ejercicios:

Tipo de cuadro de diálogo de mensaje

Icono

Descripción

Tipo de cuadro de diálogo de mensaje Icono Descripción JOptionPane.PLAIN_MESSAGE Sin Icono Ventana estándar Ejercicios:

JOptionPane.PLAIN_MESSAGE

Sin Icono

Ventana estándar

JOptionPane.PLAIN_MESSAGE Sin Icono Ventana estándar Ejercicios: Elabore los siguientes programa en Java 1.
JOptionPane.PLAIN_MESSAGE Sin Icono Ventana estándar Ejercicios: Elabore los siguientes programa en Java 1.
JOptionPane.PLAIN_MESSAGE Sin Icono Ventana estándar Ejercicios: Elabore los siguientes programa en Java 1.

Ejercicios: Elabore los siguientes programa en Java

1. Calcule el salario neto de un trabajador a partir de la lectura del nombre, horas trabajadas, precio por hora y el cálculo de impuesto son el 25% del salario bruto (horas trabajadas por precio por hora). Como resultado final imprima el nombre, salario bruto, impuestos y salario neto.

2. Obtenga la superficie de un triangulo

57

3.

Obtenga el total a pagar aplicando un descuento del 5%.

4. Obtenga los valores de X 1 y X 2 para resolver ecuaciones de segundo grado:

5. De los valores a y b, obtenga cuantas veces cabe el valor b en el valor a.

6. Obtenga la suma de los números del 1 al 100.

7. Diseñar el algoritmo que lea el valor correspondiente a una distancia en millas marinas y las escriba expresadas en metros. Sabiendo que 1 milla marina equivale a 1852 metros.

8. Elabore un algoritmo que lea dos valores y los intercambie.

Sintaxis de la selección simple:

Diagrama de Flujo Verdadero Falso Condición Acción 1 Diagrama NS Verdadero Falso Condición Acción 1

Diagrama de Flujo

Verdadero Falso Condición Acción 1
Verdadero
Falso
Condición
Acción 1
Diagrama de Flujo Verdadero Falso Condición Acción 1 Diagrama NS Verdadero Falso Condición Acción 1
Diagrama de Flujo Verdadero Falso Condición Acción 1 Diagrama NS Verdadero Falso Condición Acción 1

Diagrama NS

Verdadero
Verdadero
Falso
Falso

Condición

Acción 1

Acción 1
Diagrama NS Verdadero Falso Condición Acción 1 Estructuras selectivas simples Pseudocódigo Si Condición

Estructuras selectivas simples

Pseudocódigo

Si Condición

Acción 1

Fin Si

Falso Condición Acción 1 Estructuras selectivas simples Pseudocódigo Si Condición Acción 1 Fin Si

if (Expresión) Acción;

o

if (Expresión)

Acción;

Nota:

desea poner más de una sentencia debe utilizar un bloque de código ({

El if solo soporta una instrucción, si

if (condición) {acción1; acción2,…,acción n} ;

o

58

if (condición) {

acción1;

acción 2;

.

.

acción n;

}

9. La tienda “Artículos de Limpieza S.A. de C.V.” realiza un descuento del 5% a todas las compras mayores a 2500.00 pesos. Elabore un algoritmo que resuelva este problema.

10. La empresa “Electrónica Digital” desea un programa que determine si una persona es solvente económicamente en base a los ingresos y los gastos; si los ingresos son mayores a los gastos la persona es solvente. Elabore un algoritmo que resuelva este problema.

11. En la clínica “Salud Eterna” desean un programa que determine si una persona está enferma en base a su temperatura corporal; si la temperatura corporal es mayor a 36.5 el programa debe mandar un mensaje que diga “Enfermo”.

Sintaxis de la selección doble:

Diagrama de Flujo Verdadero Falso Condición Acción 1 Acción 2 Diagrama NS Verdadero Falso Condición

Diagrama de Flujo

Verdadero Falso Condición Acción 1 Acción 2
Verdadero
Falso
Condición
Acción 1
Acción 2
de Flujo Verdadero Falso Condición Acción 1 Acción 2 Diagrama NS Verdadero Falso Condición Acción 1

Diagrama NS

Verdadero
Verdadero
Falso
Falso

Condición

Acción 1
Acción 1
Acción 2
Acción 2

Estructuras selectivas dobles

Pseudocódigo

Si Condición Acción 1 En otro caso Acción 2 Fin Si

59

if (condición) acción 1;

else

acción 2;

if con más de una sentencia y usando un boque de código:

if (condición) {

 

acción1;

acción 2;

acción n;

}

else {

 

acción1’;

acción 2’;

acción n’;

}

12. Escriba un algoritmo que calcule el total a pagar en una tienda departamental, si la compra excede de 15,000 pesos se concede un descuento del 10%, en caso contrario el descuento es del 5%.

13. Elabora un algoritmo que en base a dos números imprima el mayor.

14. Elabore un algoritmo que en base a tres números imprima el mayor.

15. Elabore un algoritmo que en base a cuatro números, los imprima en forma descendente.

Sintaxis de Selección múltiple:

Diagrama de Flujo Otro Caso Selector n 1 2 Acción 1 Acción 2 … Acción
Diagrama de Flujo
Otro Caso
Selector
n
1
2
Acción 1
Acción 2
Acción n
Acción OC

60

Diagrama NS

Selector Otro Verdadero Caso 1 2 n Acción 1 Acción 2 Acción n Acción OC
Selector
Otro
Verdadero
Caso
1
2
n
Acción 1
Acción 2
Acción n
Acción OC

Pseudocódigo

Según sea Selector hacer 1: Acción 1 2: Acción 2

n: Acción n En otro caso:

Acción OC

Fin Según

switch (selector) { case constante 1:

Acción 1;

break; case constante 2:

Acción 2;

 

break;

 

default:

Acción n;

}

16. Elabore

un

algoritmo

que

en

 

switch (letra) { case ‘a’: case’A’: case ‘á’: case ‘A’:

 
 

case ‘e’: case’E’: case ‘é’: case ‘É’:

case ‘i’: case’I’: case ‘í’: case ‘Í’:

case ‘o’: case’O’: case ‘ó’: case ‘Ó’:

case ‘u’: case’U’: case ‘ú’: case ‘Ú:

System.out.println(letra + “ es vocal”);

 

}

base

al

número

del

mes

imprima

el

mes

correspondiente como cadena de caracteres.

17. Elabore un algoritmo que en base a un número (entre 10 y 20) imprima su valor con letra.

18. Elabore un algoritmo que en base al número de día de la semana imprima que día es.

61

Sintaxis de los ciclos Java:

Diagrama de Flujo For/Next While/Mientras Inicio No Falso Condición Condición Proceso Verdadero Inc/Dec Si
Diagrama de Flujo
For/Next
While/Mientras
Inicio
No
Falso
Condición
Condición
Proceso
Verdadero
Inc/Dec
Si
Proceso
Repeat/Repite
Proceso
Verdadero
Condición
Falso
Diagrama NassiSchneiderman (NS)
For/Next
While/Mientras
Inicio
While Condición
Proceso
Proceso
Inc/Dec
Repeat/Repite
Proceso
Repeat Condición

62

Pseudocódigo

For/Next

Para I = VI Hasta VF [Inc Valor/Dec Valor] Proceso Fin Para

While/Mientras

Mientras Condición Proceso Fin Mientras

Repeat/Repite

Repite

Proceso

Hasta Condición

for

1. for (Inicialización; Condición; Incremento) sentencia;

2. for (Inicialización; Condición; Incremento) { sentencia 1; sentencia 2;

while

sentencia n;

}

1. while (condición) sentencia;

2. while (condición) { sentencia 1; sentencia 1;

}

sentencia n;

63

do while

1. do

sentencia; while (condición);

2. do {

sentencia 1;

sentencia 2;

sentencia n; } while (condición);

19. Elabore un algoritmo que lea 10 calificaciones e imprima el promedio.

20. Elabore un algoritmo que lea dos números e imprima la serie de números que existe entre el número menor a el número mayor.

21. Elabore un algoritmo que lea una serie de valores e imprima el valor más grande de la serie. El fin de la serie esta denotado por el valor 9999.

22. Calcular la media de una serie de números positivos. El valor cero como entrada indican que se ha finalizado la serie de números positivos.

Clase String La Clase String proporciona los mecanismos para el manejo de cadenas. Ya que no se puede cambiar el valor de un String una vez que se ha creado, esta clase se usa principalmente para analizar, manipular y obtener los valores de las cadenas. Aunque hay métodos que permiten modificar y añadir al valor de la cadena, estos métodos no modifican el String en si, sino que regresan un nuevo String con los valores deseado.

Métodos

Descripción

String()

Crea un Objeto String.

String(char ch[])

Crea un Objeto String basado en el arreglo ch[].

String(String s)

Crea un Objeto String con el valor s especificado.

64

Métodos

 

Descripción

char charAt(int pos)

Regresa el carácter que se encuentra en la posición pos.

 

Regresa un int donde:

< 0

El valor del String es menor al otroString.

int compareTo(String otroString)

0

El valor del String es igual a otroString El valor del String es mayor a otroString.

> 0

String concat(String str)

Regresa la concatenación del String y el str.

boolean equals(Object otroObjeto)

Regresa true si otroObjeto es String y tiene el mismo valor.

boolean equalsIgnoreCase(String OtroString)

Compara el String con otroString sin importar las mayúsculas y minúsculas.

int length()

Regresa la longitud del String

int indexOf(String str)

Regresa la posición donde se encuentra str en el String, en caso de no encontrarlo regresa -1.

int indexOf(String str, int ini)

Regresa la posición donde se encuentra str en el String comenzando en la posición ini.

int indexOf(char ch)

Regresa la primera posición donde se encuentra ch en el String.

int indexOf(char ch, int ini)

Regresa la primera posición donde se encuentra ch en el String comenzando en la posición ini.

int lastIndexOf(String str)

Regresa la última posición donde se encuentra str en el String.

int lastIndexOf(String str, int ini)

Regresa la última posición donde se encuentra str en el String que se encuentre antes de la posición ini.

65

Métodos

Descripción

String replace(char viejoch, char nuevoch)

Remplaza todos los caracteres viejoch por el carácter nuevoch.

String substring(int inicio, int fin)

Regresa una subcadena desde inicio hasta fin.

String substring(int inicio)

Regresa una subcadena desde inicio hasta final de la cadena.

String toLowerCase()

Regresa el valor del String en minúsculas

String toString()

Regresa el valor del String.

String toUpperCase()

Regresa el valor del String en mayúsculas.

String trim()

Regresa la String sin los espacios a la izq y der.

Static String valueOf(double d) static String valueOf(float f) static String valueOf(long l) static String valueOf(int i) static String valueOf(char ch) static String valueOf(boolean b)

Regresa un String que contiene el valor del tipo de dato especificado.

Static String valueOf(Object obj)

Regresa un String que representa una cadena del Object.

23. Elabore un programa que lea su nombre, lo imprima Normal y en forma de espejo. Ejemplo:

Dame tu nombre: José Pérez José Pérez-zeréP éseJ

24. Elabore un programa que lea su nombre y lo despliegue por palabra.

25. Elabore un programa que lea su nombre y despliegue cuantas vocales, literales y espacios tiene.

66

Producto de Aprendizaje 3.2: Desarrolle los siguientes programas en Java (20 puntos)

1. En la empresa Aceros Industrializados S.A. de C.V. los obreros recibieron un incremento del 7.6% retroactivo a 6 meses. Elabore un programa que en base el salario mensual despliegue el monto total de incremento por los 6 meses.

2. Elabore un programa que lea 4 números e imprima el mayor de ellos.

3. Elabore un programa que lea los tres parciales de la materia de Fundamentos de Programación y en base el Promedio despliegue si Acredita o No Acredita la materia.

4. Elabore un programa que lea un número e imprima sus dígitos en forma individual:

Ejemplo: Dame un número? 7539

9

3

5