Aula 6 - O comando condicional if
  • Resumo
  • Exercício 1
  • Exercício 2
  • Exercício 3
  • Exercício 4
  • Exercício 5
  • Soluções
Avalie esta aula

Comando condicional if

O comando condicional permite que blocos diferentes de comandos sejam executados, dependendo do resultado de uma expressão lógica (uma expressão cujo resultado é Verdadeiro ou Falso).

Formato Geral

O formato geral do comando condicional if é:

if (expressão_lógica) {
    bloco_de_comandos1
}
else {
    bloco_de_comandos2
}

O que ocorre na execução:

  • se o valor da expressão_lógica é Verdadeiro, os comandos do bloco_de_comandos1 são executados
  • caso contrário (expressão_lógica é Falso), os comandos do bloco_de_comandos2 são executados.

Um exemplo de uso de comando condicional é dado abaixo.

if (media >= 5.0) {
  printf("Aprovado\n");
}
else {
  printf("Reprovado\n");
}

O que ocorre na execução:

  • se o valor da variável média é maior ou igual a 5.0, o comando printf("Aprovado\n") é impresso;
  • caso contrário (valor menor do que 5.0), o comando comando printf("Reprovado\n"); é impresso.

Operadores de comparação

Os seguintes operadores de comparação são disponíveis em Javascript:

SímboloOperaçãoExemplo
>maiormedia > 6.0
<menornota2 < nota1*2
>=maior ou igualnota2 >= nota1
<=menor ou igualx <= 3*y
===igualmedia === 10.0
!==diferentenota2 !== 0.0

Variações do comando if

Comando if sem a cláusula else

Muitas vezes não temos necessidade da cláusula "senão" do comando condicional, pois não há nada a ser feito. Nesses casos, podemos omitir a cláusula "else" do comando condicional, que fica então com o seguinte formato:

if expressão_lógica {
    bloco_de_comandos1
}
else {
    bloco_de_comandos2
}

Exemplo:

if (media === 10.0) {
  printf("Parabéns!\n");
}

Comandos if encadeados

O Comando permite testar uma condição. O que fazer quando existir mais de uma condição a ser testada?

Suponha que ao invés de escrever a média de um aluno, queiramos escrever um conceito, como A, B, e C. O conceito é determinado da seguinte forma:

  • se a média é maior do que ou igual a 8.0, o conceito é A;
  • se a média é menor do que 8.0, mas maior do que ou igual a 5.0, o conceito é B; e
  • se a média é menor do que 5.0, o conceito é C.

Podemos iniciar o teste das múltiplas condições com um comando if para testar se a média é maior do que ou igual a 8.0, e se for escrevemos 'A'.

if (media >= 8.0) {
  printf("A\n");
}
else
Se a média não for maior o do que ou igual a 8.0, podemos encadear um outro comando if para testar então se a média é maior do que ou igual a 5.0. Se for, escrevemos 'B'. Se não for, escrevemos 'C'.
if (media >= 8.0) {
  printf("A\n");
}
else if (media >= 5.0) {
  printf("B\n");
}
else {
  printf("C\n");
}

 

 

Avalie este exercício

Triplo do maior

Escreva um programa que

  • declare duas variáveis de nomes valor1 e valor2
  • use o comando scanf para ler da entrada dois valores inteiros para as variáveis valor1 e valor2
  • escreva uma linha na saída, contendo um inteiro, o triplo do maior dos dois valores lidos da entrada.

Entrada

A única linha da entrada contém dois números inteiros distintos A e B.

Saída

Seu programa deve escrever uma única linha na saída, contendo um número inteiro, o triplo do maior valor lido da entrada.

Restrições

A entrada obedece às seguintes restrições:

  • 0 ≤ A ≤ 1000
  • 0 ≤ B ≤ 1000
  • A ≠ B

Exemplos

Entrada
10 11
Saída
33

Entrada
1000 234
Saída
3000

Entrada
1 0
Saída
2

 

 

Avalie este exercício

Aviões de papel

Para descontrair os alunos após as provas da OBI, a Diretora da escola organizou um campeonato de aviões de papel. Cada aluno participante receberá uma certa quantidade de folhas de um papel especial para fazer os seus modelos de aviões. A quantidade de folhas que cada aluno deverá receber ainda não foi determinada: ela será decidida pelos juízes do campeonato.

