guia instruccional de algoritmo ultima version 2006

41
Universidad Bolivariana de Venezuela Programa de Formación en Informática para la Gestión Social Fecha última actualización: Abril 2006 Guía de Algoritmo y Programación Autor: Prof. Wendy Leal Coautores: Prof. Alonso Salas

Upload: wendyleal

Post on 08-Jul-2016

227 views

Category:

Documents


3 download

DESCRIPTION

Describe lo que se imparte en la unidad curricular Algoritmo en UBV en el PFG-Informatica

TRANSCRIPT

Page 1: Guia Instruccional de Algoritmo Ultima Version 2006

Universidad Bolivariana de Venezuela Programa de Formación en Informática para la Gestión SocialFecha última actualización: Abril 2006

Guía de Algoritmo y Programación

Autor: Prof. Wendy Leal

Coautores: Prof. Alonso Salas

Prof. Alberto Parra

Maracaibo, Abril de 2006

Page 2: Guia Instruccional de Algoritmo Ultima Version 2006

INTRODUCCION

A lo largo de la humanidad, el hombre en su curiosidad, ha creado ciencias que le permiten conocer y estudiar fenómenos, dentro de esta curiosidad y para satisfacer necesidades planteadas surge la creación de Computadoras dando inicio a la era de la informática.

La informática, en sus comienzos, se utilizaba para simplificar las rutinas tediosas y repetitivas de los operadores en el área administrativa. Se notaron grandes avances en el rendimiento y productividad, lo que a su vez disminuyo los costes al automatizar los procesos.

Para automatizar un proceso se requiere conocer un conjunto de datos y reglas que formaran parte de la información básica para la creación de un programa. En la actualidad, los sistemas automatizados constituyen un apoyo significativo en la vida diaria del ser humano, por esta razón se hace necesario el aprendizaje de herramientas y técnicas que nos permitan automatizar procesos de manera eficiente.

Esta guía didáctica formar parte de un conjunto de herramientas que tendrá como finalidad el desarrollo de destrezas y habilidades de los estudiantes en el área de Programación. En este material, se encontrará instrucciones necesarias para que los estudiantes puedan trabajar de manera autónoma, practicando el autoaprendizaje.

Objetivo General:

Capacitar al estudiante en el desarrollo de las habilidades fundamentales de la programación y en las funcionalidades básicas de un lenguaje que soporte el paradigma orientado a objetos.

Objetivos específicos:- Definir los Algoritmos.- Estudiar los Fundamentos de la P.OO.- Conocer el concepto de datos y reconocer los tipos de datos simples

(Entero, real, carácter, Lógico) y los tipos de datos estructurados (Arreglos unidimensionales y multidimensionales).

- Identificar las estructuras elementales y tipos de operadores. Describir las Estructuras de control (secuencia, iteración, selección y búsqueda).

- Realizar operaciones elementales: lectura y escritura de datos.- Desarrollar programas simples en un entorno de lenguaje de O.O.- Definir la metodología orientada a objetos, diagramas de clase y

estrategias para la resolución de problemas.

Page 3: Guia Instruccional de Algoritmo Ultima Version 2006

Temario

Tema 1. Introducción a la Prog. Orientada a Objetos y Diagramas UML Definición de Algoritmo. Diagramas UML. Partes de un Programa. Diagramas de Flujo. Pseudocódigo. Definición de Clases, Objetos, Métodos. Propiedades de la P.O.O. (Herencia, polimorfismo y

encapsulamiento). Manejo de la plataforma eclipse para la Programación.

Tema 2. Tipos de Datos (simples). Definición y clasificación de los tipos de datos simples. Conocer y manipular los tipos de datos.

Verificación y compatibilidad de los datos. Especificar e implementar los tipos de datos (Elementales).

Tema 3. Estructuras elementales. Conocer la estructura de selección ó desición (IF-CASE) Implementar la estructura de selección simple y compuesta en la solución de problemas. Conocer las estructuras de Iteración (FOR-WHILE-DOWHILE). Implementar las diferentes estructuras de repetición en la solución de problemas. Reconocer las diferencias entre las estructuras de repetición. Implementar los diferentes tipos de estructuras.

Tema 4. Aplicaciones con Métodos. Identificar un método. Implementar métodos y clases. Conocer los diagramas de la Clase UML Tema 4. Aplicaciones con Clases. Identificar Herencias. Identificar e implementar las funciones. Identificar las acciones o procedimientos. Implementar la herencia. Tema 4. Aplicaciones con polimorfismo

Identificar e implementar problemas con polimorfismo.

Tema 5. Tipos de Datos (Estructurados) Identificar e implementar el uso de arreglos.

Conocer los tipos de arreglos (Unidimensionales y Bidimensionales) Implementar las operaciones sobre arreglos.

Page 4: Guia Instruccional de Algoritmo Ultima Version 2006

Proyecto Final.

Desarrollar un programa donde aplique las competencias adquiridas durante el semestre.

