| | | | |

3.1 Estruturas de um Programa

Compre o e-book deste material aqui!

Para escrever qualquer programa, apenas três estruturas são necessárias: sequência, seleção/ramificação e iteração.

3.1.1 Sequência

A estrutura de sequência apenas significa que os blocos de programação são executados em sequência. Ou seja, a execução de um bloco começa somente após a finalização do bloco anterior.

Refer to caption
Figura 3.2: Estrutura de sequência de blocos.
Exemplo 3.1.1.

O seguinte código computada a área do triângulo de base e altura informadas pela(o) usuária(o).

1#início
2
3# bloco: entrada de dados
4base = float(input('Digite a base:\n'))
5altura = float(input('Digite a altura\n'))
6
7# bloco: computação da área
8area = base*altura/2
9
10# bloco: saída de dados
11print(f'Área = {area}')
12
13#fim

O código acima está estruturado em três blocos. O primeiro bloco (linhas 3-5) processa a entrada de dados, seu término ocorre somente após a(o) usuária(o) digitar os valores da base e da altura. Na sequência, o bloco (linhas 7-8) faz a computação da área do triângulo e aloca o resultado na variável area. No que este bloco termina seu processamento, é executado o último bloco (linhas 10-11), que imprime o resultado na tela.

3.1.2 Ramificação

Estruturas de ramificação permitem a seleção de um ou mais blocos com base em condições lógicas.

Exemplo 3.1.2.

O seguinte código lê um número inteiro digitado pela(o) usuária(o) e imprime uma mensagem no caso do número digitado ser par.

1#início
2
3# entrada de dados
4n = int(input('Digite um número inteiro:\n'))
5
6# ramificação
7if (n%2 == 0):
8  print(f'{n} é par.')
9
10#término

Observamos que, no caso do número digitado não ser par, o programa termina sem nenhuma mensagem ser impressa. Esse é um exemplo de um bloco de ramificação, a instrução de ramificação (linha 7) testa a condição de n ser par. Somente no caso de ser verdadeiro, a instrução de impressão (linha 8) é executada. Após e impressão o programa é encerrado. No caso de n não ser par, o programa é encerrado sem que a instrução da linha 8 seja executada, i.e. a mensagem não é impressa.

Refer to caption
Figura 3.3: Fluxograma de uma estrutura de ramificação.
Observação 3.1.1.

(Escopo e indentação.) Na linguagem Python, a indentação indica o escopo, i.e. o início e fim do bloco de instruções que pertencem a ramificação. No Exemplo 3.1.2, o escopo da instrução if é apenas a linha 8.

3.1.3 Repetição

Instruções de repetição permitem que um mesmo bloco seja processado várias vezes em sequência. Em Python, há duas instruções de repetição disponíveis: for e while.

for

A instrução for permite que um bloco seja iterado para cada elemento de uma dada coleção de dados.

Exemplo 3.1.3.

O seguinte código testa a paridade de cada um dos elementos do conjunto {3,2,1,0,1,2,3}.

1#início
2
3# repetição for
4for n in {-3, -2, -1, 0, 1, 2, 3}:
5  res = (n%2 == 0)
6  print(f'{n} é par? ', res)
7
8#término

A instrução de repetição for (linha 4), aloca em n um dos elementos do conjunto. Então, executa em sequência o bloco de comandos das linhas 5 e 6. De forma iterada, n recebe um novo elemento do conjunto e o bloco das linhas 5 e 6 é novamente executado. A repetição termina quando todos os elementos do conjunto já tiverem sido iterados. O código segue, então, para a linha 7. Não havendo mais instruções, o programa é encerrado.

Refer to caption
Figura 3.4: Fluxograma de uma estrutura de repetição do tipo for.

Assim como no caso de uma instrução de ramificação, o escopo do for é definido pela indentação do código. Neste exemplo, o escopo são as linhas 5 e 6.

while

A instrução while permite a repetição de um bloco enquanto uma dada condição lógica é satisfeita.

Exemplo 3.1.4.

O seguinte código testa a paridade dos números inteiros compreendidos de 3 a 3.

