Você está na página 1de 32

Programacin I Ingeniera de Sistemas

Trabajo de Investigacin Nmero I INTRODUCCIN AL LENGUAJE

Barcelona, 02 de Octubre de 2012.

ndice General
Introduccin 2

Desarrollo
Diagrama de flujo Algoritmo Programacin

3 5 10
14

Resolucin problemas de programacin Pseudocdigo Programacin estructurada

19
25

Conclusin

31

Introduccin
Los lenguajes de computadora se utilizan para resolver problemas, y ha habido miles de aos de trabajo en matemticas para este fin. Los lenguajes de programacin estn especificados por reglas para formar instrucciones correctas, organizndolas en mdulos, someterlas hacia un compilador, el cual traduce el cdigo en un lenguaje comprensible para una mquina en particular, y finalmente ejecutar el programa, es decir, someter la entrada hacia la computadora, la cual transforma en una salida de acuerdo con las instrucciones en el programa. Cuando usamos una computadora, estamos intentando resolver un problema. Puede ser un problema de negocios, que involucra ganancias y perdidas; un problema cientfico que emplea modelos de comportamiento fsico; una investigacin estadstica que evala la posibilidad de que ocurra algn evento; etc. En general, una computadora, slo es capaz de realizar tres operaciones bsicas:

determinar si el primero es mayor que el segundo, si son diferentes, etc.). Con estas sencillas operaciones utilizadas y combinadas de manera adecuada, mediante lo que se denomina Programa de computadora, se pueden llegar a realizar tareas increblemente complejas que aporten la solucin a un determinado problema, ya sea administrativo, cientfico, o de cualquier otro tipo. Dentro del campo de la computacin, un PROBLEMA consiste en la necesidad de transformar un grupo de datos iniciales (entrada) en un grupo diferente de datos finales (Resultados). De este modo, una computadora podr resolver un problema si alguien desarrolla un programa que contenga las instrucciones adecuadas que permitan transformar los datos, esta actividad la realizan los Programadores (seres humanos) y se le denomina PROGRAMACIN. La programacin ha ido evolucionando constantemente, desde los primeros programas escritos directamente en cdigo maquina (0 y 1) hasta llegar hoy a los lenguajes visuales (intuitivos). Esta evolucin se ha producido gracias a la utilizacin de diversos sistemas y herramientas. El ms efectivo es la realizacin de ALGORITMOS previos, que representan el programa mediante smbolos. Los algoritmos y los programas, son parecidos a una receta de cocina. Los lenguajes de programacin son el medio que permite a los Programadores expresar las instrucciones que la computadora va a realizar mediante la transformacin de los algoritmos en una serie de sentencias que siguiendo la sintaxis propia del lenguaje, indica las operaciones que va a realizar.

Desarrollo
Diagrama de flujo:
Definicin:

El diagrama de flujo es la representacin grfica del algoritmo o proceso. Se utiliza en disciplinas como programacin, economa, procesos industriales y psicologa cognitiva. Estos diagramas utilizan smbolos con significados definidos que representan los pasos del algoritmo, y representan el flujo de ejecucin mediante flechas que conectan los puntos de inicio y de fin de proceso.

Caractersticas:

Un diagrama de flujo siempre tiene un nico punto de inicio y un nico punto de trmino. Las siguientes son acciones previas a la realizacin del diagrama de flujo:

Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes el autor o responsable del proceso, los autores o responsables del proceso anterior y posterior y de otros procesos interrelacionados, as como las terceras partes interesadas. Definir qu se espera obtener del diagrama de flujo. Identificar quin lo emplear y cmo. Establecer el nivel de detalle requerido. Determinar los lmites del proceso a describir.

Los pasos a seguir para construir el diagrama de flujo son:

Establecer el alcance del proceso a describir. De esta manera quedar fijado el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente. Identificar y listar las principales actividades/subprocesos que estn incluidos en el proceso a describir y su orden cronolgico. Si el nivel de detalle definido incluye actividades menores, listarlas tambin. Identificar y listar los puntos de decisin. Construir el diagrama respetando la secuencia cronolgica y asignando los correspondientes smbolos. Asignar un ttulo al diagrama y verificar que est completo y describa con exactitud el proceso elegido.

Ventajas de los diagramas de flujo:

Favorecen la comprensin del proceso al mostrarlo como un dibujo. El cerebro humano reconoce muy fcilmente los dibujos. Un buen diagrama de flujo reemplaza varias pginas de texto. Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican los pasos, los flujos de los re-procesos, los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisin. Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan, facilitando a los empleados el anlisis de las mismas. Son una excelente herramienta para capacitar a los nuevos empleados y tambin a los que desarrollan la tarea, cuando se realizan mejoras en el proceso. Al igual que el pseudocdigo, el diagrama de flujo con fines de anlisis de algoritmos de programacin puede ser ejecutado en un ordenador, con un IDE como Free DFD.

Tipos de diagramas de flujo:

Formato vertical: En l, el flujo o la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la informacin que se considere necesaria, segn su propsito. Formato horizontal: En l, el flujo o la secuencia de las operaciones, va de izquierda a derecha. Formato panormico: El proceso entero est representado en una sola carta y puede apreciarse de una sola mirada mucho ms rpido que leyendo el texto, lo que facilita su comprensin, an para personas no familiarizadas. Registra no solo en lnea vertical, sino tambin horizontal, distintas acciones simultneas y la participacin de ms de un puesto o departamento que el formato vertical no registra. Formato Arquitectnico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectnico del rea de trabajo. El primero de los flujogramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos.

Simbologa y significado:

valo o Elipse: Inicio y trmino (Abre y/o cierra el diagrama). Rectngulo: Actividad (Representa la ejecucin de una o ms actividades o procedimientos). Rombo: Decisin (Formula una pregunta o cuestin).

Crculo: Conector (Representa el enlace de actividades con otra dentro de un procedimiento). Tringulo boca abajo: Archivo definitivo (Guarda un documento en forma permanente). Tringulo boca arriba: Archivo temporal (Proporciona un tiempo para el almacenamiento del documento).

Algoritmo:

Definicin formal:

En matemticas, ciencias de la computacin y disciplinas relacionadas, un algoritmo (del griego y latn, dixit algorithmus y este a su vez del matemtico persa Al-Juarismi1 ) es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.2 Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solucin. Los algoritmos son el objeto de estudio de la algoritmia.1 En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de supatrn. Algunos ejemplos en matemtica son el algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de Euclides para obtener el mximo comn divisor de dos enteros positivos, o el mtodo de Gauss para resolver unsistema lineal de ecuaciones.

