Buscar

3_Comando_Condiciona_Se

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Comando Condicional Se-Então-
Senão 
Até agora, o fluxo de execução de nossos algoritmos é linear, isso significa que os 
algoritmos começam na palavra {, os comandos são executados seqüencialmente, 
linha a linha, até chegarmos na palavra }.. Todos os comandos são executados, 
sem exceção. Para fazermos algoritmos mais elaborados precisamos de 
estruturas mais complexas, que nos permita alterar o fluxo de execução de nossos 
algoritmos. Existem várias dessas estruturas, uma delas é a estrutura 
condicional. 
As estruturas condicionais permitem executar, ou não, um ou mais comandos, 
dependendo de uma situação. Essas estruturas são muito comuns no nosso dia-a-
dia, como já foi visto quando nós aplicamos o conceito de algoritmo nas tarefas 
cotidianas. Por exemplo: 
se o estepe estiver vazio então 
 chamar o borracheiro 
senão 
 trocar o pneu 
Repare que o borracheiro vai ser chamado somente se o estepe estiver vazio. 
Caso o estepe não esteja vazio, então o pneu furado será trocado pelo estepe. 
Na linguagem algorítmica nós temos o comando se-então-senão. Esse comando 
utiliza uma expressão lógica para decidir se um ou mais comandos devem, ou 
não, ser executados. Uma expressão lógica é similar a uma expressão aritmética, 
entretanto essas expressões sempre são avaliadas (resultam) no valor verdadeiro 
ou no valor falso. 
Por exemplo, dada uma variável x do tipo inteiro, a expressão lógica: 
x > 0 
realiza um teste para verificar se o valor da variável x é, ou não, maior que 0. Essa 
expressão lógica somente pode resultar no valor verdadeiro ou no valor falso. 
Caso o valor da variável x seja 5, por exemplo, então a expressão lógica x > 0 
resultará no valor verdadeiro, uma vez que 5 é maior do que 0. Caso o valor da 
variável x seja -1, por exemplo, então o valor da expressão lógica x > 0 resultará 
no valor falso, pois -1 não é maior do que 0. 
Uma expressão lógica quase sempre envolve um operador relacional. Os 
operadores relacionais são: 
• > (maior); 
• < (menor); 
• == (igual); 
• != (diferente); 
• >= (maior ou igual); 
• <= (menor ou igual); 
Alguns exemplos de expressões lógicas são: 
• 4 > 4 (Resulta no valor falso, pois 4 não é maior que 4.); 
• a < 0 (Resulta no valor verdadeiro caso o valor da variável a seja menor 
que 0, ou seja, o valor de a é negativo. Caso a seja maior ou igual a 0, 
então resulta em falso.); 
• z != 0 (Resulta no valor verdadeiro caso o valor de z seja qualquer valor 
diferente de 0. Caso contrário resulta no valor falso.); 
• i == 0 (Resulta no valor verdadeiro somente se o valor de i for 0. Caso 
contrário, resulta no valor falso.). 
Voltando ao comando condicional se-então-senão, esse comando permite 
executar, ou não, um ou mais comandos, dependendo do resultado da avaliação 
de uma expressão lógica. O comando se-então-senão pode ser utilizado de duas 
formas, a forma mais simples é: 
se <expressão lógica> então 
{ 
 <comandos>; 
 } 