1#início
2
3n = -3
4
5# repetição: while
6while (n <= 3):
7  res = (n%2 == 0)
8  print(f'{n} é par?', res)
9  n += 1
10
11#término
Refer to caption
Figura 3.5: Fluxograma da estrutura de repetição do tipo while para o Exemplo 3.1.4.

A instrução de repetição while faz com que o bloco de processamento definido pelas linhas 7-9 seja executado de forma sequencial enquanto o valor de n for menor ou igual a 3. No caso dessa condição ser verdadeira, o bloco (linhas 7-9) é executado e, então a condição é novamente verificada. No caso da condição ser falsa, esse bloco não é executado e o código segue para a linha 10. Não havendo mais nenhuma instrução, o programa é encerrado.

Observamos que, neste exemplo, o escopo da instrução while são as linhas 7-9, determinado indentação do código.

3.1.4 Exercícios

E. 3.1.1.

Complete as lacunas.

  1. a)

    As seguintes estruturas são suficientes para escrever qualquer programa: sequência, seleção e iteração.

  2. b)

    A estrutura de sequência significa que a execução de um bloco começa somente após a finalização do bloco anterior.

  3. c)

    A estrutura de seleção permite a escolha de execução de um ou mais blocos com base em condições lógicas.

  4. d)

    O escopo de um bloco de código é determinado pela indentação do código.

  5. e)

    Instruções de repetição permitem que um mesmo bloco seja processado várias vezes de forma iterativa.

Resposta.

a) sequência, seleção e iteração. b) finalização. c) condições lógicas. d) indentação. e) repetição.

E. 3.1.2.

Complete as lacunas.

  1. a)

    Uma estrutura de ramificação é implementada com a instrução if.

  2. b)

    A instrução for permite que um bloco seja iterado para cada elemento de uma coleção de dados iterável.

  3. c)

    A instrução while permite a repetição de um bloco enquanto uma dada condição lógica é satisfeita.

Resposta.

a) if. b) for. c) while.

E. 3.1.3.

Seja a reta de equação

y=ax+b. (3.1)

Assumindo a=2 e b=3, o seguinte código foi desenvolvido para computar o ponto x de interseção da desta reta com o eixo das abscissas.

1x = -b/2*a
2a = 2
3b = -3
4print(x)

Identifique e explique os erros desse código. Então, apresente uma versão corrigida.

Resposta.
1a = 2
2b = -3
3x = -b/a
4print(x)
E. 3.1.4.

Seja a reta de equação

y=ax+b. (3.2)

Faça um fluxograma de um programa em que a(o) usuária(o) entra com os valores de a e b. No caso de a0, o programa computa e imprime o ponto x da interseção dessa reta com o eixo das abscissas.

Resposta.
[Uncaptioned image]
E. 3.1.5.

Implemente o código referente ao fluxograma criado no Exercício 3.1.4.

Resposta.
1a = float(input('Digite o valor de a:\n'))
2b = float(input('Digite o valor de b:\n'))
3if (a != 0):
4  x = -b/(2*a)
5  print(f'Ponto de interseção com o eixo x = {x}')
E. 3.1.6.

Faça o fluxograma de um programa que usa de um bloco de repetição for para percorrer o conjunto

A={4,3,2,1,0,1,2,3,4}. (3.3)

A cada iteração, o programa imprime True ou False conforme o elemento seja ímpar ou não.

Resposta.
[Uncaptioned image]
E. 3.1.7.

Implemente o código referente ao fluxograma criado no Exercício 3.1.6.

Resposta.
1A = {-4, -3, -2, -1, \
2     0, 1, 2, 3, 4}
3for x in A:
4  res = (x % 2 != 0)
5  print(f'{x} é ímpar? {res}')
E. 3.1.8.

Faça um fluxograma análogo ao do Exercício 3.1.6 que use a instrução de repetição while no lugar de for.

Resposta.
[Uncaptioned image]
E. 3.1.9.

Implemente um código referente ao fluxograma criado no Exercício 3.1.8.

Resposta.
1A = {-4, -3, -2, -1, \
2     0, 1, 2, 3, 4}
3n = -4
4while (n <= 4):
5  res = (n % 2 != 0)
6  print(f'{n} é ímpar? {res}')
7  n += 1

Envie seu comentário

As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a Política de Uso de Dados para mais informações. Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!