INTRODUCCIÓN A LA PROGRAMACIÓN. LENGUAJE · PDF file... al que se accede desde...

20
Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea INTRODUCCIÓN A LA PROGRAMACIÓN. LENGUAJE PYTHON. Antes de empezar. Para programar con Python en un entorno Linux tan sólo hace falta un editor de texto plano y abrir la consola (o terminal). Como editor de texto usaremos gedit, al que se accede desde el menú accesorios. La forma más sencilla de abrir la consola es usando la combinación de teclas Ctrl+Alt+t. Una vez que se nos haya abierto, nos deberemos situar en el directorio donde vayamos a grabar los programas que vayamos escribiendo, al que llamaremos Python. Los programas que escribamos los grabaremos con la extensión .py. De esta forma, iniciaremos su ejecución de manera sencilla, sin más que teclear desde la terminal la orden: python3.2 nombre_del_programa.py Instalar python3.2. Si deseamos instalar python3.2 en un ordenador con un sistema operativo GNU-Linux lo más sencillo es abrir una terminal, teclear: sudo apt-get install python3.2 e introducir la contraseña de administrador. La descarga e instalación para windows o mac se puede encontrar en la página web https://www.python.org/download/releases/3.2/ Introducción a la programación Como ya se explicó en el primer tema, la CPU es el “cerebro” del ordenador, capaz de ejecutar acciones especificadas mediante secuencias de instrucciones. Estas secuencias de instrucciones configuran un programa. El problema es que los programas ejecutables por la CPU deben estar escritos en el lenguaje binario que entienden los ordenadores, llamado código máquina. Escribir un programa en código máquina es una tarea larga y muy complicada. Por ello, existen diferentes lenguajes de programación, que podemos definir como un sistema de notación que permite expresar programas en un lenguaje entendible por un humano, que luego serán traducidos (o compilados) al código máquina para poder ser ejecutados. Dado que el lenguaje que entiende cada procesador depende de su arquitectura, existen lenguajes llamados de alto nivel, ya que pueden ser usados con independencia del tipo de ordenador que se esté usando, realizando una traducción automática al lenguaje propio del procesador que se esté usando. Los lenguajes de alto nivel pueden ser de dos tipos, intérprete o traductores. En los lenguajes de tipo intérprete se va leyendo el programa instrucción a instrucción, y se va ejecutando cada una de ellas inmediatamente después de traducirla. Por lo tanto, los procesos de traducción y ejecución son simultáneos, y la traducción se realiza cada vez que se ejecute un programa. Los lenguajes de tipo traductor cuentan con un compilador que traduce todo el programa a código máquina y genera un archivo ejecutable, de tal forma que la traducción sólo se realiza una vez. En general, los intérpretes son bastante más lentos en la ejecución, pero mucho más flexibles en la escritura, lo que los hace idóneos para iniciarse en la programación. Python es un programa de alto nivel tipo intérprete con una sintaxis sencilla, que puede orientarse a objetos. 1/20

Transcript of INTRODUCCIÓN A LA PROGRAMACIÓN. LENGUAJE · PDF file... al que se accede desde...

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

INTRODUCCIÓN A LA PROGRAMACIÓN. LENGUAJE PYTHON.

Antes de empezar.

Para programar con Python en un entorno Linux tan sólo hace falta un editor de texto plano y abrirla consola (o terminal).

Como editor de texto usaremos gedit, al que se accede desde el menú accesorios.

La forma más sencilla de abrir la consola es usando la combinación de teclas Ctrl+Alt+t. Una vezque se nos haya abierto, nos deberemos situar en el directorio donde vayamos a grabar losprogramas que vayamos escribiendo, al que llamaremos Python.

Los programas que escribamos los grabaremos con la extensión .py. De esta forma, iniciaremos suejecución de manera sencilla, sin más que teclear desde la terminal la orden:

python3.2 nombre_del_programa.py

Instalar python3.2.

Si deseamos instalar python3.2 en un ordenador con un sistema operativo GNU-Linux lo mássencillo es abrir una terminal, teclear:

sudo apt­get install python3.2

e introducir la contraseña de administrador.

La descarga e instalación para windows o mac se puede encontrar en la página webhttps://www.python.org/download/releases/3.2/

Introducción a la programación

Como ya se explicó en el primer tema, la CPU es el “cerebro” del ordenador, capaz de ejecutaracciones especificadas mediante secuencias de instrucciones. Estas secuencias de instruccionesconfiguran un programa.