Page 5: Guia Instruccional de Algoritmo Ultima Version 2006

Algoritmo y Programación

Tema 1: Introducción a la Programación Orientada a Objetos

El Diseño de Programas es una tarea difícil y es un proceso creativo. No existe un conjunto de reglas, ni algoritmos para indicar como escribir programas.

Estrategias a realizar para la elaboración de un algoritmo:

Análisis del Problema. Diseño del Algoritmo. Verificación del Algoritmo.

La resolución del problema se expresara en un algoritmo: paso a paso para solucionar un problema dado.

Para obtener una solución mediante una computadora se debe traducir el algoritmo a un lenguaje de computador (Pascal, Basic, Cobol, Fortran, etc) .

Analisis del Problema:

Se compone de tres partes Definición del Problema Datos de Entrada. Datos de Salida.

Def. Algoritmo: secuencia de pasos – exento de ambigüedades – que lleva a la solución de un problema.

Ejemplos sencillos:

Una persona ha trabajado 38 horas en una semana dada y gana a razón de 1200 bs. La Hora. La tasa de impuestos del estado es del 15.5 % de su paga bruta. Se desea saber es la paga bruta, el descuento por impuesto y la paga neta del trabajador.

La información dada es:

Horas trabajadas: 38Impuestos: 15.5 %Paga/Hora: 1200 Bs.

CON ESTOS DATOS SE DEBE OBTENER TODA LA INFORMACION SOLICITADA

Los Algoritmos deben cumplir con las siguientes características:

Page 6: Guia Instruccional de Algoritmo Ultima Version 2006

A ) Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.B ) Un algoritmo debe estar definido, si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.C ) Un algoritmo debe estar finito, si se sigue un algoritmo se debe terminar en algún momento.Un programa debe constar de tres partes:

Entrada (Información dada al algoritmo)Procesos (Cálculos necesarios para encontrar la solución del problema)Salida (Respuesta dada por el algoritmo).

Diagramas de Flujo:

Un diagrama de Flujo utiliza símbolos estándar y en el que cada paso del algoritmo se visualiza dentro del símbolo adecuado y el orden en que estos pasos se ejecutan se indica conectándolos con flechas llamadas líneas de flujo porque indican el flujo lógico del programa.

Como alternativa al diagrama de flujo surgió el pseudo código que es un lenguaje algorítmico similar al español o al ingles pero más conciso y que permite una redacción rápida del algoritmo

Estructuras de decisión

Inicio / Fin

Proceso

Conector

Entrada/Salida

Page 7: Guia Instruccional de Algoritmo Ultima Version 2006

Cabecera del Programa:

La cabecera de un programa o algoritmo consta de las siguientes partes:

Nombre del programa o algoritmo Declaraciones de constantes, variables y tipos de datos definidos por el

usuario. Declaraciones de subprogramas (su situación en el programa depende

en el programa depende del lenguaje)

Ejemplo:

Breve Historia de los Lenguajes de Programación

Un programa, es una secuencia de instrucciones que permiten a un ordenador procesar una información conocida como datos de entrada (input) para producir una información de salida (output) o resultados.

Algoritmo nombre_del_algoritmo (Identificador)Const constante1 = valor1 constante2 = valor2 Var Lista de variables1: real Lista de variables2: entero Lista de variables3: lógica Lista de variables4: carácterInicio

<Acciones>Fin

Algoritmo MediaConst

Pi = 3.141592Var

Numero, MEDIA, SUMA : realCONTADOR, N : enteraNOMBRE, DIRECCION : caracter

Inicio<acciones>

Fin

Page 8: Guia Instruccional de Algoritmo Ultima Version 2006

Esas instrucciones pertenecen a un lenguaje de programación determinado.

Los lenguajes pueden ser de alto o bajo nivel. En los de bajo nivel las instrucciones son simples y cercanas al funcionamiento de la máquina, como por ejemplo el código máquina y el ensamblador. En los lenguajes de alto nivel hay un alto grado de abstracción y el lenguaje es más próximo a los humanos, como por ejemplo Pascal, Cobol o Java .

Los lenguajes deben ser traducidos al código entendido por la máquina para poder ser ejecutados. Según que esta traducción se realice en tiempo de diseño o en tiempo de ejecución los lenguajes se llaman compilados o interpretados.

Lenguajes de bajo nivel Código máquina Ensamblador

Lenguajes de medio nivel BCPL C

Lenguajes de alto nivel Ada ALGOL BASIC Clipper Cobol C++ FORTH Fortran Haskell Informix 4gl Java Lexico (con códigos en castellano o sinónimos en otros idiomas) Lisp Logo Modula Pascal Prolog RPG Visual Basic

Programación Orientada a Objetos

Actualmente una de las áreas más candentes en la industria y en el ámbito académico es la orientación a objetos. La orientación a objetos promete mejoras de amplio alcance en la forma de diseño, desarrollo y mantenimiento del software ofreciendo una solución a largo plazo a los problemas y preocupaciones que han existido desde el comienzo en el desarrollo de

