A14. VOCABULARIO DE PYTHON

Algúns trucos iniciais:

  • Na aula, todas as persoas temos un nome. Pois nos ordenadores, cando construimos programas, tamén temos que poñerlle un nome a todos os datos. Pero, con moito tino.... na aula se dúas persoas teñen o mesmo nome sempre hai confusión e, normalmente, usamos o seu apelido para desfacer a confusión. Tamén nos programas temos que evitar poñer o mesmo nome a distintos datos. Dáselle un valor a ese nome co signo “=”, por exemplo suma=20 ou tempo=3.
  • Os nosos coñecementos do inglés serviránnos a hora de aprender as linguaxes de programación, xa que éstas foron inventadas nos paises anglosaxóns e teñen moitos préstamos da língua inglesa. Por este motivo, non uses acentos nos contos dos ordenadores.
  • Para construir programas necesitamos, ademáis de coñecer a linguaxe de programación, ter a axuda dun traductor, outro programa que traduce o meu conto (na linguaxe de programación) para que o entenda o electródoméstico de plástico con seus compoñentes electrónicos. No caso de PYTHON chámaselle a este traductor o intérprete de python.
  • Imos utilizar na actividade un interprete de python en internet: https://www.online-python.com/ (ver a súa apariencia na figura 5). Se o interprete de python en internet comeza a poñer publicidade molesta, busca outro intérprete en liña en internet. No panel superior escribimos o programa (conto na linguaxe de programación python) e cando rematemos prememos no botón Run para visualizar no panel inferior a execución do programa. O panel inferior (despois de > que se activa co botón do panel esquerdo) podemos usalo como unha calculadora básica para facer operacións aritméticas. Exemplo: 4+5 (suma), 7-3 (resta), 4*5 (multiplicación) e 6/2 (división). Despois de poñer cada operación, preme a tecla intro para executar.
  • Todo o que está despois do "símbolo # e que aparece en verde na primeira liña da figura 5 non son considerados polo intérprete de python (compiler), é dicir, son comentarios". Este programa por defecto ó conectarnos a páxina web so ten unha frase (sentencia) ou liña “print("Hello world")”. Se prememos o botón Run, visualiza en pantalla (función print()) o texto que está entre comillas (Hello world).

 