Medios de expresin de una algoritmo:

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocdigo, diagramas de flujo y lenguajes de programacin entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocdigo y diagramas de flujo evita muchas ambigedades del lenguaje natural. Dichas expresiones son formas ms estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programacin especfico. La descripcin de un algoritmo usualmente se hace en tres niveles: 1. Descripcin de alto nivel. Se establece el problema, se selecciona un modelo matemtico y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles. 2. Descripcin formal. Se usa pseudocdigo para describir la secuencia de pasos que encuentran la solucin. 3. Implementacin. Se muestra el algoritmo expresado en un lenguaje de programacin especfico o algn objeto capaz de llevar a cabo instrucciones.

6
Tambin es posible incluir un teorema que demuestre que el algoritmo es correcto, un anlisis de complejidad o ambos. Diagramas de flujo: Los diagramas de flujo son descripciones grficas algoritmos; usan smbolos conectados con flechas para indicar la secuencia instrucciones y estn regidos por ISO. Los diagramas de flujo son usados para representar algoritmos pequeos, que abarcan mucho espacio y su construccin es laboriosa. Por su facilidad lectura son usados como introduccin a los algoritmos, descripcin de lenguaje y descripcin de procesos a personas ajenas a la computacin. de de ya de un

Pseudocdigo: falso lenguaje, el prefijo pseudo significa falso) es una descripcin de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintcticas propias de lenguajes de programacin, como asignaciones, ciclos y condicionales, aunque no est regido por ningn estndar. Es utilizado para describir algoritmos en libros y publicaciones cientficas, y como producto intermedio durante el desarrollo de un algoritmo, como los diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocdigo requieren menos espacio para representar instrucciones complejas.

Sistemas formales: La teora de autmatas y la teora de funciones recursivas proveen modelos matemticos que formalizan el concepto de algoritmo. Los modelos ms comunes son la mquina de Turing, mquina de registro y funciones -recursivas. Estos modelos son tan precisos como un lenguaje mquina, careciendo de expresiones coloquiales o ambigedad, sin embargo se mantienen independientes de cualquier computadora y de cualquier implementacin. Implementacin: Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmos pueden ser implementados en otros medios, como una red neuronal, un circuito elctrico o un aparato mecnico y elctrico. Algunos algoritmos inclusive se disean especialmente para implementarse usando lpiz y papel. El algoritmo de multiplicacin tradicional, el algoritmo de Euclides, la criba de Eratstenes y muchas formas de resolver la raz cuadrada son slo algunos ejemplos.

Variables: Son elementos que toman valores especficos de un tipo de datos concreto. La declaracin de una variable puede realizarse comenzando con var. Principalmente, existen dos maneras de otorgar valores iniciales a variables: 1. Mediante una sentencia de asignacin. 2. Mediante un procedimiento de entrada de datos (por ejemplo: 'read'). Ejemplo:
...

i:=1; read(n); while i < n do begin (* cuerpo del bucle *) i := i + 1 end; ...

Estructuras secuenciales:

La estructura secuencial es aquella en la que una accin sigue a otra en secuencia. Las operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el fin del proceso. La asignacin de esto consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona ser reconocida con el nombre de la variable que recibe el valor. La asignacin se puede clasificar de la siguiente forma: 1. Simples: Consiste en pasar un valor constante a una variable (a 15) 2. Contador: Consiste en usarla como un verificador del nmero de veces que se realiza un proceso (a a + 1) 3. Acumulador: Consiste en usarla como un sumador en un proceso (a a + b) 4. De trabajo: Donde puede recibir el resultado de una operacin matemtica que involucre muchas variables (a c + b*2/4). Un ejemplo de estructura secuencial, como obtener la rea de un tringulo:
Inicio ... float b, h, a; printf("Diga la base"); scanf("%f", &b); printf("Diga la altura"); scanf("%f", &h); a = (b*h)/2; printf("El rea del tringulo es %f", a) ... Fin

Algoritmos como funciones:

8
Un algoritmo se puede concebir como una funcin que transforma los datos de un problema (entrada) en los datos de una solucin (salida). Ms aun, los datos se pueden representar a su vez como secuencias debits, y en general, de smbolos cualesquiera.1 9 11 Como cada secuencia de bits representa a un nmero natural (vase Sistema binario), entonces los algoritmos son en esencia funciones de los nmeros naturales en los nmeros naturales que s se pueden calcular. Es decir que todo algoritmo calcula una funcin donde cada nmero natural es la codificacin de un problema o de una solucin. En ocasiones los algoritmos son susceptibles de nunca terminar, por ejemplo, cuando entran a un bucle infinito. Cuando esto ocurre, el algoritmo nunca devuelve ningn valor de salida, y podemos decir que la funcin queda indefinida para ese valor de entrada. Por esta razn se considera que los algoritmos son funciones parciales, es decir, no necesariamente definidas en todo su dominio de definicin.
Cuando una funcin puede ser calculada por medios algortmicos, sin importar la cantidad de memoria que ocupe o el tiempo que se tarde, se dice que dicha funcin es computable. No todas las funciones entre secuencias datos son computables. El problema de la parada es un ejemplo.

Anlisis de algoritmos:

Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos (memoria y tiempo) que consume el algoritmo. El anlisis de algoritmos se ha desarrollado para obtener valores que de alguna forma indiquen (o especifiquen) la evolucin del gasto de tiempo y memoria en funcin del tamao de los valores de entrada. El anlisis y estudio de los algoritmos es una disciplina de las ciencias de la computacin y, en la mayora de los casos, su estudio es completamente abstracto sin usar ningn tipo de lenguaje de programacin ni cualquier otra implementacin; por eso, en ese sentido, comparte las caractersticas de las disciplinas matemticas. As, el anlisis de los algoritmos se centra en los principios bsicos del algoritmo, no en los de la implementacin particular. Una forma de plasmar (o algunas veces "codificar") un algoritmo es escribirlo en pseudocdigo o utilizar un lenguaje muy simple tal como Lexico, cuyos cdigos pueden estar en el idioma del programador. Algunos escritores restringen la definicin de algoritmo a procedimientos que deben acabar en algn momento, mientras que otros consideran procedimientos que podran ejecutarse eternamente sin pararse, suponiendo el caso en el que existiera algn dispositivo fsico que fuera capaz de funcionar eternamente. En este ltimo caso, la finalizacin con xito del algoritmo no se podra definir como la terminacin de este con una salida satisfactoria, sino que el xito estara definido en funcin de las secuencias de salidas dadas durante un periodo de vida de la ejecucin del algoritmo. Por ejemplo, un algoritmo que verifica que hay ms ceros que unos en una secuencia binaria infinita debe ejecutarse siempre para que pueda devolver un valor til. Si se implementa correctamente, el valor devuelto por el algoritmo ser vlido, hasta que evale el siguiente dgito binario. De esta forma, mientras evala la siguiente secuencia podrn leerse dos tipos de seales: una seal positiva (en el caso de que el nmero de ceros sea mayor que el de unos) y una negativa en caso