Page 9: Guia Instruccional de Algoritmo Ultima Version 2006

software: la falta de portabilidad del código y reusabilidad, código que es dificil de modificar, ciclos de desarrollo largos y técnicas de codificación no intuitivas.

El concepto de programación orientada a objetos (OOP) no es nuevo, lenguajes clásicos como SmallTalk se basan en ella. Dado que la OOP. se basa en la idea natural de la existencia de un mundo lleno de objetos y que la resolución del problema se realiza en términos de objetos, un lenguaje se dice que está basado en objetos si soporta objetos como una característica fundamental del mismo.

El elemento fundamental de la OOP es, como su nombre lo indica, el objeto. Podemos definir un objeto como un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización.

Definiciones de la P.O.O.:

1. Un programa orientado a objetos es una colección de clases. Necesitará una función principal que cree objetos y comience la ejecución mediante la invocación de sus funciones miembro.

2. La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación. Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades y métodos.

3. La programación orientada a objetos, intenta simular el mundo real a través del significado de objetos que contiene características y funciones. Los lenguajes orientados a objetos se clasifican como lenguajes de quinta generación. Como su mismo nombre indica, la programación orientada a objetos se basa en la idea de un objeto, que es una combinación de variables locales y procedimientos llamados métodos que juntos conforman una entidad de programación.

Elementos de la Programación Orientada a Objetos en Java

Clase: Es una estructura de datos que permite describir las características

(atributos) y comportamiento (métodos) de los objetos.

Sintaxis 1:alcance class NombreClase{ atributos métodos objetos}

