Você está na página 1de 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.
Introducción a la Programación

Realmente hay numerosas clasificaciones, muchas de ellas en función del lenguaje de


programación sobre el que se hagan. Intentaremos ser genéricos, y aplicar
posteriormente estas clasificaciones al lenguaje Pascal.

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.


Puede considerar un número entero aquel que no necesita de
decimales para su representación, como por ejemplo, el número de
hijos, el número de habitaciones de un piso, etc.
 REALES: son lo que conocemos como números decimales: aquellos que
para su representación necesitan decimales. Sin ir más lejos, si
representamos el salario en Euros necesitaremos usar un número real
para no perder precisión.

Se puede representar el tipo real tipo en:

 Notación punto decimal.


Es a la que estamos acostumbrados, el número con decimales. Pero con
una precaución: el separador de decimales es el carácter punto. Esto es
debido a que es la forma de hacerlo en el ámbito técnico. Ejemplos:
 7.3
 0.125
 9.0 (para diferenciarlo del entero 9)
 5,6 ¡ no válido !

Datos lógicos

Son aquellos que sólo pueden tomar dos valores:

 Valor VERDADERO: Si, Cierto. O sus correspondiente en inglés: true, on.


 Valor FALSO: No, Falso. O en inglés: false, off.
Introducción a la Programación

Este tipo de dato sirve para almacenar información del tipo VERDADERO o FALSO. Por
ejemplo: ¿está la luz encendida? Sólo tenemos dos posibilidades: SI o NO. O, ¿es usted
mayor de edad? ¿Tiene usted carnet de conducir? Como vemos, es un tipo de dato
muy frecuente en la vida real.

El comportamiento de este tipo de datos se rige según la lógica booleana, ya que fue el
matemático Boole el que la creo. Como los ordenadores finalmente sólo entienden de
ceros y unos, se asocia el valor VERDADERO con el valor numérico 1 y el valor FALSO
con el cero.
Veremos próximamente las operaciones posibles sobre este tipo de datos.

Datos tipo carácter

Este tipo de datos:

 Representa el conjunto finito y ordenado de caracteres que el


ordenador es capaz de reconocer.
 Aunque no es algo fijo, la mayoría de las veces se utiliza la codificación
con los estándares ASCII o EBCDIC, pudiendo reconocerse los siguientes
subconjuntos:
o Caracteres alfabéticos: a, b, c,...,z, A, B, C,...,Z.
o Caracteres numéricos: 0, 1, 2,...,9.
o Caracteres especiales: +, -, *, /, ^, ;, <, >, $.

Existe un tipo muy relacionado con el tipo de datos carácter, el tipo cadena. Una
cadena (también llamada string) es una secuencia de caracteres delimitados por
comillas (entre comillas). Ejemplo: ‘Esto es una cadena ‘, ‘Error ‘, ‘237 ‘. Por longitud
de la cadena se entiende el número de caracteres que componen la misma.

Estructuras de Control

Acciones Condicionales

Estas estructuras, también llamadas condicionales, dividen o ramSiican el flujo del


programa según una determinada condición. Pero, ¿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, true/false, 1/0). Este concepto se
introdujo al estudiar los tipos de datos.

¿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, de su
nivel de ingresos, de su situación laboral, de la hora, etc.
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, aplicables a cualquier lenguaje de
programación.
 Al mismo tiempo se explica cómo se implementan estas estructuras, que son
comunes a todos los lenguajes de programación estructurados, en un lenguaje
concreto: Pseudocódigo.
 Finalmente, a cada tipo de Acción le acompaña un ejemplo.

Condicional Simple

De las estructuras condicionales, la más sencilla es la selectiva simple. Se evalúa una


condición si es verdadera (true) se ejecuta una Acción (simple o compuesta). Si es
falsa, se ‘salta ‘ dicha Acción y se sigue ejecutando el programa.

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:
Introducción a la Programación

 Las flechas representan en que sentido va


