You are on page 1of 29

Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

Sesión 1. Introducción a la Programación


Estructurada

Este documento forma parte del curso Programación con Python del CEFIRE CTEM.

Esta obra está sujeta a la licencia Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional


de Creative Commons. Para ver una copia de esta licencia, visitad
http://creativecommons.org/licenses/by-nc-sa/4.0/.

Autoria: José Luis Tomás Navarro.


Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

ÍNDICE

1.- Conceptos Previos

2.- Elementos Básicos: Secuencia, Decisión e Iteración

3.- Variables

4.- Módulos

5.- Fases en la Creación de un Programa

Página 1
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

1.- Conceptos Previos


Los conceptos que vamos a ver son los de Algoritmo, Programa, Lenguaje de
Programación e Implementación o Codificación.

Algoritmo => es una secuencia o lista finita de pasos que se deben realizar para
resolver un problema en un tiempo finito. Es importante señalar que se ha definir el
orden en el que han de realizarse los pasos.

El término de algoritmo lo podemos emplear en cualquier ámbito no solo es exclusivo


de la informática o de la programación.

Normalmente se suele emplear el lenguaje natural para escribir la secuencia de pasos


de un algoritmo. Normalmente, delante del primer paso de cada algoritmo se suele
colocar la palabra INICIO y después del último paso utilizaremos la palabra FIN.
Ejemplo: “Algoritmo para preparar un café”
1. INICIO
2. Abrir Tapa Cafetera
3. Si Hay Café
4. ...
N. FIN

Vemos que cada uno de los pasos del algoritmo está asociado a un número, el cual nos
ayuda a ver con más claridad cual es el orden en el se llevan a cabo los pasos. La
numeración de los pasos no es obligatoria, aunque al principio en los primeros algoritmos
que realicemos nos puede servir de ayuda.

En la siguiente página, se muestra un ejemplo muy sencillo de un algoritmo, según el cual


vamos a retirar nuestro vehículo de un parking y tenemos que pagar en el cajero
automático. Suponemos que nos encontramos delante del cajero y que no hay nadie
delante. Para simplificar el ejemplo, tampoco queremos centrarnos en el detalle de como
vamos a pagar el importe del parking.

Página 2
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

1. INICIO
2. Sacar Ticket
3. Introducir Ticket en el cajero
4. Si tenemos vale de descuento
4.1 Introducir vale en el cajero
5. Fin Si
6. Mientras el cajero calcula el importe
6.1 Esperar
7. Fin Mientras
8. Pagar importe
9. Retirar Ticket
10. FIN

Aunque entraremos en más detalle en el siguiente ejemplo, comentar que en el paso 4


aparece una pregunta Si ... y en el paso 6 una estructura repetitiva Mientras ...
Para realizar todas las actividades de esta Sesión, tan solo necesitamos disponer de un
procesador de textos.

Actividad Diseño Algoritmo Preparación Café


Siguiendo con el primer ejemplo de la página anterior, se trata de diseñar un algoritmo
que nos permita preparar un café con una de las cafeteras antiguas, es decir de las que
no son exprés. Se propone intentar realizar este algoritmo, puesto que la solución al
mismo se encuentra en el documento "Solución Algoritmo Preparación Café.pdf". Los
comentarios que explican la solución, se encuentran a continuación.

A la hora de resolver este algoritmo, en los pasos que forman parte del mismo vemos que
aparecen preguntas en las que empleamos la palabra Si, por ejemplo:

Si el depósito esta lleno


Estas preguntas, se corresponden con lo que se conoce con el nombre de Estructuras

Página 3
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

Condicionales. La respuesta a estas preguntas, sólo puede tener 2 posibles


valores: cierto o falso. En el caso de que la respuesta sea cierta, se llevarán a cabo
los pasos que hay dentro del Si. No es el caso, pero asociado a la pregunta Si, puede
existir el bloque del Si No que es opcional, de manera que si existe y la respuesta a
esta pregunta es falsa, se llevarán a cabo las acciones o pasos del Si No . La
necesariedad o no de incluir el apartado Si No en la resolución de un algoritmo, depende
de la naturaleza del problema que tengamos que resolver.

En el siguiente esquema podemos apreciar como funciona la estructura condicional:

Si Formulación de una Pregunta


Paso 1 del Si
Conjunto de Pasos que sólo se llevan a cabo

cuando la respuesta a la pregunta es cierta
Paso N del Si
Bloque Opcional

Si No
Paso 1 del Si No Conjunto de Pasos que sólo se llevan a cabo
… cuando la respuesta a la pregunta es falsa
Paso N del Si No
Fin Si