Sintaxis 2:alcance class NombreClase{

Page 10: Guia Instruccional de Algoritmo Ultima Version 2006

atributos métodos public static void main(String [ ]arg) { declaraciones locales; bloque de sentencias; . . . } // fin del método principal} // fin de la clase

nota: El alcance se refiere al nivel de encapsulamiento de la clase, es decir, si

esta es pública, protegida o privada.

Atributos: Son las características que tendrán los objetos al momento de ser

creados. Para acceder al atributo de un objeto es utilizado el operador punto

( . ).

Ejemplo: nombreObjeto.nombreAtributo

Declaración de atributos:Sintaxis:alcance tipo nombreAtributo;alcance tipo nombreAtributo1, nombreAtributo2, …………, nombreAtributoN;

Ejemplo: public String nombre;protected float salario, descuentos;private float bono;

Objeto: Es una instancia de clase, la cual consiste en una entidad de computo.

Con sus propias características (atributos) y comportamiento (métodos). Todo

objeto para ser creado debe pertenecer a un tipo de clase específica, la palabra

reservada new debe utilizarse para la creación del objeto. Un objeto puede ser

creado utilizando el método constructor o el método constructor nulo.

Sintaxis 1:NombreClase nombreObjeto = new NombreMetodoConstructor(parámetros);

Ejemplo: Nomina empleado1 = new Nomina(“Alvaro Sánchez”,”11294755”,800000);Nomina empleado2 = new Nomina(nomb,ced,salario);

Page 11: Guia Instruccional de Algoritmo Ultima Version 2006

Sintaxis 2:NombreClase nombreObjeto = new NombreMetodoConstructorNulo();

Ejemplo:Nomina empleado3 = new Nomina();

Método: Son un conjunto de instrucciones asociadas a un identificador que

permite realizar una tarea específica.

Sintaxis:alcance acceso tipo nombreMetodo(lista de parámetros){ declaraciones locales; bloque de sentencias; . . . return expresión;}

alcance = nivel de encapsulamiento.

acceso = Por omisión el método se considera de objetos, al colocar la palabra

reservada static seria considerado un método de clase.

tipo = Tipo de dato a devolver por el método, por omisión se asume entero (int).

nombreMetodo = Identificador válido.

lista de parámetros = Argumentos que recibirán valores cada vez que se

realice una llamada (envió de mensaje) al método, se debe especificar el tipo

de dato que recibirá cada argumento, por omisión se asume entero (int).

declaraciones locales = variables o constantes que solo podrán ser utilizadas

dentro del método.

Bloque de sentencias = Conjunto de instrucciones que se ejecutan cada vez

que se realice una llamada (envio de mensaje) al método.

return = palabra reservada utilizada para que el método pueda devolver un

valor, si el método es de tipo void la palabra reservada return no se coloca.

Page 12: Guia Instruccional de Algoritmo Ultima Version 2006

expresión = Puede ser una expresión aritmética, una variable, entre otros.

nota: El acceso se refiere a si el método va ser de objetos o de clase, es decir,

si para llamar (enviar un mensaje) al método se debe realizar mediante un

objeto o simplemente con el nombre del método.

Ejemplo de método de clase:

public static double calcularImpuesto(double monto){ return monto*0.15;}

En el ejemplo anterior para llamar al método calcularImpuesto solo hay que

enviar el mensaje: calcularImpuesto(parámetro).

Ejemplo de método de objeto:

protected float calcularSalario(int horas){ float salario=0; salario=horas * 8520.5; if(horas>44) salario=horas * 12850.5; return salario;}

En el ejemplo anterior para llamar al método calcularSalario hay que enviar el

mensaje de la siguiente manera: nombreObjeto.calcularImpuesto(parámetro).

Método constructor: Este permite crear objeto e inicializar algunos de sus

atributos, siempre deben tener el mismo nombre de la clase. Es importante

acotar que los métodos constructores no son heredados.

Sintaxis:

NombreClase(lista de parámetros){ nombreAtributo1 = nombreParametro1; nombreAtributo2 = nombreParametro2; . . . .

Page 13: Guia Instruccional de Algoritmo Ultima Version 2006

nombreAtributoN = nombreParametroN;}

Ejemplo 1:Nomina(String nomb,String ced){ nombre = nomb; cedula = ced;} Ejemplo 2:Nomina(String nomb,String ced, double salary){ nombre = nomb; cedula = ced; salario = salary; } Método constructor nulo: Este permite crear objeto sin inicializar atributos,

debe tener el mismo nombre de la clase. En caso de que no exista en el

programa el método constructor y el método constructor nulo, este último es

proporcionado implícitamente. Es importante indicar que el método constructor

nulo no es heredable.

Sintaxis:NombreClase() { }

Ejemplo:

Nomina(){ }

Herencia: Permite crear nuevas clases partiendo de clases ya existentes,

heredando de esta manera los atributos y métodos públicos (public) o

protegidos (protected) de la clase ya existente, esto con el propósito de

minimizar el tiempo de desarrollo de una aplicación, es decir, la finalidad es

reutilizar el código de programas ya existentes. En ningún caso los atributos y

métodos privados (private) podrán ser heredados, de igual manera de una

clase definida como privada no podrán crearse nuevas clases. En java la

herencia es simple, es decir, solo se podrán heredar atributos y métodos de

una sola clase.

Page 14: Guia Instruccional de Algoritmo Ultima Version 2006

Sintaxis:

alcance class NombreClaseNueva extends NombreClaseExsitente{ . . . . .}

Ejemplo:protected class Empleado{ //atributos

public String nombre, cedula, direccion, telefono, cargo; protected double salario, descuentoSSO, descuentoAH;

// metodos

public double calcularDesceuntoSSO(double salary){ return salary * 2 / 100;}

public double calcularDesceuntoAH(double salary){ return salary * 1 / 100;} . . . . .} // fin de la clase

protected class EmpleadoUniversitarioDocente extends Empleado{ //Atributos

protected String profesion;private double bono;

// métodos

Page 15: Guia Instruccional de Algoritmo Ultima Version 2006

public double CalcularSalario(int horas, float valorHora){ double salary=0; salary = horas * valorHora; return salary;}

public double CalcularBono(double salary){ double bono=0; if(salary<=800000) bono= salary * 2.5 / 100; else bono= salary * 3.8 / 100; return bono;}

. . . . .} // fin de la clase

Encapsulamiento: Se utiliza para ocultar los atributos y métodos de una clase

e inclusive a la clase misma, de manera tal que sólo puedan ser accezadas por

ciertos objetos.

public: Las clases, atributos y métodos públicos podrán ser accesados por

cualquier objeto de cualquier clase. Además, en caso de aplicar herencia estos

atributos y métodos serán heredados.

protected: Las clases, atributos y métodos protegidos podrán ser accesados

por los objetos pertenecientes a su misma clase y por los objetos

pertenecientes a su misma familia o jerarquía de clases. En ningún caso los

atributos y métodos protegidos de una clase podrán ser accesados por objetos

que no pertenezcan a la misma familia o jerarquía de clases. En caso de

aplicar herencia los métodos y atributos protegidos serán heredados.

private: Las clases privadas son definidas como clases finales por lo tanto

estas no pueden ser extendidas, es decir, no se pueden crear nuevas clases de

Page 16: Guia Instruccional de Algoritmo Ultima Version 2006

una clase privada. Los atributos y métodos privados no pueden ser heredados,

es decir, solo podrán ser accesados por los objetos pertenecientes a su misma

clase.

Nota: En caso que se omita el alcance o nivel de encapsulamiento para la clase

atributo o método estos serán definidos por defecto como package (paquete),

es decir, que esa clase, atributos o métodos podrán ser accesados por objetos

del mismo paquete o jerarquía de paquetes

Polimofismo: Consiste en métodos que tiene distinta forma pero devuelven un

mismo resultado. Ejemplo: podríamos tener métodos para calcular el salario de

obreros, docentes, personal administrativo, entre otros, evidentemente el

conjunto de instrucciones de cada método será diferente debido a que cada

uno de estos tipos de empleados se les cancela tomando en cuenta diferentes

criterios, aunque el resultado que arrojara cada uno de estos métodos siempre

será el mismo, es decir, el salario devengado por el empleado.

Ejemplo:public float calcularSalario()

{

.

.

.

return salario;

}

public float calcularSalario(float horas)

{

.

.

.

return salario;

}

public double calcularSalario(float horas, flota valorHora)

Page 17: Guia Instruccional de Algoritmo Ultima Version 2006

{

.

.

.

return salario;

}

UMLEl Lenguaje de Modelamiento Unificado (UML - Unified Modeling

Language) es un lenguaje gráfico para visualizar, especificar y documentar cada una de las partes que comprende el desarrollo de software. UML entrega una forma de modelar cosas conceptuales como lo son procesos de negocio y funciones de sistema, además de cosas concretas como lo son escribir clases en un lenguaje determinado, esquemas de base de datos y componentes de software reusables.

Modelo de ClasesUn diagrama de clases sirve para visualizar las relaciones entre las

clases que involucran el sistema, las cuales pueden ser asociativas, de herencia, de uso y de contenimiento.

Un diagrama de clases esta compuesto por los siguientes elementos:

Clase : atributos, métodos y visibilidad. Relaciones : Herencia, Composición, Agregación, Asociación y Uso.

Elementos

Clase

Es la unidad básica que encapsula toda la información de un Objeto (un objeto es una instancia de una clase). A través de ella podemos modelar el entorno en estudio (una Casa, un Auto, una Cuenta Corriente, etc.).

En UML, una clase es representada por un rectángulo que posee tres divisiones:

En donde:

Page 18: Guia Instruccional de Algoritmo Ultima Version 2006

o Superior: Contiene el nombre de la Clase o Intermedio: Contiene los atributos (o variables de instancia) que

caracterizan a la Clase (pueden ser private, protected o public). o Inferior: Contiene los métodos u operaciones, los cuales son la

forma como interactúa el objeto con su entorno (dependiendo de la visibilidad: private, protected o public).

Ejemplo:

Una Cuenta Corriente que posee como característica:

o Balance

Puede realizar las operaciones de:

o Depositar o Girar o y Balance

El diseño asociado es:

Ejercicios: (Para el Estudiante)

1.- Quitar una bombilla fundida de un techo.2.- Escribir un algoritmo para: a) Sumar dos números enteros. b) Restar dos números enteros. c) Multiplicar dos números enteros. d) Dividir un número entero por otro.3.- Escribir un algoritmo que lea tres números enteros porsitivos y muestre cual es el mayor.4.- Escribir un algoritmo que calcule la superficie de un triangulo.5.- Calcular el salario de un trabajador a partir de la lectura del nombre, horas trabajadas y precio de la hora.6.- Calcular el Salario semanal de los empleados de una empresa, sabiendo que estas se calculan en base a las horas semanales trabajadas y de acuerdo a un precio especificado por cada hora. Si se pasan de 40 horas semanales se pagaran a razón de 1000bs. La hora ordinaria de lo contrario se pagan a 800bs.

