Sie sind auf Seite 1von 21

Asignatura: Programacin I

Algoritmos Un algoritmo es la especificacin rigurosa de una secuencia de pasos para alcanzar un resultado deseado en un tiempo finito. En su acepcin ms general, el trmino algoritmo puede aplicarse a casi cualquier actividad de la vida diaria, son algoritmos las recetas de cocina, los programas de actos, las instrucciones de uso de un aparato, etc. En todos estos casos existen dos caractersticas vinculadas con el concepto de algoritmo, por un lado se trata de tareas (batir un huevo, ejecutar una nota musical, etc.), y por el otro hay un orden cronolgico en el cul deben ser ejecutadas. Si se examina una de estas tareas o instrucciones, se observa que su ejecucin implica a su vez la ejecucin ordenada de otras tareas ms elementales, por ejemplo para batir un huevo se requiere tomar un recipiente, tomar un batidor, cascar los huevos, colocarlos dentro del recipiente, etc. A su vez, cada una de estas tareas puede describirse en funcin de otras ms elementales an, y as sucesivamente. Con este concepto, podemos decir que un algoritmo es un conjunto finito de algoritmos para producir un proceso determinado, esto es lo que denominamos "definicin recursiva". Para que esta definicin no conduzca a una sucesin infinita, sera necesario definir aquellas instrucciones elementales que no pueden definirse como algoritmos. Algoritmos comunes Ver una pelcula 1.Buscar la pelcula. 2.Si el televisor y la reproductora de DVD se hallan apagados, encenderlos. 3.Sacar la pelcula del estuche. 4.Introducirla en la reproductora de DVD. 5.Tomar el control remoto. 6.Sentarse en un silln. 7.Iniciar la reproduccin y ajustar controles de imagen y sonido. 8.Ver la pelcula. Algoritmo para cambiar una rueda a un automvil. 1. Inicio. 2. Traer gato y rueda de repuesto. 3. Aflojar los tornillos de la rueda. 4. Levantar el coche con el gato. 5. Sacar los tornillos de la rueda. 6. Quitar la rueda. 7. Insertar la rueda de repuesto. 8. Colocar los tornillos. 9. Ajustar los tornillos. 10. Bajar el gato. 11. Guardar la rueda averiada y el gato. 12. Fin. Determinar el mayor de tres nmeros enteros. Pasos del algoritmo : 1. Comparar el primero y el segundo entero, deduciendo cul es el mayor. 2. Comparar el mayor anterior con el tercero y deducir cul es el mayor. Este ser el resultado. Los pasos anteriores se pueden especificar con mayor detalle, es decir realizar un refinamiento del algoritmo. 1. Solicitar el primer nmero (N1). 2. Solicitar el segundo nmero (N2). 3. Comparar N1 con N2, determinar el mayor y llamarlo MAYOR; si los nmeros son iguales, seleccionar N1 o N2 y llamarlo MAYOR al que haya elegido. 4. Solicitar el tercer nmero (N3).

Profesor: Ramos, Pablo R.

Pgina 1 de 21

Asignatura: Programacin I

5. Comparar MAYOR con N3 y seleccionar el mayor y llamarlo MAYOR; si los dos nmeros son iguales, seleccionar a MAYOR. 6. Mostrar el valor MAYOR. 7. Fin. Programas El computador es una herramienta para la resolucin de problemas, ms potente ser cuanto mayor sea su capacidad de modelar soluciones adecuadas para cada problema. LLamamos programacin a la tarea de construir programas que efecten el procesamiento de la informacin que nos proponemos. Un esquema de procesamiento de la informacin puede describirse como sigue: a) Anlisis del Problema. Dando como resultado un modelo preciso del ambiente del problema. b) Diseo de una solucin. Teniendo en cuenta los datos de entrada y de salida. c) Especificacin de algoritmos. Es decir, cul es la secuencia lgica de instrucciones que el computador debe ejecutar para producir los datos de salida a partir de los datos de entrada, teniendo en cuenta que una transformacin sobre los mismos datos puede resolverse con una utilizacin de recursos diferentes. d) Escritura de programas. El algoritmo debe expresarse en un lenguaje de programacin concreto y acorde a las caracteristica del problema, que la mquina pueda interpretar y ejecutar. e) Verificar. Una vez escrito el programa en un lenguaje determinado se debe verificar que su ejecucin conduce al resultado deseado con datos representativos del problema real. Una de las ventajas fundamentales del procesamiento electrnico es que las tareas descriptas arriba se efectan una sola vez, y el programa queda disponible para ejecutarse cuantas veces se desee. Por ejemplo de disearse un algoritmo para la liquidacin de haberes, una vez construido el programa, ser ejecutado todos los meses para que produzca la liquidacin, cambiando nicamente los datos de entrada, debido a aumentos, cambios de antigedad, etc. Definiciones Bsicas Informtica: Disciplina que estudia el anlisis y resolucin de problemas con la finalidad de procesar informacin automticamente. Computadora: Mquina electrnica con capacidad de realizar clculos numricos y lgicos, cuya finalidad es ejecutar programas almacenados que resuelven problemas. Dato: Es una representacin de un hecho. Informacin: Son datos recolectados y procesados de alguna forma, que poseen una relevancia para un observador particular. De forma ms estricta, informacin es cualquier hecho que reduzca la incertidumbre. Hardware: Conjunto de elementos fsicos relacionados que componen una computadora. Software: Son los datos y programas que hacen funcionar a una computadora. Es de caracter intangible. Algoritmo: Conjunto finito y no ambiguo de etapas expresadas en un cierto orden, que a partir de condiciones iniciales pueda resolver un problema en un tiempo finito. Programa: Algoritmo codificado en algn lenguaje de programacin, que una computadora es capaz de interpretar y ejecutar, a los efectos de resolver un determinado problema. Usuario: Persona que utiliza los servicios que le brinda la computadora. Metodologa de la Programacin Las siguientes son etapas que deben cumplirse a los efectos de resolver un problema mediante un programa informtico:

