LA – Ling C – Aula 04A – Estruturas de decisão

 

Estruturas de decisão

Muitas vezes, dependendo de uma situação, precisamos executar passos diferentes para resolver um problema.

Imagine um problema onde além de calcular a média, o programa deve mostrar se o aluno está aprovado ou reprovado.

Note que será necessário avaliar o resultado do cálculo da média e em seguida, mostrar uma mensagem ou outra.

Operadores relacionais

Conjunto de símbolos usados para representar uma comparação dentro de uma estrutura de decisão.

Para os exemplos, considere que idade  = 10.

relacionais

Operadores lógicos

Conjunto de símbolos usados para combinar duas condições, de forma a obter uma única condição composta com apenas um valor lógico resultante. Pode-se combinar diversos operadores em uma mesma expressão.

Para os exemplos, considere que idade  = 10 e peso = 60.

operadoresLogicos

Estruturas de decisão

Condição

Dentro da condição, devemos colocar uma expressão que ao ser avaliada poderá assumir dois valores lógicos possíveis VERDADEIRO ou FALSO.

A expressão pode ser formada por variáveis, constantes, operadores lógicos e operadores relacionais.

O comando “if”

A utilização do comando if é similar a outras linguagens de programação.

Sendo uma expressão verdadeira, o comando (ou bloco de comandos) que compõe o corpo de “if” é executado.

Caso exista o corpo “else” (comando ou bloco de comandos) e a expressão seja falsa (retorno 0 (zero)), o corpo else será executado. Nunca os dois corpos serão executados ao mesmo tempo.

Exemplo de Comando if

exemplo_if_01

link no GitHub para exemplo de if 01

Exemplo de Comando if com mais de uma instrução

exemplo_if_02

link no GitHub para exemplo de if 02

Exemplo de Comando if e else

exemplo_if_03

link no GitHub para exemplo de if 03

if’s aninhados

De acordo com o exemplo de JAMSA (JAMSA E KLANDER, 1999, p.51), podemos utilizar if’s encadeados quando temos mais de uma condição a ser analisada.

Exemplo de Comando if’s aninhados

exemplo_if_04

link no GitHub para exemplo de if 04

Exemplo de Comando if’s aninhados (exemplo 2)

exemplo_if_05

link no GitHub para exemplo de if 05

Exemplo de Comando if’s aninhados (exemplo 3)

exemplo_if_06

link no GitHub para exemplo de if 06

O operador ?

Existe na linguagem C o operador ?, que pode ser usado para fazer teste de decisões simples, substituindo os a sentença if-then-else.

x = 10;
y = x > 9 ? 100 : 200

ou, utilizando a estrutura tradicional, ficaria:

x = 10;
if (x > 9)
y = 100;
else
y = 200;

Exemplo de utilizacao do operador ?

exemplo_interrogacao_01

link no GitHub para exemplo de operador ? – 01

Exemplo 2 de utilizacao do operador ?

exemplo_interrogacao_02

link no GitHub para exemplo de operador ? – 02

Comando “switch”

Conforme GALANTE e ZAGO (2003, p. 15), o comando if-else e o comando switch são os dois comandos de tomada de decisão.

Sem dúvida alguma o mais importante dos dois é o if, mas o comando switch tem aplicações valiosas.

Mais uma vez vale lembrar que devemos usar o comando certo no local certo. Isto assegura um código limpo e de fácil entendimento.

O comando switch é próprio para se testar uma variável em relação a diversos valores pré-estabelecidos.

Podemos fazer uma analogia entre o switch e a estrutura if-else-if. A diferença fundamental é que a estrutura switch não aceita expressões. Aceita apenas constantes.

O switch testa a variável e executa a declaração cujo case corresponda ao valor atual da variável. A declaração default é opcional e será executada apenas se a variável, que está sendo testada, não for igual a nenhuma das constantes.

O comando break, faz com que o switch seja interrompido assim que uma das declarações seja executada. Mas ele não é essencial ao comando switch.

Se após a execução da declaração não houver um break, o programa continuará executando.

Exemplo de utilizacao do switch

exemplo_switch_01

link no GitHub para exemplo de switch 01

Exemplo 2 de utilizacao do switch

exemplo_switch_02

link no GitHub para exemplo de switch 02

Exercícios Extra-Classe

Treinamento em Código 1

codigo1if

Treinamento em Código 2

codigo2if

Treinamento em Código 3

codigo3if

Treinamento em Código 4

codigo4if

Treinamento em Código 5

codigo5if