9
contrario. Finalmente, la salida de este algoritmo se define como la devolucin de valores exclusivamente positivos si hay ms ceros que unos en la secuencia y, en cualquier otro caso, devolver una mezcla de seales positivas y negativas.

Ejemplos de algoritmo:

El problema consiste en encontrar el mximo de un conjunto de nmeros.

Descripcin de alto nivel:


Dado un conjunto finito de nmeros, se tiene el problema de encontrar el nmero ms grande. Sin prdida de generalidad se puede asumir que dicho conjunto no es vaco y que sus elementos estn numerados como .

Descripcin formal:
El algoritmo puede ser siguiente pseudocdigo: escrito de una manera ms formal en el

Algoritmo Encontrar el mximo de un conjunto

funcin max( //

es un conjunto no vaco de nmeros// // es el nmero de elementos de //

para si

hasta

hacer

entonces

devolver

Sobre la notacin:

"" representa una asignacin: significa que la variable toma el valor de ; "devolver" termina el algoritmo y devuelve el valor a su derecha (en este caso, el mximo de ).

Implementacin:
En lenguaje C++: int max(int c[], int n) {

10
int i, m = c[0]; for (i = 1; i < n; i++) if (c[i] > m) m = c[i]; return m; }

Programacin:

Definicin:

La Programacin es el proceso de disear, codificar, depurar y mantener el cdigo fuente de programas computacionales. El cdigo fuente es escrito en un lenguaje de programacin. El propsito de la programacin es crear programas que exhiban un comportamiento deseado. El proceso de escribir cdigo requiere frecuentemente conocimientos en varias reas distintas, adems del dominio del lenguaje a utilizar, algoritmos especializados y lgica formal. Programar no involucra necesariamente otras tareas tales como el anlisis y diseo de la aplicacin (pero s el diseo del cdigo), aunque s suelen estar fusionadas en el desarrollo de pequeas aplicaciones.

Historia:

Para crear un programa, y que la computadora interprete y ejecute las instrucciones escritas en l, debe usarse un Lenguaje de programacin. En sus inicios las computadoras interpretaban slo instrucciones en un lenguaje especfico, del ms bajo nivel, conocido como cdigo mquina, siendo ste excesivamente complicado para programar. De hecho slo consiste en cadenas de nmeros 1 y 0 (Sistema binario). Para facilitar el trabajo de programacin, los primeros cientficos que trabajaban en el rea decidieron reemplazar las instrucciones, secuencias de unos y ceros, por palabras o letras provenientes del ingls; codificndolas as y creando un lenguaje de mayor nivel, que se conoce como Assembly o lenguaje ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesa add (sumar). En realidad escribir en lenguaje ensamblador es bsicamente lo mismo que hacerlo en lenguaje mquina, pero las letras y palabras son bastante ms fciles de recordar y entender que secuencias de nmeros binarios. A medida que la complejidad de las tareas que realizaban las computadoras aumentaba, se hizo necesario disponer de un mtodo sencillo para programar. Entonces, se crearon los lenguajes de alto nivel. Mientras que una tarea tan trivial como multiplicar dos nmeros puede necesitar un conjunto de instrucciones en lenguaje ensamblador, en un lenguaje de alto nivel bastar con solo una. Una vez que se termina de escribir un programa, sea en ensamblador o en un lenguaje de alto nivel, es necesario compilarlo, es decir, traducirlo a lenguaje mquina.

Lxico y programacin:

La programacin se rige por reglas y un conjunto ms o menos reducido de rdenes, expresiones, instrucciones y comandos que tienden a asemejarse a una lengua natural acotada (en ingls); y que adems tienen la particularidad de una reducida ambigedad. Cuanto menos ambiguo es un lenguaje de programacin, se dice, es ms potente. Bajo esta premisa, y en el

11
extremo, el lenguaje ms potente existente es el binario, con ambigedad nula (lo cual lleva a pensar as del lenguaje ensamblador). En los lenguajes de programacin de alto nivel se distinguen diversos elementos entre los que se incluyen el lxico propio del lenguaje y las reglas semnticas y sintcticas.

Programas y algoritmos:

Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema. Un programa normalmente implementa (traduce a un lenguaje de programacin concreto) uno o ms algoritmos. Un algoritmo puede expresarse de distintas maneras: en forma grfica, como un diagrama de flujo, en forma de cdigo como en pseudocdigo o un lenguaje de programacin, en forma explicativa, etc. Los programas suelen subdividirse en partes menores, llamadas mdulos, de modo que la complejidad algortmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al desarrollo del programa. Esta es una prctica muy utilizada y se conoce como "refino progresivo". Segn Niklaus Wirth, un programa est formado por los algoritmos y la estructura de datos. Se han propuesto diversas tcnicas de programacin cuyo objetivo es mejorar tanto el proceso de creacin de software como su mantenimiento. Entre ellas, se pueden mencionar las siguientes: Programacin estructurada Programacin modular Programacin orientada a objetos (POO) Programacin declarativa

Compilacin:

El programa escrito en un lenguaje de programacin (fcilmente comprensible por el programador) es llamado programa fuente y no se puede ejecutar directamente en una computadora. La opcin ms comn es compilar el programa obteniendo un mdulo objeto, aunque tambin puede ejecutarse en forma ms directa a travs de un intrprete informtico. El cdigo fuente del programa se debe someter a un proceso de traduccin para convertirlo en lenguaje mquina, cdigo ste directamente ejecutable por el procesador. A este proceso se le llama compilacin. Normalmente la creacin de un programa ejecutable (un tpico.exe para Microsoft Windows o DOS) conlleva dos pasos. El primer paso se llama compilacin (propiamente dicho) y traduce el cdigo fuente escrito en un lenguaje de programacin almacenado en un archivo a cdigo en bajo nivel (normalmente en cdigo objeto, no directamente a lenguaje mquina). El segundo paso se llama enlazado en el cual se enlaza el cdigo de bajo nivel generado de todos los ficheros y subprogramas que se han mandado compilar y se aade el cdigo de las funciones que hay en las bibliotecas del compilador para que el ejecutable pueda

12
comunicarse directamente con el sistema operativo, traduciendo as finalmente el cdigo objeto a cdigo mquina, y generando un mdulo ejecutable. Estos dos pasos se pueden hacer por separado, almacenando el resultado de la fase de compilacin en archivos objetos (un tpico.obj para Microsoft Windows, DOS o para Unix); para enlazarlos en fases posteriores, o crear directamente el ejecutable; con lo que la fase de compilacin se almacena slo temporalmente. Un programa podra tener partes escritas en varios lenguajes (por ejemplo C, C++ y ensamblador), que se podran compilar de forma independiente y luego enlazar juntas para formar un nico mdulo ejecutable.

Programacin e ingeniera del software:

Existe una tendencia a identificar el proceso de creacin de un programa informtico con la programacin, que es cierta cuando se trata de programas pequeos para uso personal, y que dista de la realidad cuando se trata de grandes proyectos. El proceso de creacin de software, desde el punto de vista de la ingeniera, incluye los siguientes pasos: 1. Reconocer la necesidad de un programa para solucionar un problema o identificar la posibilidad de automatizacin de una tarea. 2. Recoger los requisitos del programa. Debe quedar claro qu es lo que debe hacer el programa y para qu se necesita. 3. Realizar el anlisis de los requisitos del programa. Debe quedar claro cmo debe realizar el programa las cosas que debe hacer. Las pruebas que comprueben la validez del programa se pueden especificar en esta fase. 4. Disear la arquitectura del programa. Se debe descomponer el programa en partes de complejidad abordable. 5. Implementar el programa. Consiste en realizar un diseo detallado, especificando completamente todo el funcionamiento del programa, tras lo cual la codificacin (programacin propiamente dicha) debera resultar inmediata. 6. Implantar (instalar) el programa. Consiste en poner el programa en funcionamiento junto con los componentes que pueda necesitar (bases de datos, redes de comunicaciones, etc.). La ingeniera del software se centra en los pasos de planificacin y diseo del programa, mientras que antiguamente (programacin artesanal) la realizacin de un programa consista casi nicamente en escribir el cdigo, bajo slo el conocimiento de los requisitos y con una modesta fase de anlisis y diseo.

Referencias histricas:

La primera programadora de computadora conocida fue Ada Lovelace, hija de Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las matemticas a Ada quien, despus de conocer a Charles Babbage, tradujo y ampli una descripcin de su mquina analtica. Incluso aunque Babbage nunca complet la construccin de cualquiera de sus mquinas, el trabajo que Ada realiz con stas le hizo ganarse el

13
ttulo de primera programadora de computadoras del mundo. El nombre del lenguaje de programacin Ada fue escogido como homenaje a esta programadora. No olvidemos que este proceso est aplicado a todos los mtodos cientficos que actualmente se practican.

Objetivos de la programacin:

La programacin debe perseguir la obtencin de programas de calidad. Para ello se establece una serie de factores que determinan la calidad de un programa. Algunos de los factores de calidad ms importantes son los siguientes:

Correccin. Un programa es correcto si hace lo que debe hacer tal y como se estableci en las fases previas a su desarrollo. Para determinar si un programa hace lo que debe, es muy importante especificar claramente qu debe hacer el programa antes de desarrollarlo y, una vez acabado, compararlo con lo que realmente hace. Claridad. Es muy importante que el programa sea lo ms claro y legible posible, para facilitar as su desarrollo y posterior mantenimiento. Al elaborar un programa se debe intentar que su estructura sea sencilla y coherente, as como cuidar el estilo en la edicin; de esta forma se ve facilitado el trabajo del programador, tanto en la fase de creacin como en las fases posteriores de correccin de errores, ampliaciones, modificaciones, etc. Fases que pueden ser realizadas incluso por otro programador, con lo cual la claridad es an ms necesaria para que otros programadores puedan continuar el trabajo fcilmente. Algunos programadores llegan incluso a utilizar Arte ASCII para delimitar secciones de cdigo. Otros, por diversin o para impedir un anlisis cmodo a otros programadores, recurren al uso de cdigo ofuscado. Eficiencia. Se trata de que el programa, adems de realizar aquello para lo que fue creado (es decir, que sea correcto), lo haga gestionando de la mejor forma posible los recursos que utiliza. Normalmente, al hablar de eficiencia de un programa, se suele hacer referencia al tiempo que tarda en realizar la tarea para la que ha sido creado y a la cantidad de memoria que necesita, pero hay otros recursos que tambin pueden ser de consideracin al obtener la eficiencia de un programa, dependiendo de su naturaleza (espacio en disco que utiliza, trfico de red que genera, etc.). Portabilidad. Un programa es portable cuando tiene la capacidad de poder ejecutarse en una plataforma, ya sea hardware o software, diferente a aqulla en la que se elabor. La portabilidad es una caracterstica muy deseable para un programa, ya que permite, por ejemplo, a un programa que se ha desarrollado para sistemas GNU/Linux ejecutarse tambin en la familia de sistemas operativos Windows. Esto permite que el programa pueda llegar a ms usuarios ms fcilmente.

14

Resolucin de problemas de programacin:


La resolucin de un problema mediante un ordenador consiste en el proceso que a partir de la descripcin de un problema, expresado habitualmente en lenguaje natural y en trminos propios del dominio del problema, permite desarrollar un programa que resuelva dicho problema. Este proceso exige los siguientes pasos:

Anlisis del problema. Diseo o desarrollo de un algoritmo. Transformacin del algoritmo en un programa (codificacin). Ejecucin y validacin del programa.

Los dos primeros pasos son los ms difciles del proceso. Una vez analizado el problema y obtenido un algoritmo que lo resuelva, su transformacin a un programa de ordenador es una tarea de mera traduccin al lenguaje de programacin deseado.

Anlisis del problema

Cuando un usuario plantea a un programador un problema que resolver mediante su ordenador, por lo general ese usuario tendr conocimientos ms o menos amplios sobre el dominio del problema, pero no es habitual que tenga conocimientos de informtica. Por ejemplo, un contable que necesita un programa para llevar la contabilidad de una empresa ser un experto en contabilidad (dominio del problema), pero no tiene por qu ser experto en programacin. Del mismo modo, el informtico que va a resolver un determinado problema puede ser un experto programador, pero en principio no tiene por qu conocer el dominio del problema; siguiendo el ejemplo anterior, el informtico que hace un programa no tiene por qu ser un experto en contabilidad. Por ello, al abordar un problema que se quiere resolver mediante un ordenador, el programador necesita de la experiencia del experto del dominio para entender el problema. Al final, si se quiere llegar a una solucin satisfactoria es necesario que:

El problema est bien definido con el mximo detalle Las especificaciones de las entradas y salidas del problema, deben ser descritas tambin en detalle:

Qu datos son necesarios para resolver el problema? Qu informacin debe proporcionar la resolucin del problema?

Diseo del algoritmo:

Un algoritmo consiste en una especificacin clara y concisa de los pasos necesarios para resolver un determinado problema, pero para poder disear algoritmos es

15
necesario disponer de una notacin, que llamaremos notacin algortmica, que permita:

Describir las operaciones puestas en juego (acciones, instrucciones, comandos,...) Describir los objetos manipulados por el algoritmo (datos/informaciones) Controlar la realizacin de las acciones descritas, indicando la forma en que estas se organizan en el tiempo

Para poder describir cualquier tipo de accin de las que intervienen en un algoritmo, diversos autores proponen el uso de un conjunto de construcciones lgicas (secuencia, decisin e iteracin) con las que es posible escribir cualquier programa. Lo que sigue a continuacin es la descripcin de las diferentes construcciones disponibles para el diseo de algoritmos.
Acciones elementales:

Se entiende por acciones elementales aquellas que el ordenador es capaz de realizar y que sern de dos tipos:

Aritmtico lgicas: Operaciones que, a partir de unos determinados datos, realizan un clculo aritmtico (suma, resta, multiplicacin,...) o un clculo lgico (mayor que, menor que, igual que,...).Las primeras devuelven un valor numrico (4, -5.67,...) y las segundas un valor lgico (verdadero o falso). De entrada salida: Acciones que permiten capturar datos para su posterior tratamiento (las de entrada) y guardar los resultados de dicho tratamiento (las de salida).
Secuencias de acciones elementales:

Cuando en un algoritmo se deben ejecutar varias acciones sucesivamente, stas se describen una detrs de otra segn el orden en que deban ejecutarse. Si se desea se puede emplear algn tipo de smbolo para separar dos acciones consecutivas. En el siguiente ejemplo se nuestra la descripcin de n acciones separadas por punto y coma (smbolo que habitualmente se emplea como separador).
Accin 1; Accin 2; ... Accin n;

Composicin condicional:

Cuando en un algoritmo se quiere indicar que cierta accin slo se debe ejecutar bajo cierta condicin se indica del siguiente modo:
Si Condicin Entonces Accin; FinSi

16
Slo si la Condicin (operacin lgica) es verdadera se ejecutar la Accin. En este caso, la Accin puede referirse tanto a una accin elemental como a un conjunto de ellas.

Composicin condicional doble (alternativa):

En ocasiones, se deben ejecutar unas acciones u otras dependiendo de la ocurrencia de una determinada condicin. Esta especificacin se realiza del siguiente modo:
Si Condicin Entonces Accin A; SiNo Accin B; FinSi

Dependiendo de si la Condicin es verdadera o falsa se ejecutar la Accin A o la Accin B respectivamente. De forma anloga a como ocurra en el caso anterior, tanto la Accin A como la Accin B pueden referirse a una accin elemental o a un conjunto de ellas.
Composicin condicional mltiple:

Tambin es posible que a la hora de especificar la ejecucin de una accin haya que escoger sta entre varias dependiendo del valor de una determinada variable (o indicador). Este caso se expresa del siguiente modo:
Seleccionar Indicador Caso Valor 1: Accin 1; Caso Valor 2: Accin 2; ... Caso Valor n: Accin n; [EnOtroCaso: Accin X;] FinCaso

En esta construccin Indicador debe tener un determinado valor que en caso de coincidir con alguno de los n valores provocar la ejecucin de la accin asociada a dicho valor. Si el valor del Indicador no coincidiera con ninguno de los especificados se ejecutar la Accin X. No tiene por qu haber una Accin X para cuando el Indicador' no coincida con ninguno de los n valores; en ese caso, si el Indicador' no coincide con ningn valor no se ejecutara ninguna accin.

17
Al igual que en los casos anteriores, todas las acciones que aparecen en esta estructura (Accin 1, Accin 2,..., Accin n y Accin X) pueden referirse a una nica accin o a un conjunto de ellas.

Composicin iterativa o bucle:

Cuando una accin o conjunto de acciones debe ejecutarse varias veces se recurre a una estructura iterativa o bucle. En este tipo de estructuras se necesita una condicin que determine cuando terminan las iteraciones. Dependiendo de si esa condicin se evala al principio o al final de la estructura y de si la condicin para que las iteraciones continen debe ser verdadera o falsa, se pueden definir cuatro construcciones iterativas distintas:
La condicin de terminacin ha de ser FALSA (Estructura 1) Condicin al principio de la estructura Mientras CondicinHacer Accin; FinMientras (Estructura 3) Condicin al final de la estructura Hacer Accin; Mientras Condicin; La condicin de terminacin ha de ser VERDADERA (Estructura 2) Hasta Condicin Hacer Accin; FinHasta (Estructura 4) Hacer Accin; Hasta Condicin;

Sobre las cuatro construcciones que se acaban de presentar cabe hacer las siguientes observaciones:

Si en las estructuras 1 y 2, cuando se evala la Condicin, sta toma por primera vez un valor tal que no permita ejecutar la Accin (FALSO en la 1 y VERDADERO en la 2), sta no se ejecutar ninguna vez. Es decir, puede ocurrir que la Accin, en las estructuras 1 y 2, no se ejecute nunca. En las estructuras 3 y 4, al estar la Condicin de terminacin al final, la Accin se ejecutar antes de que la condicin se evale por primera vez, por lo que aunque la Condicin tome un valor tal que no se permita realizar ms iteraciones, la Accin se ejecutar al menos una vez. Si las Condiciones de las estructuras 1 y 2 son complementarias, es decir, que siempre que una es verdadera la otra es falsa y viceversa (ejemplo: [a > b] y [a

18
b] son condiciones complementarias), entonces ambas estructuras son equivalentes ya que en ambas la Accin se ejecutar el mismo nmero de veces. De forma anloga, si las Condiciones de las estructuras 3 y 4 son complementarias tambin ambas estructuras sern equivalentes.

Existe una construccin especial para indicar una repeticin de acciones que se suele emplear cuando se quiere que dicha repeticin se realice un nmero determinado de veces:
Para i = 1 Hasta n Hacer Accin; FinPara

En este caso la Accin se repetir n veces e i ser una variable que tomar todos los valores entre 1 y n (ambos inclusive) en cada una de las sucesivas repeticiones. Esta construccin, aunque de apariencia diferente a las anteriores, se podra expresar como un caso particular de la estructura 1 del siguiente modo:
i = 1; Mientras i <= n Hacer Accin; i = i + 1; FinMientras

En este caso la condicin de finalizacin del bucle es que la variable i sea mayor que n y siempre, al finalizar la ejecucin de la Accin, i se incrementa en una unidad antes de volver a evaluar la Condicin para el nuevo valor de i.

19

Pseudocdigo:
En ciencias de la computacin, y anlisis numrico el pseudocdigo (o falso lenguaje) es una descripcin de un algoritmo informtico de programacin de alto nivel compacto e informal que utiliza las convenciones estructurales de un lenguaje de programacin verdadero, pero que est diseado para la lectura humana en lugar de la lectura en mquina, y con independencia de cualquier otro lenguaje de programacin. Normalmente, el pseudocdigo omite detalles que no son esenciales para la comprensin humana del algoritmo, tales como declaraciones de variables, cdigo especfico del sistema y algunas subrutinas. El lenguaje de programacin se complementa, donde sea conveniente, con descripciones detalladas en lenguaje natural, o con notacin matemtica compacta. Se utiliza pseudocdigo pues este es ms fcil de entender para las personas que el cdigo de lenguaje de programacin convencional, ya que es una descripcin eficiente y con un entorno independiente de los principios fundamentales de un algoritmo. Se utiliza comnmente en los libros de texto y publicaciones cientficas que se documentan varios algoritmos, y tambin en la planificacin del desarrollo de programas informticos, para esbozar la estructura del programa antes de realizar la codificacin efectivamente. No existe una sintaxis estndar para el pseudocdigo, aunque los cincos IDE's que manejan pseudocdigo tengan su sintaxis propia. Aunque sea parecido, el pseudocdigo no debe confundirse con los programas esqueleto que incluyen cdigo ficticio, que pueden ser compilados sin errores. Los diagramas de flujo y UML pueden ser considerados como una alternativa grfica al pseudocdigo, aunque sean ms amplios en papel.

Caractersticas y partes:

Las principales caractersticas de este lenguaje son: 1. Se puede ejecutar en un ordenador (con un IDE como por ejemplo SLE, LPP, PilatoX, PSeInt o Seudocdigo) 2. Es una forma de representacin sencilla de utilizar y de manipular. 3. Facilita el paso del programa al lenguaje de programacin. 4. Es independiente del lenguaje de programacin que se vaya a utilizar. 5. Es un mtodo que facilita la programacin y solucin al algoritmo del programa. Todo documento en pseudocdigo debe permitir la descripcin de: 1. 2. 3. 4. 5. Instrucciones primitivas. Instrucciones de proceso.... Instrucciones de control. Instrucciones compuestas. Instrucciones de descripcin.

Estructura a seguir en su realizacin: 1. Cabecera. 1. Programa. 2. Mdulo.

20
3. Tipos de datos. 4. Constantes. 5. Variables. 2. Cuerpo. 1. Inicio. 2. Instrucciones. 3. Fin.

Definicin de datos del pseudocdigo:

La definicin de datos se da por supuesta, sobre todo en las variables sencillas, si se emplea formaciones: pilas, colas, vectores o registros, se pueden definir en la cabecera del algoritmo, y naturalmente cuando empleemos el pseudocdigo para definir estructuras de datos, esta parte la desarrollaremos adecuadamente.

Funciones y operaciones:

Cada autor usa su propio pseudocdigo con sus respectivas convenciones. Por ejemplo, la instruccin "reemplace el valor de la variable por el valor de la variable " puede ser representado como:

asigne a

el valor de

Las operaciones aritmticas se representan de la forma usual en matemticas.

Estructuras de control:

En la redaccin del pseudocdigo se utiliza tres tipos de estructuras de control: las secuenciales, las selectivas y las iterativas.
Estructuras secuenciales:

Las instrucciones se siguen en una secuencia fija que normalmente viene dada por el nmero de rengln. Es decir que las instrucciones se ejecutan de arriba hacia abajo. Las instrucciones se ejecutan dependiendo de la condicin dada dentro del algoritmo.

21

Estructuras selectivas:

Las instrucciones selectivas representan instrucciones que pueden o no ejecutarse, segn el cumplimiento de una condicin.

La condicin es una expresin booleana. Instrucciones es ejecutada slo si la condicin es verdadera.

Selectiva doble (alternativa)

La instruccin alternativa realiza una instruccin de dos posibles, segn el cumplimiento de una condicin.

La condicin es una variable booleana o una funcin reducible a booleana (lgica, Verdadero/Falso). Si esta condicin es cierta se ejecuta Instrucciones1, si no es as, entonces se ejecuta Instrucciones

Selectiva mltiple

Tambin es comn el uso de una seleccin mltiple que equivaldra a anidar varias funciones de seleccin.

En este caso hay una serie de condiciones que tienen que ser mutuamente excluyentes, si una de ellas se cumple las dems tienen que ser falsas

22
necesariamente, hay un caso si no que ser cierto cuando las dems condiciones sean falsas. En esta estructura si Condicin1 es cierta, entonces se ejecuta slo Instrucciones1. En general, si Condicini es verdadera, entonces slo se ejecuta Instruccionesi

Selectiva mltiple-casos

Una construccin similar a la anterior (equivalente en algunos casos) es la que se muestra a continuacin.

Estructuras iterativas:

Las instrucciones iterativas representan la ejecucin de instrucciones en ms de una vez.

Bucle mientras

El bucle se repite mientras la condicin sea cierta, si al llegar por primera vez al bucle mientras la condicin es falsa, el cuerpo del bucle no se ejecuta ninguna vez.

Bucle repetir

Existen otras variantes que se derivan a partir de la anterior. La estructura de control repetir se utiliza cuando es necesario que el cuerpo del bucle se ejecuten al menos una vez y hasta que se cumpla la condicin:

Bucle para

Una estructura de control muy comn es el ciclo para, la cual se usa cuando se desea iterar un nmero conocido de veces, empleando como ndice una variable que se incrementa (o decrementa):

23
la cual se define como:

El anidamiento

Cualquier instruccin puede ser sustituida por una estructura de control. El siguiente ejemplo muestra el pseudocdigo del ordenamiento de burbuja, que tiene varias estructuras anidadas. Este algoritmo ordena de menor a mayor los elementos de una lista .

En general, las estructuras anidadas se muestran indentadas, para hacer ms sencilla su identificacin a simple vista. En el ejemplo, adems de la indentacin, se ha conectado con flechas los pares de delimitadores de cada nivel de anidamiento.

Desarrollo de algoritmos:

Con este pseudocdigo se puede desarrollar cualquier algoritmo que:


Tenga un nico punto de inicio. Tenga un nmero finito de posibles puntos de trmino. Haya un nmero finito de caminos, entre el punto de inicio y los posibles puntos de trmino.

24

Funciones y procedimiento:

Muchas personas prefieren distinguir entre funciones y procedimientos. Una funcin, al igual que una funcin matemtica, recibe uno o varios valores de entrada y regresa una salida mientras que un procedimiento recibe una entrada y no genera ninguna salida aunque en algn caso podra devolver resultados a travs de sus parmetros de entrada si estos se han declarado por referencia (ver formas de pasar argumentos a una funcin o procedimiento). En ambos casos es necesario dejar en claro cules son las entradas para el algoritmo, esto se hace comnmente colocando estos valores entre parntesis al principio o bien declarndolo explcitamente con un enunciado. En el caso de las funciones, es necesario colocar una palabra como regresar o devolver para indicar cul es la salida generada por el algoritmo. Por ejemplo, el pseudocdigo de una funcin que permite calcular (un nmero elevado a potencia ).

Ventajas del pseucodigo sobre los diagramas de flujo:

Los pseudocdigos presentan los siguientes beneficios: 1. Ocupan mucho menos espacio en el desarrollo del problema. 2. Permite representar de forma fcil operaciones repetitivas complejas. 3. Es ms sencilla la tarea de pasar de pseudocdigo a un lenguaje de programacin formal. 4. Si se siguen las reglas de identacin se puede observar claramente los niveles en la estructura del programa. 5. En los procesos de aprendizaje de los alumnos de programacin, stos estn ms cerca del paso siguiente (codificacin en un lenguaje determinado, que los que se inician en esto con la modalidad Diagramas de Flujo). 6. Mejora la claridad de la solucin de un problema.

25

Programacin estructurada:
La programacin estructurada es una tcnica para escribir programas (programacin de computadora). Para ello se utilizan nicamente tres estructuras: secuencia, seleccin e iteracin; siendo innecesario el uso de la instruccin o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o mltiples RETURN). Hoy en da las aplicaciones informticas son mucho ms ambiciosas que las necesidades de programacin existentes en los aos 1960, principalmente debido a las aplicaciones grficas, por lo que las tcnicas de programacin estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas tcnicas, tales como la programacin orientada a objetos y el desarrollo de entornos de programacin que facilitan la programacin de grandes aplicaciones.

