Professional Documents
Culture Documents
Este documento forma parte del curso Programación con Python del CEFIRE CTEM.
ÍNDICE
3.- Variables
4.- Módulos
Página 1
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
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.
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.
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
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:
Página 3
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
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
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
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.
Página 5
Curso de Programación en Python – Sesión 1: Introducción a la Programación 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
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
Paso 1 Paso 1
… …
Paso N Paso N
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:
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.
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.
Página 10
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
2. Leer numero1
3. …
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.
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
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
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.
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
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
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.
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
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
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.
Página 17
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
9 5 + 4
=
INICIO numero2
...
Si numero2 es distinto de 0 4
...
Si No
...
Fin Si
...
FIN
Página 18
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
...
FIN
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
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
Página 20
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
num_lechugas_cogidas
num_lechugas_cogidas
4
Página 21
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
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.
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
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
Página 24
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Página 25
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
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.
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.
Página 28