You are on page 1of 16

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. 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

3.2. Qu problemas pueden solucionarse mediante algoritmos?


No todos los problemas son solucionables mediante algoritmos. Segn el caso, pueden darse las siguientes situaciones: Existen algoritmos que solucionan el problema. o El algoritmo se puede implementar: resuelve el problema y lo hace en un tiempo razonable. o El algoritmo no se puede implementar: no resuelve el problema debido a limitaciones del computador en el que se implementa, o bien podra resolverlo pero demorara demasiado. No existen algoritmos que solucionen el problema.

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.2.1. Problemas decidibles


Cuando existe al menos un algoritmo que permite hallar la solucin a un problema, estamos ante un problema de tipo decidible. La existencia de algoritmos para un problema no quiere decir que el problema pueda ser resuelto. Segn dicho criterio, dentro de los problemas decidibles existen otras dos subcategoras: los problemas tratables y los intratables. 3.2.1.1. Problemas tratables Un problema decidible es tratable cuando el algoritmo que permite resolverlo es factible de implementar en un computador, y por ende, el computador puede hallar la solucin en un tiempo razonable. Ejemplos de problemas decidibles tratables son: Races reales de la ecuacin de segundo grado. Clculo de promedios. Cualquier otro algoritmo que pueda lograr implementarse con xito en un computador. 3.2.1.2. Problemas intratables Si el algoritmo que permite resolver un problema decidible no es posible de implementar en un computador debido a que no entrega una solucin en un tiempo razonable, o bien por necesitar recursos excesivos para entregar la solucin, se est ante un problema de tipo intratable. Ejemplos de situaciones que contienen problemas decidibles intratables son: El juego de las torres de Hani. El problema de descomponer un nmero natural muy grande en factores primos. Se tienen 3 varillas. Inicialmente, una de las varillas contiene discos colocados unos sobre otros, en orden decreciente de dimetro.

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

3.2.2. Problemas indecidibles


Un problema es indecidible cuando el razonamiento necesario para resolverlo no puede mecanizarse. Se tiene un conjunto de N baldosas, cada cual con una combinacin distinta de colores en sus lados. Dada cualquier superficie finita de cualquier tamao, puede recubrirse con baldosas, de forma que, las baldosas adyacentes tengan el mismo color en los lados que se tocan?

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

3.3. Cmo se representan los algoritmos?


Al momento de su construccin, es posible representar los algoritmos utilizando cualquiera de los siguientes mtodos: Narracin. Diagrama de flujo. Pseudocdigo. Implementacin en un lenguaje de programacin real.

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

Escribir Ingrese valor de A

Leer A

Escribir Ingrese valor de B

Leer B

A>B S Escribir A es mayor que B

No

A=B S Escribir A y B son iguales

No

Escribir A es menor que B

FinProceso

Ejemplo 5: Diagrama de flujo de un algoritmo que compara dos nmeros A y B

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.

3.4. Estructuras de un algoritmo


Para efectos de este curso, se utiliza pseudocdigo como forma preferida para representar y estudiar los algoritmos y sus estructuras. Las estructuras necesarias para representar un algoritmo son: Estructura de proceso. Primitivas. Expresiones. o Numricas. o Alfanumricas. o Lgicas. Variables. o Definicin. o Asignacin. Operadores. o Aritmticos. o Lgicos. o Agrupacin y precedencia. Funciones Estructuras de control. o Condicional. o Iteracin.

3.4.1. Estructura de proceso


La estructura de proceso indica el mbito del algoritmo, es decir, establece su nombre, en donde comienza y en donde termina. Proceso Suma [Contenido del proceso] FinProceso
Ejemplo 8: La estructura de proceso indica el nombre del proceso y agrupa su contenido de inicio a fin

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

Ejemplo 11: Definicin de variables en modo explcito (declaradas)

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

Ejemplo 12: Variables definidas en modo implcito (no declaradas)

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

Proceso EscribirVariable A <- "Esto es una expresin" Escribir A FinProceso


Ejemplo 14: Escritura de dato representado por una variable que contiene almacenada 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

Tabla 4: Funciones habituales en el pseudocdigo

3.4.7. Estructuras de control


Las estructuras de control permiten manipular la secuencia en que se siguen las instrucciones de un algoritmo. Estas manipulaciones, por ejemplo, pueden ser de tipo: Condicional: preguntar si una condicin se cumple, y de acuerdo a ello decidir qu camino toma el algoritmo. Iteracin: repetir parte de un algoritmo segn alguna condicin. 3.4.7.1. Estructuras de control condicional Este tipo de estructura de control puede representar las ideas: Condicin: Solo si una condicin es verdadera, se realizan ciertas cosas. Decisin: Si una condicin es verdadera, se realizan ciertas cosas; sino, se realizan otras. Proceso EjemploCondicional Leer A Leer B Si A > B Entonces Escribir "A es mayor que B" FinSi FinProceso
Ejemplo 21: Estructura de control condicional "Si... Entonces FinSi"

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

3.5. Traza o ruteo de un algoritmo


Hacer la traza o el ruteo de un algoritmo equivale a simular lo que sucede al seguir sus instrucciones paso por paso, utilizando lpiz y papel. Para realizar la traza, se realiza una tabla en la cual se identifican los pasos del algoritmo y las variables utilizadas. El objetivo de la traza es hacer un seguimiento a los datos manipulados por el algoritmo para verificar su correcto funcionamiento. 00 01 02 03 04 05 06 07 08 Proceso Factorial Escribir "Ingrese el nmero a calcular el factorial" Leer n Resultado <- 1 Para i desde 2 Hasta n Hacer Resultado <- Resultado * i FinPara Escribir "El factorial de ", n, " es igual a ", Resultado FinProceso Variable n 4 4 4 4 4 4 4 4 4 4 Variable i Variable Resultado 1 1 2 2 6 6 24 24 24

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