Orgenes de la programacin estructurada:

A finales de los aos 1970 surgi una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que adems estaban escritos de manera que facilitaba su comprensin posterior. El teorema del programa estructurado, propuesto por Bhm-Jacopini, demuestra que todo programa puede escribirse utilizando nicamente las tres instrucciones de control siguientes:

Secuencia Instruccin condicional. Iteracin (bucle de instrucciones) con condicin al principio.

Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programacin tienen un mayor repertorio de estructuras de control, stas pueden ser construidas mediante las tres bsicas citadas.

Estructura secuencial:

Una estructura de programa es secuencial si las instrucciones se ejecutan una tras otra, a modo de secuencia lineal, es decir que una instruccin no se ejecuta hasta que finaliza la anterior, ni se bifurca el flujo del programa. Ejemplo:
INPUT x INPUT y auxiliar= x x= y y= auxiliar

26
PRINT x PRINT y

Esta secuencia de instrucciones permuta los valores de x e y, con ayuda de una variable auxiliar, intermedia.

1 Se guarda una copia del valor de x en auxiliar. 2 Se guarda el valor de y en x, perdiendo su valor anterior, pero se mantiene una copia del contenido en auxiliar. 3 Se copia a y el valor de auxiliar, que es el valor inicial de x. El resultado es el intercambio de los valores entre x e y, en tres operaciones secuenciales.

