Estruturas de Controle

Linguagem de Programação Python

1 Estruturas de Condição

Em um processo geral de execução de um algoritmo feito em linguagem de programação, a execução inicia na primeira linha e vai progredindo sequencialmente executando o código linha após linha até chegar no final.Porém,frequentemente surge a necessidade de colocar instruções dentro de um programa que só serão executadas caso alguma condição específica aconteça.Para esta fim a maioria das linguagens possui estruturas de condição para realizar esta tarefa.

Estruturas de Condição Simples: se-então

A estrutura de condição mais simples é a se-entao, usada da seguinte maneira:

se <expressão-lógica> então:
<bloco de comandos>
fim-se

A <expressão-lógica> é uma expressão que deverá retornar um valor de verdadeira (V) ou de falso (F),e caso o resultado dessa expressão for verdadeiro,será executado o bloco de comandos que está inserido na estrutura.Caso seja falso, a execução do programa ignora o bloco de comando e continua na linha seguinte á estrutura de condição.

Alguns exemplos de expressões lógicas já foram vistos anteriormente,abaixo temos mais alguns exemplos:

  • 18 > 20, cujo resultado será falso.
  • 45 = 45, cujo resultado será verdadeiro
  • média > 7 , cujo resultado dependerá do valor da variável média. Por exemplo, se
  • média vale 5 o bloco não é executado; se média for 15, o bloco será executado.

O é uma sequência de código que será executado somente quando o resultado da expressão lógica for verdadeiro. Por fim, a instrução fim-se indica que a estrutura se-entao chegou ao final, servido para delimitar o bloco de instruções. De volta ao nosso problema de classificar uma pessoa como maior de idade ou menor de idade,devemos utilizar a estrutura de condição se-então da seguinte forma:

  • Solicitamos ao usuário que digite a sua idade, e utilizamos o comando leia() para armazenar o valor digitado na variável idade.
  • Depois de termos o valor da idade, avaliamos se esse valor é maior ou igual a 18.
  • Se o resultado dessa avaliação for verdadeiro escreveremos na tela a frase “você é maior de idade”, como mostra o algoritmo 8.

1: var idade: inteiro
2: escreva ("digite a sua idade")
3: leia(idade)
4: se idade >= 18 então
5: escreva ("você é maior de idade")
6: fim-se

2 Estrutura de Condição Composta: se-então-senão

O algoritmo 8 resolve o nosso problema quando a pessoa é maior de idade, porém não nos dá nenhum retorno para quando a mesma for menor de idade. Para contornar esse tipo de situação, a estrutura de condição se-então, oferece a possibilidade de executarmos uma determinada ação ou comando se o resultado da expressão lógica for verdadeiro e de executarmos uma ação diferente se o resultado da expressão lógica for  falso. Para essas situações é utilizado o comando senão, como mostrado abaixo.

se <expressão-lógica> então:
<bloco de comandos verdade>
senão:
<bloco de comandos falsidade>
fim-se

Na estrutura se-então-senão,o bloco verdade é realizo se a expressão lógica é verdadeira e o bloco falsidade,que vem após senão,é executado se a expressão lógica é falsa.A figura acima mostra no esquema como funciona uma estrutura de condição se-então. de modo geral.Quando o processo de algoritmo chega numa estrutura se-então a expressão lógica nela contida é avaliada;se o seu valor é verdadeiro (V) então o bloco de comandos seguinte ao se,que se chama bloco-verdade,é executado.

Caso o resultado da expressão lógica seja o bloco de comando posterior ao comando senão,chamado de bloco-falso,é executado. Se a estrutura de condição não possui uma cláusula senão,então no caso da expressão lógica ser falsa,a execução do algoritmo continua na linha subsequente ao bloco se-então.

O algoritmo abaixo mostra como escrever que a pessoa é maior de idade quando tem 18 anos ou mais , ou que a pessoa é menor de idade quando a condição não é correspondida.

Algoritmo

1: var idade: inteiro
2: escreva ("digite a sua idade")
3: leia(idade)
4: se idade >= 18 então
5: escreva ("você é maior de idade")
6: senão
7: escreva ("você é menor de idade")
8: fim-se
9: escreva ("Boa Sorte")

Neste fato, a expressão lógica é (idade>=18).Se for verdadeira,então o bloco verdade (linha 5) será executado;isto depende da variável idade lida na linha 3.Caso contrário,o bloco-falso (linha 7) seria executado.A seguir,o processamento segue na linha seguinte á estrutura de condição,neste caso a linha 9 seria executada independente do valor da variável idade.

 

Expressões lógicas compostas em Estruturas de Condição

É possível criar expressões lógicas utilizando operadoras relacionais<,>,<>,=,<=,>=,mas também é possível compor expressões lógicas utilizando os operadores lógicos ^ (conjunção), V (disjunção) e ¬ (negação).Neste modo, a expressão lógica que será avaliada na estrutura de condição se-entao também pode ser formada por uma expressão lógica composta.

