You are on page 1of 13

Introducción a la Programación

Programación Estructurada La Programación estructurada parte de la Programación Modular, y sigue un diseño descendente (top-down). Esto significa que primero se debe especificar qué es lo que se quiere hacer globalmente, y a continuación se va desglosando esa tarea principal en subtareas. Esta técnica requiere de un refinamiento sucesivo hasta llegar a un nivel de subtareas abordables con facilidad. Además la programación estructurada utiliza únicamente tres estructuras de control:
  

Secuenciales Condicionales Repetitivas

El utilizar las técnicas (o consejos) de la programación estructurada implica una disminución en el tiempo que se dedica a la verificación, depuración y mantenimiento de las aplicaciones. Esto implica menor coste en el desarrollo, y mayor calidad en el producto. Tipos de Datos Comenzaremos diciendo que por dato se entiende la información que el ordenador maneja para realizar la tarea especificada y obtener los resultados esperados. Si nuestro programa gestiona las nóminas de la empresa, datos serán los nombres de los empleados, sus sueldos, direcciones, estado civil, NIF, etc. Como podemos imaginar, toda esta información no se representa de la misma forma, y definiremos Tipos de Datos como las distintas maneras existentes de representar la información. Clasificaciones de Tipos de Datos Podemos establecer diferentes clasificaciones atendiendo a diversos criterios:

Según su complejidad: 1. Tipos de Datos Simples (o básicos). 2. Tipos de Datos Estructurados (conjunto o agrupación de datos simples relacionados de alguna forma). Según su tamaño: 1. Estáticos: aquellos en los que el tamaño está fijado antes de ejecutarse el programa. 2. Dinámicos: aquellos en los que el tamaño puede cambiar durante la ejecución del programa.

Falso. O sus correspondiente en inglés: true.0 (para diferenciarlo del entero 9) 5. el número de hijos. . y aplicar posteriormente estas clasificaciones al lenguaje Pascal. Valor FALSO: No. Puede considerar un número entero aquel que no necesita de decimales para su representación. el número con decimales. el número de habitaciones de un piso. REALES: son lo que conocemos como números decimales: aquellos que para su representación necesitan decimales. O en inglés: false.3 0.125 9. off. Ejemplos: 7. etc. on. Intentaremos ser genéricos.6 ¡ no válido ! Datos lógicos Son aquellos que sólo pueden tomar dos valores:   Valor VERDADERO: Si. Pero con una precaución: el separador de decimales es el carácter punto. Se puede representar el tipo real tipo en:      Notación punto decimal. Sin ir más lejos. como por ejemplo. muchas de ellas en función del lenguaje de programación sobre el que se hagan. Tipos de Datos Simples Dentro del conjunto de los tipos de datos simples nos encontramos:    Numéricos Lógicos Carácter Datos numéricos Se usan para representar el conjunto de valores numéricos y se pueden distinguir dos tipos:   ENTEROS: representan un subconjunto finito de los números enteros. Cierto. Es a la que estamos acostumbrados. si representamos el salario en Euros necesitaremos usar un número real para no perder precisión.Introducción a la Programación Realmente hay numerosas clasificaciones. Esto es debido a que es la forma de hacerlo en el ámbito técnico.

$. >.Z. Aunque no es algo fijo. Ejemplo: ‘Esto es una cadena ‘. Como los ordenadores finalmente sólo entienden de ceros y unos. C. ¿qué es una condición? Una condición o expresión lógica es una expresión que resuelve o da como resultado un valor del tipo lógico o booleano (verdadero/falso. o Caracteres numéricos: 0...9..Introducción a la Programación Este tipo de dato sirve para almacenar información del tipo VERDADERO o FALSO. o Caracteres especiales: +.. O. Una cadena (también llamada string) es una secuencia de caracteres delimitados por comillas (entre comillas). El comportamiento de este tipo de datos se rige según la lógica booleana.. etc. Por ejemplo: ¿está la luz encendida? Sólo tenemos dos posibilidades: SI o NO. true/false. es un tipo de dato muy frecuente en la vida real. dividen o ramSiican el flujo del programa según una determinada condición. c. de su situación laboral. Existe un tipo muy relacionado con el tipo de datos carácter. . B.. ‘Error ‘... de su nivel de ingresos. <. ‘237 ‘. Este concepto se introdujo al estudiar los tipos de datos. A.z.. ya que fue el matemático Boole el que la creo. -. Veremos próximamente las operaciones posibles sobre este tipo de datos. b. ¿es usted mayor de edad? ¿Tiene usted carnet de conducir? Como vemos. 1/0). 2. . *. /.. Estructuras de Control Acciones Condicionales Estas estructuras. la mayoría de las veces se utiliza la codificación con los estándares ASCII o EBCDIC. ^. Pero. se asocia el valor VERDADERO con el valor numérico 1 y el valor FALSO con el cero. 1. de la hora. también llamadas condicionales.. Datos tipo carácter Este tipo de datos:   Representa el conjunto finito y ordenado de caracteres que el ordenador es capaz de reconocer.. Por longitud de la cadena se entiende el número de caracteres que componen la misma. pudiendo reconocerse los siguientes subconjuntos: o Caracteres alfabéticos: a. ¿Por qué puede ser interesante bifurcar el flujo un programa? Para que el programa se comporte de forma distinta en función por ejemplo de la edad de una persona.. el tipo cadena.