ejecutándose el programa.
 El rombo simboliza la evaluación de la
condición lógica. Observe que de dicho
rombo salen dos flechas, etiquetadas como Sí
y No. El programa saldrá de ese rombo por
una u otra según el resultado de la condición
del rombo.
 La caja cuadrada representa la Acción (o
grupo de acciones) que se ejecutan si la
condición es verdadera.

En Pseudocódigo, se logra este efecto con la Acción Si-Entonces:

Si (condición)
Entonces Acción_a
FinSi

Por ejemplo, los bancos actualizan el saldo de nuestras cuentas corrientes de forma
periódica, aplicando un cierto interés:

Si (saldo > 0) Entonces


saldo := saldo * 1.02
FinSi

Continuando con el ejemplo anterior, muy posiblemente el banco también comprueba


si estamos en números rojos, aplicando el correspondiente interés:
Si (saldo < 0) Entonces

saldo := saldo * 1.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), y si la condición es falsa se ejecuta otro
conjunto distinto de acciones (2). Es importante señalar que, una vez ejecutado el
conjunto de acciones (1) o (2), el flujo del programa se reúne o encuentra, y se sigue
ejecutando el código secuencialmente. En PSEUDOCÓDIGO se logra este efecto
añadiendo la Acción Sino a la ya conocida Acción Si-Entonces:
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, 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, 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.

Insistimos con nuestra relación con el banco, le mostramos un ejemplo de la estructura


selectiva doble:

Si (saldo < 0) Entonces


saldo := saldo * 1.20
imprimir: ('Saldo Negativo')
FinSi Sino (saldo > 0)
Introducción a la Programación

saldo := saldo * 1.02