Profesor: Ramos, Pablo R.

Pgina 2 de 21

Asignatura: Programacin I

Definicin del problema Se debe partir de un enunciado de problema claro y completo. Anlisis del problema A partir de comprender claramente cual es el problema, se procede a analizar alternativas de solucin, como ser:

Resultados que se esperan. Datos de entrada que se brindan. Posibles mtodos a utilizar para obtener la salida deseada. Construccin de un algoritmo

Por medio de un lenguaje de especificacin (puede ser grfico o un seudolenguaje) se procede a construir un algoritmo que resuelva el problema en estudio. En esta etapa, una vez construido el algoritmo, se sugiere que el diseador realice una prueba de escritorio -someter el algoritmo a diversas ejecuciones, variando los datos de entrada y verificar su funcionamiento- a los efectos de determinar si el mtodo elegido funciona correctamente. Codificacin Utilizando un lenguaje de computadora se traduce el algoritmo a un programa fuente que una mquina sea capaz de entender y ejecutar. Se recomienda que el tcnico que realice esta tarea -el programador- inserte comentarios junto a las lneas de cdigo a los efectos de facilitar la lectura del programa (documentacin interna) en instancias superiores de validacin o mantenimiento. Compilacin Si el lenguaje utilizado en el proceso de codificacin requiere de una traduccin a lenguaje de mquina se utiliza un programa compilador a los efectos de generar un programa objeto. Es importante destacar que una de las funciones de todo compilador es el anlisis sintctico del programa fuente a los efectos de detectar errores de sintaxis ocasionados por errores de codificacin. El compilador no analiza semntica, es decir que las fallas de lgica que pueda existir en el programa fuente no son detectadas por el compilador. Prueba Se ejecuta el programa con distintos juegos de datos de entrada y se corrigen los errores que se puedan presentar. Al final se obtiene un programa depurado. Documentacin Etapa final en la cual se realiza la documentacin externa, la cual explica lo que el programa hace y cuales son los datos de entrada y salida, parte de esta documentacin es requerida por usuarios y por programadores encargados del mantenimiento del software. Introduccin a la Programacin Datos Todo algoritmo utiliza datos. Los datos representan una abstraccin de la realidad. Por ejemplo, para calcular el sueldo de un empleado se necesita realizar una abstraccin de la informacin relativa al problema en estudio, tal como: funcin o cargo, antigedad, cantidad de hijos, estudios cursados, das trabajados, etc. Los datos son unidades atmicas de informacin, almacenadas en memoria, a partir de las cuales se realizan las operaciones determinadas por los programas. Todo dato presenta una serie de atributos que lo caracterizan. Por ejemplo, un dato que sea el sueldo percibido el ltimo mes por una persona X tendr los siguientes atributos:

Profesor: Ramos, Pablo R.

Pgina 3 de 21

Asignatura: Programacin I

Nombre. Es un identificador, y es un nombre simblico que se refiere a un dato determinado, es decir, un nombre para referirse a variables, funciones y cualquier otro objeto definido por el usuario en un programa. El dato del ejemplo podra tener por nombre "sueldo_ltimo_mes" a los efectos de identificar a ese objeto concreto. Tipo. El tipo de una variable se refiere a la naturaleza de la informacin que contiene. Determina la caracterstica del contenido del objeto, es decir, la informacin que va a poder contener. En el ejemplo, el tipo del dato llamado "sueldo_ltimo_mes" es numrico, porque as se expresa un nmero real.

Un tipo de dato se caracteriza por: Un dominio de posibles valores


Un modo comn de representacin de sus valores. Un conjunto de operadores asociados.

Valor. Es el contenido en s del objeto, y est acorde al tipo definido. En el ejemplo del sueldo ser un valor concreto, tal como 345.78. Tipos de Datos Primitivos Entero Cualquier valor que pertenezca al conjunto de los nmeros enteros Z { ...,-3, -2, -1, 0, 1, 2, 3,...} y que este en un rango que el lenguaje pueda aceptar. Ejemplo temperatura <- -2 humedad <- 78 Float Cualquier valor perteneciente al conjunto de los nmeros reales R {..., -7, ..., -2.2, ..., 0, ..., 14.4,..., 33, ...} y que este en un rango que el lenguaje pueda aceptar. Ejemplo salario <- 178.23 saldo <- -55.98 Caracter Un caracter es un smbolo vlido proveniente de un alfabeto. La concatenacin de caracteres da por resultado una cadena o string. Ejemplo apellido <- "Diaz Martinez" animal_peligroso <- "len de Kenia" Variables Una variable es una identificacin, asignada por el programador, a donde se aloja un dato. Ejemplo Pi <- 3.14 IVA <- 21 institucin <- "I.S.F.T. N 179" una direccin de memoria,

