Está en la página 1de 7

Principios de

Programacion
Gua de trabajo 02

Universidad Santiago de Cali


Facultad de ingeniera Prof: Ing. Edwin J. Ortega Z. Colombia 2013

Algoritmia y Programacion
Ing. Edwin J. Ortega

Definicin de lenguaje de programacin Un programa es un conjunto de rdenes para un computador. Estas rdenes se le deben dar en un cierto lenguaje, que el computador sea capaz de comprender. El problema es que los lenguajes que realmente entienden los computadores resultan difciles para nosotros, porque son muy distintos de los que nosotros empleamos habitualmente para hablar. Escribir programas en el lenguaje que utiliza internamente el computador (llamado lenguaje mquina o cdigo maquina) es un trabajo duro, tanto a la hora de crear el programa como (especialmente) en el momento de corregir algn fallo o mejorar lo que se hizo. Por eso, en la prctica se emplean lenguajes mas parecidos al lenguaje humano, llamados lenguajes de programacin. Normalmente, estos son muy parecidos al idioma ingles, aunque siguen unas reglas mucho ms estrictas. Existen lenguajes de programacin de alto y de bajo nivel los cuales se definen a continuacin. Lenguajes de bajo nivel Se llaman de bajo nivel porque estn muy cercanos al hardware del computador. Es necesario conocer a fondo la arquitectura de la maquina para la que se va a programar. El primer lenguaje de este tipo que se utiliz fue el lenguaje mquina, que consiste en un conjunto de instrucciones en binario, es decir, con ceros y unos, con los cuales se indica al computador qu hacer. Este lenguaje es muy complicado y la posibilidad de cometer errores es muy alta, por lo que ya no se utiliza. Para solventar estas dificultades apareci el lenguaje ensamblador, que consiste en asignar una abreviatura a cada instruccin en binario, de forma que sea ms fcil recordarla y ms difcil equivocarse. Sin embargo, con este lenguaje sigue siendo necesario conocer muy bien el hardware del computador. Lenguajes de alto nivel Los lenguajes de alto nivel suelen utilizar trminos ingleses del tipo LIST, PRINT u OPEN como comandos que representan una secuencia de decenas o de centenas de instrucciones en lenguaje mquina. Los comandos se introducen desde el teclado, desde un programa residente en la memoria o desde un dispositivo de almacenamiento, y son interceptados por un programa que los traduce a instrucciones en lenguaje mquina. Los programas traductores son de dos tipos: intrpretes y compiladores. Con un intrprete, los programas que repiten un ciclo para volver a ejecutar parte de sus instrucciones, reinterpretan la Universidad Santiago de Cali MAP02 2

Algoritmia y Programacion
Ing. Edwin J. Ortega

misma instruccin cada vez que aparece. Por consiguiente, los programas interpretados se ejecutan con mucha mayor lentitud que los programas en lenguaje mquina. Por el contrario, los compiladores traducen un programa ntegro a lenguaje mquina antes de su ejecucin, por lo cual se ejecutan con tanta rapidez como si hubiesen sido escritos directamente en lenguaje mquina. Aunque existen centenares de lenguajes informticos y de variantes, hay algunos dignos de mencin, como el PASCAL, diseado en un principio como herramienta de enseanza, hoy es uno de los lenguajes de microcomputador ms populares; el Logo fue desarrollado para que los nios pudieran acceder al mundo de la informtica; el C se utiliza ampliamente en el desarrollo de programas de sistemas, al igual que su sucesor, el C++. El LISP y el PROLOG han alcanzado amplia difusin en el campo de la inteligencia artificial.