A diretora convidou, para atuarem como juízes, engenheiros da Embraer, uma das mais bem sucedidas empresas brasileiras, que vende aviões com tecnologia brasileira no mundo todo. O campeonato está programado para começar logo após a prova da OBI, mas os juízes ainda não chegaram à escola. A diretora está aflita, pois comprou uma boa quantidade de folhas de papel especial, mas não sabe se a quantidade comprada vai ser suficiente.

Considere, por exemplo, que a Diretora comprou 100 folhas de papel especial, e que há 33 competidores. Se os juízes decidirem que cada competidor tem direito a três folhas de papel, a quantidade comprada pela diretora é suficiente. Mas se os juízes decidirem que cada competidor tem direito a quatro folhas, a quantidade comprada pela diretora não seria suficiente.

Você deve escrever um programa que, dados o número de competidores, o número de folhas de papel especial compradas pela Diretora e o número de folhas que cada competidor deve receber, determine se o número de folhas comprado pela Diretora é suficiente.

Entrada

A entrada é composta de uma linha contendo três números inteiros C, P e F representando respectivamente o número de competidores, a quantidade de folhas de papel especial compradas pela Diretora e a quantidade de folhas de papel especial que cada competidor deve receber.

Saída

Seu programa deve escrever uma única linha contendo o caractere 'S' se a quantidade de folhas compradas pela Diretora é suficiente, ou o caractere 'N' caso contrário. Note que os caracteres devem ser letras maiúsculas.

Restrições

  • 1 ≤ C ≤ 1000
  • 1 ≤ P ≤ 1000
  • 1 ≤ F ≤ 1000

Exemplos

Entrada
10 100 10
Saída
S

Entrada
10 90 10
Saída
N

Entrada
5 40 2
Saída
S

Tarefa da OBI2009, Modalidade Programação Júnior, Fase 1

 

 

Avalie este exercício

Frota de taxi

A Companhia de Taxi Tabajara (CTT) é uma das maiores empresas de transporte do país. Possui uma vasta frota de carros e opera em todas as grandes cidades. Recentemente a CTT modernizou a sua frota, adquirindo um lote de 500 carros bi-combustíveis (carros que podem utilizar como combustível tanto álcool quanto gasolina). Além do maior conforto para os passageiros e o menor gasto com manutenção, com os novos carros é possível uma redução adicional de custo: como o preço da gasolina está sujeito a variações muito bruscas e pode ser vantagem, em certos momentos, utilizar álcool como combustível. Entretanto, os carros possuem um melhor desempenho utilizando gasolina, ou seja, em geral, um carro percorre mais quilômetros por litro de gasolina do que por litro de álcool.

Você deve escrever um programa que, dados o preço do litro de álcool, o preço do litro de gasolina e os quilômetros por litro que um carro bi-combustível realiza com cada um desses combustíveis, determine se é mais econômico abastecer os carros da CTT com álcool ou com gasolina. No caso de não haver diferença de custo entre abastecer com álcool ou gasolina a CTT prefere utilizar gasolina.

Entrada

A entrada é composta por uma linha contendo quatro números reais com precisão de duas casas decimais A, G, Ra e Rg, representando respectivamente o preço por litro do álcool, o preço por litro da gasolina, o rendimento (km/l) do carro utilizando álcool e o rendimento (km/l) do carro utilizando gasolina.

Saída

A saída deve ser composta por uma única linha contendo o caractere ‘A’ se é mais econômico abastecer a frota com álcool ou o caractere ‘G’ se é mais econômico ou indiferente abastecer a frota com gasolina.

Restrições

  • 0.01 ≤ A ≤ 10.00
  • 0.01 ≤ G ≤ 10.00
  • 0.01 ≤ Ra ≤ 20.00
  • 0.01 ≤ Rg ≤ 20.00

Exemplos

Entrada
1.20 2.30 10.00 15.00
Saída
A

Entrada
1.00 1.00 9.00 9.01
Saída
G

Entrada
1.00 1.00 11.00 11.00
Saída
G

Tarefa da OBI2005, Modalidade Programação Nível 1, Fase 1

 

 

Avalie este exercício

Notas da prova

Rosy é uma talentosa professora do Ensino Médio que já ganhou muitos prêmios pela qualidade de sua aula. Seu reconhecimento foi tamanho que foi convidada a dar aulas em uma escola da Inglaterra. Mesmo falando bem inglês, Rosy ficou um pouco apreensiva com a responsabilidade, mas resolveu aceitar a proposta e encará-la como um bom desafio.

Tudo ocorreu bem para Rosy até o dia da prova. Acostumada a dar notas de 0 (zero) a 100 (cem), ela fez o mesmo na primeira prova dos alunos da Inglaterra. No entanto, os alunos acharam estranho, pois na Inglaterra o sistema de notas é diferente: as notas devem ser dadas como conceitos de A a E. O conceito A é o mais alto, enquanto o conceito E é o mais baixo.