El problema es que los programas ejecutables por la CPU deben estar escritos en el lenguaje binarioque entienden los ordenadores, llamado código máquina. Escribir un programa en código máquinaes una tarea larga y muy complicada. Por ello, existen diferentes lenguajes de programación, quepodemos definir como un sistema de notación que permite expresar programas en un lenguajeentendible por un humano, que luego serán traducidos (o compilados) al código máquina para poderser ejecutados.

Dado que el lenguaje que entiende cada procesador depende de su arquitectura, existen lenguajesllamados de alto nivel, ya que pueden ser usados con independencia del tipo de ordenador que seesté usando, realizando una traducción automática al lenguaje propio del procesador que se estéusando.

Los lenguajes de alto nivel pueden ser de dos tipos, intérprete o traductores. En los lenguajes de tipointérprete se va leyendo el programa instrucción a instrucción, y se va ejecutando cada una de ellasinmediatamente después de traducirla. Por lo tanto, los procesos de traducción y ejecución sonsimultáneos, y la traducción se realiza cada vez que se ejecute un programa.

Los lenguajes de tipo traductor cuentan con un compilador que traduce todo el programa a códigomáquina y genera un archivo ejecutable, de tal forma que la traducción sólo se realiza una vez.

En general, los intérpretes son bastante más lentos en la ejecución, pero mucho más flexibles en laescritura, lo que los hace idóneos para iniciarse en la programación. Python es un programa de altonivel tipo intérprete con una sintaxis sencilla, que puede orientarse a objetos.

1/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

Algoritmos

Independientemente del lenguaje de programación usado, cuando un ordenador ejecuta unprograma, debe seguir una serie de órdenes encaminadas a conseguir un objetivo. Pero no basta conindicar más o menos cómo alcanzar dicho objetivo. Tenemos que decir al ordenador exactamentecómo realizar cada uno de los pasos, sin ningún tipo de ambigüedad, y en un tiempo finito.

Esa secuencia de pasos orientados a la consecución del objetivo es lo que se denomina algoritmo.

Como se expresan en lenguaje natural, los algoritmos presentan la enorme ventaja de que cadaprogramador puede traducirlos al lenguaje de programación que desee, ya que dos programasescritos en diferentes lenguajes que realicen el mismo algoritmo darán lugar al mismo resultado.Incluso es posible escribir dos programas diferentes con un mismo lenguaje que ejecuten el mismoalgoritmo.

En general, un algoritmo debe tener las siguientes características:

• Debe tener cero o más datos de entrada.

• Debe proporcionar al menos un dato de salida.

• Cada paso debe ser definido con precisión y sin ambigüedad.

• Debe finalizar tras realizar un número finito de pasos. Cada paso debe realizarse en untiempo finito.

• A ser posible, deben ser eficientes. Deben realizar el proceso en el menos número de pasosposibles y consumiendo la menor cantidad posible de recursos del sistema.

Es muy aconsejable emplear cierta cantidad de tiempo en usar lápiz y papel para escribir elalgoritmo mediante un diagrama de flujo antes de ponerse a programar, en vez de empezar a teclearinstrucciones en el ordenador. Esto nos puede ahorrar mucho tiempo y disgustos.

Operaciones aritméticas con Python

Si tecleamos en la consola la orden

python3.2

podremos interaccionar directamente con python, aprovechando que es un lenguaje intérprete. Esoquiere decir que si escribimos una línea de comando él responderá ejecutándola y mostrando elresultado. En ese momento, el prompt del bash ($) desaparece y se sustituye por

Python 3.2.3 (default, Jun 18 2015, 21:46:42) 

[GCC 4.6.3] on linux2 

Type "help", "copyright", "credits" or "license" for more information. 

>>> 

con el cursor parpadeando detrás de >>>. Podemos usar el lenguaje directamente como unacalculadora. Por ejemplo, si escribimos

>>>2+2

El programa devolverá

4

>>>

Los operadores aritméticos básicos (+, -, * y /) siguen las reglas de precedencias básicas. Así, la

2/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

operación

>>>3*(5+2)

devolverá

21

>>>

Además de las operaciones básicas, se definen la potenciación (**), el cambio de signo (-) y elmódulo o resto de una división (%).

Enteros y flotantes.

Python trabaja con dos formatos de números; enteros y flotantes. A un número entero no se leasignan decimales. Esto ahorra espacio en memoria y agiliza los cálculos. Pero puede ocurrir queoperaciones con enteros den números con decimales. En ese caso, correos el riesgo de que elprograma devuelva resultados incorrectos.

En ese caso, lo más conveniente es usar flotantes, que asignan siempre una parte decimal.

>>> 3

3

>>> float(3)

3.0

>>>

