Escolar Documentos
Profissional Documentos
Cultura Documentos
I.S.F.T.N 132
DISEO DE ALGORITMOS
INTRODUCCION Desarrollar un programa para un computador significa: indicarle al computador, en un lenguaje que l pueda entender, todos y cada uno de los pasos que debe ejecutar para lograr el objetivo propuesto, pero antes de pensar en decirle al computador cmo hacer algo, es necesario que el programador sepa cmo hacerlo. Es all donde entra a jugar un papel preponderante el desarrollo de algoritmos, pues antes de escribir un programa es necesario disear el algoritmo para solucionar el problema en cuestin. Qu es un Programa? Es un conjunto de instrucciones escritas en lenguaje apropiado para una computadora, ordenadas lgicamente para lograr la solucin de un problema que se desee resolver. Qu es una Instruccin? Es la una unidad mnima de comunicacin para comunicarse con la computadora. Es un enunciado que indica al computador una accin a ejecutar, que debe cumplir con un conjunto de reglas o normas predefinidas. Para construir un programa se requiere un anlisis y un conocimiento claro y profundo del problema que se quiere resolver, as como el dominio de un lenguaje de programacin que permita transmitir las instrucciones a la computadora. El primer paso necesario para disear un programa es el planeamiento y el anlisis del problema que se requiere resolver. Una vez clarificada la cuestin, se construir un procedimiento de clculo, paso a paso, mediante el cual se pueda obtener la solucin del problema. La resolucin de problemas tiene cuatro etapas: 1. Formulacin y entendimiento del problema o propuesta. 2. Eleccin de un mtodo o procedimiento para hallar la solucin. 3. Codificacin, o sea expresar el procedimiento elegido de forma tal que pueda ser interpretado por el procesador que se va utilizar. 4. Ejecucin del procedimiento para obtener la solucin del problema. Los procedimientos que se construyen para la resolucin de cualquier problema se llaman algoritmos, consisten en una secuencia ordenada de acciones que llevan a la solucin del problema en un nmero finito de pasos. PROCESAMIENTO DE DATOS Todo problema por resolver requiere de un proceso, que partiendo de datos iniciales nos permite arribar a nuevos datos. Dato: es un trmino utilizado para designar nmeros, letras y smbolos que se refieren a un objeto, situacin u otro factor y apropiado para comunicacin, procesamiento e interpretacin. Los datos son la materia prima con la que el ordenador va a elaborar su producto, que no es otro que el resultado de la ejecucin del programa. Cuando los datos son procesados y utilizados en una aplicacin en particular se convierten en informacin. Informacin: es el significado que los seres humanos le asignan a los datos. Por lo tanto la palabra informacin tiene un significado ms amplio que los datos ya que los datos son una coleccin de smbolos que pueden o no tener un significado, pueden o no ser tiles. Los datos se convierten en informacin y tienen un significado de acuerdo al contexto, de tal forma que el usuario puede actuar y tomar una decisin al recibirla. Por ejemplo los datos: Ivan Ferrari, Callao 85, 6740, Chacabuco, Buenos Aires, no tienen en si mismos un significado o sea no se convierten en informacin hasta que no sepamos que se trata del nombre, el domicilio, el cdigo postal, la localidad y la provincia de un cliente. Los datos deben ser procesados para obtener la informacin que es lo que nos va ha ser significativo y til en la aplicacin que estemos realizando. Un proceso de datos es una secuencia de operaciones para producir un resultado especfico. Un sistema de informacin es un conjunto de mtodos, procedimientos, tcnicas unificadas para lograr informacin a partir de los datos primarios.
Pgina N 1
PROGRAMACION I
Algoritmo Informacin
I.S.F.T.N 132
>=: relacin mayor o igual que <=: relacin menor o igual que Otros operadores son los aritmticos como la suma, resta, multiplicacin y divisin. ASIGNACIN Cada variable se puede imaginar como una hoja de papel en blanco de un block de notas, en la que se puede ir anotando con lpiz un valor, el valor actual; luego es posible borrar el contenido de esa hoja del block y volver anotar otro valor, con lo que se habr actualizado el contenido de la variable en cuestin. Estas dos acciones, de accionar un valor a una variable y actualizar su valor cuando sea necesario se denominan sentencia de asignacin cuyo formato es el siguiente: <VARIABLE>:= <Expresin> := operador de asignacin, este asigna el valor situado a su derecha, a la variable que le precede. La zona <Expresin> puede ser una constante, una variable previamente declarada y con un valor ya asignado o bien una expresin matemtica o lgica. INICIALIZACIN DE VARIABLES Cuando nosotros definimos una variable en el programa por ejemplo A: entero, la mquina le asigna a dicha variable un lugar en la memoria, pero este lugar est sucio con informacin que ya se utilizo, entonces para poder definir un lugar limpio que permita hacer clculos correctos se debe inicializar la variable, esto significa darle un valor cualquiera elegido por nosotros. A:= 10 Si estuviramos hablando de un dato de tipo carcter que lo hemos definido del siguiente modo C: carcter el valor para inicializarlo puede ser blanco o una expresin de caracteres. C: C:= LA SUMA ES ALGORITMO Se sabe que la palabra algoritmo se dio en honor del matemtico persa del siglo IX, Khowrizm. Con ste trmino se hace referencia a un conjunto de reglas, ordenadas de forma lgica, para desarrollar un clculo o para solucionar un problema, ya sea de forma manual o utilizando una mquina. Actualmente es frecuente hablar de algoritmo como paso previo al desarrollo de un programa de computador. Para que la solucin de un problema sea llevada hasta un lenguaje de programacin, los pasos expresados en el algoritmo deben ser lo ms detallados posible, de manera que cada uno de ellos implique una operacin trivial; es decir, que los pasos no impliquen procesos que requieran de una solucin algortmica. En caso de presentarse esta situacin, el algoritmo debe ser refinado, lo que equivale a desarrollar nuevamente el algoritmo para la tarea concreta a la que se hace mencin. Si el problema que se desea solucionar es muy grande o complejo, es recomendable dividirlo en tareas que se puedan abordar independientemente y que resulten ms sencillas de solucionar. A esto se le llama diseo modular. Existen varias tcnicas para representar algoritmos, las ms conocidas son: pseudocdigo, diagrama de flujo y diagrama Nassi/Schneiderman o tambin conocida como diagramas de Chapin. Caractersticas de un algoritmo Un algoritmo debe tener al menos las siguientes caractersticas: Ser preciso: esto significa que las operaciones o pasos del algoritmo deben desarrollarse en un orden estricto, ya que el desarrollo de cada paso debe obedecer a un orden lgico. Ser definido. Ya que en el rea de programacin, el algoritmo se desarrolla como paso fundamental para desarrollar un programa, es necesario tener en cuenta que el computador solo desarrollar las tareas programadas y con los datos suministrados; es decir, no puede improvisar y tampoco se inventar o adivinar el dato que necesite para realizar un proceso. Por eso, el algoritmo debe estar plenamente definido; esto es, que cuantas veces se ejecute, el resultado depende estrictamente de los datos suministrados. Si se ejecuta con un mismo conjunto de datos de entrada, el resultado ser siempre el mismo. Ser finito: esta caracterstica implica que el nmero de pasos de un algoritmo, por grande y complicado que sea el problema que soluciona, debe ser limitado. Todo algoritmo, sin importar el nmero de pasos
Porf. Silvina M.Gimnez Pgina N 3
PROGRAMACION I
que incluya, debe llegar a un final. Para hacer evidente esta caracterstica, en la representacin de un algoritmo siempre se incluyen los pasos inicio y fin. Presentacin formal: para que el algoritmo sea entendido por cualquier persona interesada es necesario que se exprese en alguna de las formas comnmente aceptadas; pues, si se describe de cualquier forma puede no ser muy til ya que solo lo entender quien lo dise. Las formas de presentacin de algoritmos son: el pseudocdigo, diagrama de flujo y diagramas de Nassi/Schneiderman, entre otras. Correccin: el algoritmo debe ser correcto, es decir debe satisfacer la necesidad o solucionar el problema para el cual fue diseado. Para garantizar que el algoritmo logre el objetivo, es necesario ponerlo a prueba; a esto se le llama verificacin o prueba de escritorio. Eficiencia: hablar de eficiencia o complejidad de un algoritmo es evaluar los recursos de cmputo que requiere para almacenar datos y para ejecutar operaciones frente al beneficio que ofrece. En cuanto menos recursos requiere ser ms eficiente el algoritmo.
El cumplimiento de las caractersticas mencionadas anteriormente permitir determinar si un procedimiento es o no es algortmico. El primer paso en el diseo de un algoritmo es conocer la temtica a tratar, el segundo ser pensar en las actividades a realizar y el orden en que deben ejecutarse para lograr el objetivo, el tercero y no menos importante es la presentacin formal. PSEUDOCODIGO Es un medio para representar la estructura interna de un programa. Tiene la ventaja de acercarse bastante al cdigo final y ser, adems, fcil de leer y escribir. El pseudocdigo es una tcnica de especificacin de algoritmos que utiliza una descripcin textual, por ello se apoya en expresiones del lenguaje natural; sin embargo, dado que el lenguaje natural es muy extenso y se presta para la ambigedad, solo se utiliza un conjunto de palabras, a las que se denomina palabras reservadas. Las palabras reservadas ms utilizadas son: Inicio Si Mientras Entero Incrementar Fin Sino Repita Real Decrementar Leer Entonces Hasta Cadena Escribir Hacer Para Lgico
PROGRAMACIN ESTRUCTURADA Para que un programa sea fcilmente comprensible y susceptible de ser modificado con posterioridad debe ser claro, inteligible y corto, el empleo de bifurcaciones incondicionales (instrucciones que rompen la secuencia de ejecucin de un programa) es desaconsejable ya que dificulta el anlisis y seguimiento del mismo. Al evitar su presencia se lograra una ejecucin ordenada de las instrucciones, de esta forma los programas se podrn dividir en pequeos trozos o mdulos que otorgan una gran flexibilidad al programa en orden a futuras modificaciones. LENGUAJE ESTRUCTURADO Del mismo modo que ha de partir de los tres colores primarios (rojo, azul, amarillo), mezclndolos adecuadamente es posible conseguir toda la gama del espectro; partiendo de tres estructuras se puede escribir cualquier programa. Estas son: Secuencial De bifurcacin Repetitivas o Iterativas. El concepto de estructuracin se refiere tanto al programa en s, como a los datos mismos. Estos ltimos pueden estructurarse para reducir la complejidad de los algoritmos de trabajo, aumentar la claridad de un programa y, en definitiva, conseguir un mayor rendimiento. Estructuras secuenciales Son aquellas que se ejecutan una despus de otra. Se tienen tres tipos de instrucciones secuenciales: la declaracin de variables, asignacin, instruccin Leer e instruccin Escribir.
Pgina N 4
I.S.F.T.N 132
La mayora de algoritmos actan sobre un conjunto de datos suministrados por el usuario y se espera que a partir de dichos valores y desarrollando los procesos programados se genere informacin de salida o resultados. Declaracin de variables Teniendo en cuenta la compatibilidad con la mayora de los lenguajes, se recomienda que desde el diseo del programa se utilice una forma determinada para la declaracin de las variables. Esta consiste en escribir el tipo de datos y la lista de identificadores que se tendrn de dicho tipo, separando cada identificador por medio de comas (,). Para mejorar la claridad de la declaracin se puede colocar dos puntos (:) para separar el tipo de datos de la lista de identificadores. Ejemplo: Entero: edad Real: estatura, peso, sueldo Cadena: nombre, direccin Aunque algunos lenguajes de programacin permiten declarar las variables en el momento en que se las necesita, es aconsejable, en favor de los buenos hbitos de programacin, siempre declarar las variables antes de utilizarlas y el sitio ms adecuado es el inicio del programa o de la funcin. Asignacin Asignar un valor a una variable equivale a decir que se guarda dicho valor en la posicin de memoria reservado para la variable en mencin. Por lo tanto, para poder realizar una asignacin es necesario primero haber declarado una variable, con lo cual se reserva un espacio de memoria suficiente para guardar un dato del tipo especificado. Una expresin de asignacin tiene la forma: Variable = expresin Donde la expresin puede estar formada por un valor, por un conjunto de valores y operadores o por una funcin. Ejemplos: Edad = 10 Estatura = 1.80 Resultado = 2*3 Donde edad y resultado son variables de tipo entero y estatura de tipo real que se supone declaradas previamente. Una asignacin tiene tres partes, una variable, el signo igual y la expresin cuyo valor se asigna a la variable. La variable siempre va a la izquierda del igual, mientras que la expresin siempre estar a la derecha. Ejemplos: Entero: X, Y X = 10 Y=X*2+8 En este ejemplo, la variable Y contendr el valor 28. Instruccin Leer La instruccin LEER se utiliza para enviar informacin desde un dispositivo de entrada de datos hacia la memoria. En la memoria los datos son ubicados mediante el identificador (nombre de variable) utilizado como complemento de la instruccin LEER. La instruccin de entrada se representa as: Leer <lista de identificadores de variables> Ejemplo: Leer a, b Donde "a" y "b" son las variables que recibirn los valores y que deben haberse declarado previamente. Instruccin Escribir Esta instruccin permite enviar datos desde la memoria hacia un dispositivo de salida como la pantalla o la impresora. La informacin que se enva puede ser constante o tambin el contenido de variables. Escribir <lista de constantes y variables> Ejemplo: Escribir a, b Cuando se escriben ms de una variable es necesario separarlas con comas (,) y los mensajes se escriben entre comillas dobles " ". Si una variable es escrita entre comillas se mostrar el identificador y no el contenido.
Porf. Silvina M.Gimnez Pgina N 5
PROGRAMACION I
Estructuras de bifurcacin, decisin o seleccin Las estructuras de bifurcacin o tambin llamadas de seleccin permiten que el algoritmo tome decisiones y ejecute u omita algunos procesos dependiendo del cumplimiento de una condicin. En esta operacin el ordenador escoge la accin a ejecutar dentro de un conjunto de posibilidades. Esta eleccin esta determinada por la validez de un clculo aritmtico-lgico. Si <condicin> entonces <accin 1> Sino <accin 2> Se puede ejecutar ms de una accin si la condicin se cumple y ms de una si la condicin no se cumple, en este caso se trata de sentencias compuestas y se marcan dentro de un bloque con las palabras Inicio y Fin. Entonces las sentencia quedara de la siguiente manera: Si <condicin> entonces Inicio <accin 1> <accin 2> <accin n> Fin Sino Inicio <accin 1> <accin 2> <accin n> Fin Su especialidad es romper el flujo del programa en un determinado punto del mismo, dependiendo si se cumple una condicin establecida. Si es cierta la condicin se ejecutara una o ms sentencias especficas, mientras que si la condicin es falsa se ejecutaran otras sentencias. La aplicacin ms frecuente de la sentencia Si/entonces/Sino es la de seleccionar una entre varias opciones. Decisin mltiple Muchas decisiones deben tomarse, no solo entre dos alternativas, sino de un conjunto mayor. Estos casos bien pueden solucionarse utilizando condicionales dobles anidados; sin embargo, en favor de la claridad del algoritmo y la facilidad para el programador, es mejor utilizar una estructura de decisin mltiple, la cual es fcil de llevar a un lenguaje de programacin, ya que stos incluyen alguna instruccin con este fin. La decisin mltiple determina el valor de una variable y dependiendo de ste sigue un curso de accin. Es importante tener en cuenta que solo se verifica la condicin de igualdad entre la variable y la constante. Estructuras de repeticin En la solucin de algunos problemas es necesario ejecutar repetidas veces una instruccin o un conjunto de instrucciones. En algunos casos, el nmero de repeticiones se conoce con anterioridad, mientras que en otras depende de clculos o estados de variables que se dan dentro de la solucin del problema. Para solucionar este tipo de problemas se utiliza un tipo de estructuras a las que se conocen como estructuras de repeticin, bucles o ciclos. Un ciclo consiste en un grupo de acciones que se ejecutan repetidas veces dependiendo del cumplimiento de una condicin. Ciclo Mientras Este ciclo consiste en un conjunto de instrucciones que se repiten mientras se cumpla una condicin. De igual manera que en los condicionales, la condicin es evaluada y retorna un valor lgico, que puede ser verdadero o falso. En el caso del ciclo mientras las instrucciones contenidas en la estructura de repeticin se ejecutarn solamente si al evaluar la condicin se genera un valor verdadero; es decir, si la condicin se cumple; en caso contrario, se ejecutar la instruccin que aparece despus de Fin mientras.
Pgina N 6
I.S.F.T.N 132
A diferencia de otros ciclos, el ciclo mientras comienza evaluando la expresin condicional, si el resultado es verdadero se ejecutarn las instrucciones que estn entre el mientras y el fin mientras, al encontrarse la lnea fin mientras se volver a evaluar la condicin, si se cumple se ejecutarn nuevamente las instrucciones y as sucesivamente hasta que la condicin deje de cumplirse, en cuyo caso, el control del programa pasa a la lnea que aparece despus de fin mientras. Si en la primera pasada por el ciclo mientras la condicin no se cumple las instrucciones que estn dentro del ciclo no se ejecutarn ni una sola vez. Mientras <condicin> hacer <accin 1> Puede suceder al igual que en el caso anterior sentencias compuestas las cuales se resuelven de la siguiente manera: Mientras <condicin> hacer Inicio <accin 1> <accin 2> <accin n> Fin Sentencia Mientras/hacer: la <condicin>es la que determina el nmero de veces que se repetir la <accin 1>, esta se ejecutara siempre que la <condicin> sea cierta. Hay que prever que la variable de control de la expresin modifique su valor en forma apropiada dentro del bucle, en caso contrario, se podra caer, en un bucle infinito, sin final, error muy difcil de detectar y lo que comnmente se conoce como Loop Sentencia Repetir/hasta: sea cual fuere el valor de la expresin en la primera pasada se ejecutara primero la sentencia, para pasar despus a la evaluacin de la condicin. Esto significa que siempre se ejecutara al menos una vez la sentencia interior del bucle Repetir <accin 1> <accin 2> <accin n> hasta <condicin> Ciclo Para Este ciclo, al igual que los dems, permite ejecutar repetidas veces una instruccin o un grupo de ellas, pero a diferencia de otras instrucciones de repeticin, sta maneja el valor inicial, el valor de incremento o decremento y el valor final de la variable de control como parte de la instruccin. Cuando al ejecutarse un algoritmo se encuentra una instruccin para la variable de control (contador) toma el valor inicial, se verifica que el valor inicial no sobrepase el valor final y luego se ejecutan las instrucciones del ciclo. Al encontrar la instruccin fin para, se produce el incremento y se vuelve a verificar que la variable de control no haya superado el lmite admitido, y se vuelven a ejecutar las instrucciones que estn dentro del ciclo, y as sucesivamente tantas veces como sea necesario hasta que se supere el valor final establecido. El ciclo para termina en el momento en que la variable de control (contador) sobrepasa el valor final; es decir, que la igualdad est permitida y las instrucciones se ejecutan cuando el contador es igual al valor final. Este ciclo puede presentarse de tres maneras: la primera es la ms comn, cuando se produce un incremento de 1 en cada iteracin, en cuyo caso no es necesario escribir explcitamente. Sentencia Para/hasta: se repetir el bucle tantas veces como valores intermedios haya entre los valores inicial y final de la variable de control del bucle. Para <valor inicial> hasta <valor final> hacer Inicio <accin 1> <accin 2> <accin n> Fin
Porf. Silvina M.Gimnez Pgina N 7
PROGRAMACION I
En esta sentencia tanto la variable de control como su valor inicial y final deben ser del mismo tipo. El valor de la variable de control no debe ser alterado por las sentencias del bucle. El funcionamiento es el siguiente: en principio se asigna a la variable de control el valor inicial y se chequea si ya se ha llegado al valor final, en cuyo caso no se ejecutara el bucle ninguna vez. Si no alcanza el valor final se ejecutara el bucle y se incrementara el valor de la variable de control antes de ser comprobado nuevamente. Este proceso se repite hasta que la variable de control llegue al valor final, pasando a ejecutar la prxima sentencia del programa. El segundo caso de utilizacin del ciclo Para es cuando el incremento es diferente de 1, en cuyo caso se escribir la palabra incrementar seguida del valor a sumar en cada iteracin. Para <valor inicial> hasta <valor final> incrementar valor hacer Inicio <accin 1> <accin 2> <accin n> Fin En tercer lugar, el ciclo para no siempre se incrementa desde un valor inicial hasta un valor mayor, puede suceder que se requiera que se disminuya desde un valor inicial alto, hasta un valor menor. En este caso ser suficiente con escribir decrementar en vez de incrementar. La utilizacin adecuada e ingeniosa de las estructuras presentadas permite el diseo de algoritmos de aceptable nivel de complejidad, como se ha mostrado en los ejemplos. Finalmente, el diseo de algoritmos no solo requiere conocer metodologas de representacin, sino tambin desarrollar el pensamiento lgico para generar soluciones y esto se consigue mediante el desarrollo de ejercicios.
Pgina N 8
I.S.F.T.N 132
PROGRAMACIN ESTRUCTURADA
EL LENGUAJE PASCAL El matemtico y fsico francs Pascal (1623-1662) fue el constructor, a los 19 aos, de la primera calculadora mecnica conocida, denominada "Pascaline", que permita sumar y restar directamente. En su honor se bautiz como PASCAL un nuevo lenguaje de programacin; quiz el ms representativo de los lenguajes estructurados. Fue ideado, a principios de los aos 70 por el matemtico Nicklaus Wirth, profesor del Instituto Federal de Tecnologa de Zurich. Cuando lo concibi, lo hizo con propsitos estrictamente acadmicos, tanto para ilustrar los conceptos de la programacin estructurada, como para disponer de una herramienta adecuada para la enseanza de la informtica. Su descripcin del lenguaje es lo que se conoce como PASCAL ESTANDAR. PASCAL es un lenguaje de propsito general que ha alcanzado gran difusin como lenguaje de enseanza y de desarrollo de aplicaciones. Si el Pascal estndar tena numerosas imperfecciones, las nuevas versiones de compiladores de PASCAL han ido completando y corrigiendo el estndar. Esto ha hecho que las versiones comerciales del lenguaje incluyan extensiones del estndar que las hace incompatibles entre s. La versin que populariz este lenguaje fue la TURBO PASCAL, de la compaa americana Borland, que ha presentado recientemente la versin 7.0 del compilador. Otra versin de Pascal, menos conocida que la de Borland es UCSD-PASCAL (desarrollada por la Universidad de California, San Diego). El lenguaje Pascal ha inspirado otros lenguajes posteriores como MODULA-2 y ADA.
DEFINICION DE LENGUAJE DE PROGRAMACION Un Lenguaje de Programacin es un lenguaje utilizado por las personas para comunicarle a un ordenador un algoritmo o descripcin de la tarea que ha de realizar. Como todo lenguaje, consta de: A. Un conjunto finito de smbolos: vocabulario. B. Un conjunto finito de reglas, sintaxis, para la construccin de frases correctas, llamadas instrucciones (Exactitud de disposicin). C. Una semntica o aplicacin que asocie un significado a cada posible construccin del lenguaje (Exactitud tipogrfica) Podemos jerarquizar los elementos que constituyen los lenguajes de programacin en el esquema siguiente: PROGRAMA
INSTRUCCIONES
En esta jerarqua, el PROGRAMA es la unidad bsica de ejecucin. Consiste en un conjunto de INSTRUCCIONES o SENTENCIAS escritas en un lenguaje particular, que representan la solucin de un problema. En otras palabras, se puede decir que un 'programa' es la elaboracin de un algoritmo escrito en un lenguaje especfico para la comunicacin con los ordenadores. En programacin es muy frecuente que un conjunto de instrucciones se utilicen del mismo modo (o en la misma secuencia) en varias ocasiones dentro del mismo programa, e incluso en programas diferentes. Lo que suele hacerse en estas situaciones es escribir 'aparte' tal conjunto de instrucciones e identificarlo con
Porf. Silvina M.Gimnez Pgina N 9
PROGRAMACION I
un nombre (identificador) concreto, de tal modo que en el programa se invoca a ese conjunto de instrucciones escribiendo nicamente su nombre o poco ms. Estos conjuntos de instrucciones reciben as el nombre de SUBPROGRAMAS, que dependiendo del lenguaje de programacin o de sus caractersticas reciben los nombres de procedimientos, funciones, subrrutinas, etc. Tanto los programas como los subprogramas estn formados por INSTRUCCIONES que son las frases de los lenguajes de programacin. Los elementos constitutivos de las instrucciones de los lenguajes de programacin, en general se reducen a los recogidos en el esquema anterior y que podemos definir de la siguiente manera: una variable en programacin es un espacio de memoria reservado para contener un dato de un cierto tipo, cuyo contenido puede variar durante la ejecucin del programa al que pertenece y que es reconocida en el mismo por el identificador (nombre) que el programador le ha asignado. Una constante en programacin es un espacio de memoria reservado para contener un dato concreto de un cierto tipo, cuyo contenido es fijado de antemano y no puede variar durante la ejecucin del programa al que pertenece, y es reconocida por el mismo por el identificador que el programador le ha asignado. Un operador es un smbolo que relaciona datos (operandos) para constituir una expresin. Los operadores ms habituales son los operadores aritmticos, los operadores lgicos y los operadores relacionales. Las palabras reservadas son, como indica su nombre, palabras con un cometido especfico, de modo que si se intentan utilizar para nombrar (identificar) algn elemento de la programacin, se producir un error sintctico. Identificadores son los nombres que el programador asigna a los distintos elementos de la programacin (constantes, variables, programas, procedimientos), cuando los utiliza. INTERPRETES Y COMPILADORES Las instrucciones que 'entienden' los ordenadores se expresan por medio de unos y ceros. Es lo que se conoce por cdigo mquina o lenguaje mquina, y es especfico de cada mquina (o lo que es lo mismo en la actualidad, de cada microprocesador). Cada byte tiene un significado concreto para la mquina. El conjunto de instrucciones en cdigo mquina que un microprocesador es capaz de ejecutar se conoce como set de instrucciones de ese microprocesador. Todo programa que se ejecute en un ordenador, debe ser un conjunto de instrucciones de las disponibles en el SET del microprocesador que gobierne el ordenador. Escribir programas en cdigo mquina es pesadsimo para el programador y exige un conocimiento profundo de la arquitectura del microprocesador que se utilice. No obstante, fue el modo de programar en los principios de la informtica; el programa resultante era directamente comprendido por la mquina. Posteriormente, y para facilitar un poco la tarea de la programacin, se invent el lenguaje ensamblador, que consiste en utilizar en vez de cada cdigo binario de instruccin un nombre simblico que recuerde para qu sirve, y para las direcciones de memoria el sistema de numeracin hexadecimal. Cada instruccin ensamblador corresponde a una instruccin en cdigo mquina, pero es evidente que el lenguaje ensamblador es ms cmodo de utilizar por el programador. Ahora bien, el microprocesador no es capaz de ejecutar directamente el cdigo ensamblador y se precisa un proceso de traduccin a lenguaje mquina. Un programa, denominado programa ensamblador se encarga de traducir las instrucciones ensamblador a instrucciones binarias para as generar el programa ejecutable. Las instrucciones de cdigo mquina (y por tanto tambin las de ensamblador), por separado, permiten hacer nicamente cosas muy simples, para expresar tareas ms complicadas deberamos escribir gran cantidad de instrucciones mquina o ensamblador. Para evitar este problema y acercar el lenguaje de comunicacin hombre-mquina al lenguaje natural, se inventaron los lenguajes conocidos como lenguajes de alto nivel, los cuales utilizan instrucciones muy potentes (en el sentido de que una nica instruccin es capaz, por ejemplo, de escribir en pantalla el resultado de una larga expresin matemtica) y que su escritura es bastante parecida al lenguaje natural. Lenguajes de alto nivel son, entre otros, FORTRAN, COBOL, BASIC, PASCAL, C. Con este tipo de lenguajes la tarea de programar se simplifica mucho; sin embargo el proceso de traduccin a cdigo mquina se complica considerablemente. De hecho, hay dos mecanismos de traduccin: por medio de lo que se denomina ejecucin bajo intrprete o por medio de un proceso de compilacin. Cuando se ejecuta un programa bajo intrprete, lo que est funcionando en el ordenador es un programa intrprete, que va tomando una a una las instrucciones del nuestro y haciendo que el ordenador ejecute el paquete de instrucciones de cdigo mquina correspondiente. Es decir, un intrprete toma una instruccin del programa en alto nivel, la traduce a cdigo mquina y la ejecuta; toma la siguiente instruccin y as sucesivamente hasta fin de programa. El intrprete no crea una versin ejecutable del programa. Por el contrario, la otra alternativa consiste en generar un programa ejecutable por medio de un programa compilador. Este traductor convierte una a una las instrucciones de alto nivel a cdigo mquina, pero no las ejecuta hasta que ha traducido el programa completo. El programa escrito en un lenguaje de
Pgina N 10 Porf. Silvina M.Gimnez
I.S.F.T.N 132
alto nivel se denomina programa fuente y el programa traducido a cdigo ejecutable se denomina programa objeto. En ambos casos es evidente que hay que escribir el programa en el lenguaje de alto nivel elegido. Para ello se utiliza un editor o programa editor, que nos permite escribir y modificar el programa fuente con mucha facilidad, as como guardarlo en disco o imprimirlo. Este programa suele venir incluido en el paquete del traductor. El hecho de crear un programa objeto tiene la ventaja de que una vez traducido su ejecucin sucesivas veces es rapidsima, ya que no hay que repetir el proceso en cada ejecucin. LENGUAJES ESTRUCTURADOS La Programacin Estructurada es una tcnica de programacin que permite escribir programas fcilmente legibles, autoexplicativos y fciles de modificar. La programacin estructurada NO ES un nuevo lenguaje de programacin, sino un mtodo para escribir programas en cualquier lenguaje. El lenguaje PASCAL es muy estructurado y prcticamente obliga a utilizar esta tcnica. Las caractersticas que diferencian a los lenguajes estructurados de los dems, son las siguientes: 1. La posibilidad de prescindir de la estructura de salto incondicional. Pues, todo programa se puede construir con la utilizacin explcita de las siguientes estructuras bsicas: a) Secuencia simple de instrucciones. b) Repeticin (condicional o incondicional) de instrucciones. c) Seleccin de unas instrucciones u otras segn un resultado previo. 2. La modularidad consiste en la posibilidad de codificar diferentes partes (mdulos) de un programa de manera independiente para despus enlazarlos y construir el programa completo. Dependiendo del lenguaje, estos mdulos sern o no compilables independientemente. En cualquier caso, esta caracterstica permite presentar el programa como una secuencia relativamente simple de tareas de gran potencia, que se describen con detalle en otra parte del programa o incluso fuera de l. 3. La estructuracin de datos consiste en la posibilidad de crear nuevos tipos de dato para utilizar en la codificacin de programas, si los tipos de dato predefinidos que ofrece el lenguaje no se adaptan a nuestra necesidad concreta. ESTRUCTURAS BASICAS DE CONTROL EN LENGUAJES DE ALTO NIVEL Secuencia Simple de Instrucciones Se ejecutan en orden secuencial Instruccin i Instruccin j Sin embargo, si este fuera el nico orden de ejecucin posible, el programa tendra que realizar siempre las mismas acciones, independientemente de los datos que se le dieran como entrada en cada ejecucin. Con el fin de poder dotar a los programas de cierta capacidad de decisin sobre los tratamientos que debe aplicar en cada caso, es por lo que los lenguajes de programacin de alto nivel permiten la definicin de otras estructuras de control alternativas a la secuencial. Los dos tipos de estructuras de control bsicas, existentes en casi todos los lenguajes de programacin son: La estructura de seleccin o decisin. La estructura de iteracin o repeticin. Estructura de seleccin o decisin En Pascal existen tres estructuras diferentes de decisin: las estructuras IF...THEN, IF...THEN...ELSE, y CASE. Las dos primeras permiten decidir entre dos alternativas; la tercera permite realizar una seleccin mltiple, de ms de dos opciones. La estructura IF...THEN Esta estructura permite decidir, durante la ejecucin de un programa, si una instruccin o bloque de instrucciones se debe ejecutar o no, dependiendo del resultado de una cierta condicin. Su sintaxis general es la siguiente: IF Condicin THEN Instruccin o Bloque ;
Porf. Silvina M.Gimnez Pgina N 11
PROGRAMACION I
donde IF y THEN son palabras reservadas y Condicin es cualquier expresin cuyo resultado sea BOOLEAN (TRUE o FALSE). Si Condicin es TRUE se ejecuta la Instruccin o Bloque de instrucciones que sigue a la palabra THEN; si es FALSE, se pasa a ejecutar la siguiente instruccin del programa. Tngase en cuenta que en Pascal, para delimitar un bloque de sentencias se utilizan las palabras reservadas BEGIN...END; (con punto y coma). Expresin booleana
Cierto o falso?
Cierto
Falso
Ejecutar sentencias
Continuar con el programa Diagrama de flujo de la estructura IF-THEN Estructura IF..THEN..ELSE Esta estructura es una extensin de la anterior en la que se selecciona la ejecucin de un bloque de instrucciones u otro, dependiendo de que la condicin sea TRUE o FALSE. La sintaxis general de esta estructura es: IF Condicin THEN (Instr. o Bloque A) ELSE (Instr. o Bloque B) ; La instruccin inmediatamente anterior a ELSE no lleva punto y coma, ya que el compilador supondra que ha finalizado una estructura del tipo IF...THEN. Encontrar luego un ELSE no tiene sentido y se produce un error de compilacin. La sentencia If-Then proporciona una sola rama, que se ejecuta cuando la sentencia booleana es cierta. A menudo, un programa requiere dos ramas: una que se ejecute si es cierto y la otra si es falso. Para esto se utiliza la estructura de control de la sentencia If-Then-Else. Esta sentencia funciona de la siguiente manera: si la evaluacin es cierta, se ejecuta el bloque de cdigo que sigue a la sentencia Then; si es falsa, se ejecuta el bloque de cdigo que sigue a la sentencia Else. En ambos casos, cuando finaliza el bloque de cdigo seleccionado, el control del programa salta hasta el final de la sentencia If-Then-Else Expresin booleana
Falso
Cierto o falso?
Cierto
I.S.F.T.N 132
La estructura If-Then proporciona una rama y la estructura If-Then-Else proporciona dos. Pero qu ocurre cuando se necesita expresar una serie de condiciones?. En estos casos se puede ampliar la sentencia If-Then-Else con la sentencia Else-If. Las sentencias Else-If permite encadenar sentencias booleanas, lo que proporciona al programa la capacidad de bifurcacin mltiple. El elemento de esta figura es el camino que toma del programa cuando encuentra la primera expresin booleana como falsa. En lugar de ejecutar un bloque de cdigo, el programa evala una segunda expresin booleana; aqu donde entra en juego la sentencia Else-If. Si esta expresin es falsa, el programa ejecuta el ltimo bloque de cdigo. Expresin booleana
Cierto
Ejecutar sentencias
Cierto
Diagrama de flujo de Bifurcacin Mltiple Las sentencia If-Then anidadas Una forma de permitir al programa que considere dos o ms condiciones separadas antes de embarcarse en el curso de una accin es el anidamientos de las sentencias If-Then. Una sentencia If-Then anidada puede producir esquemas de bifurcacin muy complejos. Expresin booleana
Cierto o falso?
Cierto
Sentencia booleana
Cierto o falso?
Cierto
Ejecutar sentencias
Ejecutar sentencias
Ejecutar sentencias
PROGRAMACION I
La estructura CASE La estructura CASE es una estructura de decisin que permite elegir entre ms de dos alternativas. Sintcticamente consiste en una expresin, el Selector (que frecuentemente ser una variable), situada entre las palabras reservadas CASE y OF, y a continuacin una lista de instrucciones o bloques de instrucciones, precedidas cada una de ellas por una o ms constantes (denominadas constantes o etiquetas del Case) del mismo tipo que el selector. La estructura acaba con END;. CASE Selector OF Et.1 : Instr. o bloque A ; Et.2 : Instr. o bloque B ; ... Et.N : Instr. o bloque N ; END; El selector ha de ser de un tipo ordinal de 1 o 2 bytes de tamao; es decir, un selector no puede ser de tipo LONGINT. Tampoco podremos utilizar para selectores el tipo STRING. Una etiqueta CASE puede constar de cualquier nmero de constantes o subrangos separados por comas, del mismo tipo (o compatible) que el selector. La sentencia o bloque que se ejecuta debe ser precedida por una etiqueta que coincida con el valor del selector o por un subrango que contenga el valor del selector en el momento de la ejecucin. Si queremos indicar lo que se debe hacer si no coincide con ninguno de los valores que hemos enumerado, usamos else: CASE Selector OF Et.1 : Instr. o bloque A; Et.2 : Instr. o bloque B ; ... Et.N : Instr. o bloque N ; ELSE Instr. o bloque alternativo; END; La estructura de iteracin o repeticin condicionales En Pascal existen dos estructuras diferentes de repeticin condicional: el bucle WHILE ... DO y el bucle REPEAT...UNTIL. En ellas, el nmero de veces que se ha de ejecutar un conjunto de instrucciones depende de una condicin: expresin cuyo resultado ha de ser BOOLEAN. El bucle WHILE...DO La sintaxis general de la estructura WHILE...DO es: WHILE Condicin DO Instruccin o Bloque ; donde WHILE y DO son palabras reservadas y Condicin es cualquier expresin cuyo resultado sea BOOLEAN. Esta estructura confiere al programa la capacidad de repetir un tratamiento mientras que los datos cumplan una condicin indicada. El bucle WHILE-DO examina la condicin antes de ejecutar cualquier sentencia del bloque. Si es cierta ejecuta el bloque de cdigo que sigue y si es falsa salta hasta la prxima sentencia despus del END. WHILE (condicin booleana) DO BEGIN { Sentencias } END; Las estructuras de iteracin tambin se denominan BUCLES. Ntese una caracterstica muy importante de estos dos tipos de bucles: el nmero de veces que se ha de repetir el bucle es, en principio, indeterminado: depender del conjunto de instrucciones A. Por esta razn se conocen como bucles condicionales.
Pgina N 14
I.S.F.T.N 132
El bucle REPEAT...UNTIL La sintaxis general de este bucle la podemos ver en la siguiente, donde REPEAT y UNTIL son palabras reservadas y Condicin es cualquier expresin cuyo resultado sea BOOLEAN. REPEAT Instruccin o Instrucciones UNTIL Condicin ; En este caso la ejecucin de la instruccin o instrucciones se repetir hasta (until) que la Condicin sea verdadera. REPEAT { Sentencias } UNTIL (condicin booleana); Hay tres diferencias importantes entre el bucle REPEAT...UNTIL y el bucle WHILE...DO: 1. La instruccin o conjunto de instrucciones en el bucle REPEAT...UNTIL se ejecuta al menos una vez, ya que la evaluacin de la Condicin se realiza al finalizar la estructura; es decir, la primera vez que se ejecuta no se ha comprobado an la condicin. Esto no ocurre en el bucle WHILE...DO. 2. El bucle REPEAT...UNTIL se ejecuta HASTA que la Condicin sea cierta y el bucle WHILE...DO se ejecuta MIENTRAS la Condicin sea cierta. 3. El bucle REPEAT...UNTIL puede ejecutar un conjunto de instrucciones sin tener que delimitarlo como un bloque con BEGIN...END;. Sirva como razn que tanto REPEAT como UNTIL son palabras reservadas que, en este caso, realizan la doble funcin de delimitar estructura y bloque de instrucciones. Estructura de repeticin incondicional: El Bucle FOR El bucle FOR es una estructura de repeticin presente en la mayora de los lenguajes de programacin. En Pascal, el bucle FOR es a la vez limitado y potente, como veremos enseguida. Esta estructura ejecuta una instruccin o bloque de instrucciones un nmero prefijado de veces. Su sintaxis general es la siguiente: FOR Contador := Valor Inicial TO Valor Final DO Instr. o Bloque ; donde FOR, TO y DO son palabras reservadas, Contador es una variable de cualquier tipo ordinal y Valor Inicial y Valor Final son cualesquiera expresiones cuyo resultado sea del mismo tipo que Contador. La variable Contador parte del Valor Inicial y se incrementa en una unidad cada vez que se ejecuta la Instruccin o Bloque de Instrucciones, hasta llegar al Valor Final. FOR C:=VI TO VF DO BEGIN { Sentencias } END; Tengamos en cuenta varios detalles muy importantes: 1. No se puede cambiar el valor de la variable de control (Contador) mediante una instruccin (asignacin, READLN) dentro del bucle; es decir, esta debe seguir su incrementacin automtica unidad a unidad. Cualquier intento de modificar su valor producir un error. 2. El Valor Final que ha de alcanzar el Contador se lee al comienzo de la estructura, de forma que si este valor fuera modificado durante alguna de las repeticiones del bucle, el nmero de veces que se ejecuta ste no se ver afectado. Evidentemente, si se trata de un bucle incondicional, el nmero de ejecuciones no debe depender de lo que ocurra en su interior. 3. Si el Valor Final fuese menor o anterior que el Valor Inicial, el bucle no se ejecutara ninguna vez. Si los valores coinciden el bucle se ejecuta una sola vez.
Pgina N 15
PROGRAMACION I
Existe una forma alternativa de la estructura FOR para cuando se desea que la variable ndice (Contador) vaya cambiando de valor en orden descendiente. Consiste en utilizar la palabra reservada DOWNTO en lugar de TO: FOR Contador := Valor Inicial DOWNTO Valor Final DO Instr. o Bloque ; En este caso, si Valor Inicial es menor o posterior a Valor Final, el bucle no se ejecuta ninguna vez. FOR C:=VF DOWNTO VI DO BEGIN { Sentencias } END; La principal limitacin del bucle FOR es que slo nos permite incrementar o decrementar el contador en una unidad, en cada ejecucin del bucle. Sus principales ventajas son la sencillez de sintaxis y la posibilidad de utilizar como contador una variable de cualquier tipo ordinal (entero, char, boolean, subrango o cualquier tipo abstracto). ESTRUCTURA DE UN PROGRAMA PASCAL Todo programa escrito en lenguaje Pascal, del ms simple al ms complejo, tiene la siguiente estructura:
Es decir, existen dos zonas claramente diferenciadas separadas por unas palabras impuestas (reservadas) por el lenguaje: la Zona de Declaraciones y la Zona de Instrucciones del programa. La primera est delimitada por la Cabecera del programa y por la palabra reservada BEGIN, y en ella se declaran o se definen todos los elementos habituales de programacin (variables, subprogramas, etc.) que se van a utilizar en el programa y que estn disponibles en el lenguaje. La Zona de Instrucciones, delimitada por las palabras reservadas BEGIN y END, es la zona de las instrucciones ejecutables (las cuales utilizan los elementos declarados en la zona de declaraciones), es decir, la codificacin del algoritmo que resuelve el problema para el que fue diseado el programa. La cabecera del programa consta de la palabra reservada PROGRAM seguida del Nombre del Programa y de punto y coma (;). El punto y coma es el separador de sentencias en Pascal. El Nombre del Programa es un Identificador. Muy pocas sentencias en Pascal no llevan al final punto y coma. Entre las pocas excepciones se encuentran BEGIN (que marca el comienzo de un bloque de instrucciones) y END final de programa, que lleva un punto. En los programas Pascal podrn aparecer varios END seguidos de punto y coma, como ya veremos, pero END. (con punto) slo hay uno: el que marca final de programa.
PALABRAS RESERVADAS En Pascal (nos referiremos en lo sucesivo a la versin TURBO PASCAL 7.0 de la compaa BORLAND) existe un conjunto de palabras con un cometido especfico. Son las Palabras Reservadas. Si se intentan utilizar para nombrar (identificar) algn elemento de la programacin se producir un error de compilacin.
Pgina N 16 Porf. Silvina M.Gimnez
I.S.F.T.N 132
AND ARRAY ASM BEGIN CASE CONST CONSTRUCTOR DESTRUCTOR DIV DO DOWNTO ELSE END
FILE FOR FUNCTION GOTO IF IMPLEMENTATION IN INHERITED INLINE INTERFACE LABEL MOD NIL
NOT OBJECT OF OR PACKED PROCEDURE PROGRAM RECORD REPEAT SET SHL SHR STRING
IDENTIFICADORES Los Identificadores son los nombres que tienen los elementos de la programacin: Constantes, Variables, Tipos de Dato, Programas, Procedimientos, Funciones, Unidades y los Campos de los Registros. El programador, a la hora de escribir el programa tiene que poner nombre a las constantes, variables, etc. que utilice, ajustndose a las siguientes reglas: 1. Un identificador puede tener cualquier longitud, pero slo son significativos los primeros 63 caracteres. 2. Debe comenzar por una letra o el carcter de subrayado. 3. Despus del primer carcter puede ir cualquier secuencia de letras y nmeros o caracteres de subrayado. Ningn otro carcter est permitido. 4. Al igual que ocurre con las palabras reservadas, el compilador no distingue para los identificadores letras maysculas y minsculas. Es decir, los identificadores EXPO y expo son indistinguibles. Para el Pascal no existen diferencias entre maysculas y minsculas, as que a un identificador denominado "valor" se le puede referir como "VALOR" o "VaLoR". Todo identificador en Pascal debe ser definido previamente a su utilizacin. El lenguaje Pascal ya tiene de antemano identificadas algunas constantes, variables, tipos de dato, unidades, procedimientos y funciones que son elementales para comenzar un proceso de programacin o que son muy habituales en la misma, ahorrando as al programador la pesada tarea de describirlas. Por ejemplo las definiciones de los tipos de dato ms habituales, los procedimientos de lectura de datos por teclado y de escritura en pantalla, etc. Los identificadores de estos elementos conocidos de antemano por el compilador se denominan Identificadores Predefinidos y tienen una misin concreta inicialmente. Sin embargo, si el programador les asigna una misin diferente en la zona de declaraciones de su programa, pierden su definicin previa. En esto se diferencian de las palabras reservadas. UNIDADES TURBO PASCAL De la gran cantidad de constantes, variables, procedimientos, etc. predefinidos, unos son especficos de la estructura bsica del lenguaje, otros son especficos del manejo de la pantalla, otros lo son para relacionar el Pascal con el sistema operativo, etc. Por esta razn, y alguna ms, estos elementos estn agrupados en grupos denominados UNIDADES predefinidas ('Units'). Estas Unidades no se 'cargan' en memoria cuando 'entramos' en Turbo Pascal, sino que permanecen en disco. Cuando escribamos un programa y utilicemos en l algn elemento de alguna Unidad, declararemos (en la Zona de Declaraciones del programa) qu Unidad o Unidades requerimos para poder compilar y ejecutar nuestro programa. En este caso las Unidades correspondientes se cargarn en memoria para poder realizar dichos procesos. Es lgico pensar que no en todos los programas se van a utilizar todas las Unidades, por lo que el aprovechamiento de memoria se convierte en otra razn para agrupar los elementos predefinidos en Unidades.
Porf. Silvina M.Gimnez Pgina N 17
PROGRAMACION I
Las Unidades predefinidas o Unidades estndar del Turbo Pascal 7.0 son ocho: SYSTEM, CRT, PRINTER, DOS, OVERLAY, GRAPH, TURBO3 y GRAPH3. De ellas, las dos ltimas estn diseadas para permitir la compatibilidad de programas y archivos de datos creados con la versin 3.0 de Turbo Pascal. De las otras seis Unidades, diremos que SYSTEM contiene todos los elementos bsicos y ms habituales del lenguaje y, como se utiliza prcticamente en todos los programas, se carga automticamente, de modo que no necesita ser declarada en la Zona de Declaraciones de los programas. CRT contiene todos los elementos relativos al control de pantalla; PRINTER los relativos al control de impresora; DOS los relativos a la relacin de Turbo Pascal con el sistema operativo; OVERLAY los relativos a la gestin de Overlays y GRAPH los relativos a procesos grficos. La declaracin USES Para declarar una unidad, o lo que es lo mismo, dejarla lista para ser utilizada, se utiliza la palabra reservada USES que debe ir inmediatamente despus de la sentencia PROGRAM, despus se escriben los nombres de las unidades que se utilizarn.
Pgina N 18
I.S.F.T.N 132
TIPOS DE DATOS