Profesor: Ramos, Pablo R.

Pgina 4 de 21

Asignatura: Programacin I

Una constante es un dato almacenado en una variable cuyo contenido no puede ser modificado durante la ejecucin de un programa. Declaracin de Constantes y Variables La declaracin de una constante o una variable implica la asignacin de un espacio de memoria de trabajo que estar asociado a ella. El tamao depender del tipo de dato y lenguaje de programacin con el que se trabaje. Al declarar una variable o una constante se liga al dato con un nombre o identificador, por el cual se acceder a tal posicin de memoria de all en ms. El tipo de dato y el identificador de una variable son dos atributos asociados a ella. Ciertos lenguajes de programacin, junto con la buena prctica del oficio, exigen que todas las variables y constantes de un programa sean previamente declaradas antes de ser utilizadas. Cuando se desea inicializar o modificar el valor de una variable se realiza una operacin de asignacin. Se la simboliza con los caracteres "<-". Asignar significa asociar un valor determinado a un identificador. Ejemplo vacio <- 1 saldo <- saldo_anterior + 500 frase <- "Hola" + " " + "mundo !!!" resultado <- ((produccin - fallados) ^2) - 678 Existe otro objeto denominado literal y es la forma como se escriben los valores de cada tipo. Ejemplo 26, 789, -9 son literales numricos, y "hola mundo", "o" y "zeta" son literales de caracteres. La asignacin es una instruccin donde se asocia un valor a una variable. Del lado izquierdo siempre habr una variable, mientras que del lado derecho de la asignacin podr haber un literal, otra variable una expresin. Ejemplos cantidad_de_vehculos <- (6+8) / 2 Donde se evala 6 +8 y a lo obtenido se lo divide por 2. Finalmente al resultado se lo almacena en la variable cuyo identificador es cantidad_de_vehculos. Con variables de tipo caracter empleado <- "Carlos Gomez" cantidad_empleados <- "veinte" Expresiones y Operadores Una expresin es una combinacin de elementos del lenguaje que al ser evaluados dan por resultado un valor. Este valor puede ser un nmero, un caracter, una cadena o cualquier otro tipo de dato. El tipo de una expresin est determinado por los tipos de las partes que la componen y la semntica de sus operadores. A los efectos de realizar clculos y operaciones sobre los datos es necesario contar con alguna forma de combinacin que indique la accin a realizar. Se utiliza una simbologa de operadores para formalizar tales clculos y operaciones. Un operador es un smbolo que transforma una variable o la combina de alguna otra manera con otra variable o literal. Por ejemplo, la siguiente expresin tiene dos operadores, '*' producto y '/' divisin: (costo * 1.22)/desvio_mes; Operadores Aritmticos Son operadores que se aplican sobre datos numricos y devuelven igualmente un dato numrico.

Profesor: Ramos, Pablo R.

Pgina 5 de 21

Asignatura: Programacin I

Operador * / % + Operadores Relacionales

Significado Multiplicacin Divisin Resto de divisin Suma Resta

Permiten realizar comparaciones de valores de tipo numrico o carcter. Estos operadores sirven para expresar las condiciones en los algoritmos. Proporcionan resultados lgicos. Operador < > == < o == > o == != Significado Menor que Mayor que Igual que Menor o igual que Mayor o igual que Distinto de

La sintaxis de las operaciones de comparacin es: expresin1 operador de relacin expresin2 Una vez evaluada la expresin, se obtendr un resultado que ser Verdadero o Falso. Dado X <- 12 y Y <- 5 Expresin X>Y (X-3) < (Y-2) (X-4) == (Y+3) "A" > "B" "z" > "Z" "uno" == "unos" "uno" < "unos" Operadores Lgicos Son aqullos que permiten la combinacin de valores de verdad en una expresin, que al ser evaluada devuelve un valor de verdad. El resultado de las operaciones lgicas se determina a travs de tablas de verdad correspondientes a cada operador. Tabla de Verdad del Operador NOT A V F not A F V Resultado es verdadero es falso es verdadero es falso es verdadero es falso es verdadero

Donde A es una expresin booleana Tabla de Verdad del Operador de Conjuncin AND A F F V V B F V F V A and B F F F V

Profesor: Ramos, Pablo R.

Pgina 6 de 21

Asignatura: Programacin I

Donde A y B son expresiones booleanas Tabla de Verdad del Operador de Disyuncin OR A F F V V B F V F V A or B F V V V

Donde A y B son expresiones booleanas Ejemplos Expresin (3 == 4) and ( 6 < 7) not (4 < 6) Orden de Evaluacin de los Operadores Los operadores de una expresin se evalan segn el siguiente orden: Tipo de Operador Significado Exponenciacin Negacin Multiplicacin/Divisin Divisin entera Mdulo Suma/Resta Mayor Mayor igual Menor Menor igual Igual Distinto Complemento (not) Conjuncin (and) Disyuncin (or) Disyuncin exclusiva (xor) Prioridad 1 2 3 4 5 6 7 7 7 7 7 7 8 9 10 11 Resultado falso falso