Conversando com outros professores, ela recebeu a sugestão de utilizar a seguinte tabela, relacionando as notas numéricas com as notas de conceitos:

NotaConceito
86 a 100A
61 a 85B
36 a 60C
1 a 35D
0E

O problema é que Rosy já deu as notas no sistema numérico, e terá que converter as notas para o sistema de letras. Porém, Rosy precisa preparar as próximas aulas (para manter a qualidade que a tornou reconhecida), e não tem tempo suficiente para fazer a conversão das notas manualmente.

Tarefa

Você deve escrever um programa que recebe uma nota no sistema numérico e determina o conceito correspondente.

Entrada

A entrada contém um único conjunto de testes, que deve ser lido do dispositivo de entrada padrão (normalmente o teclado). A entrada contém uma única linha com um número inteiro N (0 ≤ N ≤ 100), representando uma nota de prova no sistema numérico.

Saída

Seu programa deve imprimir uma única linha, contendo uma letra (A, B, C, D, ou E em maiúsculas) representando o conceito correspondente à nota dada na entrada.

Exemplos

Entrada
12
Saída
D

Entrada
87
Saída
A

Entrada
0
Saída
E

Tarefa da OBI2009, Modalidade Programação Júnior, Fase 1

 

 

Avalie este exercício

Conta de água

A empresa local de abastecimento de água, a Saneamento Básico da Cidade (SBC), está promovendo uma campanha de conservação de água, distribuindo cartilhas e promovendo açãoes demonstrando a importância da água para a vida e para o meio ambiente.

Para incentivar mais ainda a economia de água, a SBC alterou os preços de seu fornecimento de forma que, proporcionalmente, aqueles clientes que consumirem menos água paguem menos pelo metro cúbico. Todo cliente paga mensalmente uma assinatura de R$ 7, que inclui uma franquia de 10 m3 de água. Isto é, para qualquer consumo entre 0 e 10 m3, o consumidor paga a mesma quantia de R$ 7 reais (note que o valor da assinatura deve ser pago mesmo que o consumidor não tenha consumido água). Acima de 10 m3, cada metro cúbico subsequente tem um valor diferente, dependendo da faixa de consumo. A SBC cobra apenas por quantidades inteiras de metros cúbicos consumidos. A tabela abaixo especifica o preço por metro cúbico para cada faixa de consumo:

Faixa de consumo (m3) Preço (por m3)
até 10
11 a 30
31 a 100
101 em diante
incluído na franquia
R$ 1
R$ 2
R$ 5

Assim, por exemplo, se o consumo foi de 120 m3, o valor da conta é:

  • 7 reais da assinatura básica;
  • 20 reais pelo consumo no intervalo 11 a 30 m3;
  • 140 reais pelo consumo no intervalo 31 a 100 m3;
  • 100 reais pelo consumo no intervalo 101 a 120 m3.

Logo o valor total da conta de água é R$ 267.

Escreva um programa que, dado o consumo de uma residência em m3, calcula o valor da conta de água daquela residência.

Entrada

A única linha da entrada contém um único inteiro N, indicando o consumo de água da residência, em m3 (0 ≤ N ≤ 103).

Saída

Seu programa deve escrever uma única linha, contendo o valor da conta de água da residência.

Restrições

  • 0 ≤ N ≤ 1000

Exemplos

Entrada
8
Saída
7

Entrada
14
Saída
11

Entrada
42
Saída
51

Tarefa da OBI2010, Modalidade Programação Nível 1, Fase 1

 

Avalie esta aula

Soluções para os exercícios

Nesta seção você encontra exemplos de soluções para os exercícios. Mas antes de ver a solução para um exercício tente resolvê-lo, criando a sua própria solução.

Solução do Exercício 1
Solução do Exercício 1
// Solução para o exercício 1, Aula 6
// Triplo do maior

var valor1, valor2;

// lê a entrada
scanf("%d%d", "valor1", "valor2");

// calcula e escreve o resultado
if (valor1 > valor2) {
  printf("%d\n", 3*valor1);
}
else {
  printf("%d\n", 3*valor2);
}

 

Solução do Exercício 2
Solução do Exercício 2
// Solução para o exercício 2, Aula 6
// Aviões de papel

var C, P, F;

// lê a entrada
scanf("%d%d%d", "C", "P", "F");