Treinamento em Código 6

codigo6if

Observação: Verifique o problema com esse código e ajuste para que apresente o resultado correto;

Treinamento em Código 7

codigo7if

Treinamento em Código 8

codigo8if

Treinamento em Código 9

codigo9if

Faça a tradução do algoritmo de para a linguagem C.

Código 1 – Faça a tradução do algoritmo de diferença entre números para a linguagem C.

Início
    /* declaração de variáveis */
    inteiro 	N1, N2, DIFERENÇA;
    /* Entrada de dados */
    Escreva (“Entre com um número inteiro qualquer:”);
    Leia(N1);
    Escreva (“Entre com outro número inteiro qualquer:”);
    Leia(N2);
    /* Processamento */
    Se (N1 > N2) então {
        DIFERENÇA = N1 - N2;
    }
    senão {
	DIFERENÇA = N2 – N1;
    };
    /* Saída de dados */
    Escreva (“A diferença do maior pelo menor valor fornecido é:”, DIFERENÇA);
Fim.

Código 2 – Faça a tradução do algoritmo de módulo para a linguagem C.

Início
    /* declaração de variáveis */
    inteiro 	N;
    /* Entrada de dados */
    Escreva (“Entre com um número inteiro qualquer:”);
    Leia(N);
    /* Processamento */
    Se (N < 0) então {
        N = N * (-1);
    };
    /* Saída de dados */
    Escreva (“O módulo do valor fornecido é:”, N);
Fim.

Código 3 – Faça a tradução do algoritmo de média para a linguagem C.

Início
    /* declaração de variáveis */
    real NOTA1, NOTA2, NOTA3, NOTA4, MEDIA;
    /* Entrada de dados */
    Escreva (“Entre com a primeira nota do aluno:”);
    Leia(NOTA1);
    Escreva (“Entre com a segunda nota do aluno:”);
    Leia(NOTA2);
    Escreva (“Entre com a terceira nota do aluno:”);
    Leia(NOTA3);
    Escreva (“Entre com a quarta nota do aluno:”);
    Leia(NOTA4);
    /* Processamento */
    MEDIA = (NOTA1 + NOTA2 + NOTA3 + NOTA4)/ 4;
    /* Saída de dados */
    Se (MEDIA >= 5) então {
        Escreva (“Aluno aprovado!”);
    }
    senão {
	Escreva (“Aluno reprovado!”);
    };
    Escreva (“Média final do aluno :”, MEDIA);
Fim.

4 – Ler quatro valores referentes a quatro notas escolares de um aluno e imprimir uma mensagem dizendo que o aluno foi aprovado, se o valor da média escolar for maior ou igual a 7. Se o valor da nota for menor que 7, solicitar a nota do exame, somar com o valor da média e obter nova média. Se a nova média for maior ou igual a 5, apresentar uma mensagem dizendo que o aluno foi aprovado em exame. Se o aluno não foi provado, indicar uma mensagem informando esta condição. Apresentar com as mensagens o valor da média do aluno em qualquer condição.

5 – Faça a tradução do algoritmo abaixo para ordenação dos números em linguagem C

Início
    /* declaração de variáveis */
    real A, B, C, AUX;
    /* Entrada de dados */
    Escreva (“Entre com o primeiro número:”);
    Leia(A);
    Escreva (“Entre com o segundo número:”);
    Leia(B);
    Escreva (“Entre com o terceiro número:”);
    Leia(C);
    /* Processamento */
    Se (A > B) então {
        AUX = A;
        A = B;
        B = AUX;
    };
    Se (A > C) então {
        AUX = A;
        A = C;
        C = AUX;
    };
    Se (B > C) então {
        AUX = C;
        C = B;
        B = AUX;
    };
    /* Saída de dados */
    Escreva (“Os valores em ordem crescente são: ”, A, B, C);
Fim.

6 – Faça a tradução do algoritmo abaixo Par ou Impar em linguagem C.

Início
    /* declaração de variáveis */
    real NUM, RESTO;
    /* Entrada de dados */
    Escreva (“Entre com um número qualquer:”);
    Leia(NUM);
    /* Processamento */
    RESTO = NUM MOD 2;
    /* Saída de dados */
    Se (RESTO== 0) então {
        Escreva (“Numero par!”);
    }
    senão {
        Escreva (“Numero impar!”);
    };
Fim.

7 – Faça a tradução do algoritmo abaixo faixa permitida em linguagem C.