También vamos a encontrar la palabra Mientras …, en este caso se trata de


Estructuras Repetitivas del tipo:
Mientras …

Fin Mientras
...

En este caso Mientras la respuesta a la pregunta sea cierta, se van a estar repitiendo
los pasos que hay dentro de la Estructura Mientras. Cuando la respuesta a la pregunta
sea falsa, se continuarán realizando los pasos que hay después de Fin Mientras.

Página 4
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

En la solución del algoritmo de preparación del café, tenemos varias estructuras de este
tipo, por ejemplo la que aparece a continuación:
10. Mientras el agua no llegue a la válvula

10.1. Poner agua

11. Fin Mientras

Es importante resaltar que en la estructuras repetitivas la idea de que los pasos que se
encuentran entre el Mientras y el Fin Mientras, se van a estar repitiendo
continuamente, es decir cuando acaben de realizarse los pasos, volveremos otra vez al
paso donde se encuentra el Mientras, de manera que se volverá a realizar la pregunta.
Esta estructura finalizará cuando la respuesta a la pregunta del Mientras sea falsa.

Programa => es similar a un algoritmo la diferencia está en que los pasos que han de
resolver un problema, han de escribirse en un determinado lenguaje de
programación y es ejecutado en un ordenador. Por tanto, un programa sería la
secuencia de instrucciones que indican las acciones que ha de ejecutar un ordenador
para resolver un determinado problema.

Lenguaje de Programación => Estará formado por un conjunto de palabras


reservadas, símbolos y reglas sintácticas que se utilizan para construir un
programa. Ejemplo: Python, C, Pascal, Cobol, PHP, Java, etc.

Implementación o Codificación => es el proceso de traducción de un algoritmo a un


determinado lenguaje de programación para la creación de un programa. Esto implica
la escritura de las sentencias o instrucciones en un determinado lenguaje de
programación.

2.- Elementos Básicos: Secuencia, Decisión e Iteración


Los 3 elementos básicos que se utilizan en la programación estructurada para
construir programas son: la secuencia, la decisión y la iteración.
Estos 3 elementos son los que ya hemos detectado de forma intuitiva a la hora de
construir algoritmos, con lo cual podemos ver que no son elementos exclusivos de la

Página 5
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

programación, sino que son inherentes a la resolución de cualquier problema de forma


estructurada.

Secuencia
Estos elementos son los más simples y se utlizan cuando tenemos que llevar a cabo,
unas acciones o pasos, uno detrás del otro. Otra características es que se llevan a cabo
todos los pasos, sin que dependan de ninguna condición:
Ejemplo:
...
17. Poner cafetera en el fuego
18. Encender el fuego
...

Decisión
Este elemento nos permite formular preguntas, de manera que en función de la
respuesta a la pregunta formulada, (cierta o falsa), se llevará a cabo un bloque de
acciones u otro. Recordemos el esquema que veíamos en el punto anterior:
Si Formulación de una Pregunta
Paso 1 del Si
Conjunto de Pasos que sólo se llevan a cabo

cuando la respuesta a la pregunta es cierta
Paso N del Si
Bloque Opcional

Si No
Paso 1 del Si No Conjunto de Pasos que sólo se llevan a cabo
… cuando la respuesta a la pregunta es falsa
Paso N del Si No
Fin Si

Como podemos ver, el bloque de pasos del Si y el bloque de pasos del Si No son
excluyentes o se realiza uno o se realiza el otro.
Ejemplo:
3. Si hay café

Página 6
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

Iteración
Este elemento nos permite repetir un bloque de acciones o pasos, podemos distinguir 2
tipos de estructura repetitiva o iterativa, las estructuras repetitivas variables y las
estructuras repetitivas fijas. Las primeras las utilizamos cuando no conocemos a priori
cuantas veces tenemos que repetir los pasos que se encuentran dentro del bloque repetir.
El esquema sería el siguiente:

MIENTRAS Condición
Paso 1

Paso N
FIN MIENTRAS

Todos los ejemplos de estructuras repetitivas en la solución al algoritmo de preparación


del café, son estructuras repetitivas variables. Por ejemplo:

Mientras el agua no llegue a la válvula


Poner agua
Fin Mientras

Mientras el café no llegue al borde


Poner café
Fin Mientras

Las estructuras repetitivas fijas, por el contrario las utilzamos cuando si que conocemos
a priori cuantas veces tenemos que repetir los pasos. Para representar este tipo de
estructuras repetitivas se suelen emplear 2 notaciones diferentes, aunque las 2 son
compatibles. En la siguiente página, podemos apreciar estas 2 notaciones diferentes.