Condicional Simple De las estructuras condicionales. Al mismo tiempo se explica cómo se implementan estas estructuras.Introducción a la Programación Tipos de Estructuras condicionales Podemos encontrar tres tipos de Acciones condicionales:    Simples Dobles Múltiples Los apartados siguientes se basan en un formato común:    Primero se introduce el concepto genérico de las distintas estructuras acompañadas de sus diagramas de flujo. la más sencilla es la selectiva simple. aplicables a cualquier lenguaje de programación. se ‘salta ‘ dicha Acción y se sigue ejecutando el programa. en un lenguaje concreto: Pseudocódigo. a cada tipo de Acción le acompaña un ejemplo. que son comunes a todos los lenguajes de programación estructurados. Si es falsa. Finalmente. La expresión puede ser compleja. pero debe dar como resultado un valor booleano: true o false. La representación gráfica de esta estructura para cualquier lenguaje de programación es la que se puede observar en esta figura: Observemos la figura: . Se evalúa una condición si es verdadera (true) se ejecuta una Acción (simple o compuesta).

etiquetadas como Sí y No. los bancos actualizan el saldo de nuestras cuentas corrientes de forma periódica. El rombo simboliza la evaluación de la condición lógica. En PSEUDOCÓDIGO se logra este efecto añadiendo la Acción Sino a la ya conocida Acción Si-Entonces: . aplicando un cierto interés: Si (saldo > 0) Entonces saldo := saldo * 1. muy posiblemente el banco también comprueba si estamos en números rojos. y se sigue ejecutando el código secuencialmente. La caja cuadrada representa la Acción (o grupo de acciones) que se ejecutan si la condición es verdadera. Observe que de dicho rombo salen dos flechas. aplicando el correspondiente interés: Si (saldo < 0) Entonces saldo := saldo * 1. el flujo del programa se reúne o encuentra.20 imprimir: ('Saldo Negativo') FinSi Selectiva Doble La selectiva doble es un mejora de la Acción Si-Entonces: Si la condición es verdadera se ejecuta un conjunto de acciones (1). Es importante señalar que. El programa saldrá de ese rombo por una u otra según el resultado de la condición del rombo. En Pseudocódigo.02 FinSi Continuando con el ejemplo anterior. y si la condición es falsa se ejecuta otro conjunto distinto de acciones (2). se logra este efecto con la Acción Si-Entonces: Si (condición) Entonces FinSi Acción_a Por ejemplo.Introducción a la Programación    Las flechas representan en que sentido va ejecutándose el programa. una vez ejecutado el conjunto de acciones (1) o (2).

Introducción a la Programación Si (condicion) Entonces Acción_a Sino Acción_b FinSi No olvidemos que cualquiera de las acciones puede ser una Acción compuesta. Insistimos con nuestra relación con el banco. le mostramos un ejemplo de la estructura selectiva doble: Si (saldo < 0) Entonces saldo := saldo * 1. que es muy similar a la previa: Observe la única diferencia con la estructura de control anterior: En la bifurcación (a veces se le llama rama o brazo) correspondiente al No aparecen un conjunto de acciones.20 imprimir: ('Saldo Negativo') FinSi Sino (saldo > 0) . con su correspondientes -FinSi Si (condicion) Entonces Acción_a_1 Acción_a_2 Acción_a_3 FinSi Sino Acción_b FinSi Observe el comportamiento mencionado en la siguiente figura.

