workshops
  • Workshop fc
  • Workshop latex
  • Workshop mathematica

Workshop FC - Ciclos

Data sex 02 julho 2021 Workshop Parte 8 de 20 do Workshop FC Tags Programação / Física / Secundário

Open In Colab

É frequente termos a necessidade de efetuar uma ação muitas vezes ou em muitos objetos. Por exemplo, se quisermos escrever a tabuada do 1 ao 10, teríamos que escrever cada linha, uma a uma, como na escola primária.

Uma grande vantagem da programação é permitir representar estas tarefas repetitivas de uma forma simples e rápida de implementar. A este tipo de ações chamamos loops, ou ciclos. Comecemos pelo ciclo for.

Ciclos for¶

Um ciclo for, no Python, percorre um objeto iterável, ou seja, algo que consiste em várias partes que posso percorrer uma a uma. A sua sintaxe é:

for {elemento} in {iterável}:
  {código a executar}

{iterável} é o tal objeto que queremos percorrer, e {elemento} é o nome que vamos dar a cada elemento desse objeto. (Nota: não se devem incluir as {} no código). Considera-se código dentro do ciclo todo o que estiver indentado, ou seja, que tenha espaços no início da linha (tal como nas condições if).

O iterável pode ser, por exemplo, uma lista, como as que vimos anteriormente. Se a lista tiver n elementos, então o ciclo vai consistir de n passos, onde em cada um {elemento} toma o valor correspondente na lista:

  • no primeiro passo, é o elemento 0;
  • no segundo, o elemento 1;
  • ...;
  • no último, o elemento n-1

(não esquecer que os elementos de uma lista se começam a contar do 0).

Vejamos como podemos calcular os quadrados de uma lista com vários números, comparando a versão com e sem a utilização de ciclos.

In [2]:
numeros = [2,5,10,23.3333,3.14159,-1,0,42,20,-300] #10 elementos

#Sem loop
print("Sem loop")
print(numeros[0]**2)
print(numeros[1]**2)
print(numeros[2]**2)
print(numeros[3]**2)
print(numeros[4]**2)
print(numeros[5]**2)
print(numeros[6]**2)
print(numeros[7]**2)
print(numeros[8]**2)
print(numeros[9]**2)

#Com loop
print("\n\nCom loop")
for i in numeros:
  print(i**2)
Sem loop
4
25
100
544.4428888900001
9.869587728099999
1
0
1764
400
90000


Com loop
4
25
100
544.4428888900001
9.869587728099999
1
0
1764
400
90000

Aqui, o objeto iterável foi a lista e o nome atribuído ao elemento correspondente a cada passo do ciclo chamou-se i.

Mesmo com apenas 10 elementos, este método é muito mais simples. Em muitos casos, queremos fazer ciclos em objetos com centenas ou milhares de elementos.

Vejamos então como podemos usar isto para escrever a tabuada.

Para isto, usaremos a função range(). Esta pode receber até 3 parâmetros, e retorna uma sequência de números inteiros de acordo com:

  • range(inicio, fim, passo): números inteiros desde início (inclusivo) até fim (exclusivo) separados de passo;
  • range(inicio, fim): números inteiros desde início (inclusivo) até fim (exclusivo) separados de 1;
  • range(fim): números inteiros desde 0 (inclusivo) até fim (exclusivo) separados de 1;

Portanto, se quisermos todos os números inteiros de 1 a 10, teremos que usar range(1,11).

In [3]:
for i in range(1,11):
  print("Tabuada do ",i)
  for j in range(11):
    print(f"{i} x {j} = {i*j}")

  print("\n")
Tabuada do  1
1 x 0 = 0
1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
1 x 4 = 4
1 x 5 = 5
1 x 6 = 6
1 x 7 = 7
1 x 8 = 8
1 x 9 = 9
1 x 10 = 10


Tabuada do  2
2 x 0 = 0
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
2 x 10 = 20


Tabuada do  3
3 x 0 = 0
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
3 x 10 = 30


Tabuada do  4
4 x 0 = 0
4 x 1 = 4
4 x 2 = 8
4 x 3 = 12
4 x 4 = 16
4 x 5 = 20
4 x 6 = 24
4 x 7 = 28
4 x 8 = 32
4 x 9 = 36
4 x 10 = 40


Tabuada do  5
5 x 0 = 0
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
5 x 10 = 50


