guia instruccional de algoritmo ultima version 2006
DESCRIPTION
Describe lo que se imparte en la unidad curricular Algoritmo en UBV en el PFG-InformaticaTRANSCRIPT
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
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.
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.
Proyecto Final.
Desarrollar un programa donde aplique las competencias adquiridas durante el semestre.
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:
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
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
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
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{
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);
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.
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; . . . .
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.
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
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
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)
{
.
.
.
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:
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
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.
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.
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
ʎ*,/+,-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:
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
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)
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
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
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 )
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
// 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
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)
// 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
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