Esta precaución esta comentada en el ejemplo previo. se ejecuta lo que se conoce como acción o Acción por defecto. Este comportamiento se refleja con el siguiente diagrama de flujo: . se compara con los distintos valores de las distintas alternativas. En el momento que coincida el valor del selector.' pesetas son ') imprimir: (cantidad/EURO. Si terminamos de comparar todas las alternativas y no coincide con ninguna. Selectiva Múltiple. ' euros. simple o compuesta.') FinSi Debe tener precaución con el terminador de Acción ( ) y el brazo Sino: Nunca ponga un antes de un Sino puesto que el compilador pensaría que la Acción Si ha terminado y mostraría un error al compilar. Esta permite seleccionar la ejecución de una Acción entre más de dos alternativas. Según. en vez de una condición se evalúa una expresión que da como resultado un valor de tipo ordinal. La parte principal de este programa es la siguiente: Si (opcion='P') Entonces imprimir:(cantidad) imprimir:(' euros son ') imprimir:(cantidad*EURO) imprimir:(' pesetas.02 imprimir: ('Saldo Positivo) FinSi Le presentamos como segundo ejemplo de esta estructura de control una sección de código del programa Euro. A diferencia de las condicionales anteriores.') FinSi Sino imprimir: (cantidad. Cada una de estas alternativas tiene asociada una Acción. que llamaremos selector. Case o Caso Dentro del conjunto de las condicionales se incluye la que algunos autores llaman selectiva múltiple. un entero o carácter. Esta Acción se puede omitir. pues no reconoce la Acción Sino. Una vez obtenido este valor. continuando la ejecución del programa al final de esta. se ejecuta la Acción asociada a esa alternativa y termina la ejecución de la selectiva múltiple. Este programa traslada cantidades de pesos a euros o viceversa.Introducción a la Programación saldo := saldo * 1.

Introducción a la Programación En esta figura:     En el rombo se evalúa la expresión. Una etiqueta es una lista de constantes separadas por comas. se ejecutan las acciones que hay en esa rama y se salta el resto de la estructura. se ejecutan las acciones por defecto. En Pseudocódigo la estructura selectiva múltiple se corresponde con la Acción SegunHacer. En el momento que coincida con alguno de ellos. etiquetas_n: Acción_n . que como observamos se representa como última opción. obteniendo el selector. Las distintas alternativas se especifican mediante etiquetas. . Las etiquetas están separadas de las acciones que le corresponden mediante el carácter ':'. La Acción por defecto se marca con la palabra reservada Sino. Si el selector no coincide con ninguno de los valores de los brazos. El selector se va comparando con las listas de valores que tenemos en cada uno de los brazos de la selectiva múltiple. Segun (selector) Hacer etiquetas_1: Acción_1 etiquetas_2: Acción_2 .

En el siguiente ejemplo. como en el ejemplo del programa Euro.'m' : res:= a*b 'D'.02 Sino imprimir: ('No alcanza el saldo minimo') FinSi FinSi Se puede pensar que con más de 7500 euros de saldo (SALDOMIN) se imprime el mensaje de aviso No alcanza el saldo minimo. restar.'r' : res:= a-b 'M'. se dice que están anidadas. multiplicar y dividir. se vuelve a observar la importancia de sangrar (tabular) correctamente el código: actualizar := falso saldo := 7500 Si (saldo > SALDOMIN) Entonces Si (actualizar) Entonces saldo := saldo * 1. Este programa realiza las operaciones básicas de una calculadora: sumar. siempre que estén totalmente incluidas unas en otras. No hay límite al número de acciones que se pueden anidar. Si quisiera que se correspondiese con el primero deberá usar los delimitadores de bloque o Acción compuesta -FinSi: Si (saldo > SALDOMIN) Entonces Si (actualizar) Entonces . las palabras reservadas Sino se corresponden con el Si inmediatamente anterior. ¿Qué está ocurriendo? Simplemente.Introducción a la Programación de otro modo: Acción_por_defecto FinSegun (* se corresponde con el case *) Como ejemplo le presentamos una sección de código del programa.'s' : res:= a+b 'R'. Leer: (opción) Según (opción) Hacer 'S'. sección de código del programa Banca. Pero si compila y ejecuta este programa comprobará que esto no es cierto. Si existen estructuras Si anidadas. el Sino se asocia con la Acción Si más cercana. La tabulación del código nos hace creer que se asocia al primer Sino.'d' : res:= a/b De otro modo : imprimir: ('Opción no permitida') FinSegun Condicionales anidadas Cuando alguna de las acciones que aparece dentro de los brazos o alternativas de una Acción selectiva es otra Acción selectiva. el más cercano.