Python 3.2 trabaja por defecto con flotantes, pero en algunas versiones anteriores esto no ocurre,por lo que hay que comprobar antes de empezar a programar si tenemos o no que especificar quetrabajamos con números flotantes.

Números complejos

Python puede trabajar con números complejos. Basta con introducirlos con el siguiente formato:

>>> a = parte_real + parte_imaginaria j

Para hacer que nos devuelva la parte real tecleamos

>>> a.real

Y para la parte imaginaria

>>> a.imag

Por ejemplo, para introducir el número complejo 3+5·j teclearíamos

>>> a=3+5j 

Y para que nos devuelva las partes real e imaginaria:

>>> a.real 

3.0 

>>> a.imag 

5.0 

>>> 

Operadores lógicos.

Python también puede realizar las operaciones lógicas OR, AND y NOT. Como valores para operar,

3/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

se pueden usar indistintamente unos y ceros o True y False:

>>> 1 and 0

0

>>> True or False

True

>>> not 1

False

>>>

Operadores de comparación.

Los usaremos para comparar dos cifras. Son muy útiles en un programa, a la hora de tomardecisiones que dependan de los rangos de valores que puedan adquirir las variables. Si se usan en laterminal, devuelven un valor booleano. Son:

Operador Comparación

== Igual que

!= Distinto que

> Mayor que

>= Mayor o igual que

< Menor que

<= Menor o igual que

Variables

Cuando definimos una variable, asignamos un nombre y un valor inicial a un espacio de memoria,que queda reservado para almacenar los valores que pueda ir tomando la variable a lo largo de unprograma. Al crear una variable, siempre se le debe asignar un valor inicial.

Imaginemos que queremos calcular el perímetro de una circunferencia de radio 2,5 y el área delcírculo que crea. Como vamos a usar dos veces el valor del radio y otras dos el de , podemos creardos variables donde almacenemos estos valores, e incluso otras dos donde almacenemos los valoresdel perímetro y del área, para no volver a tener que calcularlos:

>>> pi = 3.14159

>>> radio = 2.5

>>> perimetro = 2*pi*radio

>>> area = pi*radio**2

>>> perimetro

15.70795

>>> area

19.6349375 

>>>

4/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

Si asignamos un valor diferente a una variable existente, ésta almacenará el último de los valores.

El nombre de una variable se llama identificador. No puede empezar por un número. Se pueden usarmayúsculas, minúsculas, números y el guión bajo (_). No se pueden usar palabras que Pythonreserve para comandos propios.

Cadenas

Las cadenas son secuencias de caracteres a los que se les asigna un nombre. Se definen entrecomillas, y resultan muy útiles para representar información textual:

>>> nombre = “Lord Vetinari”

>>> nombre

'Lord Vetinari'

>>>

Listas

Podemos crear listas en las que se contengan una serie de caracteres o de números. Se crean igualque una variable, pero introduciendo los elementos deparados por comas, dentro de corchetes [].

>>> lista_nombres = ["Vetinari", "Vimes"] 

>>> lista_nombres

['Vetinari', 'Vimes'] 

>>> 

Se puede operar con ellas, por ejemplo, añadiendo elementos:

>>> lista_nombres = lista_nombres + ["Angua"] 

>>> lista_nombres

['Vetinari', 'Vimes', 'Angua'] 

>>> 

La lista también puede ser de números. En ese caso, no hay que poner las comillas:

>>> numeros_pares = [2, 4, 6, 8, 10] 

>>> numeros_pares 

[2, 4, 6, 8, 10] 

>>>

y también se puede operar con ellos:

>>> numeros_pares = [2, 4, 6, 8, 10]

>>> numeros_pares = numeros_pares + [12, 14]

>>> numeros_pares 

[2, 4, 6, 8, 10, 12, 14] 

>>> 

Funciones predefinidas

Python tiene predefinidas una serie de funciones que podemos usar en las expresiones:

round()

Como hemos visto en un ejemplo anterior, Python no redondea los resultados. Podemos forzarle a

5/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

hacerlo, indicando el número de decimales que deseamos, usando la orden round():

>>> pi = 3.14159

>>> radio = 2.5

>>> perimetro = 2*pi*radio

>>> area = pi*radio**2

>>> round(perimetro,3)

15.708

>>> round(area,3)

19.635 

>>>

abs()

Devuelve el valor absoluto del número o variable que aparezca entre paréntesis.

int()

Devuelve la parte entera de la expresión entre paréntesis.

float()

Convierte un entero a flotante.

str()

Recibe un número y devuelve su conversión a cadena.

Módulos

