Sesion 1
Sesion 1
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
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 de 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, que 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 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
Para realizar todas las actividades de esta sesión, tan solo necesitamos disponer de un
procesador de textos.
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
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.
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
Página 4
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Mientras …
Paso 1 del Mientras
Conjunto de Pasos que sólo se llevan a cabo
…
mientras la respuesta a la pregunta es cierta
Paso N del Mientras
Fin Mientras
En este caso Mientras la respuesta a la pregunta sea cierta, se van a ir 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.
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:
Esta estructura finalizará cuando la respuesta a la pregunta del Mientras sea falsa.
Página 5
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Programa => es similar a un algoritmo. La diferencia radica en que los pasos que han
de resolver un problema deben 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 6
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Estos tres 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
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 utilizan cuando tenemos que llevar a cabo
unas acciones o pasos, uno detrás del otro. Otra característica es que se realizan todos
los pasos sin que dependan de ninguna condición. A continuación podemos ver un
ejemplo:
16. Poner cafetera en el fuego
17. 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 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
Página 7
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Como podemos ver, el bloque de pasos del Si y el bloque de pasos del Si No son
excluyentes, es decir, o se realiza uno o se realiza el otro pero nunca los dos en la
misma situación.
Ejemplo:
7. Si el depósito está lleno
7.1 Vaciar depósito
8. Fin Si
Iteración
Este elemento nos permite repetir un bloque de acciones o pasos, podemos distinguir dos
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
Página 8
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Las estructuras repetitivas fijas, por el contrario, las utilizamos cuando sí que
conocemos a priori cuantas veces tenemos que repetir los pasos. Para representar este
tipo de estructuras repetitivas se suelen emplear dos notaciones diferentes, aunque las
dos son compatibles.
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. En cambio, la segunda forma es más
genérica.
Ejemplo: Suponemos que tenemos un número determinado de vasos, en este caso 10,
dentro de un lavavajillas. Los vasos están limpios y tenemos que sacarlos y guardarlos.
Las acciones para realizar esta tarea, utilizando las dos variantes, serían las siguientes:
Página 9
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Para resolver un problema vamos a poder combinar estos tres elementos de la forma
y modo que necesitemos. Es decir, podemos anidar un elemento dentro de otro,
siempre y cuando el anidamiento sea correcto.
Por ejemplo, los siguientes fragmentos de algoritmos no serían correctos porque las
estructuras condicionales e iterativas no están bien anidadas.
Página 10
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
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 dos actividades para crear dos algoritmos. El
objetivo es poder disponer de material suficiente para practicar y familiarizarnos con todos
los conceptos vistos hasta ahora. No son tareas obligatorias pero pueden servirnos para
tener recursos de apoyo a la hora de asimilar bien los conceptos.
A continuación se adjuntan los enunciados de los dos algoritmos. Las soluciones a estos
algoritmos se encuentran en los siguientes documentos: Solución Algoritmo Apertura
Puerta.pdf y Solución Algoritmo Suma Numeros.pdf.
Página 11
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Suponemos que todas las llaves entran en la cerradura pero, evidentemente, no todas la
pueden abrir.
Ampliación 1:
Ahora una vez introducidos los 2 números, se calcularán y visualizarán las tres
operaciones aritméticas restantes: resta, multiplicación y división.
Sabemos que el campo cuenta con diez columnas pero no sabemos cuantas
lechugas maduras hay en cada columna, es decir, habrá un número indeterminado de
Página 12
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Suponemos que todas las columnas cuentan con el mismo número de lechugas.
A continuación, podemos ver el aspecto que presenta el campo y que está orientado en
dirección Norte-Sur.
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
Col. 1 Col. 2 Col. 3 Col. 4 Col. 5 Col. 6 Col. 7 Col. 8 Col. 9 Col. 10
Página 13
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Las órdenes que conoce el robot son las que se recogen en la siguiente tabla:
ORDEN DESCRIPCIÓN
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.
PREGUNTA DESCRIPCIÓN
Hay Lechuga El robot es capaz de determinar si en la posición sobre la que
se encuentra existe una lechuga.
Esta la Lechuga Madura El robot es capaz de determinar si en la posición sobre la que
se encuentra existe una lechuga madura.
Es Dirección Norte El robot es capaz de determinar si se encuentra orientado en
dirección norte.
Es Dirección Sur El robot es capaz de determinar si se encuentra orientado en
dirección sur.
Es Dirección Este El robot es capaz de determinar si se encuentra orientado en
dirección este.
Es Dirección Oeste El robot es capaz de determinar si se encuentra orientado en
dirección oeste.
Página 14
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Suponemos que cuando el robot sale del campo, o bien 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 lel robot, vamos a poder formulárselas de forma
parecida a los siguientes ejemplos:
La actividad consiste en diseñar un algoritmo con las órdenes adecuadas para que el
robot recoja todas las lechugas maduras del campo.
INICIO
…
Mientras ...
… Recogida de una columna
Fin Mientras
…
FIN
Página 15
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Una vez que tenemos resuelta la recogida de una columna vamos a centrarnos en
recoger todo el campo.
Recordemos que el campo cuenta con diez columnas y que todos los pasos empleados
para recoger una columna tenemos que repetirlos diez veces. Queda claro que tenemos
que emplear una estructura repetitiva. La diferencia respecto a las estructuras repetitivas
que hemos empleado en las actividades que hemos visto anteriormente ( estructuras
repetitivas variables) es que en esta ocasión sí que conocemos a priori cuantas veces
tenemos que realizar la repetición (10).
La solución completa a la recogida del campo debería tener una estructura semejante a
ésta:
INICIO
REPETIR 10 VECES
…
Mientras …
... Recogida de una columna Recogida de todo el campo
Fin Mientras
Pasos para cambiar de columna
FIN REPETIR
FIN
Página 16
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Podemos apreciar como, después de recoger una columna, se tienen que encontrar los
pasos destinados a cambiar de columna. Es decir, debemos situar al robot en disposición
de recoger la siguiente columna.
Página 17
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
3.- Variables
Las variables son unos elementos que utilizan todos los lenguajes de
programación. Explicarlas en este momento nos ayudará a entender mejor 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
alguna información.
Nombre Variable
Contenido de la variable
Página 18
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Por ejemplo, una de las formas que tenemos de almacenar un valor en una variable lo
podemos ver cuando un usuario introduce un valor por teclado y éste es asignado a una
variable. En el algoritmo de la suma de dos números tenemos un ejemplo de esto en el
paso Leer numero1, tal y como podemos ver a continuación:
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 numero1,
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.
Este ejemplo también nos sirve para explicar que otra de las formas para almacenar
información en una variable es a través de una expresión.
Página 19
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 20
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
INICIO
...
Visualizar resultado_suma
...
FIN
En este caso, el contenido de la variable suma será visualizado por la pantalla, como
podemos apreciar en la siguiente imagen:
resultado_suma
9 9
La idea es que, tanto a la hora de procesar una variable en una expresión, como en la
consulta en una expresión condicional o a la hora de visualizar el contenido de la misma,
utilizar simplemente 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 con la información que almacena.
Por ejemplo, no hubiera tenido mucho sentido nombrar a las variables que almacenan los
números 1 y 2 como x e y o a y b. Lo más sensato es emplear los nombres numero1 y
numero2 u operando1 y operando2. Estos últimos nombres ya nos dan una idea de cual
es el contenido que almacenan.
Aunque en los ejemplos que hemos vistos hasta ahora las variables sólo almacenan
números, podría n almacenar cualquier tipo de información: cadenas de texto,
caracteres, fechas, datos de tipo booleano, etc.
Página 21
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
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 establecer el nombre de las
variables en el lenguaje de programación Python.
• No utilizar espacios. Por ejemplo: si tenemos que emplear una variable para
almacenar el resultado de la suma, podemos emplear los nombres
resultado_suma, rdo_suma o simplemente suma, en lugar de resultado suma.
• No utilizar 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 o bien numero_1 y numero_2.
Una vez que hayamos recogido todo el campo, tendremos que 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 inicialmente en el campo.
En programación es habitual tener que inicializar o poner un valor inicial a las variables
que vamos a utilizar. Para las variables numéricas dicho valor inicial suele ser el cero,
sobretodo cuando estamos contabilizando un determinado número de cosas.
En nuestro ejemplo 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.
Página 22
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
num_lechugas_cogidas
Página 23
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
num_lechugas_cogidas
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 guardar una lechuga en el depósito debemos 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 mismo. En otras palabras, tendremos que comparar el valor de las
variables num_lechugas_deposito y capacidad_deposito.
En el caso de que el depósito esté lleno, vamos a suponer que para vaciarlo, el robot
empleará la orden Vacía Depósito.
Página 24
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 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.
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 Principal
Modulo_1 Invocación del Modulo_1
…
Paso n Algoritmo Principal
…
Página 25
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Modulo_1
Paso m Algoritmo Principal Invocación del Modulo_1
Modulo_1
...
FIN
Un ejemplo muy claro en el que se puede aplicar con éxito es la utilización de los módulos
en el algoritmo de la recogida del campo de lechugas.
Si pensamos que, cada vez que el robot tiene que girar a la derecha, debe de realizar
tres giros a la izquierda, parece evidente que es necesario crear el módulo
GIRA_DERECHA, que 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 será necesario que el robot gire a la derecha en múltiples
ocasiones, así que queda clara la ventaja de incorporar este nuevo módulo.
Página 26
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Página 27
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 tres principales fases que podemos distinguir para crear un programa son: Análisis,
Diseño e Implementación y las podemos asociar con tres palabras: Qué, Como y 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 que se indican las
funcionalidades que debe presentar el programa llamado 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.
Éste 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 28
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, en
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 que aparece más adelante.
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: 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 29
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 “de
escritura” 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 30
Curso de Programación en Python – Sesión 1: Introducción a la Programación Estructurada
Página 31