Beruflich Dokumente
Kultur Dokumente
Algoritmos
Slide 4-1
Conceptos bsicos.
Programacin:
1. Establecer una secuencia de acciones que:
puedan ser ejecutadas por el procesador
realicen una determinada tarea
2. Fases:
Resolucin del problema propuesto => determinacin de
un algoritmo.
Adaptacin del algoritmo al computador => codificar el
algoritmo en un lenguaje que el computador pueda
comprender.
Copyright 2003 Pearson Education, Inc.
Slide 4-2
Conceptos bsicos.
1. Accin: Etapa en la realizacin de un trabajo
2. Accin primitiva: Accin que el procesador puede ejecutar
sin necesidad de informacin adicional.
3. Algoritmo: Secuencia ordenada de acciones primitivas que
realizan un trabajo. Ejemplos:
Ir al trabajo
1.Levantarse
2.Darse una ducha
3.Vestirse
4.Desayunar
5.Tomar locomocin
Slide 4-4
Slide 4-5
Primitivas Origami
Slide 4-6
Primitivas Origami
Slide 4-7
Conceptos bsicos.
Aspectos que se deben considerar a la hora de escribir un algoritmo:
Los algoritmos no son directamente interpretables por el computador => deben ser
traducidos a un lenguaje de programacin concreto.
Slide 4-8
Definition de algoritmo
Slide 4-9
Representacin de algoritmos
Mtodos para representar un algoritmo:
Pseudolenguaje
Diagramas de flujo
Pseudolenguaje
Es un lenguaje especfico de descripcin de algoritmos
La traduccin de un algoritmo escrito en pseudolenguaje a un programa en un
lenguaje de programacin determinado es relativamente simple
Herramientas de un pseudolenguaje para representar un algoritmo
Conjunto de palabras clave que proporcionan:
las estructuras de control
declaraciones de variables
caractersticas de modularidad
Sintaxis libre de un lenguaje natural que describe las caractersticas del proceso
Elementos para la definicin y llamada a subprogramas
Copyright 2003 Pearson Education, Inc.
Slide 4-10
Metodologa de diseo
Slide 4-11
Metodologa de diseo
Programacin estructurada
Conjunto de tcnicas que aumentan la productividad de un programa,
reduciendo el tiempo para:
Escribir Depurar
Verificar Mantener
Utiliza un nmero limitado de estructuras de control que minimizan la
complejidad de los problemas
Teorema de BOHM-JACOPINI: cualquier programa, por complejo
que sea, puede escribirse utilizando slo tres estructuras de control:
Secuencial
Selectiva
Repetitiva
Copyright 2003 Pearson Education, Inc.
Slide 4-12
Secuencial
Actividad 1
Actividad 2
Actividad n
Slide 4-13
Seleccin
Simple:
Doble:
Condicin
actividad
no
condicin
Actividad 1
no
Actividad 2
Mltiple:
Condicin
s
Actividad 1
sino
Condicin
s
Actividad 2
Condicin
sino
s
Actividad n-1 Avtividad n
Slide 4-14
Repeticin
Test
condition
false
true
activity
Slide 4-15
Slide 4-16
Ordenamiento
Entrada:
secuenciadennmeros<a1,a2,..,an>
Salida:
Unapermutacin<a'1,a'2,..,a'n>
reordenamientodelasecuencia,talque:
a'1<a'2<...<a'n
Ejemplo instancia:
Entrada:<5,3,1,6,0>
Salida:<0,1,3,5,6>
Copyright 2003 Pearson Education, Inc.
Slide 4-17
Slide 4-18
Slide 4-19
Slide 4-20
Slide 4-21
Bsqueda
Entrada:
secuenciadennmeros<a1,a2,..,an>
Unnmerob
Salida:
unenteroi,talqueb==ai(igual)
0sib!=ai,parai=1,...,n
Ejemplo instancia:
Entrada:<5,6,9,12>y9
Salida:3
Copyright 2003 Pearson Education, Inc.
Slide 4-22
Slide 4-23
Slide 4-24
=> O(n2)
Slide 4-25
Slide 4-26
Slide 4-27
Algoritmos
recursivos
Slide 4-28
Recursividad
Sonfuncionesquesellamanasmismas.
Requisitos:
Debenretornarunvalor.
Debentenerexpresionesenlasquesellamanasmismas:
cicloactivo.
Debenincluir,enunasentenciadeseleccin,unaopcinen
lacualterminenlaejecucinynosellamenasmismas:
casobase.
Sinoposeenunopcinquelespermitaterminarsu
ejecucin,seproducirnllamadashastaagotarlosrecursos
dememoriadelsistema.
Sisealcanzaelcasobaseenunallamadadelciclo
activo,entoncesseiniciaelciclopasivooderetorno.
29
Copyright 2003 Pearson Education, Inc.
Slide 4-29
Recursividad cdigo C
30
Copyright 2003 Pearson Education, Inc.
Slide 4-30
Recursividad (ejemplo)
Obtener el factorial de un nmero
Casos base:
- el factorial de cero es uno
- factorial de uno es uno
- factorial de un nmero negativo lo hacemos cero.
Ciclo activo:
- llamar a partir del nmero en forma descendente
hasta llegar al caso base.
31
Copyright 2003 Pearson Education, Inc.
Slide 4-31
32
Copyright 2003 Pearson Education, Inc.
Slide 4-32
main(){
int x = 3;
factorial(3){
factorial(3);
fac
= factorial(x);
if (3==0) return 1;
else if (3==1) return 1;
else return 3*factorial(3-1);
3*factorial(2);
factorial(2){
if (2==0) return 1;
else if (2==1) return 1;
else return 2*factorial(1);
2*factorial(2-1);
factorial(1){
if (1==0) return 1;
else if (1==1) return 1
1;
33
Copyright 2003 Pearson Education, Inc.
Slide 4-33
main(){
int x factoria
= 3;
factorial(3){
l(3);
fac =
if
(3==0)
factorial(x); return 1;
34
Copyright 2003 Pearson Education, Inc.
Slide 4-34
main(){
int x factoria
= 3;
factorial(3){
l(3);
fac =
if
(3==0)
factorial(x); return 1;
35
Copyright 2003 Pearson Education, Inc.
Slide 4-35
main(){
int x factoria
= 3;
factorial(3){
l(3);
fac =
if
(3==0)
factorial(x); return 1;
36
Copyright 2003 Pearson Education, Inc.
Slide 4-36
main(){
int x factoria
= 3;
factorial(3){
l(3);
fac =
if
(3==0)
factorial(x); return 1;
37
Copyright 2003 Pearson Education, Inc.
Slide 4-37
main(){
int x = 3;
6;
fac =
factorial(x);
38
Copyright 2003 Pearson Education, Inc.
Slide 4-38