Página 7
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

REPETIR N VECES PARA CADA ELEMENTO

Paso 1 Paso 1

… …

Paso N Paso N

FIN REPETIR FIN PARA

Parece que la primera forma queda más clara, porque se expresa de forma explícita el
número de veces que se han de repetir los pasos. La segunda forma es algo más
genérica. Por ejemplo, suponemos que tenemos un número determinado de vasos que en
este caso puede ser 10, dentro de un lavavajillas los cuales están limpios y tenemos que
sacarlos y guardarlos. Las acciones para poder llevar esta tarea, utilzando las 2 variantes
serían la siguientes:

REPETIR 10 VECES PARA CADA VASO

Sacar Vaso Sacar Vaso

Guardar Vaso Guardar Vaso

FIN REPETIR FIN PARA

Los pasos que se encuentran dentro de la estructura repetitiva, se denominan


cuerpo de la estructura repetitiva o cuerpo del bucle.

Para resolver un problema vamos a poder combinar estos 3 elementos de la forma y


modo que necesitemos. Es decir, podemos anidar un elemento dentro de otro, siempre y
cuando el anidamiento sea correcto. Las preguntas que nos podemos formular en este
punto son:
- ¿ Puedo emplear una estructura condicional, dentro de otra estructura condicional ?
- ¿ Puedo utilizar una estructura repetitiva, dentro de otra estructura repetitiva ?
- ¿ Puedo emplear una estrucura condicional dentro de una estructura repetitiva ?
- ¿ Puedo hacer uso de una estructura repetitiva dentro de una estructura condicional ?

Página 8
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

- ...

Bien, pues la respuesta a todas estas preguntas es que SI. La combinación de los 3
elementos básicos que emplearemos para resolver un problema, depende de la
naturaleza del mismo. Es decir, de qué es lo que tenemos que resolver o cual es el
problema que se nos plantea.
Como ya comentábamos, lo único con lo que debemos de tener cuidado, es con el
anidamiento correcto de estas estructuras. Por ejemplo, los siguientes fragmentos de
algoritmos no serían correctos, porque las estructuras condicionales e iterativas no están
bien anidadas.

Mientras condición 1 Si condición 1


Paso 1 mientras Paso 1 Si
Si condicion 2 Mientras condicion 2
Paso 1 Si Paso 1 Mientras
... ...
Fin Mientras Fin Si
.... ....
Paso N Mientras Paso N Si
Fin Si Si No
...
Fin Mientras

En lugar de esto, lo correcto sería lo siguiente:

Mientras condición 1 Si condición 1


Paso 1 mientras Paso 1 Si
Si condicion 2 Mientras condicion 2
Paso 1 Si Paso 1 Mientras
... ...
Fin Si Fin Mientras
.... ....
Paso N Mientras Paso N Si

Página 9
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

Fin Mientras Si No
...
Fin Si

Como podemos apreciar, los elementos o pasos secuenciales son los que aparecen
como pasos individuales, es decir, Paso 1 Si, Paso 1 Mientras, los cuales se realizan
uno detrás del otro.
Llegados a este punto, se dejan planteadas 2 actividades para crear 2 algoritmos. El
objetivo es poder disponer de material suficiente para practicar y familiarizarnos con todos
conceptos vistos hasta ahora, no se trata de tener la obligación de realizarlas, sino de
tener recursos que nos pueden servir de apoyo para poder asimilar bien los conceptos.

A continuación se adjuntan los enunciados de los 2 algoritmos, la solución a estos 2


algoritmos se encuentra en 2 documentos a parte, los cuales son respectivamente:
Solución Algoritmo Apertura Puerta.pdf y Solución Algoritmo Suma Numeros.pdf.

Actividad Voluntaria: Diseño Algoritmo Apertura de una Puerta


Se trata de diseñar un algoritmo que nos permita abrir una puerta, para lo cual
contaremos con un llavero con un número indeterminado de llaves. Tendremos que ir
probando con cada una de las llaves, hasta que encontremos una llave que abra la
puerta. Las llaves que probemos y no habran la cerradura, tendremos que sacarlas del
llavero.
Suponemos que alguna de las llaves abrirá la puerta.
Suponemos que todas las llaves entran en la cerradura, pero evidentemente no todas la
pueden abrir.

Actividad Voluntaria: Diseño Algoritmo Suma de 2 Números