Estructura selectiva o de seleccin:

La estructura selectiva permite que la ejecucin del programa se bifurque a una instruccin (o conjunto) u otra/s, segn un criterio o condicin lgica establecida, slo uno de los caminos en la bifurcacin ser el tomado para ejecutarse.
Ejemplo: IF a > b THEN PRINT a ; " es mayor que " ; b ELSE PRINT a ; " no es mayor que " ; b END IF

La instruccin selectiva anterior puede presentar uno de dos mensajes: a es mayor que b o a no es mayor que b, segn el resultado de la comparacin entre a y b; si el resultado de a > b es verdadero, se presenta el primer mensaje, si es falso se exterioriza el segundo. Las palabras clave IF, THEN, ELSE, y END IF; constituyen la propia estructura de la instruccin condicional (palabra reservadas), proporcionada por el lenguaje, el usuario no debe utilizar sus nombres salvo para este fin. El caso ejemplo se ha codificado en BASIC.

IF seala el comienzo de la instruccin condicional, y se espera que despus siga la condicin lgica de control de la instruccin. THEN seala el fin de la condicin, y despus estar la instruccin a ejecutar si la condicin es verdadera. ELSE es opcional, le sigue la instruccin que se ejecutar si la condicin es falsa. END IF indica el final de la estructura, luego de sta el programa seguir su curso.