Tabuada do  6
6 x 0 = 0
6 x 1 = 6
6 x 2 = 12
6 x 3 = 18
6 x 4 = 24
6 x 5 = 30
6 x 6 = 36
6 x 7 = 42
6 x 8 = 48
6 x 9 = 54
6 x 10 = 60


Tabuada do  7
7 x 0 = 0
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
7 x 10 = 70


Tabuada do  8
8 x 0 = 0
8 x 1 = 8
8 x 2 = 16
8 x 3 = 24
8 x 4 = 32
8 x 5 = 40
8 x 6 = 48
8 x 7 = 56
8 x 8 = 64
8 x 9 = 72
8 x 10 = 80


Tabuada do  9
9 x 0 = 0
9 x 1 = 9
9 x 2 = 18
9 x 3 = 27
9 x 4 = 36
9 x 5 = 45
9 x 6 = 54
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81
9 x 10 = 90


Tabuada do  10
10 x 0 = 0
10 x 1 = 10
10 x 2 = 20
10 x 3 = 30
10 x 4 = 40
10 x 5 = 50
10 x 6 = 60
10 x 7 = 70
10 x 8 = 80
10 x 9 = 90
10 x 10 = 100


Salientamos aqui duas coisas:

  • O uso de um ciclo dentro de um ciclo;
  • f-strings, ou seja, f"...", que permite pôr entre chavetas variáveis cujo valor queremos converter em texto.

Podemos ainda usar estes ciclos, com outra sintaxe, para definir listas. Por exemplo, se quisermos uma lista com os números de 0 a 24, fazemos:

lista = [i for i in range(25)]

Ciclos while¶

Vimos que usando os for loops podemos executar um grande número de instruções com um reduzido número de linhas de código. No entanto, é por vezes útil que este código seja executado enquanto se verifica uma dada condição. Para tal temos os while loops. A sua sintaxe é a seguinte:

while {condição}:
  {código a executar}

Agora, em vez de percorrer os elementos de um objeto, o nosso programa verifica a condição, e executa o código dentro do loop enquanto esta se verificar.

Exemplificamos, calculando as potências de 2 menores que 5000.

In [4]:
#Começar com 2
i = 2
while i<5000:
  i = i*2
  print(i)
4
8
16
32
64
128
256
512
1024
2048
4096
8192

Mais uma vez, o código dentro do loop deve estar corretamente indentado.

Vemos que obtivemos um valor maior que 5000, o 8192. Isto aconteceu porque no passo anterior, i tinha o valor 4096, que é menor que 5000, pelo que a condição era verdadeira e o ciclo fez mais um passo. Se quiséssemos prevenir isso, teríamos que verificar o valor após o seu cálculo.

In [6]:
i = 2 
while True:
  i = i*2
  if i > 5000:
    break
  print(i)
4
8
16
32
64
128
256
512
1024
2048
4096

Usamos um while com uma condição sempre verdadeira, pelo que este deveria correr infinitamente. No entanto, quando se verifica que i é maior que 5000, o código dentro do if é executado, que, neste caso, é um break, que faz com que saiamos do ciclo (quebra o ciclo).

Ficaste com dúvidas? Contacta-nos através das redes sociais ou de nfist.ist@gmail.com

Workshop FC - Parte 8

Anteriores:
  • 1. Introdução ao Workshop
  • 1.1. O que é a programação?
  • 1.2. Funcionamento
  • 2. Introdução à Programação em Python
  • 2.1. Variáveis
  • 2.2. Condições if
  • 2.3. Funções e Bibliotecas
Seguintes:
  • 2.5. A Biblioteca Matplotlib
  • 3. Conceitos Físicos e Matemáticos
  • 3.1. Equações do Movimento
  • 3.2. Equações do Movimento (12° ano)
  • 4. Exemplos Físicos
  • 4.1. Sistema Massa Mola
  • 4.2. O Pêndulo
  • 5. Conclusão
  • 5.1. Erros Comuns
  • 5.2. Soluções dos Desafios
  • 5.3. FAQ's
  • 5.4. Showcase Projetos
  • Segue-nos

    • Facebook
    • Instagram
    • Website
  • Workshop FC

    • Anterior:
      • Funções e Bibliotecas
    • Seguinte:
      • A Biblioteca Matplotlib

© 2021 NFIST · Powered by pelican-bootstrap3, Pelican, Bootstrap

Creative Commons License Content licensed under a Creative Commons Attribution-ShareAlike 4.0 International License, except where indicated otherwise.

Voltar ao início