Escolar Documentos
Profissional Documentos
Cultura Documentos
La principal razn para que las personas aprendan lenguajes y tcnicas de programacin es utilizar la computadora como una herramienta para resolver problemas. La resolucin de un problema exige al menos los siguientes pasos: 1. Definicin o anlisis del problema. 2. Diseo del algoritmo. 3. Transformacin del algoritmo a un programa. 4. Ejecucin y validacin de un programa. El conjunto de instrucciones que especifican la secuencia de operaciones a realizar, en orden, para resolver un sistema especfico o clase de problema, se denomina algoritmo. En otras palabras, un algoritmo es una frmula para la resolucin de un problema. Para realizar un proceso se le debe suministrar al procesador un algoritmo adecuado. Por ejemplo, al cocinero debe drsele una receta, al pianista la partitura y as sucesivamente, considerando al cocinero y al pianista como procesadores. Los algoritmos son independientes tantos del lenguaje de programacin en que se expresan como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programacin y ejecutarse en una computadora distinta; sin embargo, el algoritmo ser siempre el mismo. As, por ejemplo, en una analoga de la vida diaria una receta de cocina se puede expresar en espaol lo mismo que en alemn, francs, ingls, etc., pero cualquiera que sea el lenguaje los pasos para la elaboracin del plato se realizarn sin importar el idioma del cocinero. En la ciencia de la computacin y en la programacin, los algoritmos son ms importantes que los lenguajes de programacin o las computadoras. Un lenguaje de programacin es tan solo un medio para expresar un algoritmo y una computadora es solo un procesador para ejecutarlo. Tanto el lenguaje de programacin como la computadora son los medios para obtener un fin: conseguir que el algoritmo se ejecute y se efecte el proceso correspondiente.
Lenguajes de Programacin.
Un programa se escribe en un lenguaje de programacin y las operaciones que conducen a expresar un algoritmo en forma de programa se llama programacin. As, los lenguajes utilizados para escribir programas de computadora son los lenguajes de programacin y programadores son los escritores y diseadores de programas. Los principales lenguajes utilizados en la actualidad son:
Lenguaje de mquina: son aquellos que estn escritos en lenguajes directamente inteligibles por la mquina (computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de caracteres dgitos- 0 y 1) que especifican una operacin, se denominan instrucciones de mquina o cdigo de mquina. El cdigo de mquina es conocido como cdigo binario. Lenguajes de bajo nivel: son ms fciles de utilizar que los lenguajes de mquina, pero al igual que ellos, dependen de la mquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador (assambly lenguage). Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotcnicas (mnemonics). Por ejemplo, nemotcnicos tpicos de operaciones aritmticas son: en ingls: ADD, SUB, DIV, etc.; en espaol: SUM, RES, DIV, etc. Lenguajes de alto nivel: son los ms utilizados por los programadores. Estn diseados para que las personas escriban y entiendan los programas de un modo mucho ms fcil que los lenguajes anteriores. Un programa escrito en lenguaje de lato nivel se llama: cdigo fuente. Un programa escrito en lenguaje de mquina se llama: cdigo objeto. Para traducir el cdigo fuente a cdigo objeto se utiliza un programa llamado compilador (tambin revisa el programa en busca de errores que el programador hubiera cometido).
Carcter (char): es el conjunto finito y ordenado de caracteres que la computadora conoce. Un dato tipo carcter contiene un solo carcter. Los caracteres que reconocen las diferentes computadoras no son estndar, sin embargo, la mayora reconoce los caracteres alfabticos y numricos: Alfabticos (A, B, C,,Z), (a, b, c,,z) Numricos (1, 2, 3,, 0) Caracteres especiales (+, -, *, /,, &, >,) Cadena de Caracteres (string): es sucesin de caracteres que se encuentran delimitados por una comilla (apostrofe) o doble comillas, segn el tipo de lenguaje de programacin. La longitud de una cadena de caracteres es los nmeros de ellos comprendidos entre los separadores o limitadores. Algunos lenguajes tienen datos tipos cadenas.
Variables y Constantes.
Una constante es una partida de datos (objetos) que permanecen sin cambios durante todo el desarrollo del algoritmo o durante la ejecucin del programa. Una variable es un objeto o partida de datos cuyo valor puede cambiar durante el desarrollo del algoritmo o ejecucin del programa. Una variable se identifica por los siguientes atributos: nombre que los asigna el programador y tipo que describe el uso de la variable. Los nombres de las variables, a veces conocidos como identificadores, suelen constar de varios caracteres alfanumricos, de los cuales el primero es una letra. No se deben utilizar aunque lo permita el lenguaje como nombres de identificadores palabra reservadas del lenguaje de programacin.
Expresiones.
Las expresiones son combinaciones de constantes, variables, smbolos de operacin, parntesis y nombres de funciones especiales. Las mismas ideas son utilizadas en notacin matemtica tradicional. Por ejemplo: a + (b + 3) +
b + (b 5) +
c
representa la funcin raz cuadrada.
Cada expresin toma un a valor que se determina tomando los valores de las variables y constantes implicadas y la ejecucin de las operaciones indicadas. Una expresin consta de operadores y operandos. Segn sea el tipo de objetos a manipular, las expresiones se clasifican en: Aritmticas. Lgicas. Carcter. El resultado de la expresin aritmtica es de tipo numrico; el resultado de la expresin relacional y de una expresin lgica es de tipo lgico; el resultado de una expresin carcter es de tipo carcter. Las expresiones aritmticas son anlogas a las frmulas matemticas. Las variables y constantes son numricas (real o entera) y las operaciones son las aritmticas.
Operadores aritmticos: + Suma - Resta * Multiplicacin/ Divisin **, ^ Exponenciacin div Divisin Entera mod mdulo (resto) Las expresiones que tienen dos o ms operandos requieren unas reglas matemticas que permitan determinar el orden de las operaciones, se denominan reglas de prioridad y son: 1. Las operaciones que estn encerradas entre parntesis se evalan primero. Si existen diferentes parntesis anidados (interiores unos a otros), las expresiones ms internas se evalan primero. 2. Las operaciones dentro de una expresin suelen seguir el siguiente orden de prioridad: Operadores exponencial **, ^ Operadores *, / Operadores div, mod. Operadores +, En caso de coincidir varios de igual prioridad en una expresin o subes expresin encerrada entre parntesis, el orden de prioridad en este caso es de izquierda a derecha. Las expresiones lgicas, cuyo valor es siempre verdadero o falso. Recuerde que existen dos constantes lgicas, verdad (true) y falso (false) y que las variables lgicas pueden tomar solo estos dos valores. En esencia, una expresin lgica es una expresin que solo puede tomar estos dos valores, verdad y falso. Se denominan tambin expresiones booleanas en honor al matemtico britnico George Boole, que desarroll el lgebra de Boole. Las expresiones lgicas se forman combinando constantes lgicas, variables lgicas y otras expresiones lgicas, utilizando los operadores lgicos not, and, or, y los operadores relacionales (de relacin o comparacin) =, >, <, >=, =>, <>.
Funciones.
Cuando se realizan los programas con cierta complejidad, es muy probable que sea necesario realizar operaciones que estn fuera del alcance de los operadores +, -, *, /, como por ejemplo hallar el logaritmo de un valor. La mayora de los lenguajes de programacin ofrecen un conjunto de operadores adicionales llamados funciones. Las funciones estndar son los programas que ya se escribieron, compilaron y probaron para que el usuario no tenga que hacerlo. Algunas de las funciones programacin son: ABS(x): COS(x): SIN(x): TAN(x): LOG(x): SQR(x): SQRT(x): ROUND(x): TRUNC(x): ms comunes disponibles en la mayora de los lenguajes de Valor absoluto de x Calcula el coseno de x Calcula el seno de x Calcula la tangente de x Calcula el logaritmo de x Calcula el cuadrado de x Calcula la raz cuadrada de x Redondea el valor de x Trunca el valor de x
La Operacin de Asignacin.
La operacin de asignacin es el modo de darle valores a una variable. La operacin de asignacin se representa con el smbolo u operador . La operacin de asignacin se conoce como instruccin o sentencia de asignacin cuando se refiere a un lenguaje de programacin. El formato general de una operacin de asignacin es: Nombre de la variable expresin La flecha (operador de asignacin) se sustituye en otros lenguajes por = (BASIC, FORTRAN) o := (PASCAL) C/C++. Sin embrago, es preferible el uso de la flecha en la redaccin del algoritmo para evitar ambigedades, dejando el uso = exclusivamente para el operador de igualdad. La accin de asignar es destructiva, ya que el valor que tuviera la variable antes de la asignacin se pierde y se reemplaza por el nuevo valor. As, en la secuencias de operaciones: A 25 A 134 A5 Cuando estas se ejecutan, el valor ltimo que toma A ser 5 (los valores 25 y 134 han desaparecido). Es posible utilizar el mismo nombre de variables en ambos lados del operador de asignacin. Por ejemplo, acciones como: NN+1 Tiene sentido; se denomina el valor actual de la variable N, se incrementa en 1 y a continuacin el resultado se asigna a la misma variable N. Sin embargo, desde el punto de vista matemtico no tiene sentido. Las asignaciones se clasifican segn sea el tipo de expresin y las cuales son aritmticas, lgicas y caracteres.
Lectura de Datos.
La operacin bsica de lectura permite obtener, de la persona que usa el programa, un valor para asignarlo a la variable. Aunque cada lenguaje posee su forma propia de nombrarlo. La operacin bsica de lectura se denotar con la palabra LEER. Por ejemplo, la operacin: LEER(A) Indica que el valor de la variable A va a ser suministrado por algn usuario al momento de ejecutar el programa. Considrese el problema de calcular el rea de un tringulo. Sin usar operaciones de lectura, la secuencia de operaciones que deben ejecutarse puede ser la siguiente: BASE 5 ALTURA 6 AREA BASE * ALTURA / 2 Ntese que la secuencia anterior slo permite calcular el rea de un tringulo de base 5 y altura 6. Para calcular el rea de otro tringulo hay que modificar las primeras dos operaciones de asignacin. Usando operaciones de lectura, se puede reescribir la secuencia de operaciones que permite calcular el rea de un tringulo, de la siguiente forma: LEER (BASE) LEER (ALTURA) AREA BASE * ALTURA / 2 Indicando que los valores de base y altura son datos que sern suministrados por alguna persona al momento de ejecutar el programa. Esta versin, a diferencia de la que no usa operaciones de entrada, es capaz de calcular el rea de cualquier tringulo, sin necesidad de alterar ninguna operacin.
Escritura de Datos.
La operacin bsica de escritura permite mostrar en pantalla el contenido de una variable. Aunque cada lenguaje posee se forma propia de nombrarlo. La operacin bsica de escritura se denotar con la palabra ESCRIBIR. Por ejemplo, la operacin: ESCRIBIR (A) Escribe en pantalla el valor de la variable A. Si en el ejemplo del clculo de rea de un tringulo, se desea mostrar el contenido de la variable AREA al finalizar el cmputo, hay que agregar la lnea: ESCRIBIR (A) De esta forma, la secuencia de operaciones para calcular el rea de cualquier tringulo resulta: LEER (BASE) LEER (ALTURA) AREA BASE * ALTURA / 2 ESCRIBIR (AREA)
La operacin de ESCRIBIR tambin sirve para desplegar mensajes en la pantalla. Los mensajes son utilizados para agregar mayor comprensin a los programas. Ntese en el ejemplo, que el usuario debe acordarse de que el primer nmero que debe introducir es la base y el segundo es la altura. Usando la operacin de ESCRIBIR, se puede liberar al usuario de recordar el orden en que debe suministrar los datos. Para desplegar un mensaje usando la operacin de ESCRIBIR, hay que poner entre parntesis una cadena de caracteres entre comillas. Por ejemplo, la siguiente operacin despliega el mensaje CALCULO DEL REA DE UN TRINGULO en pantalla: ESCRIBIR (CALCULO DEL REA DE UN TRINGULO) La siguiente secuencia de operaciones usa la operacin de escritura para decorar la ejecucin del programa que calcula el rea de un tringulo: ESCRIBIR (CLCULO DEL REA DE UN TRINGULO) ESCRIBIR (INTRODUZCA EL VALOR DE LA BASE:) LEER (BASE) ESCRIBIR (INTRODUZCA EL VALOR DE LA ALTURA:) LEER (ALTURA) AREA BASE * ALTURA / 2 ESCRIBIR (AREA)
Diagramas de Flujo.
El diagrama de flujo hace uso de elementos grficos para expresar las secuencias de operaciones que deben realizarse para resolver un problema. Un diagrama de flujo muestra la lgica de un algoritmo, haciendo nfasis en los pasos individuales y sus interrelaciones. La siguiente tabla muestra las figuras usadas para elaborar un diagrama de flujo:
Cada figura contiene una anotacin que describe la operacin que debe realizarse. Dependiendo del smbolo, cada anotacin tiene una interpretacin diferente. El smbolo de clculo puede contener una o ms asignaciones, de expresiones o valores de variables. Los siguientes ejemplos ilustran el uso del smbolo de clculo:
El smbolo de entrada puede contener una o ms variables cuyo valor ser suministrado por el usuario al ejecutar el programa (equivale a la operacin LEER). Los siguientes ejemplos ilustran el uso del smbolo de entrada:
El smbolo de salida puede contener una o ms variables cuyo valor ser desplegado en pantalla el ejecutar el programa (equivale a la operacin ESCRIBIR). Los siguientes ejemplos ilustran el uso del smbolo de salida:
El smbolo de comienzo/fin slo puede contener dos palabras: comienzo o fin. Cuando contiene la palabra comienzo indica el punto donde comienza el algoritmo; cuando contiene la palabra fin, indica un punto de finalizacin del algoritmo. Un diagrama de flujo solo puede contener un smbolo de comienzo, aunque puede tener varios smbolos de fin. Los siguientes ejemplos ilustran el uso del smbolo de comienzo/fin:
El smbolo de decisin generalmente contiene una pregunta, cuya respuesta puede ser positiva o negativa. Dependiendo de la respuesta, la ejecucin del programa es alterada. Las figuras se conectan directamente mediante lneas, para indicar el orden el orden en que deben realizarse las operaciones. Cada lnea posee una flecha en uno de sus extremos, que especifica el sentido de la secuencia. Por ejemplo, el siguiente diagrama:
Resolucin de Problemas.
La principal razn para que las personas aprendan a programar de manera general y los lenguajes de programacin en particular es utilizar la computadora como una herramienta para la resolucin de problemas. Ayudado por la computadora, la resolucin de un problema se puede dividir en tres fases importante: Anlisis del problema. Diseo del algoritmo. Resolucin del algoritmo en la computadora.
El primer paso anlisis del problema- requiere que el problema sea definido y comprendido claramente para que pueda ser analizado con todo detalle. Una vez analizado el problema, se debe desarrollar el algoritmo procedimiento paso a paso para solucionar un problema dado-. Por ltimo, para resolver el algoritmo mediante una computadora se necesita codificar el algoritmo en un lenguaje de programacin PASCAL, C/C++, VISUAL BASIC, etc., es decir, convertir el algoritmo en programa, ejecutarlo y comprobar que el programa soluciona verdaderamente el problema.
10
En el diseo del algoritmo este se describe en una herramienta de programacin tal como un diagrama de flujo, diagrama N-S o pseudo cdigo. Sin embargo, el programa que implementa el algoritmo debe ser escrito en un lenguaje de programacin y siguiendo las reglas gramaticales o sintaxis del mismo. La fase de conversin del algoritmo en un lenguaje de programacin se denomina codificacin, ya que el algoritmo escrito en un lenguaje especfico de programacin se denomina cdigo.
11
Tras la codificacin del programa, deber ejecutarse en una computadora y a continuacin de comprobar los resultados pasar a la fase final de documentacin. Ejemplos: 1. Disear un algoritmo para calcular el rea de un rectngulo. Entrada: largo (real), ancho (real) Salida: rea (real) Algoritmo en pseudo cdigo: a. Introducir datos de entrada. b. Leer datos de entrada. c. Calcular el resultado. d. Escribir el resultado. Refinamiento: a. Comienzo b. LEER (LARGO) c. LEER (ANCHO) d. AREA LARGO * ANCHO e. ESCRIBIR (AREA) f. Fin
Lenguaje Algortmico.
El lenguaje algortmico es una especie de lenguaje de programacin informal, en donde se omiten aspectos tcnicos, para considerar solamente operaciones que definen el comportamiento del algoritmo. Un lenguaje algortmico no esta vincula con ningn lenguaje de programacin en particular, aun cuando toma elementos de algunos de ellos. Cuando se usa el lenguaje algortmico para expresar un algoritmo, su traduccin a un lenguaje en particular, resultas bastante fcil. A diferencia de los lenguajes de programacin, un lenguaje algortmico no posee reglas estrictas de construccin. El lenguaje algortmico es tan flexible que cada programador puede crear su propio lenguaje a la medida de sus necesidades. Cuando se discuti el problema de calcular el rea de un triangulo, se usaron elementos de un lenguaje algortmico para presentar la solucin. Por defecto, el orden en que se ejecutan las operaciones es de arriba hacia abajo (como se lee un texto). La palabra comienzo indica el punto de inicio del algoritmo; la palabra fin indica su punto de finalizacin. A manera de ilustracin, se muestra a continuacin el algoritmo para calcular el rea de un triangulo programado en el lenguaje PASCAL: Program Triangulo; Var AREA, BASE, ALTURA: Real Begin READLN(BASE); READLN(ALTURA); AREA:=BASE*ALTURA/2; WRITELN(AREA); End.
12
Ntese la similitud entre el algoritmo y el programa. El programa en PASCAL incluye elementos que no estn en el algoritmo, pero que en el fondo no afectan el resultado. En realidad, un lenguaje algortmico tiene el mismo poder de expresin que el diagrama de flujo. Ntese que las operaciones LEER y ESCRIBIR del lenguaje algortmico, tiene sus equivalentes en el diagrama de flujo; lo mismo vale para la operacin de calculo y los smbolos que indican el inicio y el fin de los algoritmos.
Estructuras de Decisin.
Los elementos de programacin discutidos permiten elaborar algoritmos de manera muy limitada. En este sentido, las operaciones permiten leer unos datos de entrada, realizar ciertos clculos y mostrar los resultados. Se dice que los algoritmos obtenidos usan nicamente estas operaciones, tienen un flujo lineal, es decir, que cada operacin se ejecuta una sola vez. Si se observa el algoritmo para el clculo del rea de un tringulo, se puede comprobar este comportamiento. Sin embargo, con frecuencia se presentan situaciones en las que debe tomarse alguna decisin en funcin de los valores de una o varias variables. Con las estructuras de decisin, se puede alterar el flujo lineal en la ejecucin de un algoritmo, permitiendo la repeticin controlada de un grupo de operaciones, o seleccionar, con algn criterio, que operaciones deben ejecutarse en un momento dado. Para ilustrar un poco la necesidad de las estructuras de decisin, supngase que se desea disear un algoritmo que permita determinar, de un conjunto dado de tringulos, cuantos tienen un rea mayor que 20 y menor que 40. Con las operaciones que se conocen hasta ahora, lo mas lejos que se puede llegar es a calcular el rea de un solo tringulo. Para culminar con xito el diseo del algoritmo, hay que incluir unas estructuras de decisin que permita la manipulacin de varios tringulos, as como la deteccin de un tringulo con rea mayor que 20 y menor que 40.
Expresiones Lgicas.
El uso de estructuras de decisin requiere que se hagan preguntas sobre los valores de algunas variables o combinacin de estas. Las respuestas a estas preguntas solo pueden ser dos: si o no. Este tipo de preguntas reciben el nombre de expresiones lgicas. De la misma forma que las expresiones aritmticas usan operadores aritmticos para combinar las variables, las expresiones lgicas poseen su propio conjunto de operadores.
Operadores Relacionales.
La forma ms simple de una pregunta o expresin lgica, involucra la comparacin de dos valores. Por ejemplo, se puede preguntar si el valor de la variable AREA es mayor que 20, o si el contenido de la variable X es diferente al contenido de variable Y, etc. Para hacer este tipo de comparaciones, se utilizan los operadores de relacin, de los cuales, los ms bsicos se encuentran en la siguiente tabla:
13
Explicacin Mayor que Menor que Igual a Mayor o igual que Menor o igual que Distinto
Al igual que en los operadores aritmticos, los valores a comparar se colocan a los lados del operador. Ntese que cuando se comparan dos valores usando algunos de estos operadores, se puede obtener solamente dos resultados; afirmando la relacin o negndola. Por ejemplo la expresin: AREA > 20 Es cierta, si el contenido de la variable AREA es mayor que 20, y es falsa en caso contrario, o sea, que el contenido de la variable AREA sea menor o igual que 20. Los siguientes son ejemplos de expresiones lgicas que usan operadores de relacin: X > Y A <> 1 BASE >= ALTURA ALTURA <= BASE Ntese que las dos ltimas expresiones son equivalentes. Las expresiones lgicas pueden contener a su vez expresiones aritmticas. Al momento de evaluar la expresin lgica, primero se resuelven las expresiones aritmticas y se comparan los resultados. Por ejemplo, en la siguiente expresin: X < Y / 2 La expresin Y / 2 se evala antes de efectuar la comparacin. Los siguientes son ejemplos de expresiones lgicas que contienen expresiones aritmticas: X / 2 <= Y + 1 ALTURA = BASE / 2 X <> LOG (X)
Operadores Lgicos.
Las formas ms simples de expresiones lgicas, que usan slo operadores de relacin, pueden ser combinadas usando otro tipo de operadores llamados operadores lgicos. Los operadores lgicos se usan para elaborar preguntas o expresiones lgicas ms complejas. Por ejemplo, la pregunta de que si el valor de la variable AREA es mayor que 20 y menor que 40, no puede ser efectuada usando operadores de relacin nicamente. Ntese que la pregunta contiene las siguientes expresiones lgicas: AREA > 20 AREA < 20
14
Para completar la pregunta satisfactoriamente hay que hacer uso del operador lgico y, que permite combinar dos expresiones lgicas en una sola. De esta forma, la pregunta se puede formular como: AREA > 20 y AREA < 40
Dependiendo de los valores que tome la variable AREA, la expresin puede ser verdadera o falsa. La siguiente tabla muestra el resultado de evaluar la expresin, cuando la variable AREA toma diferentes valores: AREA 43 23 18 31 40 AREA > 20 Verdadero Verdadero Falso Verdadero Verdadero AREA < 40 Falso Verdadero Verdadero Verdadero Falso AREA > 20 Y AREA<40 Falso Verdadero Falso Verdadero Falso
Obsrvese que para que el resultado se la expresin sea verdadero, el valor de las expresiones a combinar deben se ambos verdaderos. Si alguna de las expresiones es falsa, su combinacin, usando el operador y tambin resulta falsa. Esto corresponde a la interpretacin natural que se le da a la palabra y. Existen otros operadores lgicos adems del y. Cada operador lgico tiene un comportamiento diferente sobre las expresiones que combina. La forma en que un operador acta sobre las expresiones se describe por medio de lo que se conoce como tablas de verdad. Una tabla de verdad muestra todos los valores que puede tomar una expresin, en funcin de los valores de las expresiones que combina. Por ejemplo, la tabla de la verdad del operador y es la siguiente: E1 Verdadero Verdadero Falso Falso E2 Verdadero Falso Verdadero Falso E1 y E2 Verdadero Falso Falso Falso
E1 y E2 puede ser cualquier expresin lgica. La tabla muestra todas las posibles combinaciones de valores que pueden tomar las expresiones E1 y E2. Para cada combinacin, se presenta el valor que se obtiene cuando se aplica el operador y a las dos expresiones. Otro operador lgico utilizado con frecuencia es el operador o. El resultado de aplicar esta operacin es verdadera, cuando al menos una de las expresiones que enlaza es verdadera. La tabla de verdad del operador o, es la siguiente:
15
Existe otro operador lgico, que a diferencia de los operadores y y o, acta solamente sobre una expresin lgica. El operado no invierte el valor de una expresin lgica. La tabla de verdad del operador no es la siguiente: E Verdadero Falso No E Falso Verdadero
Una expresin lgica puede estar compuesta a su vez de varias expresiones lgicas y aritmticas. Los operadores lgicos tienen la prioridad ms baja entre todos los operadores. Cuando se evala una expresin lgica, primero se resuelven los operadores aritmticos, luego los relacionales y por ltimo los lgico. Al igual que los operadores aritmticos, los operadores lgicos y de relacin tienen sus prioridades al momento de efectuar la evaluacin de una expresin. Las siguientes tablas muestran las prioridades de los operadores de relacin y de los operadores lgicos: Prioridad 1 2 3 4 5 6 Prioridad 1 2 3 Operador = <> < > <= >= Operador No Y O
Si en una expresin hay varios operadores con una misma prioridad, estos se procesan de izquierda a derecha. Al igual que en los operadores aritmticos, se pueden usar parntesis para alterar el orden de evaluacin.
Seleccin de Alternativas.
Hay situaciones en que la ejecucin de una secuencia de operadores de un algoritmo est sujeta a ciertas condiciones. Por ejemplo, supngase que se desea hacer un algoritmo que permita obtener el menor de dos nmeros diferentes. El algoritmo debe iniciarse con la lectura de los dos nmeros para almacenarlos en dos variables. Lugo, dependiendo del valor de las variables, debe escribirse uno u otro valor. Supngase que se usan dos variables, denominadas A y B, para almacenar los nmeros. Si el valor de A es menor que el valor de B, hay que escribir el valor A, en caso contrario, hay que escribir el valor de B. Est claro que la ejecucin de una u otra operacin de escritura est condicionada al valor de las variables. Como no se puede predecir los valores de entrada, el algoritmo debe considerar todas las posibles alternativas. Para expresar una seleccin de alternativas es un diagrama de flujo, se usa el smbolo de decisin. Dentro se coloca una expresin lgica que describe la condicin que se desea probar. Del smbolo se desprende dos flechas: una que indica las operaciones que deben efectuarse en caso de que se cumpla la condicin; la otra flecha indica las operaciones que deben efectuarse, en caso de no cumplirse la condicin. El siguiente diagrama muestra el algoritmo para determinar el menor de dos nmeros:
16
Para expresar una seleccin de alternativas en lenguaje algortmico, se usan las siguientes palabras Si, Entonces y Sino. Por ejemplo, el algoritmo anterior se expresa de la siguiente forma: Comienzo LEER (A) LEER (B) Si A < B Entonces ESCRIBIR (A) Sino ESCRIBIR (B) Fin En general, el diagrama de flujo asociado a una seleccin de alternativas siempre tiene la siguiente forma:
17
La condicin debe ser una expresin lgica. Si la evaluacin resulta verdadera, se ejecutan solo las operaciones de alternativas verdaderas. Si la evaluacin resulta falsa, se ejecutan slo las operaciones de alternativas falsas. De manera similar, la forma de expresar la seleccin de alternativas, usando el lenguaje algortmico, es la siguiente: Si Condicin Entonces Operadores de Alternativas Verdaderas Sino Operadores de Alternativas Falsas Cuando en una alternativa hay que ejecuta ms de una operacin, se sangran adecuadamente las operaciones con respecto a la palabra entonces o la palabra sino, segn corresponda: Si Condicin Entonces Operacin 1 de alternativa Operacin 2 de alternativa : Sino Operacin 1 de alternativa Operacin 2 de alternativa verdadera verdadera falsa falsa
En algunos casos pueden que no existan operaciones que efectuar cuando la evaluacin de la condicin resulte falsa. Por ejemplo, considrese el algoritmo para calcular el rea de un tringulo. Supngase que se quiere imprimir un mensaje cuando el rea de un tringulo sea mayor que 20 y menor que 40. El diagrama de flujo es el siguiente:
18
En lenguaje algortmico, el algoritmo resulta: Comienzo LEER (BASE) LEER (ALTURA) AREA BASE * ALTURA / 2 Si AREA > 20 y AREA < 40 Entonces ESCRIBIR (rea entre 20 y 40) Fin Las operaciones de alternativas pueden contener a su vez otras operaciones de seleccin de alternativas. Cuando se presente esta situacin se dice que existen seleccin de alternativas anidadas. Para ilustrar este caso, considrese el problema de determinar el menor de tres valores diferentes. El diagrama de flujo del algoritmo es el siguiente:
19
En el lenguaje algoritmo, el algoritmo puede escribirse de la siguiente manera: Comienzo LEER (A) LEER (B) LEER (C) Si A < B Entonces Si A < C Entonces MIN A Sino MIN C Sino Si B < C Entonces MIN B Sino MIN C ESCIBIR (MIN) Fin Cuando se usa el lenguaje algortmico, hay que tener cuidado para evitar confusiones en la utilizacin de seleccin de alternativas anidadas. Es recomendable que los componentes Entonces y Sino quedan alineadas con su Si respectivo. Por ejemplo, considrese la
20
siguiente seleccin de alternativas: Si E1 Entonces Si E2 Entonces O1 Sino O2 E1 y E2 son expresiones lgicas y O1 y O2 son secuencias de operaciones. En el ejemplo no queda claro si la secuencia de operaciones O2 se ejecuta cuando la expresin E1 es falsa o cuando la expresin E2 es falsa.
Lazos.
Los lazos permiten repetir una operacin o secuencia de operaciones en funcin de ciertas condiciones. Por ejemplo, supngase que se desea calcular el rea de varios tringulos. El algoritmo puede comenzar leyendo el nmero de tringulos que se desea procesar, y luego, por cada tringulo, lee los valores de la base y de la altura y calcula el rea. Para controlar cuantos tringulos se han procesado, se lleva un contador, cuyo valor es incrementado cada vez que se calcula el rea de un tringulo. As, antes de procesar un tringulo, se compara el valor del contador con el nmero de tringulos; si el valor es menor se procede a calcular el rea de otro tringulo, en caso contrario, finaliza el algoritmo. El algoritmo, expresado usando un diagrama de flujo, es el siguiente:
21
El Lazo Mientras.
El lazo se representa con una flecha de retorno al smbolo de decisin. Las operaciones dentro del lazo son ejecutadas mientras la condicin del smbolo de decisin sea cierta. Este tipo de lazo recibe el nombre de lazo mientras. El mismo algoritmo puede expresarse en el lenguaje algortmico, usando las palabras Mientras y Hacer:
22
Comienzo LEER (N) CONT 0 Mientras CONT < 0 Hacer LEER (BASE) LEER (ALTURA) AREA BASE * ALTURA / 2 ESCIBIR (AREA) CONT CONT + 1 Fin
En general, el diagrama de flujo asociado a un lazo mientras tiene siempre la siguiente forma:
De manera similar, la forma de expresar el lazo mientras, usando el lenguaje algortmico, es el siguiente: Mientras Condicin Hacer Operaciones de Lazo La condicin debe ser una expresin lgica. Las operaciones de lazo se ejecutan mientras se cumpla la condicin. Hay que aclarar que la condicin se evala slo despus de haber efectuado todas las operaciones del lazo. Esto quiere decir que si la condicin deja de cumplirse en la mitad de las operaciones del lazo, el resto de las operaciones son ejecutadas antes de avaluar la condicin. Por ejemplo, considrese el siguiente lazo mientras. Y 0 Mientras Y < 3 Hacer X X / 2 Y Y + 1 Z = X + Y En este caso, todas las instrucciones se ejecutan tres veces, an cuando la condicin se hace falsa antes de ejecutar por tercera vez la ltima instruccin del lazo. Los lazos mientras resultan sumamente tiles cuando no se puede determinar con exactitud el nmero de veces que debe repetirse una determinada secuencia de operaciones. Por ejemplo, supngase que se desea hacer un algoritmo que calcule el promedio de una serie de nmeros mayores que cero, donde la cantidad de nmeros a promediar no se conoce de antemano.
23
Puede pensarse en elaborar un algoritmo que lea los nmeros mientras estos son distintos de cero. Cuando se lee un cero se puede interpretar que ya no hay ms nmeros que promediar. El algoritmo presentado en lenguaje algoritmo es el siguiente (se supone que el primer nmero a leer es mayor que cero): Comienzo SUMA 0 N 0 LEER (A) Mientras A > 0 Hacer SUMA SUMA + A N N + 1 LEER (A) PROMEDIO SUMA / N Fin La variable SUMA se usa para acumular los valores que se van leyendo y la variable N sirve para contar los valores. La variable A contiene el ltimo valor ledo; cuando ste es cero, la condicin del lazo Mientras deja de cumplirse y se procede a calcular el promedio con el contenido de las variables SUMA y N.
24
De manera similar, la forma de expresar el lazo Repetir Hasta, usando el lenguaje algortmico, es la siguiente: Repetir Operaciones de Lazo Hasta Condicin A diferencia del lazo Mientras, las operaciones del lazo son ejecutadas hasta que la condicin sea cierta. Adems, las operaciones del lazo se ejecutan por lo menos una vez, independientemente del valor de la condicin.
El Lazo Para.
Como se ilustr anteriormente el ciclo Mientras se usa cuando no se puede saber de antemano el nmero de veces que debe repetirse una secuencia de operaciones; la misma observacin es vlida para el ciclo Repetir Hasta. Cuando se puede determinar el nmero de veces que hay que ejecutar unas operaciones, se puede usar el lazo Para. Recurdese el algoritmo propuesto para calcular el rea de varios tringulos. Una de las instrucciones determina el nmero de tringulos a procesar: LEER (N) Usando esta informacin, se puede escribir el algoritmo, haciendo uso del lazo Para: Comienzo LEER (N) Para CONT Desde 1 Hasta N LEER (BASE) LEER (ALTURA) AREA BASE * ALTURA / 2 ESCRIBIR (AREA) Fin En general, el diagrama de flujo asociado a un lazo Para tiene siempre la siguiente forma:
25
De manera similar, la forma de expresar el lazo Para, usando el lenguaje algortmico, es la siguiente: Para VCL Desde Valor-Inicial Hasta Valor-Final Operaciones de lazo VCL es una variable de control del lazo. Inicialmente, el valor de esta variable es ValorInicial. Cada vez que se termina de ejecutar las operaciones del lazo, el valor de VCL es incrementado en 1. Si el valor de VCL es menor o igual que Valor-Final, las operaciones del alzo son ejecutadas nuevamente, en caso contrario, se abandona el lazo. Valor-Inicial y Valor-Final pueden ser nmeros o variables. La variable de control del lazo puede ser usada dentro del lazo. Por ejemplo, si se desea hacer un algoritmo que sume los primeros N nmeros positivos, se puede escribir: Comienzo LEER (N) SUMA 0 Para CONT Desde 1 Hasta N SUMA SUMA + CONT Fin
26
tipo de ciclo ms adecuado para realizar una operacin. Por ejemplo, el algoritmo para la suma de los primeros N nmeros positivos puede usar lazos Mientras y Repetir Hasta como se muestra a continuacin: Comienzo LEER (N) SUMA 0 CONT 1 Mientras CONT <= N Hacer SUMA SUMA + CONT CONT CONT + 1 Fin Comienzo LEER (N) SUMA 0 CONT 1 Repetir SUMA SUMA + CONT CONT CONT + 1 Hasta CONT > N Fin Pero resulta ms natural el uso del lazo Para, como se planteo inicialmente.
Lazos Anidados.
Las operaciones de un lazo puede contener a su vez otros lazos. Por ejemplo, supngase que se desea hacer un algoritmo para calcular las tablas de sumar del 1 al 10. en primer termino podra pensarse en utilizar 10 lazos Para, como se muestra a continuacin: Comienzo Para CONT Desde 1 Hasta 10 ESCRIBIR (CONT + 1) Para CONT Desde 1 Hasta 10 ESCRIBIR (CONT + 2) Para CONT Desde 1 Hasta 10 ESCRIBIR (CONT + 3) : : Para CONT Desde 1 Hasta 10 ESCRIBIR (CONT + 10) Fin Usando lazos anidados, se puede escribir el algoritmo de la siguiente forma: Comienzo Para CONT1 Desde 1 Hasta 10 Para CONT2 Desde 1 Hasta 10 ESCRIBIR (CONT1 + CONT2) Fin Al igual que cuando se usa seleccin de alternativas anidadas, hay que tener cuidado al especificar cules operaciones pertenecen a un lazo en particular. Para esto hay que usar adecuadamente los mrgenes para evitar cualquier confusin. Por ejemplo, el algoritmo:
27
Comienzo Para CONT1 Desde 1 Hasta 10 Para CONT2 Desde 1 Hasta 10 ESCRIBIR (CONT1 + CONT2) ESCRIBIR (CONT1) Fin Produce un resultado diferente al algoritmo: Comienzo Para CONT1 Desde 1 Hasta 10 Para CONT2 Desde 1 Hasta 10 ESCRIBIR (CONT1 + CONT2) ESCRIBIR (CONT1) Fin En el primer caso, el valor de la variable CONT1 se despliega luego del valor de cada suma. El segundo caso, el valor de la variable CONT1 aparece solo luego de calcular los valores de una tabla.
Un Algoritmo Completo.
Al inicio de esta seccin se enunci un problema que requera hacer uso de varias estructuras de decisin para resolverlo. Para recordar, el problema consiste en disear un algoritmo que permita determinar, de un conjunto dado de tringulos, cuntos tienen un rea mayor que 20 y menor que 40. Sabiendo usar las estructuras de seleccin de alternativas y lazos, ahora si se puede resolver el problema satisfactoriamente. Escrito en lenguaje algortmico, el algoritmo queda: Comienzo LEER (N) TRI 0 Para CONT Desde 1 Hasta N LEER (BASE) LEER (ALTURA) AREA BASE * ALTURA / 2 Si AREA > 20 y AREA < 40 Entonces TRI TRI + 1 ESCRIBIR (TRI) Fin El diagrama de flujo del algoritmo puede plantearse como sigue:
28
29