Você está na página 1de 29

1

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.

Caractersticas de los Algoritmos.


Las caractersticas fundamentales que debe cumplir todo algoritmo son: Un algoritmo debe ser preciso e indicar el orden de realizacin de cada paso. Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algn momento; o sea, debe tener un nmero finito de pasos. La definicin de un algoritmo debe describir tres partes: Entrada, Proceso y Salida. En el algoritmo de la receta de cocina, citado anteriormente se tendr: Entrada: ingredientes y utensilios empleados. Proceso: elaboracin de la receta de cocina. Salida: terminacin del plato (por ejemplo, pollo al vino).

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. Lenguaje de bajo nivel (ensamblador). Lenguaje de alto nivel.

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

Dato, Tipos de Datos.


El primer objetivo de toda computadora es el manejo de informacin o datos. Estos datos pueden ser las cifras de ventas de un supermercado o las calificaciones de una clase. Un dato es la expresin general que describe los objetos con los cuales opera una computadora. La mayora de las computadoras pueden trabajar con varios tipos (modos) de datos. Los algoritmos y los programas correspondientes operan sobre los datos. Existen dos clases de tipos de datos: simples (sin estructura) y compuestos (estructurados). Los tipos de datos simples son: Numricos (integer, real) Lgicos (boolean) Carcter (char, string) Enteros (integer): el tipo de dato entero es un subconjunto de los nmeros enteros. Los enteros son nmeros completos, no tienen componentes fraccionarios o decimales y pueden ser negativos o positivos. Reales (real): el tipo real en subconjunto de los nmeros reales. Los nmeros reales siempre tienen un punto decimal y pueden ser positivos o negativos. Un nmero real consta de un entero y una parte decimal. Lgico: el tipo de datos lgico tambin llamado booleano- es aquel que solo puede tomar uno de dos valores: cierto o verdadero (true) y falso (false). Este tipo de dato se utiliza para representar las alternativas (si/no) a determinadas condiciones. Por ejemplo, cuando se pide si un valor entero es par, la repuesta ser verdadera o falsa, segn sea par o impar.

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.

Aqu los parntesis indican el orden de clculo y

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.

Entrada y Salida de Informacin.


El uso de expresiones permite explotar la capacidad de clculo del computador. Pero de qu sirve este poder si no existieran mecanismos que permitieran proporcionar los datos para realizar las operaciones y mostrar los resultados? Las operaciones de entrada y salida permiten a una persona interactuar con el computador, ya sea para proporcionar los datos necesarios para iniciar el proceso de clculo, o para conocer los resultados de la ejecucin del programa. Existen gran variedad de mecanismos que permiten la interaccin de un programa con una persona. Aqu solo se presentan los ms elementales.

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.

Anlisis del Problema.


El propsito del anlisis de un problema es ayudar al programador para llegar a una cierta comprensin de la naturaleza del problema. El problema debe estar bien definido si se desea llegar a una solucin satisfactoria. Para poder definir con precisin el problema se requiere que las especificaciones de entrada y salida de la informacin sean descritas con detalle. Una buena definicin del problema, junto con una descripcin detallada de las especificaciones de entrada y salida, son los requisitos ms importantes para llegar a una solucin eficaz. El anlisis del problema exige una lectura previa del problema a fin de obtener una idea general de lo que se solicita. La segunda lectura deber servir para responder a las preguntas: Qu informacin debe proporcionar la resolucin del problema? Qu datos se necesitan para resolver el problema? La respuesta a la primera pregunta indicar los resultados deseados a las salidas del problema. La respuesta de la segunda pregunta indicar que datos se proporcionan o las entradas del problema.

10

Diseo del Algoritmo.


Una computadora no tiene la capacidad para solucionar problemas ms que cuando se le proporcionan los sucesivos pasos a realizar. Estos pasos sucesivos que indican las instrucciones a ejecutar por la mquina constituyen, como ya sabemos el algoritmo. Los problemas complejos se pueden resolver ms eficazmente con la computadora cuando se rompen en sub problemas que sean ms fciles de solucionar que el original. Este mtodo se suele denominar divide y vencers. Y consiste en dividir un problema complejo en otros ms simples. La descomposicin del problema original en sub problemas ms simples y a continuacin dividir estos sub problemas en otros ms simples que puedan ser implementados para su solucin en la computadora, se denomina diseo descendente. Normalmente los pasos diseados en el primer borrador del algoritmo son incompletos e indicarn solo unos pocos pasos. Despus de esta primera descripcin, estos se amplan en una descripcin ms precisa con ms pasos especficos. Este proceso se llama refinamiento del algoritmo. Para problemas complejos se necesita con frecuencia diferentes niveles de refinamiento, antes que se pueda obtener un algoritmo claro, preciso y completo. Tras los pasos anteriores (diseo descendente y refinamiento progresivo) es preciso representar el algoritmo mediante una determinada herramienta de programacin: diagrama de flujo, pseudo cdigo o diagrama N-S. De esta manera el algoritmo se descompone en las fases recogidas en las figuras:

Resolucin de Problemas mediante Computadora.


Una vez que el algoritmo est diseado y representado grficamente mediante una herramienta de programacin (diagrama de flujo, pseudo cdigo o diagrama N-S) se debe pasar a la fase de resolucin prctica del problema con la computadora. Esta fase 1. 2. 3. se descompone a su vez en las siguientes sub fases: Codificacin del algoritmo en un programa. Ejecucin del programa. Comprobacin del programa.

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

Operador > < = >= <= <>

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:

E1 Verdadero Verdadero Falso Falso

E2 Verdadero Falso Verdadero Falso

E1 o E2 Verdadero Verdadero Verdadero Falso

Esto corresponde a la interpretacin natural que se le da a la palabra o.

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.

El Lazo Repetir Hasta.


El lazo mientras es la estructura bsica que permite repetir varias veces una secuencia de operaciones, bajo ciertas condiciones. Existen otras estructuras, derivadas del lazo Mientras, que permiten la repeticin de operaciones. El lazo Repetir - Hasta es una de ellas. Para explicar el uso del lazo Repetir Hasta, considrese el algoritmo para calcular el promedio de una lista de nmeros. Si se examina con detenimiento el algoritmo propuesto, se puede notar que las instrucciones del lazo se ejecutan por lo menos una sola vez, ya que el primer valor a leer siempre es mayor que cero. El lazo repetir hasta permite representar lazos en donde las operaciones del lazo se ejecutan siempre la primera vez, es decir, que la condicin es cierta la primera vez que evala. El algoritmo anterior puede escribirse usando un lazo Repetir Hasta, de la siguiente manera: Comienzo SUMA 0 N 0 Repetir LEER (A) SUMA SUMA + A N N + 1 Hasta A = 0 PROMEDIO SUMA / N Fin En general, el diagrama de flujo asociado a un lazo repetir hasta tiene siempre la siguiente forma:

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

Equivalencia entre Tipos de Lazos.


En el fondo, los lazos Repetir Hasta y Para pueden representarse usando nicamente lazos Mientras. La eleccin de un tipo de lazo obedece a la clase de proceso que se desea programar. Hay clculos que se pueden representar ms fcilmente usando un tipo de lazo que otro. En esta seccin se mencionaron ciertos aspectos que pueden determinar cul es el

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

Você também pode gostar