Tema 2: Tipos de Datos

Page 19: Guia Instruccional de Algoritmo Ultima Version 2006

Que es una dato?

Unidad Mínima de Información. (Dato, Información, Conocimiento.)

Los datos son los objetos sobre los que opera una computadora. Los tipos de datos que manipulan las computadoras se dividen en:

Simples. Estructurados. Definidos por el Usuario.

Los datos simples se clasifican en los siguientes tipos:

Numéricos. (Enteros y reales)Lógicos. (Cierto ó verdadero (true) y falso (false))Carácter. Los datos de tipo carácter son los que puede interpretar la computadora: Alfabéticos (A, B, C, D, E, …. ,Z, c,……,z), dígitos (0,1,…..,8,9), especiales($,*,>, =, <,….). Un dato tipo carácter es solo un carácter.

Los caracteres se organizan en cadenas. Una cadena de caracteres es una secuencia o serie de caracteres validos encerrados entre caracteres especiales denominados delimitadores y que suelen ser comillas o dobles comillas

’12 de octubre de 1492’“12 de octubre de 1492”Datos estructurados:

Cadenas(String) Vectores y matrices(arrays) Registros(record)

Definidos por el Usuario (Enumerado)

Un tipo enumerado es un conjunto de datos que conservan un orden, tal que cada elemento tiene sucesor y predecesor, excepto el primero que no tiene predecesor y el último que no tiene sucesor. Se suelen definir en las cabeceras de los programas, en una sección de definición de tipos.

Tipo Arcoiris = (blanco, amarillo, rojo, azul, violeta, gris) Automóviles = (BMW, Fiat, Opel, Peugeot, Saab, Volkswagen)

Identificadores y Palabras reservadas: cuando se escriben programas de computadoras en un lenguaje de alto nivel se necesita utilizar nombres para identificar a los objetos que se desea manipular: variables, constantes, procedimientos, funciones, etc.

Palabras Reservadas: son palabras clave y propias de un lenguaje de programación que constituyen la base de las sentencias, funciones, expresiones y órdenes.