// calcula e escreve o resultado
if (C * F <= P) {
  printf("S\n");
}
else {
  printf("N\n");
}

 

Solução do Exercício 3
Solução do Exercício 3

Podemos determinar a opção mais econômica de duas formas. Uma é comparar o preço de cada km rodado com cada um dos combustíveis. O código segue abaixo.

// Solução para o exercício 2, Aula 6
// Frota de taxi

var preco_a, preco_g; // Preço do litro do álcool e da gasolina
var km_a, km_g;       // Rendimento do álcool e da gasolina, em km/l

// lê a entrada
scanf("%f%f%f%f", "preco_a", "preco_g", "km_a", "km_g");

// calcula e escreve o resultado
// compara o preço do km rodado com cada combustível
if (preco_a/km_a < preco_g/km_g) {
  printf("A\n");
} 
else { 
  printf("G\n");
}

Outra maneira é comparar qual dos combustíveis permite que o carro ande mais quilômetros, considerando que um mesmo valor é gasto para comprar cada tipo de combustível. O código segue abaixo.

// Solução para o exercício 2, Aula 6
// Frota de taxi

var preco_a, preco_g; // Preço do litro do álcool e da gasolina
var km_a, km_g;       // Rendimento do álcool e da gasolina, em km/l

// lê a entrada
scanf("%f%f%f%f", "preco_a", "preco_g", "km_a", "km_g");

// calcula e escreve o resultado
// compara qual combustível permite que o carro ande mais quilômetros
// com o mesmo gasto de combustível
if (km_a/preco_a > km_g/preco_g) {
  printf("A\n");
} 
else { 
  printf("G\n");
}

 

Solução do Exercício 4
Solução do Exercício 4
Podemos determinar o conceito referente a uma nota numérica de duas formas. Uma é comparar os intervalos de notas numéricas em ordem decrescente de notas. O código segue abaixo.
// Solução para o exercício 4, Aula 6
// Notas da prova

var N;

// lê a entrada
scanf("%d", "N");

// calcula e escreve o resultado
// percorre os intervalos em ordem decrescente
if (N >= 86) {
    // intervalo 86 a 100
    printf("A\n");
}
else if (N >= 61) {
    // intervalo 61 a 85
    printf("B\n");
}
else if (N >= 36) {
    // intervalo 36 a 60
    printf("C\n");
}
else if (N >= 1) {
    // intervalo 1 a 35
    printf("D\n");
}
else { // N===0
    printf("E\n");
}
Outra maneira é comparar os intervalos de notas numéricas em ordem crescente de notas. O código segue abaixo.
// Solução para o exercício 4, Aula 6
// Notas da prova

var N;

// lê a entrada
scanf("%d", "N");

// calcula e escreve o resultado
// percorre os intervalos em ordem crescente
if (N===0) { // N===0
    printf("E\n");
}
else if (N <= 35) {
    // intervalo 1 a 35
    printf("D\n");
}
else if (N <= 60) {
    // intervalo 36 a 60
    printf("C\n");
}
else if (N <= 85) {
    // intervalo 61 a 85
    printf("B\n");
}
else {
    // intervalo 86 a 100
    printf("A\n");
}

 

Solução do Exercício 5
Solução do Exercício 5
// Solução para o exercício 5, Aula 6
// Conta de água

var N;     // consumo de água

// lê a entrada
scanf("%d", "N");

// calcula e escreve o resultado
if (N <= 10) {
  // paga apenas a franquia de R$ 7,00
  printf("%d\n", 7);
} 
else if (N <= 30) {
  // paga a franquia de R$ 7,00
  // mais o consumo que excede 10m3 ao preço de R$ 1,00 por m3
  printf("%d\n", 7 + (N - 10));
}
else if (N <= 100) {
  // paga a franquia de R$ 7,00 
  // mais R$ 20,00 pelo consumo de 10m3 a 30m3 (20m3 a R$ 1,00)
  // mais o consumo que excede 30m3 ao preço de R$ 2,00 por m3
  printf("%d\n", 27 + 2 * (N - 30));
} 
else {
  // paga a franquia de R$ 7,00 
  // mais R$ 20,00 pelo consumo de 10m3 a 30m3 (20m3 a R$ 1,00)
  // mais R$ 140,00 pelo consumo até de 30m3 a 100m3 (70m3 a R$ 2,00)
  // mais o consumo que excede 100m3 ao preço de R$ 5,00 por m3
  printf("%d\n", 167 + 5 * (N - 100));
}

 

 

 
Área de Trabalho
Entrada
Programa
Saída