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")