Los módulos permiten importar funciones que no están directamente disponibles al iniciar unasesión. Entre ellos, el que más vamos a usar es el módulo math, que contiene funciones matemáticasusuales.

Si queremos cargar las funciones trigonométricas seno y coseno, teclearemos:

>>>from math import sin, cos, pi

También hemos importado el valor de , para no tener que introducirlo como variable cada vez quelo necesitemos, y porque las funciones trigonométricas en Python trabajan en radianes.

>>>sin(pi)

1.2246063538223773e­16 

>>>cos(pi)

­1

>>>

Como se puede ver, el valor de sen() no es 0. Esto es debido a que Python usa 16 decimales de .Podemos obligarle a mostrar un resultado redondeado a un decimal:

>>>round(sin(pi),1)

0.0

>>>

También podemos invocar todas las funciones del módulo math tecleando:

6/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

>>> from math import *

Pero esto ocupa memoria, por lo que es más útil importar solamente las funciones que vayamos anecesitar en nuestro programa.

Las funciones del módulo math son:

sin() Seno del ángulo expresado en radianes

cos() Coseno del ángulo expresado en radianes

tan() Tangente del ángulo expresado en radianes

exp() e elevado a x

ceil() Redondeo por arriba

floor() Redondeo por abajo

log() Logaritmo natural (neperiano)

log10() Logaritmo decimal

sqrt() Raíz cuadrada

PROGRAMAS.

Usar Python desde la consola, como hemos estado haciendo hasta ahora, es muy limitado. Esbastante más operativo crear un documento de texto en el que escribamos la secuencia deinstrucciones que ejecutará Python. El contenido de este fichero de texto será el programa.

Imaginemos que queremos escribir un programa para calcular el perímetro de una circunferencia deradio 2,5 y el área del círculo que encierra. Abriremos el editor gedit y escribiríamos el siguienteprograma, grabándolo con extensión .py.

Para ejecutarlo, abriríamos la terminal y desde el directorio en el que esté grabado el programa

teclearíamos:

$ python3.2 circulo.py

obteniendo la salida

15.708 

19.635

Obviamente, el programa presenta graves inconvenientes. Si queremos cambiar el valor del radiodebemos abrir el fichero, modificarlo y volverlo a grabar antes de ejecutarlo.

Para evitar eso, podemos decir al programa que pida el valor de la variable radio desde el teclado.Para ello, teclearíamos la siguiente línea de código (asegurándonos de que es flotante):

7/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

radio = float(input("Introduce el radio de la circunferencia: "))

Además, los resultados aparecen sin especificar cuál corresponde al perímetro y cuál al área.Podemos modificar el aspecto de la salida de datos de la siguiente forma:

print("El perímetro vale:",round(perimetro,3)) 

print("El área vale:",round(area,3)) 

El programa quedaría modificado de esta forma:

Al ejecutarlo desde la consola, aparecería el siguiente mensaje:

$ Introduce el radio de la circunferencia:   

Con el cursor parpadeando. El programa está esperando a que el usuario introduzca el datosolicitado. Al hacerlo, se ejecutarían las siguientes líneas del código, obteniendo:

El perímetro vale: 15.708 

El área vale: 19.635

$

Como vemos, la sintaxis de la orden print() permite combinar texto con variables, separando concomas (,) los diferentes componentes de lo que queramos que aparezca impreso. Es muy importanterecordar que lo que queremos que aparezca como texto debe ir entrecomillado. Si no, el programalo tomará como una variable. Dado que no se ha definido ninguna con ese nombre en el programa,nos devolverá un error. Muchas veces los programas llevan órdenes print más o menos complicadasal final de los mismos, para mostrar los resultados finales al usuario. Como Python es un programaintérprete, no detectará posibles errores en la sintaxis hasta que llegue a esas líneas de código, cosaque puede ocurrir después de llevar varios minutos ejecutando el programa. Como esas situacionessuelen ser motivo de ira homicida por parte del programador, es muy recomendable examinarcuidadosamente la sintaxis de todas las líneas de código que vayamos escribiendo.

Para mejorar la legibilidad de los programas, puede ser conveniente separar mediante líneas enblanco los diferentes bloques funcionales del programa: importar módulos, introducción de datos,operaciones con esos datos, salida de datos, etc.

También es conveniente asignar nombres a las variables que ofrezcan información sobre la utilidadde dicha variable en el programa. Así, es mejor usar una variable llamada “radio” que una llamadasimplemente “r” para manejar el radio de la circunferencia.