Introducción a la Programación saldo := saldo * 1. o Una vez ejecutas estas.02 FinSi Sino imprimir: ('No alcanza el saldo minimo') FinSi Bucle Mientras El funcionamiento de este bucle es el siguiente: 1. Esto queda reflejado en la siguiente figura: En esta figura:    En el símbolo inicial (rombo) se evalúa la condición del bucle. termina la . Se evalúa la condición. el flujo del programa regresa a evaluar la condición Si la condición no se cumple. 2. 3. no se ejecuta el bucle. se ejecuta el bucle y se vuelve al punto 1. Si la condición se cumple: o Tomamos la rama positiva. Si la condición es verdadera. Si la condición es falsa. o Se ejecutan las acciones especSiicadas en el bucle.

la Acción que representa este comportamiento es: Mientras (condicion) Hacer Acción_a Acción_b Acción_c Fin Mientras Como ejemplo del uso de este bucle. lo que se representa con el brazo etiquetado como NO en la figura. Debe existir dentro del bucle algún mecanismo para modSiicar la condición que controla el bucle y evitar un bucle infinito. A este operador se le asigna el símbolo de exclamación. Observe el fragmento de código. Por lo tanto: el factorial de 2 ( 2! ) es 2*1 el factorial de 3 ( 3! ) es 3*2*1 el factorial de 4 ( 4! ) es 4*3*2*1. se le da un valor inicial de 1. y la tabla que le acompaña donde se muestran los valores de las distintas variables en las iteraciones del bucle. Sección de código del programa Factorial factorial := 1 cantidad := 7 Mientras (cantidad > 0) Hacer factorial := factorial * cantidad cantidad := cantidad -1 Fin Mientras .Introducción a la Programación ejecución del bucle. A la variable factorial. donde la iteración se repite indefinidamente porque no es posible modSiicar la condición de salida del bucle. En este caso el programa no acabaría nunca. que acumula el producto. las acciones que forman el bucle no se ejecute ninguna vez. se calcula el factorial de un número entero positivo. El factorial (n!) de un número entero positivo es el resultado de multiplicarlo por todos los que le preceden hasta llegar a 1. Es Pseudocódigo. Dos comentarios antes de continuar:   Puede ser que si la condición es falsa en su primera evaluación.

2. En esta estructura. Si la condición no se cumple. 4.Introducción a la Programación Factorial de 7 Número de Iteración Valor de cantidad Antes del bucle 1 2 3 4 5 6 7 8 7 7 6 5 4 3 2 1 0 Valor de factorial 1 1*7 = 7 7*6 = 42 42*5 = 210 210*4 = 840 840*3 = 2520 2520*2 = 5040 5040*1 = 5040 = 7*6*5*4*3*2*1 ¡¡ No entramos en el bucle !! Bucle Repetir-Hasta que El funcionamiento de este bucle es el siguiente: 1. cuando se cumple la condición se acaba el bucle. Se ejecutan las sentencias que forman parte del bucle. al contrario que en el bucle mientras. En ese lugar no hay sentencias de ningún tipo. Si es falsa. termina la ejecución del bucle. Se evalúa la condición 3. En esta figura:    Se ha representado con un pequeño círculo el lugar donde se reúnen las flechas de flujo del programa. regresamos a . ir a 1. Si es verdadera.

Sección de código del programa Calc1 Repetir imprimir: ('Introduzca el primer operando: ') Leer: (a) imprimir: ('Introduzca el segundo operando: ') Leer: (b) imprimir: (' Opciones: S(sumar). M(multiplicar). .'m' : res:= a*b 'D'.'s' : res:= a+b 'R'. Este es el caso de programas que solicitan al usuario opciones por pantalla.'r' : res:= a-b 'M'. que posteriormente hay que comprobar que son correctas. Este tipo de bucles es muy adecuado para situaciones en las que a priori conozcamos que hay que ejecutar el bucle al menos una vez.'d' : res:= a/b FinSegun imprimir: (' El resultado es '. El bucle se repite hasta que la condición de control se hace verdadera. D(dividir)') Leer: (opcion) Segun (opcion) Hacer 'S'. res) imprimir: (' Terminar (Y/N)?: ') Leer: (opcion) Hasta que ((opcion ='Y') o (opcion ='y')) Observe el bucle repetir-hasta que y dentro de este la selectiva múltiple.Introducción a la Programación ese círculo previo al conjunto de sentencias del bucle. Las diferencias con la estructura MIENTRAS son dos:   Esta estructura siempre se ejecuta al menos una vez. R(restar).