Aritmticos

De relacin

Lgicos

De forma tradicional, la evaluacin de operadores de igual orden se realiza siempre de izquierda a derecha. Ejemplo de evaluacin - A ((4 + 2)**2 - 14) / 2 * 5 (6**2 - 14) / 2 * 5 (36 - 14) / 2 * 5 22 / 2 * 5 11 * 5 Resultado 55 Ejemplo de evaluacin - B 5 - 2 > 4 and not 0.5 == 1 / 2 5 - 2 > 4 and not 0.5 == 0.5

Profesor: Ramos, Pablo R.

Pgina 7 de 21

Asignatura: Programacin I

3 > 4 and not 0.5 == 0.5 falso and not 0.5 == 0.5 falso and not verdadero falso and falso Resultado falso Programacin Estructurada Estructuras de Control Los programas para computadoras deben estar escritos con un alto grado de estructuracin, lo cual les permite ser fcilmente comprensibles en actividades tales como pruebas, mantenimiento y modificacin de los mismos. Mediante la programacin estructurada todas las bifurcaciones de control de un programa se encuentran estandarizadas, de forma tal que es posible leerlos desde su inicio hasta su final en forma continua, sin tener que saltar de un lugar a otro del programa siguiendo el rastro de la lgica establecida por el programador. Los lenguajes de programacin tienen un conjunto mnimo de instrucciones que permiten especificar un algoritmo, y son: 1. Secuencia: Sucesin simple de dos o mas operaciones. 2. Seleccin: Bifurcacin condicional de una o ms operaciones. 3. Iteracin: Repeticin de un conjunto de instrucciones mientras se cumpla una condicin. Estos tres tipos de estructuras lgicas de control pueden ser combinadas para producir programas que manejen cualquier tarea de procesamiento de informacin. Una caracterstica importante en un programa estructurado es que puede ser ledo en secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa, lo contrario de lo que ocurre con otros estilos de programacin. Esto es importante debido a que, es mucho ms fcil comprender completamente el trabajo que realiza una funcin determinada, si todas las instrucciones que influyen en su accin estn fsicamente contiguas y encerradas por un bloque. La facilidad de lectura, de comienzo a fin, es una consecuencia de utilizar solamente tres estructuras de control. Como ventajas del uso de la programacin estructurada se pueden citar los siguientes tems:

Un programa escrito de acuerdo a las reglas de la programacin estructurada no solamente tendr una estructura, sino tambin una excelente presentacin. Un programa escrito de esta forma tiende a ser mucho ms fcil de comprender que programas escritos en otros estilos. La facilidad de comprensin del contenido de un programa puede facilitar el chequeo de la codificacin y reducir el tiempo de prueba y depuracin de programas. Esto ltimo es cierto parcialmente, debido a que la programacin estructurada concentra los errores en uno de los factores que ms genera fallas en la programacin: la lgica. Un programa que es fcil para leer y el cual est compuesto de segmentos bien definidos tiende a ser simple, rpido y menos expuesto a mantenimiento. Estos beneficios derivan en parte del hecho que, aunque el programa tenga una extensin significativa, en documentacin tiende siempre a estar al da, esto no suele suceder con los mtodos convencionales de programacin.

El teorema de la estructura establece que un programa propio puede ser escrito utilizando solamente las siguientes estructuras lgicas de control: secuencia, seleccin e iteracin. Un programa se define como propio si cumple con los dos requerimientos siguientes:

Tiene exactamente una entrada y una salida para control del programa. Existen caminos seguibles desde la entrada hasta la salida que conducen por cada parte del programa, es decir, no existen lazos infinitos ni instrucciones que no se ejecutan. Las tres estructuras lgicas de control bsicas, se definen de la siguiente forma:

Secuencia: es la estructura de control ms simple y representa una lista secuencia de instrucciones. En trminos de diagrama la secuencia es representada por una instruccin despus de la otra, como se muestra a continuacin.

Profesor: Ramos, Pablo R.

Pgina 8 de 21

Asignatura: Programacin I

Inicio Leer num1, num2 suma <- num1 + num2 dif <- num1 - num2 Escribir("SUMA: ", suma) Escribir("DIFERENCIA: ", dif) Fin

Seleccin: Se basa en ejecutar una de dos acciones tomando la decisin en base al resultado de evaluar una condicin. Esta estructura de control es denominada usualmente condicional. La representacin en forma de diagrama de flujo de esta estructura lgica de control se muestra a continuacin: Condicin F Instruccin 1 .... Instruccin n Instruccin 1 .... Instruccin n

falso.

Donde V y F son bloques a ejecutar en caso de que la evaluacin de la condicin sea verdadero o

Iteracin: Esta estructura es utilizada a los efectos que se repita la ejecucin de un conjunto de instrucciones mientras se cumpla una condicin. Generalmente a esta estructura se le conoce como Mientras-Hacer y su representacin se muestra a continuacin: Mientras <condicin> hacer

Instrucciones