Page 20: Guia Instruccional de Algoritmo Ultima Version 2006

int, char, string, if, for ………

Constantes: son datos cuyo valor no cambia durante la ejecución del programa. Ej. PI = 3.1416;

Variables: son objetos que pueden cambiar su cambiar su valor durante la ejecución del programa. Para nombrar variables se utilizan identificadores que deben seguir las reglas de formación.

Nombres de Variables Significado

Horas Horas TrabajadasPaga_mes Salario mensual

Tipos de Datos en Java

Los tipos de datos que soporta Java son los siguientes:Enteros:

intbyteshortlong

Números en coma flotante (reales):floatdouble

Caracteres:charLógicos:boolean

EnterosLos enteros son adecuados para aplicaciones que empleen datos numéricos sin parte fraccionaria.

Java dispone de cuatro tipos de datos enteros:

byte: emplea 8 bits, el rango de valores representables es –128 .. +127. Resulta especialmente útil en bucles.

short: emplea 16 bits, el rango de valores representables es – 32768 .. +32767. Resulta útil para realizar aritmética de enteros (no demasiado grandes).

int: emplea 32 bits, el rango de valores representables es – 2147483648 .. + 2147483647. Resulta útil para realizar aritmética de enteros en general.

Page 21: Guia Instruccional de Algoritmo Ultima Version 2006

long: emplea 64 bits, el rango de valores representables es ¡¡enorme!! Útil para aritmética de enteros grandes (pe. factorial)

Java siempre realiza las operaciones aritméticas con enteros de tipo int a no ser que se empleen enteros long.

RealesJava dispone de dos tipos de datos reales:

float: emplea 32 bits , el rango de valores representables es 3,4E-38 … 3,4E38 double: emplea 64 bits , el rango de valores representables es 1,7E-308 … 1,7E308

Carácter:

Un carácter es cualquier elemento de un conjunto de símbolos predefinidos o alfabeto.

Los lenguajes de programación, tradicionalmente, empleaban 8 bits para este tipo lo cual les permitía representar caracteres del ASCII extendido.

Java fue diseñado para poder admitir caracteres de cualquier alfabeto; para ello fue adaptado al estándar UNICODE. De esta forma un carácter Java emplea 16 bits.

Las “constantes” carácter en Java pueden indicarse entre comillas simples, mediante su código UNICODE o mediante su código numérico:

‘a’ equivale a ‘\u0061’, a 97, a 0x61 y a 0141‘A’ equivale a ‘\u0041’, a 65, a 0x41 y a 0101Existen caracteres que no se pueden escribir de una forma “normal” y precisan secuencias de escape, por ejemplo:La comilla simple: ‘\’’El salto de línea: ‘\n’El tabulador: ‘\t’Y otros...

Valores lógicos

El tipo de dato bolean admite únicamente dos valores: Verdadero (true) Falso (false) Posteriormente veremos qué expresiones dan como resultado valores lógicos.

Operadores Aritméticos (ʎ,*, /, +, -, div(\), mod*)

Operador Orden Operación

Page 22: Guia Instruccional de Algoritmo Ultima Version 2006

ʎ*,/+,-div(\),mod*

(mayor)

(menor)

PotenciaciónMultiplicación, División

Suma, resta División, modulo

Operaciones Aritméticas:

Las variables y constantes pueden ser procesadas utilizando operaciones y funciones adecuadas a sus tipos. En esta sección examinaremos las operaciones que se utilizan con datos numéricos.

Ejemplo:

8+5

Tema 3. Estructuras Elementales

Estructura de Selección Simple SI

La estructura de selección simple permite ejecutar una acción o un grupo de acciones sólo si se cumple una determinada condición. si la condición es verdadera se ejecuta la acción acciona; en caso contrario, no se hace nada.

Diagrama de Flujo Pseudocódigo (acción simple)

SI(condicion)   acciona

Pseudocódigo (acción compuesta)SI(condicion)

{ acciona1 acciona2 . accionan}

Código en Java

If(condicion) { . . .

. }

Por ejemplo, si se desea cambiar el signo de un número únicamente en caso que sea negativo, podemos escribir:

Page 23: Guia Instruccional de Algoritmo Ultima Version 2006

SI( numero < 0 )    numero = -1 * numero

En java

If(numero < 0 )    numero = -1 * numero

Si el número no es negativo, simplemente esta estructura se pasaría por alto y se continuaría en la siguiente instrucción después del SI.

Estructura de Selección Doble SI – SINO

La estructura de selección doble permite seleccionar una ruta de dos rutas posibles en base a la verdad o falsedad de una condición.

si la condición es verdadera, se ejecuta la acción A; en caso contrario, se ejecuta la acción B.

Pseudocódigo (acción simple)

SI(condicion)  accionaSINO   accionb

Pseudocódigo(acción compuesta)

SI(condicion){  acciona1  acciona2  .  .  .  accionan}SINO{  accionb1  accionb2  .  .  .  accionbn}

