Escolar Documentos
Profissional Documentos
Cultura Documentos
aula3-testes-lacos
aula3-testes-lacos
Engenharia de Computação
2018/1
CEFET-MG
o comando if :
if (expressão) comando;
Significado: é um teste
Se a expressão é verdadeira
então execute os comandos que vem a seguir.
int num;
printf ("Digite um numero: ");
scanf ("%d",&num);
#include <stdio.h>
int main ( ) {
Saída:
Verdadeiro = 1
Falso = 0
Operadores Relacionais e Lógicos
Operador Ação
> maior que
>= maior ou igual a
< menor que
<= menor ou igual a
== igual a
!= diferente de
&& condição “E”
|| condição “OU”
! negação
else if aninhados
if (x > 0)
printf("x é positivo\n");
else if (x < 0)
cálculo de alíquota de IR
printf("x é negativo\n");
else
if (salario <= 1499.15)
printf("x = 0\n");
aliquota = 0.0;
else if (salario <= 2246.75)
aliquota = 7.5;
else if (salario <= 2995.70)
aliquota = 15.0;
else if (salario <= 3743.19)
aliquota = 22.5;
else aliquota = 27.5;
Comparações e Testes
1.unário ! ++ -- + - Ainda
vamos ver
2. aritmético multiplicativo * / % outros
3. aritmético aditivo + - operadores!
Conclusão: sempre colocar parênteses para definir o que deve ser feito:
retira qualquer ambiguidade e erro do programador
Exemplo: if - else
include <stdio.h>
int main() {
int a,b;
printf(“Digite 2 números: “);
scanf(“%d %d”, &a, &b);
if (b) // testa denominador
printf(“%f”, a/b);
else
printf(“Erro; divisão por zero\n”);
}
Exemplo: if – else aninhados
if (a > b)
maior = a;
else
maior = b;
if (c > maior)
maior = c;
printf("O Maior é %d\n",maior);
}
Troca valores em variáveis se necessário
// imprime dois números em ordem crescente
#include <stdio.h>
int main() {
int a,b,temp;
printf("Ordenados: %d e %d\n",a,b);
}
A que if pertence um else
Exemplo 1: Exemplo 2:
if (n > 0) if (n > 0) {
if (a > b)
if (a > b) { z = a;
z = a; }
printf("z = %d\n", z); else
} z = b;
else
z = b;
Exemplo 1: Exemplo 2:
if (n > 0) if (n > 0) {
if (a > b)
if (a > b) { z = a;
z = a; }
printf("z = %d\n", z); else
} z = b;
else
z = b;
Exemplo
max = (num1 > num2) ? num1 : num2;
equivale a
if (num1 > num2)
max = num1;
else
max = num2;
outro exemplo
valor_absoluto = (num < 0) ? -num : num;
Comando switch
switch (expressão) {
Comando de decisão
case constante_1:
usado quando o número de opções é
elevado comando_1;
Lógica: se o valor da expressão for break;
igual a uma das constantes citadas, case constante_2:
então são executados os comandos a
partir do case correspondente comando_2;
break;
Se o valor não for igual a nenhuma
constante, então são executados os case constante_n:
comandos do default, se existir
comando_n;
o default é opcional
break;
as constantes podem ser apenas dos
default:
tipos char, int ou long
comando_default;
}
switch – uso de break
switch (x) {
case 1:
printf("x = 1\n");
break;
case 2:
printf("x = 2\n");
break;
default:
printf("o valor de x é desconhecido\n");
}
switch com e sem break
switch (x) {
case 1:
case 2:
case 3:
printf("x é 1, 2 ou 3\n");
break;
default:
printf("x não é 1, 2 nem 3)";
}
Comando switch: calculadora de 2 operações
#include <stdio.h>
int main ( ) {
char op;
float num1, num2;
switch (op) {
case ‘+’:
printf (" = %f", num 1 + num 2);
break;
case ‘-’:
printf (" = %f", num 1 - num 2);
break;
default:
printf ("operador inválido\n");
}
}
switch com e sem break
//calcula imposto
#include <stdio.h>
int main() {
float salario,imposto;
char sexo;
Saída:
printf("Digite seu salario: ");
scanf("%f",&salario);
Digite seu salario: 34
printf("Digite seu sexo(M/F): "); Digite seu sexo(M/F): f
scanf("%c",&sexo); Imposto = 3.40
switch (sexo) {
case 'f': Digite seu salario: 34
case 'F': Digite seu sexo(M/F): m
imposto = 0.1; Imposto = 6.80
break;
printf("Imposto = %.2f\n",salario*imposto);
}
Laços for, while e do
#include <stdio.h>
int main ( ) {
printf ("1 ");
printf ("2 ");
: : :
printf ("10 ");
1000 linhas : : :
de código
com printf! printf("1000\n");
Insano!!! }
int num;
for (num = 1; num <= 1000; num++)
printf ("%d ", num);
}
#include<stdio.h>
int main () {
while
int num =1;
while (num <= 1000) {
printf ("%d ", num);
num++;
}
}
Comando for
for (início; condição; incremento) comando;
o comando for tem 4 partes e uma variável de controle
inicialização da variável de controle
atribuição do valor inicial
executada uma única vez
teste ou condição
condição que define se o comando será ou não executado
avaliada a cada execução
a execução continua se o teste for verdadeiro
comando - ou comandos em blocos { }
executado imediatamente após o teste (se teste é verdadeiro)
incremento
alteração do valor da variável de controle
executada após o comando e antes do teste
Comando for: imprimindo apenas os pares
#include<stdio.h>
int main ( ) {
int numero;
Saída
Testar
2 4 6 8 … 1000
todos os
códigos
Comando for
flexibilidade: qualquer expressão de um laço “for” pode
conter várias instruções separadas por vírgula
printf(“%d”,x+y);
inicializa x e y com 0
testa se x + y < 100
executa comando raramente
incrementa 1 a x, e x a y usado
Laços for infinito e vazio são válidos!
laço infinito
for (;;)
printf(“Este loop executará eternamente!\n”);
for(i=0;i<10;i++) ;
Comando while
#include <stdio.h>
int main() {
int i=0;
printf("%d ",i);
i++;
}
}
Comando do while => faça ... enquanto
do comando;
while (condição);
o comando é executado
a condição é avaliada
se a condição é verdadeira, volta ao do (o comando é
executado)
se a condição for falsa, o comando termina
ao contrário das estruturas “for” e “while” que testam a
condição no começo do loop, “do - while” sempre a testa no
final, garantido a execução dos comandos ao menos uma vez
Comando do while
Exemplo: Término determinado pelo usuário
#include <stdio.h>
int main() {
int num;
do {
break
sai de um laço (for, while, do) e do switch
o próximo comando a ser executado é o comando seguinte
ao laço
continue
vai para o início do laço
Exercícios
Ler os capítulos 3 e 4.
Fazer todos os exercícios dos capítulos 3 e 4.
Implementar os exercícios das aulas e testar com variações no
código.
Cronograma da disciplina:
Próxima aula: Prova (caps 1,2,3,4)