Ensambladores, compiladores e intrpretes Las rdenes que nosotros hemos escrito (lo que se conoce como programa fuente) deben convertirse a lo que el computador comprende (obteniendo el programa ejecutable). Si elegimos un lenguaje de bajo nivel, como el ensamblador (en ingls Assembly, abreviado como Asm), la traduccin es sencilla, y de hacer esa traduccin se encargan unas herramientas llamadas ensambladores (en ingls Assembler). Cuando el lenguaje que hemos empleado es de alto nivel, la traduccin es ms complicada, y a veces implicar tambin recopilar varias fuentes distintas o incluir posibilidades que se encuentran en bibliotecas que no hemos preparado nosotros. Las herramientas encargadas de todo esto son los compiladores. El programa ejecutable obtenido con el compilador o el ensamblador se podra hacer funcionar en otro computador similar al que habamos utilizado para crearlo, sin necesidad de que ese otro computador tenga instalado el compilador o el ensamblador. Por ejemplo, en el caso de Windows (y de MsDos), y del programa que nos saluda en lenguaje Pascal, tendramos un fichero fuente llamado SALUDO.PAS. Este fichero no servira de nada en un computador que no Universidad Santiago de Cali MAP02

Algoritmia y Programacion
Ing. Edwin J. Ortega

tuviera un compilador de Pascal. En cambio, despus de compilarlo obtendramos un fichero SALUDO.EXE, capaz de funcionar en cualquier otro computador que tuviera el mismo sistema operativo, aunque no tenga un compilador de Pascal instalado. Un intrprete es una herramienta parecida a un compilador, con la diferencia de que en los intrpretes no se crea ningn programa ejecutable capaz de funcionar por s solo, de modo que si queremos distribuir nuestro programa a alguien, deberemos entregarle el programa fuente y tambin el intrprete que es capaz de entenderlo, o no le servir de nada. Cuando ponemos el programa en funcionamiento, el intrprete de encarga de convertir el programa en lenguaje de alto nivel a cdigo mquina, orden por orden, justo en el momento en que hay que procesar cada una de las rdenes. Para algunos lenguajes, es frecuente encontrar compiladores pero no suele existir intrpretes. Es el caso del lenguaje C, de Pascal y de C++, por ejemplo. En cambio, para otros lenguajes, lo habitual es trabajar con intrpretes y no con compiladores, como ocurre con Python, Ruby y PHP. Adems, hoy en da existe algo que parece intermedio entre un compilador y un intrprete: Existen lenguajes que no se compilan para obtener un ejecutable para un computador concreto, sino un ejecutable genrico, que es capaz de funcionar en distintos tipos de computadores, a condicin de que en ese computador exista una mquina virtual capaz de entender esos ejecutables genricos. Esta es la idea que se aplica en Java: los fuentes son ficheros de texto, con extensin .java, que se compilan a ficheros .class. Estos ficheros .class se podran llevar a cualquier computador que tenga instalada una mquina virtual Java (las hay para la mayora de sistemas operativos). Esta misma idea se sigue en el lenguaje C#, que se apoya en una mquina virtual llamada Dot Net Framework (algo as como armazn punto net). Diagramas de flujo Los diagramas de flujo son una manera de representar visualmente el flujo de datos a travz de sistemas de tratamiento de informacin. Los diagramas de flujo describen que operacines y en que secuencia se requieren para solucionar un problema dado. Un diagrama de flujo u organigrama es una representacin diagramtica que ilustra la secuencia de las operaciones que se realizarn para conseguir la solucin de un problema. Los diagramas de flujo se dibujan generalmente antes de comenzar a programar el cdigo frente a la computadora. Los diagramas de flujo facilitan la comunicacin entre los programadores y la gente del negocio. Estos diagramas de flujo desempean un papel vital en la programacin de un problema y facilitan la comprensin de problemas complicados y sobre todo muy largos. Una vez que se dibuja el diagrama de flujo, llega a ser fcil escribr el programa en cualquier idima de alto nivel. Vemos a menudo cmo los diagramas de flujo nos dan ventaja al momento de explicar el programa a otros. Por lo tanto, est correcto decir que un diagrama de flujo es una necesidad para la documentacin mejor de un programa complejo.

Universidad Santiago de Cali MAP02

Algoritmia y Programacion
Ing. Edwin J. Ortega