imprimir: ('Saldo Positivo)
FinSi

Le presentamos como segundo ejemplo de esta estructura de control una sección de


código del programa Euro. Este programa traslada cantidades de pesos a euros o
viceversa. La parte principal de este programa es la siguiente:

Si (opcion='P') Entonces

imprimir:(cantidad)
imprimir:(' euros son ')
imprimir:(cantidad*EURO)
imprimir:(' pesetas.')
FinSi

Sino

imprimir: (cantidad,' pesetas son ')


imprimir: (cantidad/EURO, ' euros.')
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, pues no reconoce la Acción Sino. Esta precaución esta
comentada en el ejemplo previo.

Selectiva Múltiple, Según, Case o Caso

Dentro del conjunto de las condicionales se incluye la que algunos autores llaman
selectiva múltiple. Esta permite seleccionar la ejecución de una Acción entre más de
dos alternativas. A diferencia de las condicionales anteriores, en vez de una condición
se evalúa una expresión que da como resultado un valor de tipo ordinal, un entero o
carácter. Una vez obtenido este valor, que llamaremos selector, se compara con los
distintos valores de las distintas alternativas. Cada una de estas alternativas tiene
asociada una Acción, simple o compuesta. En el momento que coincida el valor del
selector, se ejecuta la Acción asociada a esa alternativa y termina la ejecución de la
selectiva múltiple, continuando la ejecución del programa al final de esta. Si
terminamos de comparar todas las alternativas y no coincide con ninguna, se ejecuta
lo que se conoce como acción o Acción por defecto. Esta Acción se puede omitir. Este
comportamiento se refleja con el siguiente diagrama de flujo:
Introducción a la Programación

En esta figura:

 En el rombo se evalúa la expresión,


obteniendo el selector.
 El selector se va comparando con las listas de
valores que tenemos en cada uno de los
brazos de la selectiva múltiple.
 En el momento que coincida con alguno de
ellos, se ejecutan las acciones que hay en esa
rama y se salta el resto de la estructura.
 Si el selector no coincide con ninguno de los
valores de los brazos, se ejecutan las
acciones por defecto, que como observamos
se representa como última opción.

En Pseudocódigo la estructura selectiva múltiple se corresponde con la Acción Segun-


Hacer. Las distintas alternativas se especifican mediante etiquetas. Una etiqueta es
una lista de constantes separadas por comas. 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.

Segun (selector) Hacer


etiquetas_1: Acción_1
etiquetas_2: Acción_2
.
.
etiquetas_n: Acción_n
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. Este programa
realiza las operaciones básicas de una calculadora: sumar, restar, multiplicar y dividir.

Leer: (opción)
Según (opción) Hacer
'S','s' : res:= a+b
'R','r' : res:= a-b
'M','m' : res:= a*b
'D','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, se dice que están anidadas. No hay límite al
número de acciones que se pueden anidar, siempre que estén totalmente incluidas
unas en otras, como en el ejemplo del programa Euro. Si existen estructuras Si
anidadas, las palabras reservadas Sino se corresponden con el Si inmediatamente
anterior, el más cercano. En el siguiente ejemplo, sección de código del programa
Banca, 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.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. Pero si compila y ejecuta este programa
comprobará que esto no es cierto. ¿Qué está ocurriendo? Simplemente, 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. 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
Introducción a la Programación

saldo := saldo * 1.02


FinSi
Sino
imprimir: ('No alcanza el saldo minimo')
FinSi

Bucle Mientras

El funcionamiento de este bucle es el siguiente:

1. Se evalúa la condición.
2. Si la condición es falsa, no se ejecuta el bucle.
3. Si la condición es verdadera, se ejecuta el bucle y se vuelve al punto 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.
 Si la condición se cumple:
o Tomamos la rama positiva.
o Se ejecutan las acciones especSiicadas
en el bucle.
o Una vez ejecutas estas, el flujo del
programa regresa a evaluar la
condición
 Si la condición no se cumple, termina la
Introducción a la Programación

ejecución del bucle, lo que se representa con


el brazo etiquetado como NO en la figura.

Dos comentarios antes de continuar:

 Puede ser que si la condición es falsa en su primera evaluación, las acciones


que forman el bucle no se ejecute ninguna vez.
 Debe existir dentro del bucle algún mecanismo para modSiicar la condición que
controla el bucle y evitar un bucle infinito, 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.

Es Pseudocódigo, 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, 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. A este operador
se le asigna el símbolo de exclamación.

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,

Observe el fragmento de código, y la tabla que le acompaña donde se muestran


los valores de las distintas variables en las iteraciones del bucle. A la variable
factorial, que acumula el producto, se le da un valor inicial de 1.

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

Factorial de 7

Número de Iteración Valor de cantidad Valor de factorial

Antes del bucle 7 1

1 7 1*7 = 7

2 6 7*6 = 42

3 5 42*5 = 210

4 4 210*4 = 840

5 3 840*3 = 2520

6 2 2520*2 = 5040

7 1 5040*1 = 5040 = 7*6*5*4*3*2*1

8 0 ¡¡ No entramos en el bucle !!

Bucle Repetir-Hasta que

El funcionamiento de este bucle es el siguiente:

1. Se ejecutan las sentencias que forman parte del


bucle.
2. Se evalúa la condición
3. Si es falsa, ir a 1.
4. Si es verdadera, termina la ejecución del bucle.

En esta figura:

 Se ha representado con un pequeño círculo el


lugar donde se reúnen las flechas de flujo del
programa. En ese lugar no hay sentencias de
ningún tipo.
 En esta estructura, cuando se cumple la
condición se acaba el bucle, al contrario que
en el bucle mientras.
 Si la condición no se cumple, regresamos a
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.


 El bucle se repite hasta que la condición de control se hace verdadera.

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. Este es el caso de programas que
solicitan al usuario opciones por pantalla, que posteriormente hay que comprobar que
son correctas.

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), R(restar), M(multiplicar), D(dividir)')
Leer: (opcion)
Segun (opcion) Hacer
'S','s' : res:= a+b
'R','r' : res:= a-b
'M','m' : res:= a*b
'D','d' : res:= a/b
FinSegun
imprimir: (' El resultado es ', 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.

Você também pode gostar