INTRODUCCIÓN A LA PROGRAMACIÓN Un programa no es más que un conjunto de instrucciones, similar a una receta de cocina. Constituye el modo de decirle al ordenador que realice una tarea que puede ser tan elemental como sumar dos números, o tan compleja como un videojuego. Los programas se ocupan básicamente de recibir unos datos (ENTRADA), hacer una serie de operaciones con ellos (PROCESO) y producir unos resultados (SALIDA). Si, por ejemplo, nos planteamos hacer un programa que permita hallar la suma de dos números, lo primero que tendrá que hacer el programa será obtener los números con los que hay que operar, después efectuará el cálculo con ellos, y a continuación enseñará el resultado. ENTRADA (Recibir los 2 números) PROCESO SALIDA (Sumarlos) (Mostrar el resultado) Un programa ha de funcionar en un ordenador, y para que éste pueda entender sus instrucciones estas deben estar expresadas en un lenguaje inteligible a las máquinas. Para ello son necesarios los lenguajes de programación. Estos permiten escribir las órdenes que queremos que ejecute el ordenador en un código adecuado. Existen muchos lenguajes de programación C, C++, Pascal, Visual-Basic, Smalltalk, Fortran, etc. y es importante saber que cada uno de ellos es más apropiado para resolver un determinado tipo de problema. Hay lenguajes especialmente pensados para cálculo científico, otros para el mundo de la gestión empresarial, otros para el diseño de Sistemas Operativos, etc. Pero un programador no debe escribir las órdenes directamente en un lenguaje; antes hay que plantearse un esquema del programa, hay que pensar qué debe hacer el programa y qué resultados ha de producir. Emplearemos una técnica de programación para diseñarlo -Organigramas, Pseudocódigo, Diseño descendente (Top-Down), etc.- y entonces lo codificaremos en un lenguaje concreto. Como conclusión, para hacer un programa daremos los siguientes pasos: Conocer la función que debe realizar, para qué debe servir, y qué datos ha de tener en cuenta. Diseñarlo mediante una técnica de programación (Pseucódigo en nuestro caso). Codificarlo, es decir, escribirlo en un lenguaje de programación concreto. PSEUDOCÓDIGO, un método de programación INTRODUCCIÓN El pseudocódigo constituye un método de programación, y como tal se aplicará antes de llegar a la codificación de un programa en un lenguaje concreto. Es un lenguaje intermedio entre el lenguaje natural y el de programación, que toma ciertas palabras y frases del lenguaje natural, pero que han de usarse siguiendo unas determinadas reglas. Como todas las técnicas de programación el pseudocódigo es independiente del lenguaje en el que se codifique con posterioridad el programa, esto es, una vez elaborado el pseudocódigo de un programa, este podrá ser escrito en diferentes lenguajes de programación. La tarea de un programador hasta llegar a la solución de un problema pasa por las siguientes fases: • • • • Conocimiento de especificaciones y datos a tener en cuenta sobre el problema; Elaboración de un algoritmo que lo resuelva (mediante alguna técnica de programación); Codificación en un lenguaje de programación determinado; Prueba del programa y Depuración de errores. DEFINICIÓN Una notación es un pseudocódigo si mediante ella podemos describir la solución de un problema en forma de algoritmo dirigido a la computadora, utilizando palabras y frases del lenguaje natural sujetas a unas determinadas reglas. TIPOS DE INSTRUCCIONES ASIGNACIÓN -- Variable ← EXPRESIÓN ENTRADA -- Leer variable1, variable2, ... SALIDA -- Escribir EXPRESIÓN ALTERNATIVAS Simple Si CONDICION entonces i1 i2 ..... ..... in Fin-si Doble Si CONDICION entonces i1 i2 ..... in sino j1 .... jn Fin-si Múltiple Opción EXPRESION de V1 hacer i1,i2,..,in V2 hacer j1,j2,..,jn .... .... Vn hacer l1,l2,..,ln otro caso hacer m1,m2,..,mn Fin-opción REPETITIVAS - CICLOS Mientras mientras CONDICION hacer i1 i2 ..... in fin-mientras Repetir repetir i1 i2 ..... in hasta CONDICION Para para Vc de Vi a Vf hacer i1 i2 ..... in fin-para ACCIONES COMPUESTAS El pseudocódigo permite la posibilidad de definir operaciones complejas, bloques, dentro de un algoritmo, que se concretarán en términos de acciones simples al final del mismo. Una acción compuesta es aquella que ha de ser realizada dentro del algoritmo, pero que aún no está resuelta en términos de acciones simples y sentencias de control. Ejemplo de la verificación de una fecha en un programa que registra facturas. Es conveniente emplear acciones compuestas como un bloque bien separado cuando estas pueden ser compartidas por varios programas. Ello supone un ahorro de tiempo de programación. Otra ventaja que proporcionan es la de facilitar el mantenimiento de los programas, ya que, los dotan de una estructura más clara, y por tanto los hacen más fáciles de entender. COMENTARIOS Los comentarios se indican en un algoritmo para facilitar su comprensión a cualquier persona que lo lea. Dentro de un pseudocódigo los comentarios se indicarán con dos asteriscos **. ** Comentario de una instrucción OBJETOS Son los recipientes de datos (variables, tablas, ficheros, etc.) que empleará el programa. Será necesario indicar cuáles son sus nombres y sus tipos, y esto se hará antes del bloque de instrucciones. El conjunto de objetos del programa se llama Entorno. ESQUEMA BÁSICO DE UN PROGRAMA Entorno Algoritmo Acciones compuestas o Funciones A continuación se ofrecen una serie de programas sencillos ya resueltos. PROGRAMA QUE SUMA DOS NÚMEROS ALGORITMO EXPRESADO EN PSEUDOCÓDIGO ENTORNO numero1, numero2, suma : numérico entero ALGORITMO ** equivale a int main( ) en C++ Escribir ‘PROGRAMA QUE SUMA DOS NÚMEROS ENTEROS’ Escribir ‘Introduzca el primer número:’ Leer numero1 Escribir ‘Introduzca el segundo número:’ Leer numero2º suma ← numero1 + numero2 Escribir ‘La suma es igual a ‘, suma FINPROGRAMA. PROGRAMA QUE CALCULA LA LONGITUD DE UNA CIRCUNFERENCIA ALGORITMO EXPRESADO EN PSEUDOCÓDIGO ENTORNO: radio longitud : numérico entero : numérico real ALGORITMO: Escribir ‘PROGRAMA PARA CALCULAR LA LONGITUD DE UNA CIRCUNFERENCIA’ Escribir ‘Introduzca el radio de la circunferencia:’ Leer RADIO LONGITUD ← 2 * 3.14159 * RADIO Escribir ‘La longitud de la circunferencia es: ‘, LONGITUD FINPROGRAMA. PROGRAMA QUE HALLA EL MAYOR DE DOS NÚMEROS ALGORITMO EXPRESADO EN PSEUDOCÓDIGO ENTORNO numero1, numero2 : numérico entero ALGORITMO Escribir ‘PROGRAMA QUE HALLA EL MAYOR DE DOS NÚMEROS ENTEROS’ Escribir ‘Introduzca el primer número:’ Leer NUMERO1 Escribir ‘Introduzca el segundo número:’ Leer NUMERO2 Si NUMERO1 > NUMERO2 entonces Escribir ‘El mayor es el primero, el ‘, NUMERO1 sino si NUMERO2 > NUMERO1 entonces Escribir ‘El mayor es el segundo, el ‘, NUMERO2 sino Escribir ‘Los dos son iguales’ Fin-si FINPROGRAMA. PROGRAMA QUE HALLA EL FACTORIAL DE UN NÚMERO ALGORITMO EXPRESADO EN PSEUDOCÓDIGO ENTORNO num, i, factorial : numérico entero ALGORITMO Escribir ‘PROGRAMA QUE HALLA EL FACTORIAL DE UN NÚMERO’ Escribir ‘Introduzca el número:’ Leer NUMERO Mientras NUMERO<>0 hacer Para i de numero a 2 paso –1 FACT=FACT*i; Escribir ‘Resultado =’, FACT FINPROGRAMA. RESOLUCIÓN DE UNA ECUACIÓN DE SEGUNDO GRADO (con subprogramas) PSEUDOCÓDIGO PROGRAMA Ecuación 2º grado ENTORNO: A,B,C,X1,X2,DISCRI : numéricos ** A,B,C son los coeficientes de la ecuación y X1, X2 son las raíces ** DISCRI es el Discriminante de la raíz cuadrada y servirá para detectar raíces imaginarias ALGORITMO: Escribir ‘SOLUCIÓN DE UNA ECUACIÓN DE SEGUNDO GRADO CON SUBPROGRAMAS’ ** Llamada al procedimiento que recibe los coeficientes LeerCoeficientes(A,B,C) ** Llamada al procedimiento que calcula las raíces CalculaRaiz (X1,X2,DISCRI,A,B,C) Si DISCRI > 0 entonces ** Llamada al procedimiento que muestra las soluciones Visualizar(X1,X2) Fin-si FINPROGRAMA ** Procedimiento para recibir los coeficientes de la ecuación ** Recibe como parámetros de salida los tres coeficientes de la ecuación SUBPROGRAMA LeerCoeficientes Transforma PF_A, PF_B, PF_C : numéricos ALGORITMO Escribir 'Introduzca el coeficiente de grado 2: ' Leer (PF_A) Escribir 'Introduzca el coeficiente de grado 1: ' Leer (PF_B) Escribir 'Introduzca el coeficiente de grado 0: ' Leer (PF_C) FIN-SUBPROGRAMA ** Procedimiento que calcula las dos raíces de la ecuación ** Recibe como parámetros de salida las dos raíces y el discriminante (éste es necesario ** para que después no se llame al procedimiento Visualizar si es negativo) y como entradas ** los tres coeficientes SUBPROGRAMA CalculaRaiz Transforma PF_X1, PF_X2, PF_DISCRI : numéricos Recibe PF_A, PF_B, PF_C : numéricos ALGORITMO ** Cálculo del discriminante B^2 - 4AC PF_DISCRI ← PF_B^2 - (4 * PF_A * PF_C) Si PF_DISCRI < 0 entonces Escribir 'Las soluciones son imaginarias' si no PF_X1 ← (-PF_B + RAÍZCUADRADA(PF_DISCRI)) / (2*PF_A) PF_X2 ← (-PF_B - RAÍZCUADRADA(PF_DISCRI)) / (2*PF_A) Fin-si FIN-SUBPROGRAMA ** Procedimiento que muestra las raíces en pantalla ** Recibe como parámetros de entrada las dos raíces SUBPROGRAMA Visualizar Recibe PF_X1, PF_X2 : numéricos ALGORITMO Escribir 'Las raíces de la ecuación son: ' Escribir 'X1 = ', PF_X1 Escribir 'X2 = ', PF_X2 FIN-SUBPROGRAMA