Además, Python permite introducir comentarios en el programa. Que sirvan como aclaraciones paraque el lector pueda comprender su funcionamiento con más facilidad. Se inician con unaalmohadilla (#). Todo lo que se escriba a continuación en esa línea será ignorado por Python.

8/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

Condicionales

En multitud de ocasiones nos encontraremos con que el programa tendrá que ejecutar una serie deinstrucciones u otras dependiendo de que se cumpla o no una o varias condiciones. Como en casitodos los lenguajes de programación, Python cuenta con la orden if, cuya estructura es:

if condición:

    acción

    acción

    …

    acción

else:

    acción

    acción

    …

    acción

Si se cumple la condición (o condiciones, usando funciones booleanas) marcada detrás de if, seejecutarán todas las acciones situadas debajo de la línea e indentadas (o sangradas) al mismo nivel.En el momento en que se encuentre una orden que no presente sangría, el programa interpreta queya no pertenece a la serie de acciones a ejecutar si se cumple la condición if. Si el no cumplimientode las condiciones bajo if lleva a otras acciones se pueden añadir bajo la orden else:

Es importante tener en cuenta que la línea de código en la que se encuentren las sentencias if y elsedebe finalizar con dos puntos (:).

Por ejemplo, imaginemos que queremos escribir un programa que solicite al usuario dos númerosque dividiremos. El problema es que si se introduce un cero en el denominador el programadevolverá un error de división entre cero, parándose la ejecución. En ese caso, podríamos obligar alprograma a comprobar si el denominador es nulo.

9/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

Con la sentencia if den == 0: se comprueba si el denominador es nulo. En caso de que se cumpla lacondición, se ejecuta la serie de instrucciones (en este caso sólo una) que estén situadas debajo conla misma indentación. A continuación de else: se ejecutan las órdenes que debe realizar el programaen caso de que no se cumpla la condición, también con la indentación correspondiente.

Podemos refinar el programa algo más. Puede ocurrir que se dé el caso de que se introduzcan cerostanto en el numerador como en el denominador, lo que daría lugar a una indeterminación. En estaocasión, que el denominador sea cero no lleva a una única acción, sino que hay que introducir unasegunda sentencia if anidada respecto a la primera. Podríamos hacerlo de dos formas: con unatercera sentencia if con al misma indentación que la segunda o con un else referido al segundo if:

También puede ocurrir que el programa deba elegir entre más de dos opciones. Imaginemos, comoejemplo, un programa para saber si una cifra introducida por el usuario es positiva, negativa o nula.Habría que comprobar cada uno de los casos por separado. En primer lugar, podríamos comprobarsi es nula. Si no lo es, comprobaríamos si es positiva. Si no es ni nula ni positiva, entonces esnegativa.

Una opción es usar la sentencia elif: (abreviatura de else if), que siempre debe ir precedida por unasentencia if:. En esencia, lo que hace más o menos es “En caso de que no se cumpla la condición delprimer if, comprobar si se cumple esta otra). De esta forma, el programa quedaría:

10/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

En este caso concreto, no haría falta un segundo elif:, ya que, al no haber más posibilidades,podemos finalizar con una sentencia else:.

También podemos comprobar que se cumplen dos condiciones simultáneas o una de varias usandolos operadores lógicos and y or:

if i == 1 and j == 2:

Ejecutaría las instrucciones correspondientes si se cumple a la ve que i sea 1 y j 2.

if i == 1 or j == 2:

Bastaría con que una de las dos condiciones fuese cierta.

While

Python ofrece dos formas de repetir una secuencia de instrucciones sin necesidad de volverla aescribir, formando lo que se denominan bucles: while y for-in. De la sentencia for hablaremos másadelante. En este apartado nos centraremos en la while. En esencia, se interpreta “mientras secumpla esta condición, realiza estas acciones:”

while condición:

    acción

    acción

    …

    acción

En el ejemplo de la izquierda, le decimos al programa que vaya imprimiendo elvalor de la variable i mientras siga siendo menor que 5. Cada vez que laimprimamos, le aumentaremos su valor en 1. Cuando alcance el valor 5, dejará decumplirse la condición, saldremos del bucle y ejecutaremos el resto del programa,que en este caso consiste solamente en un mensaje impreso en pantalla.

Los bucles son muy prácticos, pero hay que ser un poco cuidadoso con ellos, yaque corremos el riesgo, si los programamos mal, de convertirlos en infinitos. Sieso ocurre, no podremos recuperar el control si no es parando el programa desde elteclado (ctrl+D).

Si en el ejemplo de la izquierda nos olvidamos de aumentar el valor de i en unocada vez que se ejecute el bucle, nunca saldremos de él, ya que i siempre valdrá 0.