Donde el resultado de la condicin a evaluar determinar si se ejecuta el bloque de instrucciones (en caso de resultar verdadero) o se continua con la siguiente lnea de programa. Estructogramas o Diagramas Chapn Los diagramas de Chapin (tambin conocidas como diagramas de Nassi-Schneiderman) describen los procedimientos usados para recibir, procesar, y transmitir informacin. Los diagramas proporcionan toda la lgica necesaria para que programadores puedan escribir programas estructurados en cualquier

Profesor: Ramos, Pablo R.

Pgina 9 de 21

Asignatura: Programacin I

lenguaje de programacin o a los efectos de documentar procedimientos especficos. El modelo de diagramas fue desarrollado por Isaac Nassi y Ben Shneiderman, publicndose en el ao 1973. Corresponden a las normas DIN 66261 e ISO/IEC 8631:1989. Dado que muestran las estructuras de un programa, tambin se denominan "estructogramas". El concepto es simple: cada bloque (o secuencia de acciones) se representa dentro de un rectngulo; cada estructura utiliza una forma de representacin particular, pudiendo a su vez encerrar otros bloques. En los diagramas NS existen seis estructuras: Secuencial, Decisin (si condicional), Seleccin, Para, Mientras y Repetir. Escritura de Programas La utilizacin de la identacin es importante debido a que, cuando se es consistente en su utilizacin, facilita la lectura de los programas al mostrar en una forma ordenada las relaciones existentes entre las distintas instrucciones. Adicionalmente se recomienda la insercin de comentarios en los programas. Tales citas ayudan a los programadores a identificar fcilmente la misin de las partes con la finalidad de facilitar su mantenimiento. Entrada y Salida de Informacin Toda operacin que realice una computadora va a estar incluida en una de las siguientes categoras:

Recibir entradas. Aceptar informacin proveniente del mundo exterior. Generar salidas. Brindar informacin al mundo exterior. Procesar informacin. Realizar operaciones sobre los datos. Almacenar informacin. En cualquier dispositivo con que opere.

En base a las cuatro operaciones bsicas enunciadas, las computadoras realizan todas sus funciones. Las operaciones de entrada permiten leer determinados datos -generalmente ingresados por teclado- y asignarlos a determinadas variables definidas por el programador. La operacin de entrada se conoce como operacin de Lectura o read. La salida de informacin es soportada por dispositivos de salida (monitor, impresora, etc). La operacin de salida se denomina escritura o Write. Generalmente, en la escritura de algoritmos las acciones de lectura y escritura se representan de la siguiente manera: leer ( Nom_variable ) escribir (lista de variables de salida) Ejemplo de ingreso y salida de datos en una especificacin de clculo de liquidacin de horas extras, detallada pseudocdigo: Inicio Leer(horas_trabajadas) Leer(valor_de_la_hora_extra) liquidacin <- horas_trabajadas * valor_de_la_hora_extra Escribir(liquidacin)

Fin

Opcionalmente, en el ingreso de datos por teclado puede definirse una lista de variables como parmetro de la orden leer. Leer (dato1, dato2, dato3) Ejemplo: Ingresando dos nmeros, mostrar por pantalla su suma y su diferencia.

Profesor: Ramos, Pablo R.

Pgina 10 de 21

Asignatura: Programacin I

Pseudocdigo Inicio Leer(num1, num2) suma <- num1 + num2 dif <- num1 - num2 Escribir("SUMA: ", suma) Escribir("DIFERENCIA: ", dif)

Fin

Diagrama NS
Inicio Leer num1, num2 suma <- num1 + num2 dif <- num1 - num2 Escribir("SUMA: ", suma) Escribir("DIFERENCIA: ", dif) Fin

Estructura Secuencial La estructura secuencial corresponde a un conjunto de instrucciones que se ejecutan en una secuencia predeterminada y fija, de arriba haca abajo. El diagrama Chapin o NS (Nassi-Schneiderman) de la estructura secuencial es: Instruccin 1 Instruccin 2 Instruccin 3
...

Instruccin n Ejemplo de estructura secuencial Introducir dos nmeros a y b, con partes decimales, luego obtener la suma de las partes decimales. Por ejemplo : a=16.12 y b=7.33 entonces deber obtener s = 0.12 + 0.33 = 0.45 Pseudocdigo Inicio Leer(pn, sn) r <- (pn - int(pn)) + (sn - int(sn)) Escribir("EL RESULTADO ES: ", r)

Fin Diagrama NS

Profesor: Ramos, Pablo R.

Pgina 11 de 21

Asignatura: Programacin I

Inicio Leer pn, sn r = (pn - int(pn)) + (sn - int(sn)) Escribir("El resultado es", r) Fin

Estructura de Seleccin Decisiones Hasta ahora se han visto algoritmos en los cuales se ingresan ciertos datos, luego se hacen algunas operaciones aritmticas y finalmente se muestran los resultados por la pantalla o la impresora. En realidad, esta es una utilizacin muy pobre de la computadora, como si solamente se tratara de una calculadora un poco ms sofisticada, con la nica ventaja de permitirnos construir un programa una vez y posteriormente, utilizarlo todas las veces que sea necesario con distintos grupos de datos. Como se vio anteriormente, una caracterstica importante que distingue a una computadora de otras mquinas es la posibilidad de ejecutar operaciones lgicas, es decir que puede evaluar expresiones del tipo: a) b) c) d) total > 50 alfa < mo beta <- jota + 6 pepe - 4 == alfa + beta