Figura 5: Captura de pantalla do intérprete de Python en internet executando o programa por defecto. Descarga o programa Obra14Prog1.py 

  • O interprete de python non permite ningunha falta de ortografía. Con algunha falta de ortografía, o programa da erros e non nos permite executalo (por exemplo, o texto que aparece na pantalla vai entre comillas “”, que non escribimos ben a palabra print, que nos esquecemos un paréntese, etc.

O exemplo anterior é un exemplo trivial que so nos da unha benvida. Na práctica, a maioría dos programas piden algún dato por teclado (python proporciona a función input()) e amosan os resultados da execución do programa na pantalla do ordenador ( función print() de python). Porque a nosa intención ó deseñar programas é que fagan unha tarefa, pero que en execucións distintas poida introducir distintos datos e observar distintos resultados.

O conto de ordenador máis simple sería un conto infantil, un conto que ten poucas frases (sentencias) e que sexan simples. Por exemplo, facer un programa que conteña a lista de estudantes de clase cos nomes ordeados alfabéticamente e que pida por teclado un número para devolver o nome do ou da estudante nesa posición da lista (supón que se introduce un número válido).

O programa sería o mostrado na figura 6:

  1.  a liña 1 define estudantes como a lista de nomes de estudantes da clase ordeados alfabéticamente, fixade que a lista son elementos entre corchetes separados por , e con cada nome entre comillas.
  2. a liña 2 pide por teclado datos coa función input(), pero o que lemos con esta función sempre é texto, polo que hai que convertilo a un número coa función int().
  3. a liña 3 usa a función print() para amosar o resultado na style="font-weight: 400;">pantalla (panel inferior da figura) que é afrase Estudante seguido do contido de estudantes[numero -1]. Estudantes é unha lista de nomes e eu quero ver o valor da posición “numero” da lista (poñemos numero-1 porque o python comeza a contar en 0 no canto de 1, algo moi pouco intuitivo).
  4. Agora queda executar o programa premendo no botón Run e aparece a mensaxe “Número da lista: “ e o cursor queda ahí esperando que introduzamos ese dato e premamos a teclaIntro, ó facelo o programa continua a súa execución ate rematar, como se observa na figura 6.

 

Figura 6: Exemplo de execución do programa da lista da clase. Descarga o programa Obra14Prog2.py  

Imos continuar aprendendo a construir programas en Python. O alumnado preguntarase ... é como construimos esas bifurcacións e repeticións?

Para iso temos que aprender cales son as palabras reservadas da linguaxe de programación Python (o vocabulario) para realizar eses mecanismos:

  • Bifurcacións: utiliza as palabras resevadas if, elif, else . Despois do if avalíase unha condición (por exemplo, que un dato sexa maior ou igual a unha constante ou outras condicións cotiás). Se a condición se cumpre, execútanse o bloque de sentencias (frases) que están a continuación e, se non se cumpre a condición, executanse as sentencias que están despois do else. Teño visto algúns libros infantís que te invitan a resolver pequenas probas ou acertixos e, en función do resultado, te din que saltes a unha páxina ou outra.
  • Repeticións definidas: (as que sabemos o número de veces que se van a repetir antes de comezar as repeticións). Realízanse coa palabra resevada for e xa veremos como lle decimos o número de veces a repetir o bloque de sentencias (frases) que ven debaixo do for.
  • Repeticións indefinidas: (as que non sabemos a priori o número de veces que se van a repetir e só o podemos saber despois de que rematen as repeticións). Utilizan a palabra reservada while. Despois do while avalian unha condición, e se se cumpre, repítese o bloque de sentencias ou código que está a continuación. Despois volve a avaliarse a condición que está despois do while e se se cumpre volve a repetirse o bloque de sentencias,  e así sucesivamente mentres que se siga cumprindo a condición.

Imos escenificar estes funcionamentos con exemplos matemáticos simples que o alumnado facía no papel cando estaba en primeiro ou segundo de educación primaria. Sempre lembrádelle ó alumnado que os ordenadores son como bebes ós que temos que ensinar as cousas desde cero, porque non saben absolutamente nada. Entón, podes plantexar estes exercicios como se foran mestras e mestres que están ensinando matemáticas ó ordenador (como a un bebé).

Algúns exemplos serían:

Facer un programa utilizando a linguaxe de programación Python que constrúa unha secuencia de números crecentes entre 0 e 40 de 3 en 3.

O programa (tamén chamado algunhas veces código fonte) está na parte superior da figura 7 e o resultado da súa execución está na parte inferior. No código fonte, a primeira liña é un comentario explicando o que fai o programa, que non vai ter en conta o intérprete de python.

Cada liña do programa é unha sentencia, que sería o equivalente a unha frase nun conto. Da liña 2 á 4 son liñas que asignan un valor a un dato con nome: o valor inicial da secuencia ó dato con nome “inicio” na liña 2, o valor final da secuencia ó dato que chamamos “fin” na liña 3 e, finalmente, o incremento para construir a secuencia chamámoslle “incremento” e poñémoslle o valor 3 na liña 4. Con isto xa temos as personaxes do noso conto e, a cada un, puxémoslle un nome.

Para construir a secuencia, non sei a priori os números que vai ter a miña secuencia dun xeito simple (sen facer cálculos) polo que debería de utilizar unha repetición indefinida. Eso fai a liña 5 que uso a palabra reservada while seguida da condición “inicio < fin”.

Vedes que a frase completa é: while inicio < fin :  (os : do final son parte do vocabulario de python e indica o comezo do bloque de sentencias que se ten que repetir. Resulta pouco intuitivo, pero moitas veces cando estudamos outros idiomas convencionais tamén existe algunha regra pouco intuitiva). O bloque de sentencias que se ten que repetir son as liñas 6 e 7 (que teñen que comezar cunha tabulación despois da primeira columna (tamén é unha regra da linguaxe python) --- tes que pulsar a tecla con frecha que está na parte esquerda do teclado, normalmente o lado da Q---.

Repara en que, neste editor da linguaxe de programación Python, todas as palabras reservadas, aparecen en cor azul (cada editor ter a súa configuración por defecto). E cales son as tarefas (sentencias ou frases) que se repiten?

Pois a liña 6 simplemente visualiza na pantalla o valor do dato “inicio”, coa función  print() como xa comentamos. A liña 7 actualiza o valor do dato “inicio” sumándolle o dato “incremento”.

Esta forma de actualizar os datos na programación é un concepto elemental para programas moito máis complexos, pero que tamén reflicte o noso comportamento na vida real. Imaxina que imos a un souto a recoller castañas e levamos unha bolsa (baleira, por suposto). Esa bolsa baleira sería o noso dato “inicio” xa que contén 0 castañas. Andamos polo souto e recollemos 2 castañas que metemos na bolsa.... Cántas castañas teño agora? Terei as que xa tiña (que eran 0) + as que botei na bolsa (que foron 2). Polo tanto, inicio = 0 + 2=2.

Collemos outras 3 castañas e metémolas na bolsa. Cantas teño agora? Terei 5 que son o resultado de sumar as que tiña máis as 3 que metín, é dicir, inicio = 2+3=5, e así sucesivamente. Unha vez que se executa a liña 7, o programa volve ó inicio da repetición (liña 5) e volve a comprobar a condición, e así sucesivamente mentres que se siga cumprindo a condición. Cando a condición deixa de cumprirse, o programa remata.

Se pulsamos o botón Run na figura 7, obtense o resultado do panel inferior desta figura. O último número é 39, porque despois de visualizar 39, faríamos inicio = inicio + incremento = 39 + 3 = 42, pero 42 non cumpre a condición de ser menor que fin (que vale 40) e o programa remata.

 

Figura 7: Exemplo da secuencia de números crecentes de 3 en 3 entre o 0 e o 40. Descarga o programa Obra14Prog3.py

Constrúe un programa que calcule o valor medio ou promedio dunha colección de números.

O programa comeza na liña 3 da parte superior da figura 8 describindo as personaxes do noso peculiar conto. A liña 3 chama numeros (sen acento como xa dixemos) a colección de números que vai a utilizar o programa (como antes poñémolos entre conchetes e separados por ,).

Agora xa non poñemos cada dato entre comillas, porque quero que sexan números e as “” e para especificar datos de tipo texto. O dato “numeros”  son o noso ingrediente principal porque conten a colección de datos implicada no cálculo.

Para calcular o valor medio ou promedio dunha colección de números teríamos que sumalos todos e dividir polo número de elementos (este é un cálculo matemático simple que se pode realizar co alumnado a partir dos 11 anos máis ou menos). Se aínda non saben realizar o valor medio podemos realizar simplemente a suma dunha colección de números.

Esto si que o saben facer na súa libreta de papel. Como farían este cálculo? Fai pensar e reflexionar ó alumnado porque, probablemente, algunhas ou todas as persoas sepan dar o resultado (porque o calculan mentalmente, incluso sin papel) pero non saben darlle as instruccións a un ordenador ou, o que sería similar, a estudantes de primerio de primaria no seu papel de mestras e mestres que deben facer co ordenador.

Este exemplo de sumar unha colección de números faríase coma co exemplo das castañas. Teño unha bolsa baleira (no programa chámase suma) a que lle damos o valor 0. Vou polo souto e collo o primeiro número de castañas da colección, polo que suma pasa a ser o valor que tiña e o número de castañas que lle botei, e así repetindo este proceso..... Cantas veces teño que repetir este proceso? Pois tantas veces como elementos ten a miña colección.

Polo tanto, neste caso estamos ante un caso de repetición dun número de veces definida e coñecida (o número de elementos dunha colección podes calculalo coa función de Python len(nome da colección)). Polo tanto, na liña 4 definimos a personaxe ou dato “suma” e poñémoslle o valor 0.

A liña 5 constrúe a repetición definida: for x in numeros : . Os : xa sabemos o que significa (inicio do bloque de frases que teño que repetir), o for é a palabra reservada para especificar repeticións definidas, a x é unha nova personaxe ou dato que se responsabiliza de ir collendo números da colección, e o in é una palabra reservada que significa máis ou menos: para cada x na colección de números repite (e que se acabará de repetir cando xa non queden máis números na colección con nome “numeros”). 

Que fai o programa en cada repetición? Fai simplemente a sentencia suma = suma + x, é dicir, actualizar o valor de suma como xa dixemos. Podemos escenificalo co alumnado coa colección de números do programa: inicialmente, suma vale 0 (bolsa de castañas baleira), collemos 4 castañas... Cantas castañas hai na bolsa? 4 porque suma = suma +x=0+4=4; agora collemos 6 castañas e para a bolsa.... Cantas castañas hai na bolsa? 10 porque suma = suma +x=4+6=10; collemos 7 castañas e para a bolsa....  Cantas castañas hai na bolsa? 17 porque suma = suma +x=10+7=17, e así sucesivamente.

Podes facer o exemplo con números enteiros, no canto de reais, para explicar este proceso (ou so con números enteiros para o alumanado máis novo). É moi interesante que se faga este proceso mentalmente ou na libreta de papel para reflexionar sobre o tontos que son os ordenadores (importante a percepción de ver o alumnado ensinar ó ordenador) e que temos que decirlles as operacións con todo tipo de detalles para que nos entendan.

As liñas 7 e 8, como xa non están tabuladas non se repiten e executaranse cando remata a repetición definida. Simplemente son liñas que visualizan na pantalla o resultado dos nosos cálculos: a colección de números (liña 7) e a división da suma dividada polo número de elementos da colección (len(numeros)) para facer o cálculo do valor medio ou promedio (liña 8).

 

Figura 8: Programa que calcula o valor medio dunha colección de números. Descarga o programa Obra14Prog4.py  

Construir un programa na linguaxe de programación Python que calcule a media ou valor medio dos números da colección que sexan positivos ou maiores de cero.

Sería un exercicio semellante ó anterior, no que hai que incorporar dúas tarefas:

  1. Só teño que sumar os números positivos, que é equivalente a decir os números maiores que cero, é dicir, os elementos “x” que cumpren a condición (x > 0).
  2. Agora para calcular a media non podo dividir polo número de elementos da colección “numeros”, senón que só polo número de elementos positivos. Polo que teremos que incorporar unha nova personaxe (que no programa da figura 9 chamo “n”) que conte o número de elementos positivos que hai na colección “numeros”. Esta operación podería realizala mentres se realiza a operación de sumar os elementos positivos da colección “numeros” (como está no exemplo da figura 9), ou realizala primeiro e despois realizar a suma. Imaxinemos que a realizasemos primeiro, poderíamos reflexionar co alumnado cómo a farian. Se lle escribimos a colección de números na pizarra e lle preguntamos o alumnado cantos valores positivos hai nesta colección? Non dubidarían nin un minuto en darnos a resposta correcta (é algo no que as persoas utilizamos a memoria gráfica e respondemos case instantaneamente). Pero .... realmente como resolven os ordenadores esta operación?, constestarían que é tan obvia que non necesitaria explicación. Pero.... e se lla temos que explicar a un bebe? como ten que facer?, forzando a que sigan pensando chegaríamos a conclusión que seguimos o mesmo mecanismo que para contar as castañas no souto. Teño unha bolsa, que vou a chamar “n” e que inicialmente ten o valor 0 porque está baleira, e vou visitando todos os números da colección “numeros”, cando atopo un elemento “x” que é maior que 0, so teño que botar unha bola para a bolsa. Entón vexo que a bolsa vai incrementando o seu valor e, o final, contén o número de elementos positivos da colección. Cada vez que boto unha bola para a bolsa, estou realmente facendo a operación n = n + 1 (actualizo o valor de “n” dicindo que o seu valor vai ser o valor que tiña máis unha bola que acabo de botar). Este proceso sería en python:

 

Na figura 9 podes ver este proceso fusionado coa suma dos números positivos.

As liñas 3 e 4 presentan as personaxes “numeros”, “suma” e “n”,  e danlles un valor. A liña 5 repite tantas veces como elementos ten a colección de números “numeros”. As liñas de 6 a 8 son o bloque de sentencias que se repite para cada repetición do ciclo for. A primeira sentencia deste bloque é a liña 6, que comproba se o elemento considerado “x” e maior a 0.

Esta sentencia é unha bifurcación, xa que a liña 7 executarase ou non dependendo dunha condición, x>0, (que “x” sexa maior que 0) e, como xa dixemos, usa a palabra reservada if. Ó igual que no caso das repeticións, a sentencia remata en “:”, que marca o inicio do bloque de sentencias que se ven afectadas pola bifurcación, e que estarán tabuladas con relación o if. Neste caso son dúas sentencia, as liñas 7 e 8, que realizar a suma dos elementos positivos e contan o número de elementos positivos. Vemos que ambas sentencias teñen a mesma estrutura, valor actualizado das personaxes (“suma” ou “n”), igual o valor que xa tiñan sumado o novo valor (“x” para a suma e 1 para incrementar o contador de números positivos “n”). As liñas 9 e 10 simplemente visualizan o resultado sobre a pantalla coa función print().

Se pulsamos o botón Run, a execución amosa o resultado na parte inferior da figura 9.

 

Figura 9: Exemplo de programa en python que calcula o valor medio dos elementos positivos dunha colección de números.

Descarga o programa Obra14Prog5.py

Estas ideas tan próximas ó proceder na nosa vida cotiá son moi importante no entendemento do funcionamento das máquinas e da programación de ordenadores. É como xogar cun novo idioma, moito máis simple que os idiomas convencionais.

Teño a impresión, pola experiencia como profesora de estudantes na universidade, que a medida que estudamos máis coñecementos, perdemos a referencia de cómo xestionamos e resolvemos as tarefas máis simples. 

Tal vez simplemente xa as resolvemos de xeito incosciente, sen pararnos a pensar en todos os pasos pequenos que necesitamos para levalas a cabo. Pero, desde a idea de que a programación é como ensinar a un bebé, a programación simplemente é refrescar eses procesos e indicarllos ó ordenador a través dun conto (ou un programa usando a linguaxe técnica da informática e a intelixencia artificial).