Por tanto, nunca se cumplirá la condición que nos saca del bucle.

While también puede resultar muy útil para controlar la entrada de un dato incorrecto sin necesidadde acudir a una sentencia if. Supongamos que queremos calcular la raíz cuadrada de un número. El

11/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

programa responderá con un error si la cifra introducida es negativa. El control se puede realizar deun modo muy sencillo de la siguiente forma:

Bucle for-in

Es la otra manera de realizar bucles. La forma de emplearlo es:

for variable in serie de valores:

    acción

    acción

    …

    acción

Veamos cómo funciona mediante un ejemplo. Supongamos que queremos imprimir en pantalla los10 primeros números enteros. Escribiríamos el siguiente código:

for i in range (1, 11):

    print (i)

El ordenador interpreta que la variable i va a tomar todos los valores enteros comprendidos en elrango entre el primero que se especifique y el anterior al último, y los irá imprimiendo por orden.

En parámetro range admite un tercer elemento, que indicaría el incremento. Por defecto, elincremento es 1. Es decir, para obtener el siguiente término en un rango se le suma 1 al anterior. Siquisiéramos imprimir los números pares que hay entre el 2 y el 10 escribiríamos:

for i in range (2, 11, 2):

    print (i) 

Como la orden for-in acaba en :, se exige que las líneas de códigoafectadas estén indentadas.

En el ejemplo de la izquierda, vemos que el programa tiene dos buclesfor-in. En ambos se van a imprimir los números pares comprendidosentre 2 y 6. También se imprimirá un nombre que hayamos introducidoa través del teclado.

En el primer caso, la orden de imprimir el nombre no tiene indentación.Por lo tanto, no se considera parte del bucle y se imprimirá después deque en pantalla aparezcan los números 2, 4 y 6.

En el segundo caso la orden print (nombre) se ha escrito con sangría,por lo que se considera parte del bucle. El programa considera que hay

que imprimir alternativamente una cifra par y el nombre que se haya introducido a través del

12/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

teclado; y se seguirá ejecutando el programa hasta que la variable j haya alcanzado el último valorespecificado en el rango. La salida del programa quedaría:

Nombre: Vetinari 

Vetinari 

Vetinari 

Vetinari 

Vetinari 

$

Si queremos una cuenta decreciente, introduciríamos en primer lugar el número mayor, en segundoel anterior al menor y un incremento negativo (decremento).

También podemos definir un for-in que contenga una cadena de caracteres o números (una lista):

for i in [“Vetinari”, “Vimes”, “Angua”]:

    print (i)

En pantalla aparecerían sucesivamente los nombres en el corchete.

Se pueden anidar bucles unos dentro de otros. La única limitación es que no podemos asignar elmismo nombre a dos variables diferentes.

Variables Booleanas

Las variables booleanas pueden adoptar dos valores, True o False, y sobre ellas se pueden aplicarlos operadores lógicos definidos al principio del tema. Ya hemos visto un ejemplo en la sección ifsobre uso de operadores lógicos. En esta sección veremos como podemos usar variables booleanasmediante un ejemplo.

Supongamos que deseamos escribir un programa capaz de decirnos si un número entero es primo.En principio, tendríamos que ver los restos de todas las divisiones entre es número y los enteroscomprendidos entre 2 y el anterior a él mismo. Si todos son no nulos, el número es primo. Si no, nolo es.

Pero podemos ahorrar tiempo de cálculo en el caso de que el número no sea primo, ya que basta conque una sola división produzca resto cero para demostrar que el número no es primo, sin necesidadde seguir haciendo divisiones.

Dado que el problema sólo tiene dos opciones (primo o no), se presta muy bien al uso de variablesbooleanas. Creamos una variable suponiendo de entrada que el número será primo:

es_primo = True

Si encontramos una división con resto cero, cambiaríamos su valor a False. Cuando se compruebeel valor de la variable al finalizar el programa, podremos saber si el número introducido es primo o

13/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

no. El programa quedaría así:

En cuanto encontramos un divisor, cambiamos el valor de la variable a False e interrumpimos elbucle con break. Si no hay ningún divisor, se ejecuta el bucle completo y se comprueba el valor dees_primo, que sigue en su valor inicial True.

La orden break interrumpe la ejecución del bucle pero no del programa. Si necesitamos finalizar elprograma en algún punto anterior al final del fichero, usaremos la orden quit().

Programando con listas

En la página 5 se introdujo el concepto de listas. Veamos un posible uso de las mismas en unprograma, modificando el anterior, de tal forma que en vez de comprobar si un número es primo ono, nos muestre una lista con los divisores de los que no sean primos. En este caso, podemos crearuna lista a la que iríamos añadiendo los divisores del número no primo según los vayamosdetectando.