Na forma mais simples, o comando se-então-senão é constituído da palavra se, 
seguida de uma expressão lógica, da palavra então e, por fim, de um bloco de 
comandos associado ao então. Um bloco de comandos é uma seqüência de zero 
ou mais comandos delimitados pelas palavras { e }. 
A semântica do comando se-então-senão na sua forma mais simples é a 
seguinte: os comandos do bloco de comandos associado ao então somente serão 
executados se a expressão lógica resultar no valor verdadeiro. 
Por exemplo: 
01 | Algoritmo Exemplo; 
02 | 
03 | { 
04 | x: inteiro; 
05 | 
06 | 
07 | leia(x); 
08 | se x >= 0 então 
09 | { 
10 | escreva("O valor digitado é positivo ou igual a zero"); 
11 | } 
12 | } 
O que faz o algoritmo acima? A execução inicia na linha 06. Na linha 07 é lido um 
número e esse número é atribuído à variável x, que foi declarada como sendo do 
tipo inteiro. Na linha 08 o algoritmo testa se o valor da variável x é maior ou igual a 
0. Nesse ponto da execução do algoritmo podem ocorrer duas situações: 
1. A primeira situação ocorre quando o valor digitado pelo usuário é um valor 
maior ou igual a zero. Por exemplo, o valor digitado pode ser 10. Nesse 
caso, a expressão lógica x >= 0 resulta no valor verdadeiro. Como a 
expressão lógica resultou no valor verdadeiro, os comandos do bloco de 
comandos associado ao então são executados. Esse bloco de comandos 
inicia na linha 09 e termina na linha 11. O comando escreva na linha 10 é o 
único comando desse bloco de comandos que gera uma ação efetiva. 
Nesse caso, é escrita a mensagem "O valor digitado é positivo ou igual 
a zero". 
2. A segunda situação ocorre quando o valor digitado pelo usuário é menor 
que 0. Por exemplo, o valor digitado pode ser -5. Nesse caso, a expressão 
lógica x >=0 resulta no valor falso, pois -5 não é maior nem igual a 0. Como 
a expressão lógica não resultou no valor verdadeiro, os comandos do 
bloco de comandos associado ao então não são executados. A execução 
do algoritmo salta da linha 08 diretamente para a linha 12. E, na linha 12 a 
execução do algoritmo termina. 
Vamos melhorar aquele nosso algoritmo que calcula a média, para que ele 
escreva uma mensagem dizendo se o aluno foi aprovado, supondo que a média 
anual mínima para que o aluno seja aprovado é 7,0. 
O que deve ser feito nesse algoritmo para resolver esse problema? Uma vez que 
a média anual foi calculada, é necessário verificar se esse valor é igual ou maior 
que 7,0. Caso a média seja maior ou igual a 7,0 então nós devemos escrever uma 
mensagem informando que o aluno foi aprovado. A solução final fica assim: 
01 | Algoritmo Média; 
02 | 
03 | { 
04 | B1, B2, B2, B4: real; 
05 | Média: real; 
06 | 
07 | 
08 | escreva("Entre com o valor da primeira nota bimestral: "); 
09 | leia(B1); // Nota da primeira prova bimestral 
10 | escreva("Entre com o valor da segunda nota bimestral: "); 
11 | leia(B2); // Nota da segunda prova bimestral 
12 | escreva("Entre com o valor da terceira nota bimestral: "); 
13 | leia(B3); // Nota da terceira prova bimestral 
14 | escreva("Entre com o valor da quarta nota bimestral: "); 
15 | leia(B4); // Nota da quarta prova bimestral 
16 | Média (B1 + B2 + B3 + B4) / 4; 
17 | se Média >= 7,0 então 
18 | { 
19 | escreva("Parabéns, você foi aprovado com média ", Média); 
20 | } 
21 | } 
O algoritmo acima já é conhecido, apenas foram acrescentadas as linhas 17, 18, 
19 e 20. Esse algoritmo, primeiramente, escreve mensagens pedindo ao usuário 
que forneça quatro notas bimestrais, lê essas notas e as armazena nas variáveis 
B1, B2, B3 e B4 (da linha 8 à linha 15). Em seguida a média é calculada e o seu 
valor é armazenado na variável Média, linha 16. A execução do programa continua 
na linha 17. Nessa linha, o comando condicional verifica se o valor da variável 
Média é maior ou igual a 7,0. Suponha que a média do aluno tenha sido 7,5. Esse 
valor, 7,5, é maior ou igual a 7,0. Logo, a expressão lógica Média >= 7,0 é 
avaliada como verdadeiro. Sempre que a expressão lógica de um comando 
condicional se-então-senão for avaliada como verdadeiro, o bloco de comandos 
associado ao então é executado. No programa acima, o bloco de comandos 
associado ao então é constituído das linhas 18, 19 e 20. As linhas 18 e 20 contém 
as palavras { e }, indicando respectivamente, o início e fim do bloco de comandos 
associado ao então. Na linha 19 está o comando escreva, que irá escrever na 
tela a mensagem informando que o usuário foi aprovado e o valor de sua média. 
Supondo que a média do aluno tenha sido 7,5, o comando escreva da linha 19 irá 
escrever: 
Parabéns, você foi aprovado com média 7,5 
Executando o algoritmo do início novamente, e supondo agora que a média tenha 
sido 4,5, isso fará com que a expressão lógica do comando se-então-senão seja 
avaliada como falso.Nesse caso, o bloco de comandos associado ao então não é 
executado e a execução do programa salta da linha 17 diretamente para a linha 
21. Como a linha 21 é a última linha do algoritmo, a execução do algoritmo se 
encerra. 
Nenhuma mensagem é fornecida ao usuário caso ele tenha média menor que 7,0. 
O algoritmo acima precisa ser alterado para informar ao usuário caso ele tenha 
sido reprovado. Para isso, é necessário utilizar a forma mais completa do 
comando se-então-senão: 
se <expressão lógica> então 
{ 
 <comandos>; 
} senão 
{ 
 <comandos>; 
 } 