Reglas para dibujar un diagramas de flujo. Los Diagramas de flujo se dibujan generalmente usando algunos smbolos estndares; sin embargo, algunos smbolos especiales pueden tambin ser desarrollados cuando san requeridos. Algunos smbolos estndares, que se requieren con frecuencia para diagramar programas de computadora se muestran a continuacin:

Inicio o fin del programa

Pasos, procesos o lneas de instruccion de programa de computo

Operaciones de entrada y salida

Toma de desicines y Ramificacin

Lneas de flujo

Simbolos grficos Dentro de los simbolos fundamentales para la creaacin de diagramas de flujo, los smbolos grficos son utilizdos especificamente para para operacines aritmticas y relacines condicionales. La siguiente es una lista de los smbolos ms comunmente utilizados: + * / = > < Sumar Menos Multiplicacin Divisin Mas o menos Equivalente a Mayor que Menor que o <> Mayor o igual que Menor o igual que Diferente de Si No True False

Universidad Santiago de Cali MAP02

Algoritmia y Programacion
Ing. Edwin J. Ortega

Reglas para la creacion de Diagramas 1. Los Diagramas de flujo deben escribirse de arriba hacia abajo, y/o de izquierda a derecha. 2. Los smbolos se unen con lneas, las cuales tienen en la punta una flecha que indica la direccin que fluye la informacin procesos, se deben de utilizar solamente lneas de flujo horizontal o verticales (nunca diagonales). 3. Se debe evitar el cruce de lneas, para lo cual se quisiera separar el flujo del diagrama a un sitio distinto, se pudiera realizar utilizando los conectores. Se debe tener en cuenta que solo se vana utilizar conectores cuando sea estrictamente necesario. 4. No deben quedar lneas de flujo sin conectar 5. Todo texto escrito dentro de un smbolo debe ser legible, preciso, evitando el uso de muchas palabras. 6. Todos los smbolos pueden tener ms de una lnea de entrada, a excepcin del smbolo final. 7. Solo los smbolos de decisin pueden y deben tener mas de una lnea de flujo de salida.

Pseudocdigo A pesar de que los lenguajes de alto nivel se acercan al lenguaje natural, que nosotros empleamos, es habitual no usar ningn lenguaje de programacin concreto cuando queremos plantear los pasos necesarios para resolver un problema, sino emplear un lenguaje de programacin ficticio, no tan estricto, muchas veces escrito incluso en espaol. Este lenguaje recibe el nombre de pseudocdigo. Esa secuencia de pasos para resolver un problema es lo que se conoce como algoritmo (realmente hay alguna condicin ms, por ejemplo, debe ser un nmero finito de pasos). Por tanto, un programa de computador es un algoritmo expresado en un lenguaje de programacin. Por ejemplo, un algoritmo que controlase los pagos que se realizan en una tienda con tarjeta de debito, escrito en pseudocdigo, podra ser: Leer banda magntica de la tarjeta Conectar con central de cobros Si hay conexin y la tarjeta es correcta: Pedir cdigo PIN Si el PIN es correcto Comprobar saldo_existente Si saldo_existente > importe_compra Aceptar la venta Descontar importe del saldo. Sino Escribir mensaje de saldo insuficiente Fin Si Fin Si Fin Si

Universidad Santiago de Cali MAP02

Algoritmia y Programacion
Ing. Edwin J. Ortega

Ejercicios propuestos 1. Mejorar el seudocdigo del ejemplo de la tarjeta de debito para que envi un mensaje de error cuando el pin es incorrecto, cuente la cantidad de intentos y bloquee la tarjeta cuando pase de 4 intentos fallidos. 2. Realice un programa en seudocdigo que describa el funcionamiento de una lavadora de ropa. 3. Realice un programa en seudocdigo que tome dos nmeros por teclado, y me permita elegir entre sumarlos, restarlos y multiplicarlos; mostrando el resultado en pantalla. 4. Indique cual es el resultado del siguiente diagrama de flujo.

Universidad Santiago de Cali MAP02