14/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

Cada vez que el resto de la división entre el número en cuestión y el índice i sea nulo, sabremos queel valor de i será un divisor del número. En ese caso, lo añadiríamos a la lista.

Al igual que ocurre con las variables, al inicio del programa deberemos nombrarla y darle un valorinicial. En este caso, queremos que esté vacía. Esto es lo que conseguimos con la línea a = []

Try Except

Como vimos en el ejemplo del programa para dividir dos números de la página 9, teníamos quetener presente la posibilidad de que los números introducidos pudiesen dar lugar a errores en elprograma. Para ello, introducíamos sentencias if para poder controlar esos problemas. Un grannúmero de comprobaciones de este estilo en un programa puede ralentizar su ejecución. En esoscasos, se puede acudir a la estructura try-except, que tiene la siguiente estructura:

try:

    acción

    acción

    …

    acción

except:

    acción

    acción

    …

    acción

En primer lugar se ejecutan todas las instrucciones que hayamos escrito bajo el bloque try (ojo conlas indentaciones). Si no ocurre ningún error durante su ejecución, el programa seguirá adelante sinproblemas. Pero si la ejecución de alguna de estas órdenes lleva a un error, el programa acude a lasórdenes bajo el bloque except. Ahí programaríamos cómo debe actuar el programa para cada uno delos errores posibles. Con esta estructura, el programa para dividir dos números entre sí quedaría dela siguiente forma:

15/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

Funciones

Los programas que hemos visto hasta ahora sólo realizan una tarea y se ejecutan una única vez.Muchas veces nos encontraremos con la necesidad de realizar varias tareas, de repetirlas más de unavez o de ambas cosas. En lenguajes de programación más antiguos, como BASIC o FORTRAN, seacudía a las subrutinas, que podían invocarse mediante una orden GOSUB, o mediante llamadas alíneas concretas del programa con comandos tipo GO TO. En la actualidad estos métodos han caídoen desuso debido a los problemas que surgían al gestionar una gran cantidad de ellos en un mismoprograma.

Muchos lenguajes de programación, entre ellos Python, ofrecen una alternativa más flexible ymanejable, como son las funciones. Cada función que definamos puede hacer que las líneas decódigo que haya debajo de ellas (ojo nuevamente a la indentación) puedan tratarse como subrutinaso pequeños subprogramas dentro del programa. Cuando queramos ejecutarlo, simplemente haremosuna llamada a la función.

Veamos un ejemplo modificado del programa que habíamos realizado para calcular el perímetro y elárea de un círculo, de tal forma que se ofrezca al usuario la posibilidad de realizar otro cálculo sinnecesidad de volver a ejecutar el programa:

Hemos definido dos funciones, una para realizar el cálculo, a la que hemos llamado programa() yotra para ofrecer la posibilidad de hacer otro cálculo o repetir el programa, llamada repetir().

Para definirlas, sólo necesitamos escribir def nombre_funcion(): y escribir debajo las órdenes que seejecutarán cuando la llamemos.

16/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

Después de definirlas y programarlas, lo único que hemos necesitado es llamarlas en el orden quedeseemos que se ejecuten. Como se puede comprobar, se puede hacer una llamada a una funcióndentro de la misma u otra función.

Los paréntesis detrás del nombre de una función no se escriben por capricho. Permiten definir una omás variables que harán que una misma función pueda actuar de formas diferentes dependiendo delvalor de la variable. Veámoslo mediante un ejemplo.

Los más curiosos de los alumnos hará ya unas cuántas páginas que se habrán dado cuenta de que elnombre Vetinari aparece repetidas veces en los ejemplos que se han puesto, y ansiosos de ampliarsus horizontes mentales, habrán acudido raudos a google para averiguar quién es.

Vamos a escribir un programa en el que daremos al usuario la oportunidad de demostrar este nuevoconocimiento, otorgándoles tres oportunidades de contestar correctamente una pregunta relacionadacon el famoso personaje.

Dado que tenemos que realizar hasta tres veces la misma acción, podemos definir una función paraella, pero como además debemos llevar una cuenta de los intentos fallados, necesitaremos definiruna variable que no sólo llevará la contabilidad de los fallos, sino que además le diga a la funciónen qué iteración se encuentra, para dar otra oportunidad o finalizar el programa con un fracaso delusuario. En este caso, definimos una variable en el nombre de la función, cuyo valor inicial debe serasignado en la definición de la función:

A lo largo del programa se hacen dos llamadas a la función:

Una al final del código (que será lo primero que se ejecute después de haber borrado la pantalla) enla que no hace falta acudir al valor de la variable.

La otra llamada se hace dentro de la misma función, de tal forma que ella sabe en qué intento nosencontramos y obrará en consecuencia.

Variables locales y globales.

Las variables que se definen dentro de una función se llaman variables locales, que sólo se defineny aplican dentro de la función. Si deseamos usar una variable definida dentro de una función enotras partes del programa deberemos definirla como variable global. Si pretendemos usar unavariable local fuera de la función en la que ha sido definida, el intérprete devolverá un mensaje de

17/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

error.

Como siempre, intentaremos aclarar el concepto mediante un ejemplo.

El programa que escribimos en la página 14 comprobábamos si un número entero era primo o no.en caso de no serlo, calculábamos sus divisores. Vamos a introducir unos cambios en el programa.

Calcular los divisores de un número no primo grande puede llevar mucho tiempo. Por lo tanto,vamos a ofrecer al usuario la posibilidad de calcular los divisores después de comprobar si elnúmero no es primo (para esto último vale con encontrar un sólo divisor).

Vamos a reescribir el programa con tres funciones:

programa (), que comprobará si el número es o no primo,

divisores (), que calculará los divisores de un número no primo si el usuario lo desea y

repetir (), que ofrecerá la posibilidad de realizar un nuevo cálculo.

Como ya hemos usado esta última función en un ejemplo anterior, nos centramos en cómo quedaránlas otras dos funciones.

En cuanto encontremos un divisor del número que hemos introducido en la variable num haremosuna llamada a la función divisores(), donde se ofrecerá al usuario la posibilidad de calcular susdivisores (de la cifra introducida, no del usuario. En general, no es fácil, ni ético, ni probablementelegal dividir a los usuarios). Para no tener que repetir el cálculo desde el inicio (el primer divisorpuede ser una cifra muy alta), guardamos en la variable primer_divisor el número i por el que esdivisible nuestra cifra, para continuar el cálculo desde este punto. Para que la función divisores ()pueda usar esas variables definidas en otra función, las hemos declarado globales en las lineas 4 y 5,antes de asignarles un valor inicial.

Cuando el programa realiza la llamada a la función divisores (), se ejecutará lo siguiente:

18/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

Si el usuario desea calcular los divisores de la cifra introducida, se retoma el cálculo desde donde lodejó la función programa (). Para ello, se toman los valores de las variables num y primer_divisor.Como ambas han sido definidas como variables globales, el resto del programa podrá utilizarlas sinproblemas. Si no lo hubiésemos hecho así, se tratarían como variables locales, y el intérprete nosdevolvería un mensaje de error.

19/20

Introducción a la programación con Python. TICO I 1º Bachillerato. Dpto. Tecnología IES Palas Atenea

Ejercicios

En todos lo ejercicios, deberá incluirse la opción de volver a realizar otro cálculo.

• Escribir un programa para calcular el área de un polígono regular de n lados.

• El área A de un triángulo se puede calcular a partir del valor de dos de sus lados, a y b, y delángulo que éstos forman entre sí con la fórmula A = 1/2 a·b·sen(). Diseña un programaque pida al usuario el valor de los dos lados (en metros), el ángulo que estos forman (engrados), y muestre el valor del área.

• Escribir un programa para calcular la superficie y el volumen de varias figuras: Cubo,prisma, cilindro, y esfera.

• Escribir un programa para calcular las soluciones de una ecuación de segundo grado. Hayque tener en cuenta la posibilidad de que las dos soluciones sean iguales y que seanimaginarias.

• Escribir un programa para calcular los múltiplos de un número entero dentro de un intervalode números.

• Diseña un programa que sea capaz de calcular si un número es una potencia de 2. En casoafirmativo, mostrar qué potencia de 2 es. (Sugerencia: El problema se puede simplificartrabajando con logaritmos)

Para ampliar

Estos apuntes no son más que una brevísima introducción a la programación en Python. En internetse pueden encontrar una gran cantidad de manuales completos y sitios web actualizados dondeampliar lo aquí mostrado. Algunos son:

https://docs.python.org/3/contents.html (Manual de la versión 3.5 de la página de Python SoftwareFoundation)

repositori. uji .es/xmlui/bitstream/10234/102653/1/s93.pdf (Un completo manual en castellano de laUniversidad Jaume I de Castellón)

https://librosweb.es/libro/python/ (Un manual en castellano para principiantes)

http://librosweb.es/libro/algoritmos_python/ (Algoritmos para Python)

20/20