Documente Academic
Documente Profesional
Documente Cultură
Autor:
Prof. Wendy Leal
Coautores:
Prof. Alonso Salas
Prof. Alberto Parra
INTRODUCCION
A lo largo de la humanidad, el hombre en su curiosidad, ha creado
ciencias que le permiten conocer y estudiar fenmenos, dentro de esta
curiosidad y para satisfacer necesidades planteadas surge la creacin de
Computadoras dando inicio a la era de la informtica.
La informtica, 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 informacin bsica para la creacin de un
programa. En la actualidad, los sistemas automatizados constituyen un apoyo
significativo en la vida diaria del ser humano, por esta razn se hace necesario
el aprendizaje de herramientas y tcnicas que nos permitan automatizar
procesos de manera eficiente.
Esta gua didctica formar parte de un conjunto de herramientas que
tendr como finalidad el desarrollo de destrezas y habilidades de los
estudiantes en el rea de Programacin. En este material, se encontrar
instrucciones necesarias para que los estudiantes puedan trabajar de manera
autnoma, practicando el autoaprendizaje.
Objetivo General:
Capacitar al estudiante en el desarrollo de las habilidades fundamentales de la
programacin y en las funcionalidades bsicas de un lenguaje que soporte el
paradigma orientado a objetos.
Objetivos especficos:
- Definir los Algoritmos.
- Estudiar los Fundamentos de la P.OO.
- Conocer el concepto de datos y reconocer los tipos de datos simples
(Entero, real, carcter, Lgico) y los tipos de datos estructurados
(Arreglos unidimensionales y multidimensionales).
- Identificar las estructuras elementales y tipos de operadores. Describir
las Estructuras de control (secuencia, iteracin, seleccin y bsqueda).
- Realizar operaciones elementales: lectura y escritura de datos.
- Desarrollar programas simples en un entorno de lenguaje de O.O.
- Definir la metodologa orientada a objetos, diagramas de clase y
estrategias para la resolucin de problemas.
Temario
Tema 1. Introduccin a la Prog. Orientada a Objetos y Diagramas UML
Definicin de Algoritmo.
Diagramas UML.
Partes de un Programa.
Diagramas de Flujo.
Pseudocdigo.
Definicin de Clases, Objetos, Mtodos.
Propiedades de la P.O.O. (Herencia, polimorfismo y encapsulamiento).
Manejo de la plataforma eclipse para la Programacin.
Tema 2. Tipos de Datos (simples).
Definicin y clasificacin de los tipos de datos simples.
Conocer y manipular los tipos de datos.
Verificacin y compatibilidad de los datos.
Especificar e implementar los tipos de datos (Elementales).
Tema 3. Estructuras elementales.
Conocer la estructura de seleccin desicin (IF-CASE)
Implementar la estructura de seleccin simple y compuesta en la
solucin de problemas.
Conocer las estructuras de Iteracin (FOR-WHILE-DOWHILE).
Implementar las diferentes estructuras de repeticin en la solucin de
problemas.
Reconocer las diferencias entre las estructuras de repeticin.
Implementar los diferentes tipos de estructuras.
Tema 4. Aplicaciones con Mtodos.
Identificar un mtodo.
Implementar mtodos 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
adquiridas durante el semestre.
donde
aplique
Algoritmo y Programacin
las
competencias
Inicio / Fin
Proceso
Estructuras de decisin
Conector
Entrada/Salida
Ejemplo:
Algoritmo Media
Const
Pi = 3.141592
Var
Numero, MEDIA, SUMA
CONTADOR, N
NOMBRE, DIRECCION
Inicio
<acciones>
Fin
: real
: entera
: caracter
atributos
mtodos
public static void main(String [ ]arg)
{
declaraciones locales;
bloque de sentencias;
.
.
.
} // fin del mtodo principal
} // fin de la clase
nota: El alcance se refiere al nivel de encapsulamiento de la clase, es decir, si
esta es pblica, protegida o privada.
Atributos: Son las caractersticas que tendrn los objetos al momento de ser
creados. Para acceder al atributo de un objeto es utilizado el operador punto
( . ).
Ejemplo: nombreObjeto.nombreAtributo
Declaracin 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 caractersticas (atributos) y comportamiento (mtodos). Todo
objeto para ser creado debe pertenecer a un tipo de clase especfica, la palabra
reservada new debe utilizarse para la creacin del objeto. Un objeto puede ser
creado utilizando el mtodo constructor o el mtodo constructor nulo.
Sintaxis 1:
NombreClase nombreObjeto = new NombreMetodoConstructor(parmetros);
Ejemplo:
Nomina empleado1 = new Nomina(Alvaro Snchez,11294755,800000);
Nomina empleado2 = new Nomina(nomb,ced,salario);
Sintaxis 2:
NombreClase nombreObjeto = new NombreMetodoConstructorNulo();
Ejemplo:
Nomina empleado3 = new Nomina();
Mtodo: Son un conjunto de instrucciones asociadas a un identificador que
permite realizar una tarea especfica.
Sintaxis:
alcance acceso tipo nombreMetodo(lista de parmetros)
{
declaraciones locales;
bloque de sentencias;
.
.
.
return expresin;
}
alcance = nivel de encapsulamiento.
acceso = Por omisin el mtodo se considera de objetos, al colocar la palabra
reservada static seria considerado un mtodo de clase.
tipo = Tipo de dato a devolver por el mtodo, por omisin se asume entero
(int).
nombreMetodo = Identificador vlido.
lista de parmetros = Argumentos que recibirn valores cada vez que se
realice una llamada (envi de mensaje) al mtodo, se debe especificar el tipo
de dato que recibir cada argumento, por omisin se asume entero (int).
declaraciones locales = variables o constantes que solo podrn ser utilizadas
dentro del mtodo.
Bloque de sentencias = Conjunto de instrucciones que se ejecutan cada vez
que se realice una llamada (envio de mensaje) al mtodo.
return = palabra reservada utilizada para que el mtodo pueda devolver un
valor, si el mtodo es de tipo void la palabra reservada return no se coloca.
expresin = Puede ser una expresin aritmtica, una variable, entre otros.
nota: El acceso se refiere a si el mtodo va ser de objetos o de clase, es decir,
si para llamar (enviar un mensaje) al mtodo se debe realizar mediante un
objeto o simplemente con el nombre del mtodo.
Ejemplo de mtodo de clase:
public static double calcularImpuesto(double monto)
{
return monto*0.15;
}
En el ejemplo anterior para llamar al mtodo calcularImpuesto solo hay que
enviar el mensaje: calcularImpuesto(parmetro).
Ejemplo de mtodo 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 mtodo calcularSalario hay que enviar el
mensaje de la siguiente manera: nombreObjeto.calcularImpuesto(parmetro).
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;
}
Mtodo 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 mtodo constructor y el mtodo constructor nulo, este ltimo es
proporcionado implcitamente. Es importante indicar que el mtodo 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 mtodos pblicos (public) o
protegidos (protected) de la clase ya existente, esto con el propsito de
minimizar el tiempo de desarrollo de una aplicacin, es decir, la finalidad es
reutilizar el cdigo de programas ya existentes. En ningn caso los atributos y
mtodos privados (private) podrn ser heredados, de igual manera de una
clase definida como privada no podrn crearse nuevas clases. En java la
herencia es simple, es decir, solo se podrn heredar atributos y mtodos 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;
// mtodos
una clase privada. Los atributos y mtodos privados no pueden ser heredados,
es decir, solo podrn 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 mtodo estos sern definidos por defecto como package (paquete),
es decir, que esa clase, atributos o mtodos podrn ser accesados por objetos
del mismo paquete o jerarqua de paquetes
Polimofismo: Consiste en mtodos que tiene distinta forma pero devuelven un
mismo resultado. Ejemplo: podramos tener mtodos para calcular el salario de
obreros, docentes, personal administrativo, entre otros, evidentemente el
conjunto de instrucciones de cada mtodo 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 mtodos 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;
}
UML
El Lenguaje de Modelamiento Unificado (UML - Unified Modeling
Language) es un lenguaje grfico 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, adems de cosas concretas como lo son escribir clases
en un lenguaje determinado, esquemas de base de datos y componentes de
software reusables.
Modelo de Clases
Un 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:
Elementos
Clase
Es la unidad bsica que encapsula toda la informacin de un Objeto (un
objeto es una instancia de una clase). A travs de ella podemos modelar
el entorno en estudio (una Casa, un Auto, una Cuenta Corriente, etc.).
En UML, una clase es representada por un rectngulo que posee tres
divisiones:
En donde:
o
o
o
Ejemplo:
Una Cuenta Corriente que posee como caracterstica:
o
Balance
Depositar
Girar
y Balance
Simples.
Estructurados.
Definidos por el Usuario.
Cadenas(String)
Vectores y matrices(arrays)
Registros(record)
Significado
Horas
Paga_mes
Horas Trabajadas
Salario mensual
*,/
+,div(\),mod*
Orden
(mayor)
(menor)
Operacin
Potenciacin
Multiplicacin, Divisin
Suma, resta
Divisin, modulo
Operaciones Aritmticas:
Las variables y constantes pueden ser procesadas utilizando
operaciones y funciones adecuadas a sus tipos. En esta seccin
examinaremos las operaciones que se utilizan con datos numricos.
Ejemplo:
8+5
Tema 3. Estructuras Elementales
Estructura de Seleccin Simple SI
La estructura de seleccin simple permite ejecutar una accin o un grupo
de acciones slo si se cumple una determinada condicin. si la condicin es
verdadera se ejecuta la accin acciona; en caso contrario, no se hace nada.
Diagrama de Flujo
(accin
compuesta)
{
acciona2
.
accionan
}
Cdigo en Java
If(condicion)
{
.
.
.
.
acciona1
En java
If(numero < 0 )
numero = -1 * numero
(accin
SI(condicion)
acciona
SINO
accionb
Pseudocdigo(accin
compuesta)
Diagrama de Flujo
En java
SI(condicion){
acciona1
acciona2
.
.
.
accionan
}
SINO{
accionb1
accionb2
.
.
.
accionbn
}
If(condicion)
acciona
else
accionb
SI(condicion3)
accion3
.
.
.
SINO
acciondefecto
SINO SI(condicion3)
accion3
.
.
.
SINO
acciondefecto
accion2
En java
if(condicion1)
accion1
else
if(condicion2)
accion2
else
accion3
.
.
.
else
acciondefecto
if(condicion3)
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 tendramos:
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"
signo = "Cero"
else
: nombreEstacion = "Primavera"
CASO 2
: nombreEstacion = "Verano"
CASO 3
: nombreEstacion = "Otoo"
}
En Java
switch(numeroEstacion){
case 1
: nombreEstacion = "Primavera"
case 2
: nombreEstacion = "Verano"
case 3
: nombreEstacion = "Otoo"
Ejercicios
1:- En una playa de estacionamiento cobran S/. 2.5 por hora o fraccin. Disee
un algoritmo que determine cuanto debe pagar un cliente por el
estacionamiento de su vehculo, conociendo el tiempo de estacionamiento en
horas y minutos.
Algoritmo 1
INICIO
// Declaracin de variables
ENTERO horas, minutos
REAL pago
// Entrada de datos
LEER horas, minutos
// Si hay alguna fraccin de hora, incrementa las horas a pagar en
una unidad
SI( minutos > 0 )
horas = horas + 1
FIN
Algoritmo 2
INICIO
// Declaracin de variables
ENTERO horas, minutos, horasPagar
REAL pago
// Entrada de datos
LEER horas, minutos
// Determina el nmero 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
SINO
tipoNumero = "El nmero no es par positivo"
// Salida de resultados
IMPRIMIR tipoNumero
FIN
3:- Disee un algoritmo que lea tres nmeros y determine el nmero mayor.
INICIO
// Declaracin 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 ms de 3 docenas y 10%
en caso contrario. Adems por la compra de ms de 3 docenas se obsequia
una unidad del producto por cada docena en exceso sobre 3. Disee un
algoritmo que determine el monto de la compra, el monto del descuento, el
monto a pagar y el nmero de unidades de obsequio por la compra de cierta
cantidad de docenas del producto.
INICIO
// Declaracin de variables
REAL montopag, montocom, montodes, precio
ENTERO docenas, obsequio
// Entrada de datos
5:- Disee un algoritmo que lea un nmero de tres cifras si el numero tiene mas
de tres cifras debe mostrar un mensaje q diga numero invalido.
SI(numero >= 100 && numero <= 999 )
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
pcmenor = pc1
SI( pc2 < pcmenor )
pcmenor = pc2
SI( pc3 < pcmenor )
pcmenor = pc3