En esta ocasión, vamos a plantear la secuencia de pasos (algoritmo) que se tendrían que
llevar a cabo en un determinado lenguaje de programación, para solicitar 2 números al
usuario por teclado, sumarlos y visualizar el resultado por la pantalla.
La secuencia de pasos sería la siguiente:
1. Visualizar: "Introduce el primer número"

Página 10
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

2. Leer numero1
3. …

Aunque en esta actividad se menciona lo de lenguaje de programación, evidentemente


para crear el algoritmo utilizaremos el lenguaje natural, tal y como hemos hecho en el
Algoritmo de la preparación de un café. Se ha empleado esta nomenclatura, porque la
resolución de este problema ha de llevarse a cabo en un ordenador, según se desprende
el enunciado cuando dice: "solicitar 2 números al usuario por teclado, sumarlos y
visualizar el resultado por la pantalla".

Ampliación 1:
Ahora una vez introducidos los 2 números, se calcularán y visualizarán las 3 operaciones
aritméticas restantes: resta, multiplicación y división.

Actividad Entrega Obligatoria: Diseño Algoritmo Recogida Campo de Lechugas


Suponemos que tenemos un campo de lechugas organizado como una matriz de filas y
columnas. Sabemos que el campo cuenta con 10 columnas, pero no sabemos
cuantas lechugas hay en cada columna, es decir habrá un número indeterminado de
lechugas en cada columna. Suponemos que todas las columnas cuentan con el
mismo número de lechugas.
Además contamos con un robot para poder recoger el campo de lechugas.

Se plantea esta primera versión de la actividad y como veremos, posteriormente en los


puntos 3 y 4 se plantearán 3 ampliaciones más, de manera que sólo será obligatorio
entregar esta primera versión, siendo el resto de ampliaciones voluntarias.

En la siguiente página, podemos apreciar el aspecto que presenta el campo, el cual está
orientado en dirección Norte Sur.

Página 11
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .

Col. 1 Col. 2 Col. 3 Col. 4 Col. 5 Col. 6 Col. 7 Col. 8 Col. 9 Col. 10

Página 12
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

Como podemos apreciar, inicialmente el robot se encuentra mirando hacia el norte


debajo de la primera columna.

Las órdenes que conoce el robot son las siguientes:


Muevete => el robot avanza una posición, de manera que si está dentro del campo
pasará de una lechuga a otra
Coge Lechuga => el robot es capaz de recoger o cortar una lechuga, siempre y cuando
esté situado encima de una lechuga
Gira Izquierda => el robot girará 90º a la izquierda
En principio el robot no sabe girar a la derecha, con lo cual, cada vez que queramos que
el robot gire 90º a la derecha, tendremos que utilizar la orden gira izquierda varias
veces.
Guarda Lechuga => permite guardar la lechuga en un depósito que lleva incorporado el
robot

También es capaz de determinar si son ciertas las siguientes preguntas:


Hay Lechuga => Es capaz de determinar si en la posición sobre la que se encuentra
existe una lechuga
Esta la Lechuga Madura => Es capaz de determinar si en la posición sobre la que se
encuentra existe una lechuga madura
También conoce en que posición de los 4 puntos cardinales se encuentra mirando: Es
Dirección Norte, Es Dirección Sur, Es Dirección Este, Es Dirección Oeste

Suponemos que cuando el robot sale del campo, porque se han acabado las lechugas
de una columna, o bien cuando entra debido a que tiene que empezar a recoger una
columna, siempre se mueve una posición.

Respecto a las preguntas que conoce le robot, vamos a poder formulárselas de las
siguiente manera. Por ejemplo:
Si Esta la Lechuga Madura ó Si es Dirección Norte ó Si Hay Lechuga

La respuesta a estas preguntas sólo puede ser cierta o falsa.

Página 13
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

Se trata de Diseñar un Algoritmo con las órdenes adecuadas, para que el robot recoja
todo el campo.

La estrategia que podemos seguir para simplificar el problema consiste en pensar


inicialmente que el robot sólo tiene que recoger una columna de lechugas.

Como las columnas tienen un número indeterminado de lechugas, parece razonable


pensar que tenemos que emplear una estructura repetitiva para poder recoger una
columna.

INICIO

Mientras ...
… Recogida de una columna
Fin Mientras

FIN

Una vez que tenemos resuelta la recogida de una columna, vamos a centrarnos en
recoger todo el campo. Recordemos que el campo cuenta con 10 columnas, de manera
que todos los pasos empleados para recoger una columna tenemos que repetirlos 10
veces. Esta claro que tenemos que emplear una estructura repetitiva, la diferencia
respecto a las estructuras repetitivas que hemos empleado en las actividades que hemos
visto (estructuras repetitivas variables), está en que en esta ocasión si que conocemos
a priori, cuantas veces tenemos que realizar la repetición (10). Como ya comentábamos
en el punto 2, a este tipo de estructuras repetitivas, las denominaremos estructuras
repetitivas fijas.