De la evaluacin de este tipo de operaciones se pueden obtener dos resultados posibles: verdadero (V) o falso (F). En el primer ejemplo, la computadora va a ir a buscar el nmero que est almacenado en la variable total y va a verificar si ese dato es mayor que 50, en cuyo caso el resultado de la expresin ser verdadera; de otra manera, si el nmero es igual a 50 o menor, el resultado de la expresin ser falso. En el segundo ejemplo la computadora consultar los contenidos de las variables alfa y mo, y verificar si se cumple o no que el nmero almacenado en alfa es menor que el almacenado en mo. Los ejemplos tres y cuatro involucran operaciones aritmticas, en estos casos la computadora consultar los contenidos de las variables en juego, efectuar las operaciones aritmticas que correspondan y luego comparar los resultados, verificando si cumplen o no la condicin indicada. Es posible tambin hacer que la computadora evale expresiones ms complejas, por ejemplo, podemos desear verificar si el contenido de la variable samo es mayor que 45 pero menor que 70, lo que podemos expresar matemticamente como 45 < samo < 70, pero en realidad esta forma de expresarlo est encubriendo otro operador lgico. En informtica escribiremos esta expresin como: samo > 45 and samo < 70 Cmo se evaluar esta expresin?. Primero la computadora obtendr los resultados a ambos lados del operador lgico and; luego operar con esos dos valores para obtener el valor de verdad de and. De forma similar se puede trabajar con el operador lgico or. Esta capacidad de evaluar expresiones lgicas se utiliza para hacer que la computadora tome decisiones de las instrucciones a ejecutar en base al resultado obtenido. Estructura Condicional Simple En el caso mas sencillo, se le indica a la computadora que ejecute un cierto grupo de instrucciones si se cumple una cierta condicin: Si (condicin) entonces hacer

Profesor: Ramos, Pablo R.

Pgina 12 de 21

Asignatura: Programacin I

{ ... .. } Fin Si Llamaremos "estructura de decisin" o "estructura condicional simple" a este bloque de instrucciones, la computadora verificar si se cumple la condicin indicada, en cuyo caso pasar a ejecutar las instrucciones que se detallaron, en cambio si la condicin no se cumple no las ejecutar y pasar a las instrucciones que siguen en el algoritmo. A este caso podemos describirlo con la frase "hacer si se cumple". El diagrama Chapin para representar a una estructura condicional simple es el siguiente: Condicin F Instruccin 1 .... Instruccin n Ejemplo Pseudocdigo Si (gama > 22) entonces hacer { gama <- gama /3; .... } Fin Si Digrama NS
gama > 22

(instrucciones)

V
gama <- gama / 3

.... ..... Estructura de Seleccin Compuesta En el caso ms general, se le indicar a la computadora que ejecute un determinado grupo de instrucciones si el resultado de una evaluacin es V, u otro grupo si el resultado es F. Si (condicin) entonces hacer { ... (instrucciones) ... } de lo contrario hacer {

Profesor: Ramos, Pablo R.

Pgina 13 de 21

Asignatura: Programacin I

... (instrucciones) ... Fin Si }

En diagrama NS la estructura condicional compuesta se representa: Condicin F Instruccin 1 .... Instruccin n Instruccin 1 .... Instruccin n

Si (gama > 22) entonces hacer { gama <- gama /3; .... } de lo contrario hacer { escribir("gama no es mayor a 22") ... } Fin Si Ejemplo Supongamos que una empresa vende un cierto producto a un precio de $215.- la unidad, pero si el cliente compra mas de 100 unidades, el precio se rebaja a $197.- la unidad: Pseudocdigo Si (C > 100) entonces hacer { P <- 197 } de lo contrario hacer { P <- 215 } Fin Si Si se desea un programa completo al cual se le ingrese la cantidad vendida e imprima el monto de la misma, falta agregar las instrucciones correspondientes a la entrada, salida y clculos: Pseudocdigo Inicio Leer(cantidad) Si (cantidad > 100) entonces hacer { precio <- 197 } de lo contrario { precio <- 215

Profesor: Ramos, Pablo R.

Pgina 14 de 21

Asignatura: Programacin I

Fin

} Fin Si monto <- cantidad * precio Escribir(monto)

Diagrama NS

inicio Leer cantidad cantidad > 100

V
precio <- 197

F
precio <- 215

.... monto <- cantidad * precio .....


escribir monto Fin

Selecciones Anidadas Frecuentemente es necesario efectuar un proceso de decisin dentro de otro, es decir, segn la salida que tenga la primera condicin, se debe efectuar una segunda instruccin de decisin, en forma general, esto puede presentarse como sigue: Pseudocdigo Si (condicin 1) entonces hacer { (instrucciones) } de lo contrario { (instrucciones) Si (condicin 2) entonces hacer { (instrucciones) } de lo contrario { (instrucciones) } Fin Si } Fin Si (I)

(II)