En java

If(condicion)  accionaelse accionb

Diagrama de Flujo

Page 24: Guia Instruccional de Algoritmo Ultima Version 2006

Por ejemplo, la siguiente estructura de selección doble determina si una persona es mayor o menor de edad:

SI(edad>=18)   estado = "Mayor de edad"SINO   estado = "Menor de edad"

En Java

If(edad>=18)   estado = "Mayor de edad"else   estado = "Menor de edad"

Esto imprime "Mayor de edad" si la persona tiene 18 años ó más e imprime "Menor de edad" si la persona tiene menos de 18 años. En cualquiera de los casos, después de efectuar la impresión, se ejecutará la primera instrucción que sigue a la estructura SI...SINO. 

Estructura de Selección Doble en Cascada SI-SINO-SI

La estructura de selección doble en cascada esta formada por varias estructuras de selección doble SI-SINO puestas una a continuación de otra de forma que a un SI-SINO le sigue otro SI-SINO.

En la estructura de selección doble en cascada, las condiciones se evalúan en orden descendente, pasando de una condición a otra si la condición anterior resulta falsa. En el momento que se encuentra una condición verdadera, se efectúa la acción correspondiente a dicha condición y se corta el resto de la estructura. Si todas las condiciones resultan falsas, se efectúa la acción correspondiente al último SINO, que se considera como la acción por defecto.

Pseudo código ( Forma 1 )

SI(condicion1)   accion1SINO   SI(condicion2)       accion2   SINO  SI(condicion3)       accion3       .       .                 .       SINO            acciondefecto

Pseudo código ( Forma 2 )

SI(condicion1)   accion1SINO

SI(condicion2)

Page 25: Guia Instruccional de Algoritmo Ultima Version 2006

accion2SINO SI(condicion3)   accion3   .   .             .SINO    acciondefecto

En java

if(condicion1)   accion1else   if(condicion2)       accion2   else  if(condicion3)       accion3       .       .                 .       else           acciondefecto

Por ejemplo, la siguiente estructura de selección doble en cascada determina el signo de un número entre positivo, negativo o cero:

SI(n>0)         signo="Positivo"SINO   SI(n<0)        signo="Negativo"    SINO                signo = "Cero"

En java

if(n>0)         signo="Positivo"else   if(n<0)        signo="Negativo"   else               signo = "Cero"

Usando el otro formato tendríamos:

SI(n>0)         signo="Positivo"SINO

Page 26: Guia Instruccional de Algoritmo Ultima Version 2006

SI(n<0)    signo="Negativo"

SINO            signo = "Cero"

En java

if(n>0)         signo="Positivo"else

if(n<0)    signo="Negativo"

else            signo = "Cero"

Estructura de Selección Múltiple

Por ejemplo, la siguiente estructura de selección múltiple determina el nombre de la estación del año conociendo el número de la estación (1 para Primavera, 2 para Verano, 3 para Otoño y 4 para Invierno) :

SEGUN(numeroEstacion){

   CASO 1  : nombreEstacion = "Primavera"

   CASO 2  : nombreEstacion = "Verano"

   CASO 3  : nombreEstacion = "Otoño"

   DEFECTO : nombreEstacion = "Invierno"

}    

En Java

switch(numeroEstacion){

   case 1  : nombreEstacion = "Primavera"

   case 2  : nombreEstacion = "Verano"

   case 3  : nombreEstacion = "Otoño"

   default : nombreEstacion = "Invierno"

}    

Ejercicios

Page 27: Guia Instruccional de Algoritmo Ultima Version 2006

1:- En una playa de estacionamiento cobran S/. 2.5 por hora o fracción. Diseñe un algoritmo que determine cuanto debe pagar un cliente por el estacionamiento de su vehículo, conociendo el tiempo de estacionamiento en horas y minutos.

Algoritmo 1

INICIO    // Declaración de variables   

    ENTERO horas, minutos

   REAL pago    

    // Entrada de datos

    LEER horas, minutos

    // Si hay alguna fracción de hora, incrementa las horas a pagar en

una unidad

    SI( minutos > 0 )

        horas = horas + 1

    // Determina el importe a pagar

   pago = horas * 2.5

   // Salida de resultados

   IMPRIMIR pago

FIN  

Algoritmo 2

INICIO    // Declaración de variables   

    ENTERO horas, minutos, horasPagar

    REAL pago    

    // Entrada de datos

    LEER horas, minutos

    // Determina el número de horas a pagar

    SI( minutos > 0 )

Page 28: Guia Instruccional de Algoritmo Ultima Version 2006

       horasPagar = horas + 1

    SINO

       horasPagar = horas

    // Determina el importe a pagar

   pago = horasPagar * 2.5

    // Salida de resultados

   IMPRIMIR pago

FIN

2:- Diseñe un algoritmo que determine si un número es o no es, par positivo.