Recordemos las 2 notaciones que se pueden emplear para este tipo de estructuras
repetitivas fijas, tal y como podemos ver en la siguiente página.

Página 14
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

REPETIR N VECES PARA CADA ELEMENTO


Paso 1 Paso 1
… …
Paso N Paso N
FIN REPETIR FIN PARA

La solución completa a la recogida del campo, debería tener una estructura semejante a
está:

INICIO
REPETIR 10 VECES

Mientras …
... Recogida de una columna Recogida de todo el campo
Fin Mientras

Pasos para cambiar de columna

FIN REPETIR
FIN

Podemos apreciar como después de recoger una columna, se tienen que encontrar los
pasos destinados a cambiar de columna, es decir a situar al robot en disposición de
recoger la siguiente columna.

El documento que tenemos que crear se llamará: actividad_sesion_1.odt, el cual


subiremos al enlace del Moodle de la Sesión que dice: Entrega Actividad Obligatoria
Sesión 1.

Página 15
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

3.- Variables
En este punto vamos a introducir y explicar el concepto de variable aplicado al
Diseño de Algoritmos. Las variables son unos elementos que utlizan todos los
lenguajes de programación, de manera, que el introducirlas en este momento nos
ayudará a entender mejor y de forma más fácil su manejo cuando abordemos el lenguaje
de programación python.

Podemos definir una variable como un objeto o elemento que nos permite
almacenar información. Todas las variables tienen un nombre que las identifica y
permite distinguirlas del resto de variables. Para poder entender mejor este concepto,
podemos representar gráficamente una variable como una caja o compartimento
con un nombre que nos permite almacenar información.

Nombre Variable

Contenido de la variable

En un algoritmo o en un programa podemos tener tantas variables como necesitemos.

Nombre Variable 1 Nombre Variable 2 Nombre Variable N

Contenido de la variable 1 Contenido de la variable 2 ... Contenido de la variable N

Evidentemente la utilidad de las variables no consiste sólo en almacenar


información, esta se almacena para poder luego ser consultada, procesada,
visualizada, etc.

Por ejemplo, una de las formas que tenemos de almacenar un valor en una variable lo
tenemos cuando un usuario introduce un valor por teclado y este es asignado a una
variable. En el algoritmos de la suma de 2 números, tenemos un ejemplo de esto en el

Página 16
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

paso Leer numero1, tal y como podemos ver:

INICIO
Visualizar: "Introduce el primer número"
Leer numero1
...
FIN

Al llevar a cabo el paso Leer numero1, podemos considerar que el valor introducido por
teclado se almacena en la variable numero1. Si el usuario ha tecleado un 5, tendremos
dentro de la caja o compartimento representado por la variable con el nombre numero 1,
un 5.

numero1

Una vez almacenado este valor podemos utilizarlo posteriormente para procesarlo,
por ejemplo siguiendo con el algoritmo para realizar la suma de 2 números.

Calcular suma, suma = numero1 + numero2

El valor contenido en la variable numero1, es utilizado o consultado en la expresión


que calcula la suma, tal y como podemos ver. Este ejemplo también nos sirve para
comentar que otra de las formas para almacenar información en una variable, es a
través de una expresión.

Si suponemos que el contenido de la variable numero1 es 5 y el contenido de la variable


numero2 es 4, después de realizar la expresión aritmética de la suma, el contenido de la
variable suma será 9, tal y como podemos ver en la imagen de la siguiente página.

Página 17
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

suma numero 1 numero 2

9 5 + 4
=

A continuación, vamos a ver otra forma de consultar el valor de una variable.


Recordemos la ampliación del algoritmo de la suma de los 2 números, cuando teníamos
que realizar las 3 operaciones restantes: resta, multiplicación y división. Bien, en el caso
de la división, recordemos que teníamos que preguntar si el número 2 era distinto de cero
para poder realizar la división:

INICIO numero2
...
Si numero2 es distinto de 0 4
...
Si No
...
Fin Si
...
FIN

La flecha que se ha mostrado arriba y que va desde el compartimento que representa


la variable hacia la estructura condicional, intenta representar la consulta que se
realiza desde el algoritmo, para preguntar en este caso si el valor almacenado en la
variable numero2, es distinto de 0.

Por último, cuando queremos visualizar el resultado de la suma en el algoritmo,