Llamamos "selecciones anidadas", a esta estructura. Esta disposicin de instrucciones puede ser mucho mas compleja, dado que las instrucciones Si marcadas con (I) y (II) pueden contener a su vez otras estructuras de seleccin dentro de sus respectivas salidas por verdadero y falso. Decisiones anidadas graficadas en un diagrama NS

Profesor: Ramos, Pablo R.

Pgina 15 de 21

Asignatura: Programacin I

Condicion 1
V F

Escribir("El Condicin 2 nmero es impar") Instrucciones


V F

Instrucciones

Instrucciones

Ejemplo Si se nos presenta el siguiente problema: "Una empresa de USA paga a sus empleados un sueldo bsico de U$S 800, ms un adicional que se calcula de la siguiente manera: 1. Los que trabajan en la seccin 1 cobran U$S 120 ms, y sobre el total un adicional por antigedad del 10 % si tienen menos de 5 aos, y del 20 % si tienen 5 aos o ms. 2. Los que trabajan en la seccin 2 cobran U$S 250 ms, pero no cobran adicional por antigedad. Preparar un algoritmo para ingresarle el nmero de seccin y la antigedad, y que muestre por pantalla cuanto cobra el empleado. En este caso la pregunta por la antigedad depende de la seccin en que trabaje, una posible solucin podra ser: Diagrama NS
Inicio

Leer seccion, aos

basico <- 800

seccion = 1
V F

sueldo <- basico + 120

Escribir("El aos < 5 nmero es impar")


V F

sueldo <- basico + 250 antiguedad = 0

antiguedad <sueldo*10/100

antiguedad <sueldo*20/100

total <- sueldo + antiguedad

escribir("El monto a abonar es ", total)

Fin

Profesor: Ramos, Pablo R.

Pgina 16 de 21

Asignatura: Programacin I

Estructura de Seleccin Mltiple Esta forma es til cuando se tiene que elegir entre ms de dos opciones, se denomina de seleccin mltiple. En esta estructura, una variable de control puede tomar distintos valores. Segn el caso, se ejecutan distintas acciones. Evaluar Selector

Alternati va 1

Alternati va 2 y 3

Alternati va n

De lo contrario

Instrucciones

Instrucciones

Instrucciones

Instrucciones

Reglas:

1. La expresin <selector> se evala y se compara con las constantes que expresan cada caso 2. 3.
posible; las constantes son listas de uno o ms valores de <selector>. Ejecutada(s) la(s) <instruccion(es)>, el control se pasa a la primera instruccin a continuacin del Fin del selector. La alternativa "de lo contrario" es opcional. Si el valor de <selector> no est comprendido en ninguna lista de constantes y no existe la alternativa "de lo contrario", se sigue con el flujo del programa. En caso de existir la clusula "de lo contrario" se ejecutan las instrucciones correspondientes a tal bloque.

Diagrama NS del cuerpo principal del programa men utilizando una estructura de seleccin mltiple.
Inicio
Escribir("Elija una opcion"; "1. Triangulo"; "2. Rectangulo"; "3. Circulo";)

Leer(opcion) Evaluar opcion


Alterna tiva 1 Alterna tiva 2 Alterna tiva 3 De lo contrario

Ejecutar(triangulo)

Ejecutar(rectangulo)

Ejecutar(circulo)

Escribir("La superficie es ",superficie") Fin

Estructura Repetitiva o Iterativa La estructura repetitiva es utilizada cuando se necesita que un conjunto de instrucciones (bloque) se ejecuten un cierto nmero finito de veces. Un bucle, lazo o ciclo, forma bsica de una estructura

Profesor: Ramos, Pablo R.

Pgina 17 de 21

Asignatura: Programacin I

iterativa, se compone de dos partes: a) una condicin, y b) un cuerpo o bloque.

Estructura de control

Mientras x sea distinto de 3 hacer { instruccin 1 instruccin 2 ....................... instruccin n } Fin Mientras

<- c nd i o ic n <- b que lo

Bsicamente existen dos tipos de estructuras repetitivas o iterativas: a) donde el nmero de ciclos a ejecutar el bloque est perfectamente establecido, y b) donde el nmero de ciclos que se ejecutar el bloque se determina por la evaluacin de una cierta condicin. Las estructuras iterativas ms populares son
Mientras Repetir Hasta Para

Estructura Mientras La estructura repetitiva Mientras es aquella en la que el nmero de iteraciones no se conoce por anticipado y el cuerpo del ciclo o bloque se ejecuta repetidamente mientras que una condicin sea verdadera. Su sintaxis es: Mientras <condicin> hacer { instruccin 1 instruccin 2 ....................... instruccin n } Fin Mientras El diagrama Chapin o NS (Nassi-Schneiderman) de la estructura Mientras es: Mientras <condicin> hacer

Instrucciones

Profesor: Ramos, Pablo R.

Pgina 18 de 21

Asignatura: Programacin I

Explicacin del modo de funcionamiento :