Um exemplo,considere a situação de um determinado aluno em uma disciplina. Sabe-se que para ser aprovado,é fundamental que nota >= 7.0  e que frequencia >75,ao mesmo tempo,isto é ,uma conjunção lógica representada pelo operador e lógico (^).

O fragmento do algoritmo que avalia a situação está sendo mostrado no algoritmo 10.Desta maneira,para que a expressão lógica como um todo seja verdadeira,é crucial que as duas expressões lógicas que a compõem também o sejam:

1: se nota >= 7 ∧ frequencia > 0.75 então
2: escreva ("O aluno está aprovado")
3: senão
4: escreva ("O aluno está reprovado")
5: fim-se

3 Estruturas de Condição Encadeadas

Dentro de uma estrutura se-então-senão é perfeitamente possível utilizar mais de um comando, ou até mesmo outras estruturas se-então-senão.Existem situações em que os caminhos para a tomada de uma decisão acabam formando uma espécie de árvore com várias ramificações,em que cada caminho é um conjunto de ações.Nesse modo podemos recorrer a utilização de muitas estruturas se-então-senão embutidas umas dentro das outras,frequentemente chamadas de ninhos.

 

Algoritmo

se EL1 então
          se EL2 então
                 BV2
         senão
                 BF2
         fim-se
senão
        se EL3 então
                 BV3
         senão
                  BF3
          fim-se
fim-se

Nas estruturas de decisão encadeadas, uma estrutura de condição é aninhada dentro de outra, como bloco verdade ou falsidade. Neste modo, para que a estrutura de condição mais interna seja avaliada, é necessário que uma determinada condição seja satisfeita na estrutura de uma condição mais externa.Considere a estrutura aninhada no algoritmo 11, onde EL significa expressão lógica, BV bloco verdade e BF bloco falsidade. Para que BV2 seja executado é necessário que a EL1 juntamente com EL2 sejam verdadeiras. Se EL1 for verdadeira mas EL2 for falsa, então é BF2 quem será executado. A tabela 6.1, chamada tabela de decisão, mostra as diferentes alternativas possíveis para este caso.

Um exemplo,suponha que queremos refinar um poucos mais o problema referente ás médias dos alunos de uma certa disciplina.Sabemos que um aluno que é aprovado caso apresente média maior ou igual a 7.0 e frequencia maior ou igual a 75%.Na verdade, em uma situação real,se o aluno obtiver a frequência mínima exigida e uma média entre 3 e 7, ainda vai ter direito a uma última avaliação de recuperação.Como iremos fazer para resolver a situação em questão usando apenas estruturas de condição se-então-senão?

Podemos começar avaliando a frequência do aluno, e se a mesma for menor que 75% o aluno já estaria reprovado, porém caso a frequência respeite o
mínimo exigido, começaríamos a avaliar a média para saber se está aprovado, em recuperação ou reprovado. No momento em que é verificado que a frequência é menor que 0.75 (75%) o aluno já está imediatamente reprovado, mas caso a frequência seja maior ou igual a esse valor, devemos continuar com o algoritmo para avaliar em que situação que o aluno se encontra. Enfim, agora é necessário avaliar a média do mesmo, verificando se está acima de 7.0 (aprovado), entre 3 e 7.0 (recuperação), ou abaixo de 3.0 (reprovado). Estes condicionais estão mostrados no algoritmo 12.

4 Estrutura de Condição caso seja

Uma outra alternativa para trabalhar com comandos condicionados a um determinado valor é a estrutura caso seja. Nessa estrutura o valor de uma determinada variável é avaliado e caso esse valor coincida com determinado valor pré-estabelecido um determinado comando é executado. A estrutura de condição caso é utilizada da forma mostrada a seguir:

caso variável seja:
        <bloco de comandos>
fim-se

Algoritmo

caso variável seja:
     valor1:
              bloco de comandos 1
valor2:
         bloco de comandos 2
.
.
.
valorN:
        bloco de comandos N
padrão:
      bloco de comandos padrão

Da mesma forma que a estrutura de condição se-então nos da a possibilidade de executarmos algum comando quando a expressão avaliada não é correta, a estrutura de condição caso também nos da essa possibilidade,chamada opção padrão. O bloco de comandos inserido dentro da opção padrão será executado caso nenhum dos casos fornecidos seja premiado.A sintaxe para utilizarmos essa opção é mostrada no exemplo do algoritmo 14: a variável n do tipo inteiro é testada,e caso tenha valor 1 é escrito na tela "um",caso tenha valor 2 é escrito na tela "dois" e caso não tenha nenhum desses valores será escrito na tela "outro valor".

Algoritmo

var n: inteiro
escreva ("digite n")
leia(n)
caso n seja:
         1:
              escreva ("você escolheu 1")
         2:
             escreva ("você escolheu 2")
padrão:
             escreva ("outro valor")