empleábamos el paso:
INICIO
...
Visualizar resultado_suma

Página 18
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

...
FIN

En este caso, el contenido de la variable suma será visualizado por la pantalla, en la


siguiente imagen podemos apreciar esta idea:

resultado_suma

9 9

La idea es que tanto a la hora de procesar una variable en una expresión, en la consulta
en una expresión condicional o bien a la hora de visualizar el contenido de la misma,
vemos que al utilizar símplemente el nombre de la variable, implica que estamos
accediendo a su compartimento para recuperar su valor.

Una cuestión importante que tenemos que resaltar, relacionada con las variables, se
refiere al nombre que empleamos para hacer referencia a las mismas. Los nombres de
las variables deben de ser identificativos, esto quiere decir que el nombre debe estar
relacionado o debe tener que ver con la información que almacenan. Por ejemplo, no
hubiera tenido mucho sentido nombrar a las variables que almacenan los números 1 y 2,
x e y ó a y b. Lo más sensato es emplear los nombres numero1 y numero2 u operando1 y
operando2. Estos nombres (numero1 y numero2 u operando1 y operando2) ya nos dan
una idea de cual es contenido que almacenan.

Aunque los ejemplos que hemos vistos hasta ahora, las variables sólo almacenan
números, en cambio pueden almacenar cualquier tipo de información: cadenas de
texto, carácteres, fechas, datos de tipo booleano, etc.

Aunque en el diseño de algoritmos no hace falta que seamos estrictos con la notación
empleada a la hora de utilizar nombre de variables, sin embargo es conveniente que
tengamos claras unas reglas básicas que serán de utilidad a la hora de utilizar las

Página 19
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

variables en el lenguaje de programación python. Es conveniente que no utilicemos


espacios en blanco a la hora de referirnos al nombre de una variable. Por ejemplo, si
tenemos que emplear una variable para almacenar el resultado de la suma, podemos
emplear los nombres: resultado_suma, rdo_suma o símplemente suma, en lugar de
resultado suma.

Tampoco debemos de utilizar carácteres raros como acentos, signos de


exclamación, interrogación, etc. Por ejemplo, en lugar de emplear como nombres de
variables número 1 ó número 2, emplearemos: numero1 y numero2 ó bien numero_1
y numero_2.

Actividad Voluntaria Variables I: Modificación Algoritmo Recogida Campo Lechugas


Vamos a modificar este algoritmo para introducir la utilización de variables, en
concreto lo que vamos a incorporar es que tendremos que contabilizar tanto las
lechugas que vamos cogiendo, como las lechugas que se quedan sin coger. Una vez
que hayamos recogido todo el campo, tendremos que informar o visualizar el número
de lechugas que hemos cogido, el número de lechugas que se han quedado sin
coger y el número total de lechugas que había incialmente en el campo.

Los nombres que podemos utilizar para las variables son:


num_lechugas_cogidas, num_lechugas_por_coger y num_total_lechugas

En programación, es habitual tener que inicializar o poner un valor inicial a las variables el
cual normalmente será cero, sobre todo cuando estamos contabilizando un determinado
número de objetos o cosas. En el ejemplo que nos ocupa tendríamos que inicializar las
variables que almacenarán el número de lechugas cogidas y el número de lechugas que
quedan por coger. En el caso de los algoritmos la notación que podemos emplear es:
incializa num_lechugas_cogidas a 0

o bien si queremos acercarnos ya a la notación empleada por los lenguajes de


programación, podemos emplear:
num_lechugas_cogidas = 0

Página 20
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

En programación, también es muy habitual tener que incrementar o decrementar en una


determinada cantidad, el valor almacenado en una variable. Por ejemplo, cuando tenemos
que contabilizar una determinada cantidad de objetos o elementos. En esta ampliación
nos pasaría esto con num_lechugas_cogidas y num_lechugas_por_coger. La forma
de indicar por ejemplo que queremos incrementar en 1 el número de lechugas cogidas
sería:
...
Incrementa en 1 num_lechugas_cogidas
...

Ahora bien, si empleamos la notación pensando ya en un lenguaje de programación,


tendríamos la siguiente expresión:
...
num_lechugas_cogidas = num_lechugas_cogidas + 1
...

Esta expresión que matemáticamente es incorrecta, sin embargo es muy habitual en


programación, cuando queremos incrementar el valor de una variable en un valor
que en este caso será la constante 1. La explicación es la siguiente, al valor que tuviera
almacenado la variable se le suma 1 y se vuelve a almacenar en la variable.
Por ejemplo, antes de realizar la operación de incremento, el valor almacenado en la
variable es 3, tal y como podemos ver:

