Um programa deve ser capaz de tomar decisões, de acordo com os dados que está manipulando.
A forma mais simples de decisão é a execução condicional, em que um trecho de programa é ou não executado dependendo dos valores dos dados.
Em C esse comando é if
.
A forma básica do comando if
é:
if (condição) {
comandos
}
Ou seja, é a palavra if
seguida de uma condição entre parênteses, seguido de comandos entre chaves.
A execução do comando if
é: verifica a condição, que pode ser verdadeira ou falsa; se for falsa, os comandos entre chaves são ignorados, e o comando if
termina; se a condição for verdadeira, os comandos entre chaves são executados.
Os comandos entre chaves são uma sequência de quaisquer comandos da linguagem.
A condição entre parênteses é uma expressão que produz um valor lógico.
Um valor lógico pode ser verdadeiro ou falso, e é produzido por operadores de comparação ou por operadores lógicos.
De forma mais precisa, o comando if
controla a execução de uma sentença, que pode ser uma sentença simples (como qualquer sentença da linguagem vista até agora), ou uma sentença composta, que é uma sequência de sentenças da linguagem delimitadas por chaves.
A linguagem C tem 6 operadores de comparação, que comparam dois operandos numéricos e produzem um valor lógico. São eles:
<
- retorna verdadeiro se a expressão numérica da esquerda for menor que a da direita. Por exemplo,4<5
é verdadeiro,5<5
é falso.>
- verdadeiro se a da esquerda for maior que a da direita.<=
- verdadeiro se a da esquerda for menor ou igual a da direita.>=
- verdadeiro se a da esquerda for maior ou igual a da direita.==
- verdadeiro se ambas forem iguais.!=
- verdadeiro se ambas forem diferentes.
Os operadores que têm dois símbolos devem ser escritos com esses símbolos unidos (sem espaço entre eles), e na ordem mostrada (é <=
e não =<
).
Muito cuidado com o operador de igualdade (==
), para não confundir com o de atribuição (=
).
Exemplo de um programa com if
:
#include <stdio.h>
int main()
{
int a, b;
printf("Digite dois números, o primeiro maior que o segundo.\n");
scanf("%d %d", &b, &a);
if (b<=a) {
printf("Humano idiota!\n");
}
return 0;
}
- Faça uma função que recebe um número float e retorna o mesmo número, sem sinal.
O comando if
, além de ser usado para execução condicional, pode também ser usado para seleção simples (a seleção de uma entre duas possibilidades).
Nesse caso, ao invés de selecionar se um trecho de código vai ou não ser executado, ele sempre executa um entre dois trechos de código que ele comanda.
Se o resultado da expressão for verdadeiro ele executa o primeiro trecho, se for falso, executa o segundo.
O segundo trecho de código é informado em uma cláusula else
.
if (expressão) {
comandos executados se a expressão for verdadeira
} else {
comandos executados se a expressão for falsa
}
Complementando o exemplo anterior:
#include <stdio.h>
int main()
{
int a, b;
printf("Digite dois números, o primeiro maior que o segundo.\n");
scanf("%d %d", &a, &b);
if (a>b) {
printf("Bom garoto!\n");
} else {
printf("Humano idiota!\n");
printf("Te dou mais uma chance.\n");
scanf("%d %d", &a, &b);
if (a>b) {
printf("Ufa!\n");
} else {
printf("Desisto!\n");
}
}
return 0;
}
Faça um programa que:
-
Lê dois números, imprime qual o maior.
-
Lê dois números, imprime "sao iguais" ou imprime qual o menor.
-
Lê um número, diz se é par ou ímpar (use o resto da divisão por 2 par decidir).
-
Lê um número, e se ele for igual à senha secreta, lê um segundo número e imprime se ele é igual, menor ou maior que a senha super secreta. Se o primeiro número for diferente da senha secreta, imprime "acesso negado". A senha secreta é 27 e a senha super secreta é 462.
-
Lê 3 números, imprime qual o maior.
-
Lê 3 números, imprime qual o do meio.
-
Lê 2 números entre 0 e 10, que representam as notas de um aluno, e mais dois números, que representam os pesos de cada nota. Se a média ponderada das notas for pelo menos 7, informa que o aluno está aprovado. Se não for, lê mais um número, que é a nota do exame. Se a média entre o exame e a média anterior for pelo menos 5, informa que o aluno está aprovado. Senão, informa que o aluno reprovou.
-
Lê 3 números que representam os ângulos de um triângulo e diz se
- não formam um triângulo
- formam um triângulo equilátero
- formam um triângulo isósceles
- formam um triângulo escaleno
- formam um triângulo retângulo
- formam um triângulo obtusângulo
- formam um triângulo acutângulo
-
Faça um programa que lê um inteiro que corresponde a um ano, e informa se esse ano é bissexto. Os anos mútiplos de 400 são bissextos; os demais múltiplos de 100 não são; os demais múltiplos de 4 são.
Os 4 endereços abaixo apresentam formas de se calcular o dia da páscoa, dado um ano. Eles não são exatamente iguais, e parecem não calcular sempre os mesmos valores. Você deve fazer um programa que compara o cálculo efetuado pelos 4 métodos, e diga se são corretos ou não. Considere que o quarto método está correto, e compare os demais contra ele. Você deve fazer duas funções para cada um dos 4 métodos, uma que recebe o ano e retorna o mês da páscoa e outra que recebe o ano e retorna o dia da páscoa.
O programa deve ler um ano digitado pelo usuário e informar a data da páscoa de acordo com o quarto método. Para cada um dos demais métodos, o programa deve dizer se a data calculada está correta (igual à do quarto método) ou não (e nesse caso, deve imprimir também a data errada).
Os endereços são:
- https://escolakids.uol.com.br/matematica/que-dia-sera-a-pascoa.htm
- https://www.somatematica.com.br/mundo/pascoa.php
- https://www.inf.ufrgs.br/~cabral/Pascoa.html
- https://www.whydomath.org/Reading_Room_Material/ian_stewart/2000_03.html
Entrega: envie seu arquivo "t1-fulano.c" em um e-mail para "benhur+l121a" com assunto "l1-T1-fulano", até 14h do dia 15jun. A primeira linha do seu programa deve ser um comentário com seu nome. Uma linha que começa com "//" é um comentário (é ignorada pelo compilador). Coloque outro comentário com anos em que encontrou alguma diferença.