La expresin que conforma la condicin se evala antes y despus de cada ejecucin de las instrucciones comprendidas por el bloque. Si la condicin da por resultado verdadero, se ejecuta el bloque, y si es falsa, el control pasa a la instruccin siguiente al bloque. Si al evaluar la condicin por primera vez, se determina que el resultado es falso, entonces no se ingresa al bloque y el control pasa a la instruccin siguiente al bloque. Es decir que el bloque no se ejecutar nunca. Si alguno de los elementos que componen la expresin de evaluacin no se modificase, y la expresin hubiese arrojado -previamente- verdadero en su evaluacin. Se ha ingresado en un ciclo infinito, del cual nunca se saldr. Tales ciclos deben evitarse.

Ejemplo Construir un algoritmo para calcular e imprimir la suma de los nmeros enteros comprendidos entre -27 y 34, ambos inclusive.
Inicio suma <- 0 numero <- -27

Mientras numero <= 34 hacer

suma <- suma + nmero numero <- numero + 1

Escribir(suma) Fin

Estructura Repetir La instruccin Repetir permite que se ejecute un bloque de instrucciones y luego se evale una condicin a los efectos de ejecutar nuevamente el bloque -en caso de resultar verdadera- o continuar con la prxima instruccin siguiente al bloque Su sintaxis es : Hacer { instruccin 1 instruccin 2 ....................... instruccin n } Repetir Mientras <condicin> El diagrama Chapin de la estructura Repetir es:

Profesor: Ramos, Pablo R.

Pgina 19 de 21

Asignatura: Programacin I

Instrucciones

Mientras <condicin> hacer Explicacin del modo de funcionamiento :


La condicin se evala al final del bloque, despus de ejecutarse todas las instrucciones contenidas. Si o si siempre se ejecuta al menos una vez el bloque. Si el resultado de la evaluacin de la condicin da verdadero, se continua iterando, de lo contrario se continua con la prxima instruccin de programa.

Estructura Para Estructura que se utiliza para iterar en aquellos casos que de antemano se conoce la cantidad de ciclos a realizar. Por ejemplo: ingresar 10 notas de un alumno y calcular su promedio y desvo estandar. Al ejecutarse la orden Para por primera vez, a la variable de control se le asigna un valor inicial (expresion1). Inmediatamente se ejecutan las instrucciones del bloque asociado y luego se verifica si el valor final (expresin2) es mayor que el valor inicial (expresin1); en caso de no ser as se incrementa o decrementa automticamente el contenido de la variable de control en uno y se vuelve a ejecutar el bloque de instrucciones, hasta que la variable de control sea mayor/menor que el valor final referido en la expresin2, situacin en la que se finaliza la estructura Para y se continua con la prxima instruccin que continua al bloque antedicho. Su sintaxis es : Para <variable_de_control> <- <expresin1> hasta <expresion2> hacer { instruccin 1 instruccin 2 ....................... instruccin n } Fin Para El diagrama de la estructura Repetir-Hasta es:
Para <variable_control> <- <expresin1> . hasta <expresion2> hacer .

Instrucciones

Profesor: Ramos, Pablo R.

Pgina 20 de 21

Asignatura: Programacin I

Explicacin del modo de funcionamiento :


La variable de control se inicializa una sola vez, al inicio de la primera iteracin. La condicin se evala en cada iteracin. El incremento o decremento se realiza antes de cada evaluacin. Al finalizar la ejecucin de una estructura de control Para, la variable de control est instanciada con el valor de expresin2 ms un incremento o decremento, segn corresponda.

Validacin de Datos Un refrn utilizado entre los programadores dice: "si ingresa basura, sale basura", lo que quiere decir que, independientemente de la excelencia del algoritmo, si se le ingresan datos errneos producir resultados tambin errneos. La casi totalidad de los errores se produce en el ingreso de los datos por parte del operador. Si bien es imposible prever todos los errores que se pueden cometer, un buen programa debe estar preparado para evitar todos los que sea posible. Llamamos "validacin" a este control de los datos que ingresan. La tcnica bsica parte de la premisa de que hay valores imposibles para ciertos datos: en una fecha, el da no puede ser mayor que 31 o el mes mayor de 12, la altura de una persona no puede ser 8 metros, el cnyuge no puede ser ms que 1(?), etc. La mayora de los datos posee un rango de valores posibles, y cada valor que ingresa debe estar necesariamente dentro de ese rango. La validacin consiste en verificar que cada dato que ingresa se encuentre dentro del rango, si no es as, se le indica al operador que ingrese el dato nuevamente: Pseudocdigo Leer(variable) Mientras (variable fuera de rango) hacer: { Escribir(mensaje al operador) Leer(variable) } Fin mientras Ejemplo de validacin Supongamos que en una fecha se ingresa el da, entonces comprobamos que no sea menor que 1 ni mayor que 31: Pseudocdigo Ingresar da Mientras da <1 da > 31 hacer { Escribir("dato errneo, ingrese nuevamente") Leer(da) } Fin mientras Obsrvese que no es posible asegurar que este algoritmo va a evitar todos los errores, por ejemplo no detectar si el operador ingresa un 16 en lugar de un 15, en cambio s funcionar en la mayora de las inversiones, es decir si el operador ingresa un 72 en lugar de un 27, el cual es un error muy comn cuando se digitan nmeros rpidamente.

Profesor: Ramos, Pablo R.

Pgina 21 de 21

Das könnte Ihnen auch gefallen