num_lechugas_cogidas

se realiza la operación: num_lechugas_cogidas = num_lechugas_cogidas + 1


Posteriormente el valor almacenado en la variable será 4, tal y como podemos ver:

num_lechugas_cogidas

4
Página 21
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

La solución a esta actividad planteada, estará colgada en el Moodle con el nombre:


Solución Actividad Voluntaria Variables I - Recogida Campo Lechugas

Actividad Voluntaria Variables II: Modificación Algoritmo Recogida Campo


Lechugas
Podemos suponer que las modificaciones de esta actividad las vamos a realizar sobre la
base de que hemos realizado la actividad voluntaria anterior. Vamos a incorporar que el
depósito con el que cuenta el robot para guardar las lechugas tiene una capacidad
determinada, de manera que esta capacidad será introducida por el usuario al
principio antes de que el robot se ponga a recoger el campo. Podemos llamar a esta
variable capacidad_deposito.
Antes de meter una lechuga en el depóstio, debemos de tener en cuenta si cabe, es decir
si el número de lechugas existentes en el depósito (num_lechugas_deposito) es menor
que la capacidad del depósito. Es decir, tenemos que comparar el valor de las variables
num_lechugas_deposito y capacidad_deposito.

En el caso de que el depósito este lleno, vamos a suponer que para vaciarlo, el robot
empleará la orden Vacía Depósito.

La solución a esta actividad planteada, estará colgada en el Moodle con el nombre:


Solución Actividad Voluntaria Variables II - Recogida Campo Lechugas

Página 22
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

4.- Módulos
Los módulos son uno de los elementos con los que cuenta la programación
estructurada, que nos permiten dividir un problema en partes más pequeñas, cada
una de las cuales realizará una tarea específica, que contribuye a resolver el problema
global. Otra característica importante consiste en la reutilización funcional que presentan
estos módulos, de manera que a la hora de resolver el problema global, cada vez que
necesitemos hacer uso de las prestaciones que lleva a cabo un determinado Módulo,
no tendremos nada más que invocarlo o llamarlo.
En los lenguajes de programación, normalmente este tipo de elementos se sitúan en una
zona digamos “reservada” que suele ubicarse físicamente, antes de lo que se conoce
como programa principal. Por tanto, nosotros a la hora de utilizar los Módulos en los
algoritmos, también los ubicaremos antes del Algoritmo Principal.

Podemos ubicar en esta zona tantos Módulos como necesitemos a la hora de resolver el
problema en cuestión.

Ejemplo:
MODULO Modulo_1
Paso 1
….
Paso N
Fin MODULO_1

INICIO
Paso 1 Algoritmo General
Modulo_1 Invocación del Modulo_1

Paso n Algoritmo General

Modulo_1
Paso m Algoritmo General Invocación del Modulo_1
Modulo_1

Página 23
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

...
FIN

En el ejemplo anterior, hemos definido un nuevo Módulo con el nombre Modulo_1, de


manera que luego en el Algoritmo Principal lo hemos utilizado o invocado 3 veces.
Además, una de las ventajas muy notables que presenta esta forma de trabajar con
Módulos, es la reutilización de los recursos. De manera que el conjunto de pasos que
forman un determinado Módulo sólo se escriben una vez y posteriormente se utilizan
tantas veces como se necesiten, con tan sólo hacer referencia a su nombre.

Los lenguajes de programación también se refieren a estos elementos, como


funciones, procedimientos, rutinas, etc, pero la idea es similar.

Un ejemplo muy claro en el que se puede aplicar con éxito, la utilización de los Módulos
es en el Algoritmo de la recogida del campo de lechugas. Si pensamos en que cada vez
que el robot tiene que girar a la derecha, debe de realizar siempre los 3 pasos siguientes:
gira izquierda
gira izquierda
gira izquierda

Parece evidente que es necesario crear el Módulo GIRA_DERECHA, el cual podríamos


definir de esta manera.
Módulo GIRA_DERECHA
gira izquierda
gira izquierda
gira izquierda
Fin GIRA_DERECHA

En la resolución del Algoritmo de la recogida del campo, será necesario en múltiples


ocasiones que el robot gire a la derecha, por tanto esta clara la ventaja de incorporar este
nuevo Módulo.

Página 24
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

Actividad Voluntaria Módulos I: Modificación Algoritmo Recogida Campo Lechugas