Ampliando un poco el ejemplo anterior, con estructuras anidadas:


IF a > b THEN PRINT a ; " es mayor que " ; b ELSEIF a < b THEN PRINT a ; " es menor que " ; b ELSE

27
PRINT a ; " es igual que " ; b END IF

Este ejemplo permite considerar situaciones en las que se tiene ms de dos alternativas. En este caso se ha considerado tres, pero hay situaciones en las que deben considerarse ms casos y para ellos se puede repetir las veces que sea necesario la opcional ELSEIF.

Estructura iterativa:

Un bucle iterativo o iteracin de una secuencia de instrucciones, hace que se repita su ejecucin mientras se cumpla una condicin, el nmero de iteraciones normalmente est determinado por el cambio en la condicin dentro del mismo bucle, aunque puede ser forzado o explcito por otra condicin.
Ejemplo: a= 0 b= 7 DO WHILE b > a PRINT a a= a + 1 LOOP

Esta instruccin tiene tres palabras reservadas WHILE, DO y LOOP.

DO WHILE: seala el comienzo del bucle ("haga mientras") y despus de estas palabras se espera la condicin lgica de repeticin, si la condicin es verdadera pasa el control al cuerpo del bucle, en caso contrario el flujo salta directamente al final de la estructura, saliendo de la misma. LOOP: seala el final del cuerpo de la estructura de bucle.

