Professional Documents
Culture Documents
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
3. Fundamentos de Algoritmos
3.1. Qu es un algoritmo?
Un algoritmo es un conjunto de instrucciones que permite realizar una actividad mediante pasos sucesivos. Las instrucciones o reglas que forman los algoritmos deben ser: Bien definidas: no deben dar lugar a ambigedades. Ordenadas: deben tener una secuencia lgica. Finitas: deben tener inicio (estado inicial) y fin (estado final). Los algoritmos son objeto de estudio tanto en las matemticas como en las ciencias de la computacin. Se emplean para resolver problemas, tanto si las instrucciones son seguidas por un humano como si son seguidas por un computador. 1507 = 21.428571 10 30 20 60 40 50 10 30 Cuando se realiza una divisin aritmtica con lpiz y papel, en realidad se est utilizando el algoritmo de la divisin sin darnos cuenta que en realidad es un algoritmo. Dicho algoritmo tiene pasos bien definidos, sigue un orden lgico y cuenta con una secuencia de inicio a fin. Puede perfectamente implementarse en un computador y utilizarse para dividir nmeros mucho ms grandes, ahorrando tiempo al poder realizarse la operacin de forma mucho ms rpida que si se hiciera de forma manual.
Ejemplo 1: Algoritmo de la divisin
Universidad Tecnolgica Metropolitana del Estado de Chile Facultad de Ingeniera Escuela de Informtica Ciencias de la Computacin INF-624
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
El objetivo del juego es mover todos los discos desde la varilla inicialmente ocupada hasta alguna de las otras vacas.
Universidad Tecnolgica Metropolitana del Estado de Chile Facultad de Ingeniera Escuela de Informtica Ciencias de la Computacin INF-624
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
Para cumplir el objetivo, es necesario cumplir con las siguientes reglas: 1. Solo se puede mover un disco por vez 2. Un disco de mayor tamao no puede ponerse sobre uno ms pequeo. 3. Solo es posible mover el disco que est arriba en cada varilla. Si se tienen N discos, la cantidad de movimientos necesarios para trasladar todos los discos de una varilla a otra es: () = 21 Suponiendo que se tenga un juego con 64 discos, se necesitaran 264 1 movimientos para resolverlo. Es decir, se requieren 18446744073709551615 movimientos. Si queremos conocer el detalle de los movimientos utilizando para ello un computador moderno, se necesitaran alrededor de 32 aos y medio para que el computador pueda entregar la solucin, lo cual hace al problema intratable.
Ejemplo 2: Problema decidible intratable - Juego de las torres de Hani
Es imposible disear un algoritmo que resuelva este problema, ya que para los casos sin solucin, el algoritmo intentara infinitas veces armar una solucin correcta
Ejemplo 3: Problema de tipo indecidible - Problema de la baldosa
Universidad Tecnolgica Metropolitana del Estado de Chile Facultad de Ingeniera Escuela de Informtica Ciencias de la Computacin INF-624
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
Se describe a continuacin un proceso para comparar valores de dos nmeros. El proceso se inicia solicitando el valor para el primer nmero, el que se almacenar en la variable . Luego, se solicita el valor para el segundo nmero, que se almacenar en la variable . Si el valor de es mayor que el valor de , se informa que es mayor a . De lo contrario, se comparan nuevamente los valores de y para ver si son iguales. Si estos valores son iguales, se informa que los valores son iguales; de lo contrario como los valores de y B no son iguales y tampoco es mayor que se informa que es menor a y finaliza el proceso.
Ejemplo 4: Narracin de un algoritmo que compara dos nmeros A y B
Proceso Comparar
Leer A
Leer B
No
No
FinProceso
Universidad Tecnolgica Metropolitana del Estado de Chile Facultad de Ingeniera Escuela de Informtica Ciencias de la Computacin INF-624
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
Proceso Comparar Escribir "Ingrese valor de A" Leer A Escribir "Ingrese valor de B" Leer B Si A > B Entonces Escribir "A es mayor que B" Sino Si A = B Entonces Escribir "A y B son iguales" Sino Escribir "A es menor que B" FinSi FinProceso
Ejemplo 6: Pseudocdigo de un algoritmo que compara dos nmeros A y B
#!/usr/bin/ruby def comparar puts "Ingrese valor de A" a = gets puts "Ingrese valor de B" b = gets if a > b then print "A es mayor que B" else if a == b then puts "A y B son iguales" else puts "A es menor que B" end end end comparar
Ejemplo 7: Implementacin en el lenguaje de programacin Ruby de un algoritmo que compara dos nmeros A y B
Segn el Ejemplo 5, el diagrama de flujo representa de manera grfica el algoritmo. Como su nombre lo dice, el diagrama muestra la secuencia (flujo) que sigue el algoritmo, desde que comienza hasta que termina, pasando por cada uno de los posibles caminos a seguir para llegar a la solucin del respectivo problema. En el Ejemplo 6, se muestra el pseudocdigo del mismo algoritmo. El pseudocdigo es un lenguaje simulado con reglas propias que permite representar algoritmos mediante instrucciones simplificadas. Estas instrucciones contienen las estructuras bsicas suficientes para representar cualquier tipo de algoritmo. El pseudocdigo permite escribir algoritmos en un lenguaje altamente cercano al lenguaje natural humano, sin entrar en los detalles especficos que tiene un lenguaje de programacin real.
Universidad Tecnolgica Metropolitana del Estado de Chile Facultad de Ingeniera Escuela de Informtica Ciencias de la Computacin INF-624
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
Los algoritmos generalmente se implementan en un computador utilizando un lenguaje de programacin real. En el ejemplo 6 se muestra el algoritmo de comparacin de nmeros implementado en el lenguaje de programacin Ruby. La diferencia entre un algoritmo expresado en pseudocdigo y un algoritmo implementado en un lenguaje de programacin est en que el pseudocdigo se enfoca solamente en resolver el algoritmo, mientras que un lenguaje de programacin se enfoca tanto en resolver el algoritmo como adems en resolver detalles tcnicos asociados al uso de los recursos del computador en donde se implementa el algoritmo. Resumiendo la idea anterior, el pseudocdigo es una simulacin bastante cercana de cmo debe verse y comportarse un algoritmo implementado en un lenguaje de programacin real.
Universidad Tecnolgica Metropolitana del Estado de Chile Facultad de Ingeniera Escuela de Informtica Ciencias de la Computacin INF-624
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
3.4.2. Primitivas
Las primitivas (o instrucciones primitivas) son las instrucciones ms simples que se pueden encontrar en un algoritmo. Estas son: Instruccin Leer. Instruccin Escribir. Instruccin <- de asignacin. Proceso EjemploPrimitivas Escribir "Ingrese un dato, el dato se llamar A" Leer A Escribir "El dato ingresado fue: ", A B <- 3 Escribir "B tiene almacenado el valor: ", B FinProceso
Ejemplo 9: Algoritmo que utiliza primitivas
3.4.3. Expresiones
Las expresiones son representaciones de los datos en un algoritmo. Pueden ser de tipo numrico, alfanumrico, o lgicas. Proceso EjemploExpresiones Escribir "Esto es una expresin alfanumrica" Escribir -3.5 Escribir 42 Escribir -1232 Escribir "Las 3 expresiones anteriores son numricas" Escribir Falso Escribir "La expresin anterior es de tipo lgica" FinProceso
Ejemplo 10: Algoritmo que entrega por la pantalla del computador los valores de distintos tipos de expresiones
Se debe tener en cuenta que: Las expresiones alfanumricas contienen texto, y se representan entre comillas. Las expresiones numricas contienen valores numricos con parte entera y/o fraccionaria separada utilizando punto, con o sin signo, segn sea necesario (nmero entero o real). Las expresiones lgicas corresponden a los valores Verdadero o Falso, segn corresponda.
3.4.4. Variables
Una variable es un nombre simblico asociado a un espacio que se reserva para almacenar una expresin (dato). 3.4.4.1. Definicin Antes de utilizar una variable, se define su nombre y el tipo del dato que puede contener. Definir una variable es reservar un nombre y espacio para que el algoritmo haga uso de ella. La definicin de una variable puede darse en modo implcito o explcito. 7
Universidad Tecnolgica Metropolitana del Estado de Chile Facultad de Ingeniera Escuela de Informtica Ciencias de la Computacin INF-624
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
Cuando la definicin se da en modo explcito, se le llama declaracin de variable, y se realiza mediante una instruccin de pseudocdigo disponible para tal fin, en donde se indica el nombre de la variable y el tipo de dato que contiene. o Como Caracter. o Como Entero. o Como Logico. o Como Real. Cuando la definicin se da en modo implcito, basta solamente con utilizar la variable sin realizar ninguna declaracin. En este caso, la definicin de la variable se asume como realizada de forma automtica. Para efectos de comprensin del pseudocdigo, ambas formas de definicin son vlidas y equivalentes. Sin embargo, en ciertos lenguajes de programacin que siguen reglas estrictas es necesario declarar las variables siempre, mientras que en los lenguajes de programacin ms flexibles, se pueden omitir las declaraciones de las variables. Proceso UsarVariableDeclarada Definir A, B Como Entero Definir C Como Caracter Definir D Como Logico Definir E Como Real Leer A, B, C, D, E Escribir "El valor de A es: Escribir "El valor de B es: Escribir "El valor de C es: Escribir "El valor de D es: Escribir "El valor de E es: FinProceso
A B C D E
Proceso UsarVariableNoDeclarada Leer A, B, C, D, E Escribir "El valor de A es: ", Escribir "El valor de B es: ", Escribir "El valor de C es: ", Escribir "El valor de D es: ", Escribir "El valor de E es: ", FinProceso
A B C D E
Los algoritmos de los Ejemplos Ejemplo 11 y Ejemplo 12 son equivalentes. Desde el punto de vista prctico, la nica diferencia es que los tipos de dato que pueden contener las variables son, en el primer caso, definidos rgidamente, y en el segundo caso, determinados de manera flexible segn el dato que se almacene por primera vez en cada variable. Por ltimo, debido a que las variables almacenan el valor de las expresiones, pueden manipularse de forma similar a una expresin. Por ejemplo, si se desea escribir un dato por la pantalla del computador, se puede usar la instruccin 8
Universidad Tecnolgica Metropolitana del Estado de Chile Facultad de Ingeniera Escuela de Informtica Ciencias de la Computacin INF-624
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
Escribir acompaada de una expresin que represente el dato, o bien de una variable que contenga almacenada dicha expresin. Proceso EscribirExpresion Escribir "Esto es una expresin" FinProceso
Ejemplo 13: Escritura de dato representado por una expresin
3.4.4.2. Asignacin La asignacin es la accin de almacenar el valor de una expresin dentro de una variable. Para hacer una asignacin, se utiliza la primitiva <- vista en la seccin 3.4.2 Proceso AsignacionVariable A <- "Expresin a asignar" Escribir "A contiene: ", A B <- 10 Escribir "B contiene: ", B FinProceso
Ejemplo 15: Asignacin de las variables A y B
3.4.5. Operadores
Como su nombre lo dice, los operadores permiten realizar operaciones con una o ms expresiones, generalmente entre dos. La operacin realizada genera un valor, el cual puede manipularse de forma similar a una expresin, ya que el valor del resultado de un operador entre dos expresiones es tambin una expresin en s mismo. Un operador que admite dos expresiones se llama operador binario, mientras que un operador que admite solamente una expresin se llama operador unario. Existen tres tipos fundamentales de operadores: Operadores aritmticos. Operadores relacionales. Operadores lgicos.
Universidad Tecnolgica Metropolitana del Estado de Chile Facultad de Ingeniera Escuela de Informtica Ciencias de la Computacin INF-624
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
3.4.5.1. Operadores aritmticos Los operadores aritmticos manipulan valores numricos y entregan como resultado valores numricos. Es posible combinar en una sola expresin varios operadores aritmticos, por ejemplo, en la suma de tres nmeros. Nombre operador Suma Resta Multiplicacin Divisin Potenciacin Mdulo (resto divisin) Negativo Tipo Binario Binario Binario Binario Binario Binario Unario Smbolo
+ * / ^ % Tabla 1: Operadores aritmticos
Expresin de ejemplo
3 + 5 81.4 12 128.11 * 5.81 84 / 6.3 12 ^ 6 50 % 7 (-17)
Resultado
8 69.4 744.3191 1.3333333333 2985984 1 -17
3.4.5.2. Operadores relacionales Los operadores relacionales generalmente manipulan valores numricos, y entregan como resultado valores lgicos. A diferencia de los operadores aritmticos, no es posible combinar operadores relacionales: por ejemplo, si se desea realizar una comparacin doble o triple, se deben conectar mediante operadores lgicos. Nombre operador Mayor que Menor que Mayor o igual que Menor o igual que Igual a Distinto a Tipo Binario Binario Binario Binario Binario Binario Smbolo
> < >= <= = <>
Tabla 2: Operadores relacionales
Expresin de ejemplo
3 > 5 81.4 < 12 128.11 >= 5.81 84 <= 6.3 12 = 6 50 <> 7
Resultado
Falso Falso Verdadero Falso Falso Verdadero
3.4.5.3. Operadores lgicos Los operadores lgicos manipulan valores lgicos y entregan como resultado tambin valores lgicos. Al igual que los operadores aritmticos, es posible combinar en una sola expresin varios operadores lgicos. Nombre operador Conjuncin Disyuncin Negacin Tipo Binario Binario Unario Smbolo
Y O NO
Tabla 3: Operadores lgicos
Expresin de ejemplo
3 > 5 Y 81.4 < 12 12 = 6 O 50 <> 7 NO(84 <= 6.3) Falso Verdadero Verdadero
3.4.5.4. Agrupacin y precedencia de operadores Las expresiones que manipulan los operadores se pueden agrupar utilizando parntesis, de forma similar a como se realiza tradicionalmente en las matemticas. La precedencia es la prioridad bajo la cual los operadores se asocian. Cada tipo de operador tiene una prioridad definida, de modo que si se encuentran en una misma expresin distintos tipos de operadores, la precedencia indica en qu orden se realizan las distintas operaciones.
10
Universidad Tecnolgica Metropolitana del Estado de Chile Facultad de Ingeniera Escuela de Informtica Ciencias de la Computacin INF-624
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
El orden de precedencia de los distintos operadores, de mayor a menor prioridad es: Parntesis y operadores unarios de cualquier tipo. Operadores relacionales. Operadores lgicos. o Disyuncin. o Conjuncin. Operadores aritmticos. o Mdulo. o Potenciacin. o Divisin. o Multiplicacin. o Suma y resta. Proceso OperadoresAritmeticos A <- 3 + 4 * 7 / 8 Escribir "El resultado es: ", A FinProceso En este caso el resultado almacenado en A es 6.5, pues las operaciones se resuelven en el siguiente orden, por precedencia de los operadores: Divisin: 78 = 0.875 Multiplicacin: 4 78 = 4 0.875 = 3.5 Suma: 3 + 4 78 = 3 + 4 0.875 = 3 + 3.5 = 6.5
Ejemplo 16: Precedencia de operadores aritmticos
Proceso OperadoresLogicosYRelacionales JuanQuiereComer <- Verdadero MariaQuiereComer <- Falso ValorComida <- 1500 DineroTotal <- 2750 Come <- JuanQuiereComer O MariaQuiereComer Y DineroTotal >= ValorComida Escribir "Al menos uno de los dos come si el otro le presta dinero: ", Come FinProceso En este algoritmo, se tiene la siguiente proposicin, que puede tener valor Verdadero o Falso: JuanQuiereComer O MariaQuiereComer Y DineroTotal >= ValorComida El orden de precedencia de los operadores lgicos equivale a agrupar las expresiones de la siguiente forma: (JuanQuiereComer O MariaQuiereComer) Y (DineroTotal >= ValorComida) Lo anterior tiene validez debido a que el operador Y tiene mayor precedencia que el operador O, y a su vez ambos operadores lgicos tienen mayor precedencia que los operadores relacionales.
Ejemplo 17: Precedencia de operadores lgicos y relacionales
11
Universidad Tecnolgica Metropolitana del Estado de Chile Facultad de Ingeniera Escuela de Informtica Ciencias de la Computacin INF-624
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
La precedencia se puede manipular agrupando los operadores mediante parntesis. En ocasiones, los parntesis tambin pueden utilizarse para mantener un orden y mostrar qu grupos de operadores se resolvern primero que otros. Proceso ParentesisOperadoresMismoResultado A <- 3 * 5 / 8 + 10 % 2 B <- 3 * (5 / 8) + (10 % 2) C <- (3 * (5 / 8)) + (10 % 2) Escribir "El resultado de la expresin A es: ", A Escribir "El resultado de la expresin B es: ", B Escribir "El resultado de la expresin C es: ", C FinProceso En este caso, las 3 expresiones entregan el mismo resultado.
Ejemplo 18: Aplicacin de parntesis con propsitos de orden visual
Proceso ParentesisOperadoresDistintoResultado A <- 8 + 5 * 6 / 12 - 1 B <- (8 + 5) * 6 / (12 1) C <- (8 + 5) * (6 / 12) - 1 Escribir "El resultado de la expresin A es: ", A Escribir "El resultado de la expresin B es: ", B Escribir "El resultado de la expresin C es: ", C FinProceso En este caso, las 3 expresiones entregan resultados distintos.
Ejemplo 19: Aplicacin de parntesis para manipular la precedencia de los operadores
3.4.6. Funciones
Una funcin dentro de un algoritmo puede entenderse como una especie de caja negra que recibe uno o ms datos de entrada y entrega un solo dato de salida procesado segn un algoritmo determinado. La idea de caja negra quiere decir que, para usar una funcin, no es necesario conocer cmo sta trabaja por dentro. Solamente es necesario saber cul es su utilidad, qu datos podemos procesar con ella, y qu datos puede entregar como salida. Proceso CalcularCoseno Escribir "Ingrese la medida del ngulo, en radianes", A Leer A X <- COS(A) Escribir "El coseno de ", A, " es: ", X FinProceso
Ejemplo 20: Algoritmo que utiliza una funcin para obtener el coseno de un ngulo
12
Universidad Tecnolgica Metropolitana del Estado de Chile Facultad de Ingeniera Escuela de Informtica Ciencias de la Computacin INF-624
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
El o los valores de entrada de la funcin se conocen como argumento, mientras que el valor de salida se conoce como valor de retorno. El argumento de la funcin se puede identificar porque se representa entre parntesis. El valor de retorno generalmente se asigna a una variable, o se utiliza directamente en la primitiva Escribir. La expresin de la funcin representa por s misma su valor de retorno. Funcin RAIZ(X) ABS(X) LN(X) EXP(X) SEN(X) COS(X) TAN(X) ASEN(X) ACOS(X) ATAN(X) TRUNC(X) REDON(X) AZAR(X) X MOD Y Significado Raz cuadrada de X Valor absoluto de X Logaritmo natural de X Funcin exponencial de X Seno de X Coseno de X Tangente de X Arcoseno de X Arcocoseno de X Arcotangente de X Truncar a la parte entera de X Redondear a entero X Entero aleatorio entre 0 y X - 1 Resto de la divisin entre X e Y Ejemplo de uso A <- RAIZ(2) A <- ABS(-12.875) A <- LN(2) A <- EXP(-10.5) A <- SEN(3.14159265354) A <- COS(3.14159265354) A <- TAN(3.14159265354 / 4) A <- ASEN(0) A <- ACOS(-1) A <- ATAN(1) A <- TRUNC(-8.92) A <- REDON(12.7) A <- AZAR(10) A <- 20 MOD 6 Valor de retorno 1.41421356237 12.875 0.69314718055 0.00002753644 0 -1 1 0 3.1415926536 0.7853981634 -8 13 7 2
13
Universidad Tecnolgica Metropolitana del Estado de Chile Facultad de Ingeniera Escuela de Informtica Ciencias de la Computacin INF-624
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
Proceso EjemploCondicionalDecision Leer A Leer B Si A > B Entonces Escribir "A es mayor que B Sino Escribir "A no es mayor que B" FinSi FinProceso
Ejemplo 22: Estructura de control condicional "Si... Entonces... Sino... FinSi"
3.4.7.2. Estructuras de control iterativas Este tipo de estructura se utiliza para repetir una parte del algoritmo segn cierta condicin. Las estructuras de control iterativas pueden representar las ideas de: Repetir en un rango: Repetir las instrucciones contando en un intervalo de nmeros dado. Repetir mientras: Repetir las instrucciones mientras una condicin dada sea verdadera. Repetir hasta: Repetir las instrucciones hasta que una condicin dada sea verdadera. Proceso SumatoriaDeI Total <- 0 Escribir "Ingrese la cantidad de veces a sumar" Leer n Para i Desde 1 Hasta n Hacer Total <- Total + i FinPara Escribir "La sumatoria de i desde 1 hasta n es: ", Total FinProceso Este algoritmo permite calcular =1 .
Ejemplo 23: Estructura de control condicional "Para... Desde... Hasta... Hacer... FinPara
Proceso VerPares Total <- 0 Escribir "Ingrese el nmero mayor a visualizar" Leer n Para i desde 0 Hasta n Con Paso 2 Hacer Escribir i FinPara FinProceso Este algoritmo permite visualizar todos los pares positivos, incluyendo el cero, hasta .
Ejemplo 24: Estructura de control condicional "Para... Desde... Hasta... Con Paso... Hacer... FinPara"
14
Universidad Tecnolgica Metropolitana del Estado de Chile Facultad de Ingeniera Escuela de Informtica Ciencias de la Computacin INF-624
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
Proceso VerParesInvertido Total <- 0 Escribir "Ingrese el nmero mayor a visualizar" Leer n Para i desde n Hasta 0 Con Paso -2 Hacer Escribir i FinPara FinProceso Este algoritmo permite visualizar todos los pares positivos, incluyendo el cero, hasta , pero en orden inverso.
Ejemplo 255: Estructura de control condicional "Para... Desde... Hasta... Con Paso... Hacer... FinPara", utilizando tamao de paso negativo.
Proceso SoloMenorQueDiez A <- 1 Escribir "A vale ", A Mientras A < 10 Hacer Escribir "A sigue siendo menor que 10" Escribir "Ingrese un nuevo valor para A" Leer A FinMientras Escribir "Por fin A ya no es menor que 10. Su valor es: ", A FinProceso
Ejemplo 26: Estructura de control iterativa "Mientras... Hacer... FinMientras"
Proceso RepetirHastaQueMeEches Escribir "Hola" Repetir Escribir "Quieres que me vaya? [S/No]" Leer A Hasta Que A = "S" Escribir "Adis" FinProceso
Ejemplo 27: Estructura de control iterativa "Repetir... Hasta Que..."
15
Universidad Tecnolgica Metropolitana del Estado de Chile Facultad de Ingeniera Escuela de Informtica Ciencias de la Computacin INF-624
Apuntes Ayudanta Ciencias de la Computacin Autor: Jorge Guitard Torres Ayudante Seccin 09 2 semestre 2012
N lnea 01 02 03 04 05 04 05 04 05 06 07
2 2 3 3 4 4 4 4
Ejemplo 28: Traza para un algoritmo que calcula el factorial de un nmero, asumiendo que el usuario ingresa 4 como valor de entrada
16