Início
    /* declaração de variáveis */
    inteiro NUM;
    /* Entrada de dados */
    Escreva (“Entre com um numero qualquer”);
    Leia(NUM);
    /* Saída de dados */
    Se ((NUM >= 1) e (NUM <= 9)) então {
        Escreva (“O valor está na faixa permitida: 1 a 9”);
    }
    senão {
        Escreva (“O valor está fora da faixa permitida: 1 a  9”);
    };
Fim.

Outros exercícios: (Fornecido pelo Prof. Peter)

1. Escreva um programa que leia um número inteiro fornecido pelo usuário, armazenando-o numa variável apropriada. Imprima o valor lido.
2. Escreva um programa que leia um número real fornecido pelo usuário, armazenando-o numa variável apropriada. Imprima o valor lido.
3. Leia um número qualquer fornecido pelo usuário. Determine se o número é maior do que 50, imprimindo uma mensagem indicando tal fato.
4. Leia um número qualquer fornecido pelo usuário. Determine se o número é maior do que 100, imprimindo uma mensagem indicando que o “valor é maior que 100” ou uma mensagem indicando que o “valor é menor ou igual a 100”.
5. Dado um número inteiro qualquer, fornecido pelo usuário, descobrir se o mesmo é par ou ímpar.
6. Escreva um programa que leia dois valores, os quais denominaremos A e B, fornecidos pelo usuário, exibindo respostas F ou V para as seguintes questões:
(a) A é maior que zero?;
(b) B é maior que zero ; e
(c) A E B são maiores do que zero?
Use operadores lógicos para formular as expressões necessárias a avaliação dos valores.
7. Escreva um programa que leia dois valores, os quais denominaremos A e B, fornecidos pelo usuário, exibindo respostas F ou V para as seguintes questões:
(a) A é igual a zero?;
(b) B é menor que zero; e
(c) A OU B são maiores do que zero?
Use operadores lógicos para formular as expressões necessárias a avaliação dos valores.
8. Leia três números inteiros fornecidos pelo usuário. Descubra qual deles é o maior de todos, imprimindo seu valor.
9. Leia três números reais fornecidos pelo usuário. Descubra qual deles é o menor de todos, imprimindo seu valor.
10. Leia três números quaisquer, imprimindo-os em ordem crescente.
11. Escreva um programa que leia dois números inteiros A e B quaisquer indicando se A é múltiplo de B ou se B é múltiplo de A.
12. Escreva um programa em linguagem C capaz de calcular o preço total a ser pago por uma compra de copos plásticos. O usuário deve fornecer o número de copos a serem comprados e o programa deve calcular o preço total a ser cobrado, exibindo-o. Observe que: se o número de copo é inferior a 100, o preço por copo é R$0.05; se o número de copos está entre 101 e 500, o preço por copo é R$0.04; finalmente se o número de copos é superior a 500 o preço por copo é R$0.035.
13. Dados 3 valores reais representando os lados de um possível triângulo, verifique se os mesmos formam um triângulo (a medida de qualquer um de seus lados deve ser menor que a soma das medidas dos lados restantes). Caso seja formado um triângulo, descubra também se este triângulo é escaleno (três lados diferentes), isósceles (dois lados iguais) ou equilátero (três lados iguais).
14. Escreva um programa que leia 3 notas (valores reais), calculando e exibindo sua média aritmética. Imprima também “Aprovado” se a média for maior que 7, “Reprovado” se for menor que 3 e “Exame” se estiver entre 3 e 7.
15. Escreva um programa que realize as seguintes tarefas:
o efetue a leitura de dois valores inteiros, os quais serão denominados x e y;
o realize a soma dos valores x e y, exibindo seu resultado;
o realize o produto dos valores x e y exibindo seu resultado; e
o compare os valores x e y, indicando se “X > Y”, “X = Y” e “X < Y” para os casos correspondentes.
16. Preparar um programa para ler as medidas da base e da altura de um triângulo, calculando e imprimindo sua área, sabendo que o cálculo da área é dado por:
area = (base*altura)/2.
17. Escreva um programa em linguagem C que leia um valor inteiro correspondente a uma quantidade de segundos, convertendo o valor dado em horas corridas sabendo que 3600 segundos equivalem a 1 hora, exibindo os valores dado e convertido. Caso o usuário forneça um valor negativo, deve ser exibida uma mensagem e a operação de conversão não deve ser efetuada.

Observação: Conteúdo do material desenvolvido pelo Professor César Tofanini, adaptado pelo Professor Rodrigo Saito

Video 01

Video 02

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s