El bucle mientras, se repite mientras la condicin sea verdadera, esta condicin se comprueba o chequea antes de ingresar al cuerpo del bucle, por lo que el mismo puede que no se ejecute nunca (cuando la condicin es falsa desde un principio) o bien que se repita tantas veces como resulte y mientras la condicin sea cierta. En el ejemplo se tienen definidas dos variables a y b, que al iniciarse el bucle contienen los valores a=0 y b=7. La condicin del bucle es b > a. Si a=0 y b=7. la condicin es verdadera, en el cuerpo del bucle se escribe el valor de a en pantalla y luego se incrementa esa variable en una unidad. Entonces pasa a ser a=1 y b=7. ... (se repite la secuencia) ... Cuando a=6 y b=7. la condicin sigue siendo verdadera, se escribe el valor de a en pantalla y se incrementa en una unidad.

28
Cuando se llega a que a=7 y b=7. Entonces la condicin ya resulta falsa y la instruccin WHILE finaliza, saliendo por LOOP. La salida por pantalla de este ejemplo es 0 1 2 3 4 5 6, y se iter 7 veces. El lenguaje utilizado en el ejemplo (BASIC), adems de tener otras del tipo iterativas, permite utilizar la misma estructura indicada, pero de la siguiente forma:
a= 0 b= 7 WHILE b > a PRINT a a= a + 1 WEND Que es absolutamente anloga, en ste formato la palabra reservada WEND marca el fin del bucle y no se utiliza ni DO ni LOOP.