Se trata de incorporar a la resolución del Algoritmo la utilización de Módulos, de manera
que por una parte incluiremos el Módulo que hemos comentado anteriormente
GIRA_DERECHA y por otra añadiremos un nuevo Módulo que se encargará de realizar
los pasos destinados a poder cambiar de columna, cuando el robot ha finalizado de
recoger una columna. A este nuevo Módulo podemos llamarle por ejemplo
CAMBIA_COLUMNA.

La solución a esta actividad planteada, estará colgada en el Moodle con el nombre:


Solución Actividad Voluntaria Módulos I - Recogida Campo Lechugas

Página 25
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

5.- Fases en la Creación de un Programa


Los pasos necesarios para poder crear un programa, podemos representarlos en el
siguiente esquema:

QUÉ ANÁLISIS

COMO DISEÑO

ASÍ IMPLEMENTACIÓN

Las 3 principales fases que podemos distinguir para crear un programa son: Análisis,
Diseño e Implementación, también las podemos asociar con 3 palabras: Qué, Como,
Así.

ANÁLISIS (QUÉ): En esta fase, como indica la palabra asociada, se especifica qué es lo
que debe de hacer el programa, es decir los requisitos que tiene. Normalmente estos
requisitos se especifican mediante un documento textual en el se indican las
funcionalidades que debe presentar el programa, al cual se le conoce con el nombre de
Análisis de Requisitos. Esta fase tiene una complejidad inherente, puesto que muchas
veces la persona que hace el análisis no capta la totalidad de funcionalidades y
características que debe tener el programa. De manera que el programa resultante no
cumple las necesidades reales. Este no es ni mucho menos el objetivo del curso, de
manera que el Análisis siempre será proporcionado y consistirá en un enunciado
relativamente sencillo.

Página 26
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

DISEÑO (COMO): Una vez que tenemos claro qué es lo que debe hacer el programa,
este paso trataremos de indicar Cómo conseguir que el programa resultante lleve a cabo
las funcionalidades que se plantean. La forma de hacerlo es a base del Diseño de
Algoritmos, tal y como hemos visto en la documentación de esta sesión y del empleo de
herramientas gráficas como los organigramas.

IMPLEMENTACIÓN (ASÍ): Una vez que hemos visto como vamos a resolver el problema,
en esta fase vamos a realizar el proceso de traducción de los pasos establecidos en
un algoritmo o en un organigrama, a un determinado lenguaje de programación,
puesto que al final el programa tendrá que ejecutarse en un ordenador. Una de las
decisiones que debemos de tomar en esta fase, es el lenguaje de programación que
vamos a utilizar.

Podemos ampliar un poco más esta visión tan resumida, a la hora de establecer las fases
que tenemos que realizar para crear un programa, contemplando 2 fases más:
Compilación y Ejecución y Prueba. De manera que así podemos cerrar un bucle en lo
que se refiere a las fases de creación de un programa, tal y como podemos ver en el
esquema de la siguiente página.

Podemos volver a enumerar los pasos que se necesitan para la creación de un programa,
de la siguiente manera:
1.- Análisis de Requisitos, en esta fase tratamos de averiguar qué es lo debe hacer
el programa o cuales son las necesidades que tenemos. Normalmente los requisitos
vendrán especificados de forma textual en un documento.

2.- Diseño del algoritmo, el cual describe la secuencia ordenada de pasos que nos
llevan a la solución de un problema dado. Se puede utilizar un lenguaje textual
(natural) o alguna herramienta gráfica mediante la utilización de organigramas.

3.- Codificación / Implementación del programa en un lenguaje de programación,


para obtener lo que se llama el programa fuente. Esta fase, al igual que las 2
siguientes la realizaremos en la Siguiente Sesión, cuando veamos el lenguaje de

Página 27
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada

programación Python.

4.- Compilación o Comprobación de Errores, a partir del programa fuente (el que
nosotros escribimos), mediante el proceso de compilación, se genera el programa
objeto que es el que se ejecuta en el ordenador. En la siguiente figura, podemos
apreciar un esquema de este proceso:

Este paso puede implicar realizar varias tareas, ya que si se detectan errores no se
generará el programa objeto. En este caso, el compilador informará de la lista de
errores y el programador deberá corregirlos, realizando las correcciones oportunas en
el código fuente. Repetiremos este paso hasta que no exista ningún error.

5.- Ejecución y Prueba del programa para comprobar si el resultado al ejecutar el


programa es correcto, es decir para ver si el programa hace lo que esperamos. Esta
fase puede ocasionar que tengamos que volver atrás, en el proceso de creación de
programa, en concreto al paso 2, puesto que si el programa no hace lo que
queremos tendremos que volver a rediseñar el algoritmo.

Página 28