INICIO

    // Declaración de variables   

    REAL numero

    CADENA tipoNumero

    // Entrada de datos

    LEER numero

    // Determina si el número es o no es, par positivo   

   SI( (numero%2==0) && (numero>0) )

       tipoNumero = "El número es par positivo"

SINO        tipoNumero = "El número no es par positivo"

   // Salida de resultados

  IMPRIMIR tipoNumero

FIN

3:- Diseñe un algoritmo que lea tres números y determine el número mayor.

INICIO    // Declaración de variables

   REAL numero1, numero2, numero3, numeroMayor

    // Entrada de datos

    LEER numero1, numero2, numero3

Page 29: Guia Instruccional de Algoritmo Ultima Version 2006

    // Determina el mayor

   numeroMayor = numero1

   SI( numero2 > numeroMayor )    

       numeroMayor = numero2

    SI( numero3 > numeroMayor )    

        numeroMayor = numero3

    // Salida de resultados   

   IMPRIMIR mayor

FIN

4.- Una tienda ha puesto en oferta la venta al por mayor de cierto producto, ofreciendo un descuento del 15% por la compra de más de 3 docenas y 10% en caso contrario. Además por la compra de más de 3 docenas se obsequia una unidad del producto por cada docena en exceso sobre 3. Diseñe un algoritmo que determine el monto de la compra, el monto del descuento, el monto a pagar y el número de unidades de obsequio por la compra de cierta cantidad de docenas del producto. 

INICIO    // Declaración de variables

   REAL montopag, montocom, montodes, precio 

     ENTERO docenas, obsequio    

   // Entrada de datos

    LEER docenas, precio

    // Determina el monto de la compra

   montocom = docenas*precio    

    // Determina el monto del descuento y el obsequio

   SI( docenas > 3 ){

       montodes = 0.15*montocom

       obsequio = docenas-3

   }

   SINO{

       montodes = 0.10*montocom

Page 30: Guia Instruccional de Algoritmo Ultima Version 2006

       obsequio = 0

}

   // Determina el monto a pagar

  montopag = montocom – montodes

    // Salida de resultados

    IMPRIMIR montocom, montodes, montopag, obsequio

FIN

5:- Diseñe un algoritmo que lea un número de tres cifras si el numero tiene mas de tres cifras debe mostrar un mensaje q diga numero invalido.

SI(numero >= 100 && numero <= 999 )

6.-Una compañía dedicada al alquiler de automóviles cobra un monto fijo de $30 para los primeros 300 km de recorrido. Para más de 300 km y hasta 1000 km, cobra un monto adicional de $ 0.15 por cada kilómetro en exceso sobre 300. Para más de 1000 km cobra un monto adicional de $ 0.10 por cada kilómetro en exceso sobre 1000. Los precios ya incluyen el 18% del impuesto general a las ventas, IGV. Diseñe un algoritmo que determine el monto a pagar por el alquiler de un vehículo y el monto incluido del impuesto.

INICIO

   // Declaración de variables

    REAL kilomrec, montopag, montoigv, montofijo = 30, igv = 0.18  

    // Entrada de datos

   LEER kilomrec

    // Determina el monto a pagar

    SI( kilomrec <= 300 )   

       montopag = montofijo

    SINO SI( kilomrec <= 1000 )

        montopag = montofijo + 0.15*(kilomrec-300)

   SINO

       montopag = montofijo + 0.15*700 + 0.10*(kilomrec-1000)

   // Determina el monto del impuesto

   montoigv = igv*montopag /(1+igv)

Page 31: Guia Instruccional de Algoritmo Ultima Version 2006

   // Salida de resultados

   IMPRIMIR montopag, montoigv

FIN

7.- El promedio de prácticas de un curso se calcula en base a cuatro prácticas calificadas de las cuales se elimina la nota menor y se promedian las tres notas más altas. Diseñe un algoritmo que determine la nota eliminada y el promedio de prácticas de un estudiante.

INICIO

   // Declaración de variables

    REAL pc1, pc2, pc3, pc4, pcmenor, promedio

    // Entrada de datos

    LEER pc1, pc2, pc3, pc4

    // Determina la nota menor

   pcmenor = pc1

   SI( pc2 < pcmenor )

        pcmenor = pc2

    SI( pc3 < pcmenor )

       pcmenor = pc3

    SI( pc4 < pcmenor )

       pcmenor = pc4

   // Determina el promedio

   promedio = (pc1 + pc2 + pc3 + pc4 - pcmenor )/3

   // Salida de resultados

   IMPRIMIR promedio, pcmenor

FIN

Page 32: Guia Instruccional de Algoritmo Ultima Version 2006

Material consultado para la elaboración de la Guía:

Metodología de la Programación de Luís Joyanes Aguilar.Manual de Programación Java 2 de Luís Joyanes Aguilar y Matilde Fernández.http://www.dcc.uchile.cl/~psalinas/uml/casosuso.htmlhttp://www.euitio.uniovi.es/~ip/3.PDF