Nessa forma, o comando se-então-senão possui dois blocos de comandos. O 
primeiro bloco de comandos está associado ao então, e o segundo está 
associado ao senão. O bloco de comandos associado ao então é sempre 
executado quando a expressão lógica é avaliada como verdadeiro. O bloco de 
comandos associado ao senão é sempre executado quando a expressão lógica é 
avaliada como falso. Os dois blocos de comandos são ditos mutuamente 
exclusivos, pois dado um comando se-então-senão que possua os dois blocos, 
ou o bloco associado ao então é executado ou o bloco associado ao senão é 
executado. Nunca haverá uma situação na qual os dois blocos são executados, ou 
nenhum deles é executado, durante a mesma execução de um comando se-
então-senão. 
Voltando ao algoritmo que calcula a média e informa ao usuário se ele foi 
aprovado, é possível adicionar um bloco senão ao comando se-então-senão, de 
forma a informar ao usuário se ele foi reprovado. O algoritmo fica assim: 
01 | Algoritmo Média; 
02 | 
03 | { 
04 | B1, B2, B2, B4: real; 
05 | Média: real; 
06 | 
07 | 
08 | escreva("Entre com o valor da primeira nota bimestral: "); 
09 | leia(B1); // Nota da primeira prova bimestral 
10 | escreva("Entre com o valor da segunda nota bimestral: "); 
11 | leia(B2); // Nota da segunda prova bimestral 
12 | escreva("Entre com o valor da terceira nota bimestral: "); 
13 | leia(B3); // Nota da terceira prova bimestral 
14 | escreva("Entre com o valor da quarta nota bimestral: "); 
15 | leia(B4); // Nota da quarta prova bimestral 
16 | Média (B1 + B2 + B3 + B4) / 4; 
17 | se Média >= 7,0 então 
18 | { 
19 | escreva("Parabéns, você foi aprovado com média ", Média); 
20 | } senão 
21 | { 
22 | escreva("Você foi reprovado com média ", Média); 
23 | } 
24 | } 
Suponha agora que além de ter média maior ou igual a 7,0, para ser aprovado, o 
aluno precise ter freqüência mínima de 75%. Para que o algoritmo inclua essa 
alteração é necessário pedir essa informação ao usuário. Podemos fazer isso 
declarando uma variável do tipo real que armazenará a freqüência do aluno. 
Também, não é mais suficiente verificar apenas se a média do aluno é maior ou 
igual a 7,0, é necessário verificar, em conjunto, se ele possui freqüência maior ou 
igual a 75%. Portanto, o aluno somente pode ser aprovado se: 
Média >= 7,0 e Freqüência >= 75 
O operador lógico conjuntivo e faz com que uma expressão lógica seja avaliada 
como verdadeiro somente se as duas condições envolvidas forem verdadeiras. 
Um outro operador lógico muito utilizado é o operador disjuntivo ou, o qual resulta 
em verdadeiro quando uma das duas condições (ou ambas) forem verdadeiras. 
Exite mais um operador lógico, o não. O operador lógico não realiza a operação 
lógica de negação. Por exemplo, a expressão lógica abaixo: 
não(4 > 3) 
resulta no valor falso, pois 4 > 3 resulta em verdadeiro e aplicando o operador 
não sobre verdadeiro, resulta no valor falso. 
Alguns exemplos de expressões lógicas com operadores lógicos são: 
• 4 > 4 ou 4 < 4 (resulta no valor falso, pois 4 não é maior que 4. Também, 4 
não é menor que 4); 
• a < 0 e x > 0 (resulta no valor verdadeiro caso o valor da variável a seja 
menor do que 0, e o valor de x seja maior que 0. Caso contrário resulta no 
valor falso); 
• a >= 0 e a < 0 (resulta em falso pois o valor da variável a nunca pode ser, 
ao mesmo tempo, maior ou igual a zero e menor que zero); 
• a >= 0 ou a < 0 (resulta no valor verdadeiro pois caso o valor da variável a 
sempre será menor ou igual a zero ou maior que zero). 
Voltando ao algoritmo da média anual, ele fica assim: 
01 | Algoritmo Média; 
02 | 
03 | { 
04 | B1, B2, B2, B4: real; 
05 | Média, Freqüência: real; 
06 | 
07 | 
08 | escreva("Entre com o valor da primeira nota bimestral: "); 
09 | leia(B1); // Nota da primeira prova bimestral 
10 | escreva("Entre com o valor da segunda nota bimestral: "); 
11 | leia(B2); // Nota da segunda prova bimestral 
12 | escreva("Entre com o valor da terceira nota bimestral: "); 
13 | leia(B3); // Nota da terceira prova bimestral 
14 | escreva("Entre com o valor da quarta nota bimestral: "); 
15 | leia(B4); // Nota da quarta prova bimestral 
16 | escreva("Entre com a valor da freqüência anual"); 
17 | leia(Freqüência); 
18 | Média (B1 + B2 + B3 + B4) / 4; 
19 | se Média >= 7,0 e Freqüência >= 75 então 
20 | { 
21 | escreva("Parabéns, você foi aprovado com média ", Média); 
22 | } senão 
23 | { 
24 | escreva("Você foi reprovado com média ", Média); 
25 | } 
26 | } 
Logo abaixo, é apresentada a tabela atualizada de precedência dos operadores da 
linguagem algorítmica. 
Operador Precedência Categoria 
não Primeira (alta) Operadores unários 
* / div % Segunda Operadores multiplicadores 
+ - Terceira Operadores aditivos 
< > <= => Quarta Operadores relacionais 
== != Quinta Operadores relacionais igual e diferente 
e Sexta Operadores lógico e 
ou 
Sétima 
(Baixa) Operadores lógico ou 
Por fim, como já foi visto, um bloco de comandos é uma seqüência de zero ou 
mais comandos delimitados pelas palavras { e }. Entretanto, para simplificar a 
escritas dos algoritmos, é possível eliminar as palavras { e }, sempre que o bloco 
de comandos possui um único comando. Por exemplo, no algoritmo: 
01 | Algoritmo Exemplo; 
02 | 
03 | { 
04 | x: inteiro; 
05 | 
06 | 
07 | leia(x); 
08 | se x >= 0 então 
09 | { 
10 | escreva("O valor digitado é positivo ou igual a zero"); 
11 | } 
12 | } 
As linhas 09, 10 e 11 constituem um bloco de comandos que possui apenas um 
único comando dentro dele, o comando escreva da linha 10. Nesse caso, é 
possível eliminar as palavras { e }. O algoritmo fica assim: 
01 | Algoritmo Exemplo; 
02 | 
03 | { 
04 | x: inteiro; 
05 | 
06 | 
07 | leia(x); 
08 | se x >= 0 então 
09 | escreva("O valor digitado é positivo ou igual a zero"); 
10 | } 
Infelizmente, como veremos nas próximas aulas, existem situações nas quais 
decidir se é necessário, ou não, utilizar os delimitadores de bloco de comandos { e 
} é bem complicado. Na dúvida sempre utilize esses delimitadores. 
Resumo 
Algumas coisas que você deve lembrar da aula de hoje: 
• Uma expressão lógica sempre resulta em verdadeiro ou falso; 
• As expressões lógicas sempre realizam um teste, ou seja, verificam se uma 
determinada condição é verdadeira ou não no contexto atual; 
• Sempre que você pensar em uma expressão lógica, pense em uma 
pergunta. Por exemplo: "A variável x possui valor positivo?", é traduzido em 
"x > 0"; 
• O comando condicional se-então-senão utiliza uma expressão lógica para 
decidir se um bloco de comandos deve ou não ser executado. Se a 
expressão lógica resultar em verdadeiro, então o bloco de comandos 
associado ao então é executado. Caso a expressão lógica seja avaliada 
em falso, então o bloco de comandos associado ao senão (se houver um) 
é executado. 
Exercícios 
1. Faça um algoritmo que leia um número e escreva o seu valor absoluto, ou 
seja, o módulo do número. 
2. Faça um algoritmo que leia dois números e escreva qual é o maior. Pense 
na possibilidade dos números serem iguais. 
3.Faça um algoritmo que leia três números distintos e escreva o maior deles.

Outros materiais