Post on 29-Jun-2015
description
ESCUELA: Ciencias de la Computación
NOMBRES
METODOLOGIA Y TECNOLOGIA DE LA PROGRAMACION I
PERíODO:
Ing. Danilo Jaramillo H
Abril – Agosto 2009
1
2
INDICACIONES
Ingreso a campus y contestar los foros, revisar ejercicios.
Importancia de realizar las evaluaciones a distancia Foros (EVA) 2 puntos Parte objetiva 2 puntos Parte de ensayo 2 puntos
Evaluación Presencial parte objetiva 8 puntos parte ensayo 6 puntos
3
INDICACIONES
Uso de sangrías. Poner encabezados Resolver en pseudo-código Entender que es lo que se pide en los
ejercicios de la evaluación presencial.
4
QUE HAREMOS HOY
Mayor claridad para el desarrollo de algoritmos
Desarrollo de programas mas complejos Nuevos enfoques … Programación
orientada a objetos
5
PLAN DE CONTENIDOS
SEGUNDO BIMESTRE
Capítulo 6. Estructuras de datos: Arreglos 163 -
192
12
Capítulo 7. Utilización de los Métodos 203 -
236
10
Capítulo 8. Programación Orientada a objetos
aplicando diagramas de clases
241 -
254
8
Capítulo 9. Programación Orientada a objetos
aplicando secuenciación, selección, repetición
257-
342
10
40
6
ESTRUCTURAS DE DATOS
Contenidos Arreglos de una
dimensión (vector) Arreglos de dos
dimensiones o matrices
Arreglos multidimensionales
2 3 4 5 6 7
2 3 4 5 6 7
8 9 3 5 7 4
6 7 1 1 4 3
7
Arreglos Colección de datos del mismo tipo Un nombre único Indicador de posición que diferencia a cada
elemento
2 9 4 15 6 27
ESTRUCTURAS DE DATOS
Mat
31 32 33 34 35 36
2 13 4 45 6 7
8 9 53 5 37 4
26 7 10 11 4 3
MatRes
1 2 3 4 5 6
8
Arreglos unidimensionales o vectores
ESTRUCTURAS DE DATOS
2 9 4 15 6 27
Mat
1 2 3 4 5 6
Mat[1] = 2Mat[2] = 9Mat[3] = 14Mat[4] = 15Mat[5] = 6Mat[6] = 25
9
Declarnombrevariable : Arreglo[tamaño] tipo de dato
Algoritmo matricesClase matriz
1. Método Principala. declaraciones
VariablesMat: Arreglo [30] Entero
Declarnombrevariable : Arreglo[tamaño] tipo de dato
Algoritmo matricesClase matriz
1. Método Principala. declaraciones
VariablesMat: Arreglo [30] Entero
ESTRUCTURAS DE DATOS
10
TIPOS
Algoritmo matricesClase matriz
1. Método Principala. declaraciones
TiposVector : Arreglo [30] Entero
VariablesA, B. C : Vector
TIPOS
Algoritmo matricesClase matriz
1. Método Principala. declaraciones
TiposVector : Arreglo [30] Entero
VariablesA, B. C : Vector
ESTRUCTURAS DE DATOS
11
Algoritmo matricesClase matriz
1. Método Principala. declaraciones
VariablesMat: Arreglo [30] Entero
b. imprimir “ingrese numero de elementos”c. leer n_ed. for (i = 1; i <= n_e; i++)
1. leer Mat[i]e. endfor
f. for (i = 1; i <= n_e; i++)1. if (mat[i] mod 2) = 0 then
imprimir “el numero”,mat[i], es par2. endif
g. endforh. for (i = 1; i <= n_e; i++)
imprimir Mat[i] e. endfor h. fin método principal
fin clase matriz
Algoritmo matricesClase matriz
1. Método Principala. declaraciones
VariablesMat: Arreglo [30] Entero
b. imprimir “ingrese numero de elementos”c. leer n_ed. for (i = 1; i <= n_e; i++)
1. leer Mat[i]e. endfor
f. for (i = 1; i <= n_e; i++)1. if (mat[i] mod 2) = 0 then
imprimir “el numero”,mat[i], es par2. endif
g. endforh. for (i = 1; i <= n_e; i++)
imprimir Mat[i] e. endfor h. fin método principal
fin clase matriz
12
Arreglos multi-dimensionales
ESTRUCTURAS DE DATOS
31 32 33 34 35 36
2 13 4 45 6 7
8 9 53 5 37 4
26 7 100 11 4 3
MatRes
MatRes[1][1] = 2MatRes[2][4] = 5MatRes[3][2] = 7MatRes[1][6] = 7MatRes[2][1] = 8 MatRes[3][5] = 4
MatRes[1][1] = 2MatRes[2][4] = 5MatRes[3][2] = 7MatRes[1][6] = 7MatRes[2][1] = 8 MatRes[3][5] = 4
13
Declaracionnombrevariable : Arreglo[tamaño_f][tamaño_c] tipo de dato
Algoritmo matricesClase matriz
1. Método Principala. declaraciones
VariablesMat: Arreglo [30][10] Entero
Declaracionnombrevariable : Arreglo[tamaño_f][tamaño_c] tipo de dato
Algoritmo matricesClase matriz
1. Método Principala. declaraciones
VariablesMat: Arreglo [30][10] Entero
ESTRUCTURAS DE DATOS
14
TIPOS
Algoritmo matricesClase matriz
1. Método Principala. declaraciones
ConstantesL = 30
TiposMatrices : Arreglo [L][L] Entero
VariablesA, B. C : Matrices
TIPOS
Algoritmo matricesClase matriz
1. Método Principala. declaraciones
ConstantesL = 30
TiposMatrices : Arreglo [L][L] Entero
VariablesA, B. C : Matrices
ESTRUCTURAS DE DATOS
15
Algoritmo matricesClase matriz
1. Método Principala. declaraciones
VariablesMat: Arreglo [30][10] Entero
b. imprimir “ingrese numero de filas y columnas”c. leer n_f,n_cd. for (i=1; i<=n_f; i++)
1. for (j=1:j<=n_c;j++) i. leer Mat[i][j]
2. endfore. endforf. for (i=1; i<=n_f; i++)
1. for (j=1:j<=n_c;j++)if (Mat[i][j] mod 2 = 0) then
imprimir “numero es par”endif
2. endforg. endfor
2. fin método principal
Algoritmo matricesClase matriz
1. Método Principala. declaraciones
VariablesMat: Arreglo [30][10] Entero
b. imprimir “ingrese numero de filas y columnas”c. leer n_f,n_cd. for (i=1; i<=n_f; i++)
1. for (j=1:j<=n_c;j++) i. leer Mat[i][j]
2. endfore. endforf. for (i=1; i<=n_f; i++)
1. for (j=1:j<=n_c;j++)if (Mat[i][j] mod 2 = 0) then
imprimir “numero es par”endif
2. endforg. endfor
2. fin método principal
16
EJERCICIOS
Ordenar un vector Buscar elementos repetidos en un
vector Ordenar una matriz de dos dimensiones Buscar elementos repetidos en una
matriz dos dimensiones Multiplica dos matrices
17
Método Principala. Declaraciones
Mat[10] : Arreglo[10] enterob. imprimir “ingrese numero de elementos”c. leer n_ed. for(i=1; i<= n_e; i++)
1. leer Mat[i]e. endfor f. for(i=1; i<= n_e; i++)
1. for(j=1; j<= n_e; j++)if (mat[i] < mat[j]) then aux mat[i] mat[i] mat [j] mat[j] auxendif
2.endfor g. endfor h. for(i=1; i<= n_e; i++)
1. imprimir Mat[i] i. endfor j. fin método principal
18
METODOS
Conceptos Generales
Propósito .como utilizar mas de un método dentro de una clase. Comprender el trabajo con variables de clase, variables locales y paso de parámetros entre métodos.
19
METODOS
Conceptos Generales Técnica divide y vencerás Ejecutar una tarea especifica Cada método es independientes método principal sub-rutinas (función,
rutina, sub-algoritmo) Cuando se invoca a un método las
instrucciones que están definidas se ejecutan y luego vuelven al método donde fue invocado.
20
A
B
B
D
A
D
F
21
Sistema de Gestión Académica
Registro de Notas y Asistencia
matriculación
matriculación
Ingresar Ficha del estudiante
Registro de Notas y Asistencia
Ingresar Notas
Verificar cédula
sEjemeemp1
Metodo Principal
22
Metodo principal Metodo xxxx
Método yyyy
Método zzzz
Llamada método
Llamada método
Llamada método
Llamada al método
Llamada método
Llamada método
23
Métodos
Algoritmo sumarClase suma
1. Método Principala. imprimir “la suma es”,
suma()2. fin método principal
3. Método suma: enteroa. Declaraciones
variables Suma, x , y: entero
• leer x, y• Suma = x + y• Return Suma
4. Fin Método suma
Fin clase sumafin
24
Métodos
Conceptos Métodos que no retornan valor Métodos que retornar valor Variables de clase y locales Parámetros por valor y por referencia
25
Métodos
Métodos que no retornan valor Pueden o no devolver valores Ejecuta un proceso especifico Forma de Invocar a estos métodos
NombredelMetodo()
26
Métodos que no retornan valor Definición
Métodos
Método nombre (parámetros)a. Declaraciones
VariablesConstantes
b. Acciónc. Acciónd. Acción
e. Fin Método
27
Métodos
Métodos que retornan valor Devuelve un valor Forma de Invocar a un Metodo No
Retorna ValorZ nombremetodo()Si (nombremetodo() == ?) Imprimir nombremetodoParte de una expresión
28
Metodos que retornan Valor Definición
Métodos
Método nombre (parámetros): tipo de datoa. Declaraciones
VariablesConstantes
b. Acciónc. Acciónd. return valore. Fin Método
29
Métodos
Variables: locales y clase Locales
Solo tiene valides dentro del método donde son declaradas
De clase Se las puede utilizad en cualquier parte
de la clase
30
Métodos
Variables
de clase
Algoritmo sumarClase suma
1. declaraciones variables
y : entero2. Método Principal
a. Leer yb. imprimir “la suma es”,
suma()3. fin método principal
4. Método suma: enteroa.Declaraciones
variables Suma, x: entero
b.x = 5c.Suma = x + yd.Return Suma
5. Fin Método sumaFin clase sumafin
Suma = x + y
31
31
MétodosAlgoritmo sumar
Clase suma1. Método Principal
a. declaraciones variables
y : enterob. Leer yc. imprimir “la suma es”,
suma()d. imprimir x
e. fin método principal 4. Metodo suma: entero
a. Declaracionesvariables Suma, x entero
b. x = 5c. Suma = x + yd. Return Suma
e. Fin Método sumaFin clase sumafin
Variables
locales
32
Métodos
Parámetros por valor y por referencia.. Enlazar variables entre métodos
Por valor Si un parámetro es modificado su contenido
dentro del subprograma, al terminar el mismo mantiene el valor
Por referencia Si un parámetro es modificado su contenido
dentro del subprograma, al terminar el mismo mantendrá el valor con el que se modificó.
33
Algoritmo Sumatoria Clase Suma 1.Metodo principal
a. declaraciones S : entero
b. S = 0 c. imprimir suma(s) d. imprimir s
e. Fin método principal ……. Fin clase suma fin
Algoritmo Sumatoria Clase Suma 1.Metodo principal
a. declaraciones S : entero
b. S = 0 c. imprimir suma(s) d. imprimir s
e. Fin método principal ……. Fin clase suma fin
………….2. método suma (val s: entero) : entero
a. Leer numero1b. Leer numero2c. s = numero1 + numero2d. return S
e. Fin método suma
………….2. método suma (val s: entero) : entero
a. Leer numero1b. Leer numero2c. s = numero1 + numero2d. return S
e. Fin método suma
Métodos
¿Qué valor se presenta en la llamada a la función?
¿Cuál es el valor de S ?
numero1 5
numero2 8
PARAMETROS POR VALOR
34
Métodos
¿Qué valor se presenta en la llamada a la función?
¿Cuál es el valor de S ?
numero1 5
numero2 8
Algoritmo Sumatoria Clase Suma 1.Metodo principal
a. declaraciones S : entero
b. S = 0 c. imprimir suma(s) d. imprimir s
e. Fin método principal ……. Fin clase suma fin
Algoritmo Sumatoria Clase Suma 1.Metodo principal
a. declaraciones S : entero
b. S = 0 c. imprimir suma(s) d. imprimir s
e. Fin método principal ……. Fin clase suma fin
………….2. método suma (ref s: entero) : entero
a. Leer numero1b. Leer numero2c. s = numero1 + numero2d. return S
e. Fin método suma
………….2. método suma (ref s: entero) : entero
a. Leer numero1b. Leer numero2c. s = numero1 + numero2d. return S
e. Fin método suma
PARAMETROS POR REFERENCIA
35
Ejercicios
Algoritmo Factorial Clase factorial 1. Metodo principal
a. declaraciones res, numero : entero
b. leer numero c. res = factorial (numero) d. imprimir res
e. Fin metodo principal…………… Fin clase sumafin
Algoritmo Factorial Clase factorial 1. Metodo principal
a. declaraciones res, numero : entero
b. leer numero c. res = factorial (numero) d. imprimir res
e. Fin metodo principal…………… Fin clase sumafin
………………….2. método factorial (val s: entero) : entero
a. declaracionesf : entero
b. f = 1c. for (i = 1; i<= numero; i++)
f = f * id. endfore. return f
f. Fin metodo factorial
………………….2. método factorial (val s: entero) : entero
a. declaracionesf : entero
b. f = 1c. for (i = 1; i<= numero; i++)
f = f * id. endfore. return f
f. Fin metodo factorial
Métodos
36
Ejercicios
Algoritmo Potencia Clase Potencia 1. Método principal
a. declaraciones bas, exp, res: entero b. leer bas c. leer exp d. res = potencia (bas,exp) e. imprimir res
Fin metodo principal……………Fin clase sumafin
Algoritmo Potencia Clase Potencia 1. Método principal
a. declaraciones bas, exp, res: entero b. leer bas c. leer exp d. res = potencia (bas,exp) e. imprimir res
Fin metodo principal……………Fin clase sumafin
…………….2. método potencia (entero bas,
entero exp) : enteroa. declaraciones
p : enterob. p = 1c. for (i=1; i<=exp; i++)
p p * basd. endforf. return p
g. fin método potencia
…………….2. método potencia (entero bas,
entero exp) : enteroa. declaraciones
p : enterob. p = 1c. for (i=1; i<=exp; i++)
p p * basd. endforf. return p
g. fin método potencia
Métodos
37
Algoritmo transformacion Clase transforma 1. Metodo principal
a. leer num b. bin = binario(num) c. oct = octal(num) d. imprimir “numero en binario es”, bin e. imprimir “numero en octal es”, oct
f. fin metodo principalfin
Algoritmo transformacion Clase transforma 1. Metodo principal
a. leer num b. bin = binario(num) c. oct = octal(num) d. imprimir “numero en binario es”, bin e. imprimir “numero en octal es”, oct
f. fin metodo principalfin
2. método binario (val num:entero) enteroa. j = 1b. res = 0c. while (num > 0) do
1. d = residuo(num/2)2. res = res + (d*j)3. num = num / 24. j = j*10
d. endwhilee. return res
f. Fin metodo binario
2. método binario (val num:entero) enteroa. j = 1b. res = 0c. while (num > 0) do
1. d = residuo(num/2)2. res = res + (d*j)3. num = num / 24. j = j*10
d. endwhilee. return res
f. Fin metodo binario
3. método octal (val num: entero) enteroa. j = 1b. res = 0c. while (num > 0) do
1. d = residuo(num/8)2. res = res + (d*j)3. num = num / 84. j = j*10
d. endwhilee. return res
f. Fin metodo octal
3. método octal (val num: entero) enteroa. j = 1b. res = 0c. while (num > 0) do
1. d = residuo(num/8)2. res = res + (d*j)3. num = num / 84. j = j*10
d. endwhilee. return res
f. Fin metodo octal
38
Algoritmo transformación Clase transforma 1. Método principal
a. leer numb. bin transformar(num,2)c. oct transformar(num,8)d. presentar “numero en binario es”, bine. presentar “numero en octal es”, oct
f. Fin Método Principalfin
Algoritmo transformación Clase transforma 1. Método principal
a. leer numb. bin transformar(num,2)c. oct transformar(num,8)d. presentar “numero en binario es”, bine. presentar “numero en octal es”, oct
f. Fin Método Principalfin
2. Método transformar (num: entero, base:entero): enteroa. j = 1b. res = 0c. while (num > 0) do
1. d = residuo(num/base)2. res = res + (d*j)3. num = num / base4. j = j*10
d. endwhilee. return resf. Fin Método Transformar
2. Método transformar (num: entero, base:entero): enteroa. j = 1b. res = 0c. while (num > 0) do
1. d = residuo(num/base)2. res = res + (d*j)3. num = num / base4. j = j*10
d. endwhilee. return resf. Fin Método Transformar
39
Algortimo matricesClase matriz
1. Método Principala. declaraciones
VariablesMat: Arreglo [30][10] Entero
b. imprimir “ingrese numero de filas y columnas”c. leer n_f,n_cd. for (i=1; i<=n_f; i++)
1. for (j 1 hasta n_c i. leer Mat[i,j]
2. endfore. endforf. for (i=1; i<=n_f; i++)
1. for (j 1 hasta n_cif primo(Mat[i,j])
imprimir “numero es primo”endif
2. endforg. endfor
h. fin método principal………..
Algortimo matricesClase matriz
1. Método Principala. declaraciones
VariablesMat: Arreglo [30][10] Entero
b. imprimir “ingrese numero de filas y columnas”c. leer n_f,n_cd. for (i=1; i<=n_f; i++)
1. for (j 1 hasta n_c i. leer Mat[i,j]
2. endfore. endforf. for (i=1; i<=n_f; i++)
1. for (j 1 hasta n_cif primo(Mat[i,j])
imprimir “numero es primo”endif
2. endforg. endfor
h. fin método principal………..
……………………2. Método primo(entero num) boolean
a. declaracionesvariables
d, lim : realp : boolean
b. d = 2c. lim = num / 2d. p truee. while (d < num) 1. if(num modd) = 0
p = falso d = lim
2. Endif 3. d d + 1f. enddog. return p
h. Fin método primoFin clasefin
……………………2. Método primo(entero num) boolean
a. declaracionesvariables
d, lim : realp : boolean
b. d = 2c. lim = num / 2d. p truee. while (d < num) 1. if(num modd) = 0
p = falso d = lim
2. Endif 3. d d + 1f. enddog. return p
h. Fin método primoFin clasefin
40
Fácil comprensión del problema Fácil comprensión de errores, pues si
existe alguno solo se trabajara en el modulo donde este se presente
Reutilización de código, para procesos similares se pueden utilizar procedimientos que ya están realizados
METODOS - resumen
41
Contenidos Estudiar los conceptos básicos de la
programación orientada a objetos. Objetos. Clases. métodos. encapsulamiento.
PROGRAMACIÓN ORIENTADA A OBJETOS
Innovación en los lenguajes de programación Es mas estructurada que las que se han
estudiado Mas modular y abstracta que lo que se ha
hecho con respecto a abstracción y ocultamiento
La POO, está formada por una colección de objetos interaccionando conjuntamente para representar y solucionar un problema
42
PROGRAMACIÓN ORIENTADA A OBJETOS
Objetos Datos .. Atributos .. descripción Métodos .. Comportamiento … manipulación
de los datos
43
Objeto
Metodo1()Metodo2()Metodo3()
Dato1Dato2dato3
PROGRAMACIÓN ORIENTADA A OBJETOS
Clase Representación abstracta que describen
un conjunto de objetos Representa un {} de objetos que tienen
los mismos métodos y los mismos datos Plantilla o molde para crear todos los
objetos
44
Empleado
Leernombre()Leerapellido()
Nombreapellidos
PROGRAMACIÓN ORIENTADA A OBJETOS
Métodos y encapsulación Acciones que se implementan el
comportamiento de un objeto, manipular los datos
Encapsulación colocar juntos los datos y los métodos dentro de un objeto
El programador debe pensar en el código y los datos juntos durante el diseño del programa
No hay vacio entre datos y métodos 45
PROGRAMACIÓN ORIENTADA A OBJETOS
Modificadores de acceso Visibilidad que tendran los datos o los
metodos, desde que parte seran visibles para ser utilizados -privado (datos,metodos) #protegido (datos,metodos) +publico (datos,metodos) _estatico (datos,metodos) *abstracto (metodos)
46
ObjetoEmpleado
Leernombre()Leerapellido()
Instanciación
47
Empleado
Leernombre()Leerapellido()
Nombreapellidos
Nombre: JuanApellidos: perez
ObjetoEmpleado
Leernombre()Leerapellido()
Nombre: JuanApellidos: perez
ejercicio Se desea calcular el sueldo de un empleado,
teniendo su nombre, apellido, horas trabajadas, costo por hora de 5 dólares y bajo las siguientes condiciones: Horas trabajadas <=40 no tiene bonificacion Horas trabajadas <=50, 20% de bonificacion Horas trabajadas <=60, 30% de bonificacion Horas trabajadas >=60, 40% Nadie puede ganar menos de 100 y mas de
400 dólares
48
49
ObjetoEmpleado
establecerombre()establecerapellido()Calcularsueldo()
Nombre: JuanApellidos: perezHorastrab: 30Sueldo: 150
ObjetoEmpleado
establecerombre()establecerapellido()Calcularsueldo()
Nombre: daniloApellidos: jaramilloHorastrab: 10Sueldo: (50) = 100
ObjetoEmpleado
establecerombre()establecerapellido()Calcularsueldo()
Nombre: JuanApellidos: perezHorastrab: 40Sueldo: 200
ObjetoEmpleado
establecerombre()establecerapellido()Calcularsueldo()
Nombre: JuanApellidos: perezHorastrab: 45Sueldo: 225+45=270
ObjetoEmpleado
establecerombre()establecerapellido()Calcularsueldo()
Nombre: JuanApellidos: perezHorastrab: 54Sueldo: 270+81=351
ObjetoEmpleado
establecerombre()establecerapellido()Calcularsueldo()
Nombre: JuanApellidos: perezHorastrab: 65Sueldo: 325+130=400
Empleado
Establecernombre()Establecerapellido()Establecerhoras()Calcularsueldo()obtenerDatosempleados()Obtenersueldo()
50
NombreApellidosHorastrabSueldo
Algoritmo sueldo
Clase empleado
a. Declaraciones
datos
NomEmp: cadena
ApeEmp: cadena
NumHor: real
sueldo: real
constante
costohora=5
………………
51
1. Método Establecernombre(nom :cadena)a. NomEmp = nom
b. Fin Método establecernombre
2. Método Establecerapellido (ape:cadena)a. ApeEmp = nom
b. Fin Método establecerapellido
3. Método Establecerhoras (hor:real)
a. numhor = hor
b. Fin Método Establecerhoras
52
4. Método Calcularsueldo ()a. Sueldo = NumHor * costohora
b. If (NumHor > 40) and (NumHor <=50) then
Sueldo = sueldo + (sueldo*0.20)
c. endif
d. If (NumHor > 50) and (NumHor <=60) then
Sueldo = sueldo + (sueldo*0.30)
e. endif
f. If (NumHor > 60) then
Sueldo = sueldo + (sueldo*0.40)
g. Endif
……….
h. If (sueldo < 100) then
sueldo = 100
i. Endif
j. If (sueldo > 300) then
sueldo = 300
k. Endif
l. Fin Método calcularrsueldo
5. Método obtenerDatosempleados() :cadena
a. return (NomEmp+ “ “+ApeEmp)
b. Fin Método obtenerDatosempleados
6. Método Obtenersueldo(): Real
a. return sueldo
b. Fin Método Obtenersueldo
Finclase Empleado
53
54
………………Clase Manipulaempleado
Método Principal
a. Declaraciones
nombre: cadena
apellido: cadena
horas: real
b. Declarar crear el objeto
c. empleado objemp = new empleado()
d. Imprimir “ingrese nombres y apellidos, y horas trabajadas”
e. Leer nombre, apellido, horas
………………………
………………f. Objemp.establecernombre(nombre)
g. Objemp.establecerapellido(apellido)
h. Objemp.establecerhoras(horas)
i. Objemp.calcularsueldo()
j. Imprimir Objemp.obtenerempleado
k. Imprimir objemp.obtenersueldo
l. Fin Método Principal
Fin clase Manipulaempleado
Fin (algoritmo)
contacto
Email: djaramillo@utpl.edu.ec Skype: danilo.jaramillo.h msn: djaramilloh@hotmail.com Teléfono: 07-250275 ext 2637
55
56