Anidamiento:

El cuerpo de cualquier estructura puede ser instrucciones simples u otras estructuras, que a su vez pueden contener a otras.
Ejemplo: CLS INPUT "Valor entero para a:"; a INPUT "Valor entero para b:"; b IF a > b THEN REM hacer intercambio de variables auxiliar = a a=b b = auxiliar REM imprimir diferencia en escala de uno en uno DO WHILE auxiliar > a auxiliar = auxiliar - 1 PRINT auxiliar LOOP ELSE REM no hacer nada END IF PRINT PRINT a; b

En el ejemplo la sentencia o instruccin CLS slo tiene el efecto de "limpiar" la pantalla al inicio de la ejecucin del programa. Las instrucciones INPUT permiten que el operador ingrese, desde teclado y con un mensaje previo acorde, los valores deseados para las variables a y b. La instruccin no ejecutable REM permite la insercin de comentarios en cualquier parte del programa, donde el programador lo

29
considere necesario; constituye una buena prctica de programacin comentar adecuadamente todos los programas, de este modo se clarifica notablemente su lectura, durante su desarrollo y posterior para modificacin o mantenimiento. En la anterior estructura IF bien se puede omitir la porcin ELSE, ya que no hay cuerpo all, de modo que lo siguiente es completamente equivalente:
CLS INPUT "Valor entero para a:"; a INPUT "Valor entero para b:"; b IF a > b THEN REM hacer intercambio de variables auxiliar = a a=b b = auxiliar REM imprimir diferencia en escala de uno en uno DO WHILE auxiliar > a auxiliar = auxiliar - 1 PRINT auxiliar LOOP END IF PRINT PRINT a; b

Ventajas de la programacin estructurada:

1. Los programas son ms fciles de entender, pueden ser ledos de forma secuencial, no hay necesidad de hacer engorrosos seguimientos en saltos de lnea (GOTO) dentro de los bloques de cdigo para intentar entender la lgica. 2. La estructura de los programas es clara, puesto que las instrucciones estn ms ligadas o relacionadas entre s. 3. Reduccin del esfuerzo en las pruebas y depuracin. El seguimiento de los fallos o errores del programa ("debugging") se facilita debido a su estructura ms sencilla y comprensible, por lo que los errores se pueden detectar y corregir ms fcilmente. 4. Reduccin de los costos de mantenimiento. Anlogamente a la depuracin, durante la fase de mantenimiento, modificar o extender los programas resulta ms fcil. 5. Programas son ms sencillos y ms rpidos de confeccionar (y se facilita su optimizacin). 6. Los bloques de cdigo son casi auto-explicativos, lo que reduce y facilita la documentacin. 7. Las instrucciones de salto, GOTO, quedan reservadas para construir las instrucciones bsicas, si fuera realmente imprescindible. Aunque no se usan de forma directa, por estar prohibida su utilizacin, estn incluidas implcitamente en las instrucciones de seleccin e iteracin.

30
8. Un programa escrito de acuerdo a los principios de programacin estructurada no solamente tendr una mejor estructura sino tambin una excelente presentacin. 9. Se incrementa el rendimiento de los programadores, comparada con la forma tradicional que utiliza GOTO. La programacin estructurada ofrece estos beneficios, pero no se la debe considerar como una panacea ya que el desarrollo de programas es, esencialmente, una tarea de dedicacin, esfuerzo y creatividad; programar es casi un arte.

Inconvenientes de la programacin estructurada:

El principal inconveniente de este mtodo de programacin es que se obtiene un nico bloque de programa, que cuando se hace demasiado grande puede resultar problemtico el manejo de su cdigo fuente; esto se resuelve empleando conjuntamente la programacin modular, es decir, si es necesario, se definen mdulos independientes, programados y compilados por separado (en realidad esto no es necesario, pero s es recomendable para su mejor mantenimiento y depuracin). En realidad, cuando se programa hoy en da (inicios del siglo XXI) se utilizan normalmente, tanto las tcnicas de programacin estructurada como las de programacin modular, de forma conjunta y por lo tanto es muy comn que cuando se hace referencia a la programacin estructurada muchos entiendan que ella incluye tambin las tcnicas modulares, estrictamente no es as. Un mtodo un poco ms sofisticado es la programacin por capas, en la que los mdulos tienen una estructura jerrquica en la que se pueden definir funciones dentro de funciones o de procedimientos. Si bien las metodologas en cuestin ya son de antigua data ("en plazos informticos"), aun en la actualidad la conjuncin "Programacin estructurada" y "programacin modular" es una de la ms utilizadas, juntamente con un ms moderno paradigma, en pleno auge, completamente distinto, llamado programacin orientada a objetos.

31

Conclusin
Como puede verse, existen lenguajes especficos para cada tarea diferente. Muchos de ellos ya no se usan, mientras que las nociones de otros han sido incorporadas a otros lenguajes. Los lenguajes y las Tcnicas de Programacin son importantes para la utilizacin de la computadora como una herramienta para resolver problemas. En computacin, un Problema consiste en la necesidad de transformar un grupo de datos iniciales en un grupo diferente de datos finales (resultados). De este modo, una computadora podr resolver un problema si alguien desarrolla un programa que contenga las instrucciones adecuadas que permitan transformar los datos. Los lenguajes deben ser confiables, comprensibles, eficientes en trminos de tiempo de ejecucin y consumo de espacio, y deben satisfacer las necesidades de una comunidad, ya sean cientficos, hombres de negocios o usuarios no tcnicos. Cada uno estos grupos est acostumbrado a un vocabulario particular y una manera de ver las cosas; de este modo, existe una gran variedad de lenguajes y muy probablemente esto continuar siendo as.

Você também pode gostar