Principios de

Programacion
Guía de trabajo 02

Universidad Santiago de Cali
Facultad de ingeniería Prof: Ing. Edwin J. Ortega Z. Colombia 2013

1

Algoritmia y Programacion
Ing. Edwin J. Ortega

Definición de lenguaje de programación 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 difíciles 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 máquina” o “código maquina”) es un trabajo duro, tanto a la hora de crear el programa como (especialmente) en el momento de corregir algún fallo o mejorar lo que se hizo. Por eso, en la práctica se emplean lenguajes mas parecidos al lenguaje humano, llamados “lenguajes de programación”. Normalmente, estos son muy parecidos al idioma ingles, aunque siguen unas reglas mucho más estrictas. Existen lenguajes de programación de alto y de bajo nivel los cuales se definen a continuación. Lenguajes de bajo nivel Se llaman de bajo nivel porque están 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 máquina, 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 instrucción en binario, de forma que sea más fácil recordarla y más difícil 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 términos ingleses del tipo LIST, PRINT u OPEN como comandos que representan una secuencia de decenas o de centenas de instrucciones en lenguaje máquina. 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 máquina. Los programas traductores son de dos tipos: intérpretes y compiladores. Con un intérprete, 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 instrucción cada vez que aparece. Por consiguiente, los programas interpretados se ejecutan con mucha mayor lentitud que los programas en lenguaje máquina. Por el contrario, los compiladores traducen un programa íntegro a lenguaje máquina antes de su ejecución, por lo cual se ejecutan con tanta rapidez como si hubiesen sido escritos directamente en lenguaje máquina. Aunque existen centenares de lenguajes informáticos y de variantes, hay algunos dignos de mención, como el PASCAL, diseñado en un principio como herramienta de enseñanza, hoy es uno de los lenguajes de microcomputador más populares; el Logo fue desarrollado para que los niños pudieran acceder al mundo de la informática; 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 difusión en el campo de la inteligencia artificial.

Ensambladores, compiladores e intérpretes 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 inglés Assembly, abreviado como Asm), la traducción es sencilla, y de hacer esa traducción se encargan unas herramientas llamadas ensambladores (en inglés Assembler). Cuando el lenguaje que hemos empleado es de alto nivel, la traducción es más complicada, y a veces implicará también 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 podría hacer funcionar en otro computador similar al que habíamos 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, tendríamos un fichero fuente llamado SALUDO.PAS. Este fichero no serviría de nada en un computador que no Universidad Santiago de Cali MAP02

3

Algoritmia y Programacion
Ing. Edwin J. Ortega

tuviera un compilador de Pascal. En cambio, después de compilarlo obtendríamos 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 intérprete es una herramienta parecida a un compilador, con la diferencia de que en los intérpretes no se crea ningún “programa ejecutable” capaz de funcionar “por sí solo”, de modo que si queremos distribuir nuestro programa a alguien, deberemos entregarle el programa fuente y también el intérprete que es capaz de entenderlo, o no le servirá de nada. Cuando ponemos el programa en funcionamiento, el intérprete de encarga de convertir el programa en lenguaje de alto nivel a código máquina, 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 intérpretes. Es el caso del lenguaje C, de Pascal y de C++, por ejemplo. En cambio, para otros lenguajes, lo habitual es trabajar con intérpretes y no con compiladores, como ocurre con Python, Ruby y PHP. Además, hoy en día existe algo que parece intermedio entre un compilador y un intérprete: Existen lenguajes que no se compilan para obtener un ejecutable para un computador concreto, sino un ejecutable “genérico”, que es capaz de funcionar en distintos tipos de computadores, a condición de que en ese computador exista una “máquina virtual” capaz de entender esos ejecutables genéricos. Esta es la idea que se aplica en Java: los fuentes son ficheros de texto, con extensión “.java”, que se compilan a ficheros “.class”. Estos ficheros “.class” se podrían llevar a cualquier computador que tenga instalada una “máquina virtual Java” (las hay para la mayoría de sistemas operativos). Esta misma idea se sigue en el lenguaje C#, que se apoya en una máquina virtual llamada “Dot Net Framework” (algo así como “armazón punto net”). Diagramas de flujo Los diagramas de flujo son una manera de representar visualmente el flujo de datos a travéz de sistemas de tratamiento de información. Los diagramas de flujo describen que operaciónes y en que secuencia se requieren para solucionar un problema dado. Un diagrama de flujo u organigrama es una representación diagramática que ilustra la secuencia de las operaciones que se realizarán para conseguir la solución de un problema. Los diagramas de flujo se dibujan generalmente antes de comenzar a programar el código frente a la computadora. Los diagramas de flujo facilitan la comunicación entre los programadores y la gente del negocio. Estos diagramas de flujo desempeñan un papel vital en la programación de un problema y facilitan la comprensión de problemas complicados y sobre todo muy largos. Una vez que se dibuja el diagrama de flujo, llega a ser fácil escribír el programa en cualquier idióma de alto nivel. Vemos a menudo cómo 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 documentación mejor de un programa complejo.

Universidad Santiago de Cali MAP02

4

Algoritmia y Programacion
Ing. Edwin J. Ortega

Reglas para dibujar un diagramas de flujo. Los Diagramas de flujo se dibujan generalmente usando algunos símbolos estándares; sin embargo, algunos símbolos especiales pueden también ser desarrollados cuando séan requeridos. Algunos símbolos estándares, que se requieren con frecuencia para diagramar programas de computadora se muestran a continuación:

Inicio o fin del programa

Pasos, procesos o líneas de instruccion de programa de computo

Operaciones de entrada y salida

Toma de desiciónes y Ramificación

Líneas de flujo

Simbolos gráficos Dentro de los simbolos fundamentales para la creaación de diagramas de flujo, los símbolos gráficos son utilizádos especificamente para para operaciónes aritméticas y relaciónes condicionales. La siguiente es una lista de los símbolos más comunmente utilizados: + * / ± = > < Sumar Menos Multiplicación División 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

5

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 símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica la dirección que fluye la información procesos, se deben de utilizar solamente líneas de flujo horizontal o verticales (nunca diagonales). 3. Se debe evitar el cruce de líneas, 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 líneas de flujo sin conectar 5. Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas palabras. 6. Todos los símbolos pueden tener más de una línea de entrada, a excepción del símbolo final. 7. Solo los símbolos de decisión pueden y deben tener mas de una línea de flujo de salida.

Pseudocódigo A pesar de que los lenguajes de alto nivel se acercan al lenguaje natural, que nosotros empleamos, es habitual no usar ningún lenguaje de programación concreto cuando queremos plantear los pasos necesarios para resolver un problema, sino emplear un lenguaje de programación ficticio, no tan estricto, muchas veces escrito incluso en español. Este lenguaje recibe el nombre de pseudocódigo. Esa secuencia de pasos para resolver un problema es lo que se conoce como algoritmo (realmente hay alguna condición más, por ejemplo, debe ser un número finito de pasos). Por tanto, un programa de computador es un algoritmo expresado en un lenguaje de programación. Por ejemplo, un algoritmo que controlase los pagos que se realizan en una tienda con tarjeta de debito, escrito en pseudocódigo, podría ser: Leer banda magnética de la tarjeta Conectar con central de cobros Si hay conexión y la tarjeta es correcta: Pedir código 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

6

Algoritmia y Programacion
Ing. Edwin J. Ortega

Ejercicios propuestos 1. Mejorar el seudocódigo 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 seudocódigo que describa el funcionamiento de una lavadora de ropa. 3. Realice un programa en seudocódigo que tome dos números 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

7