Você está na página 1de 14

29/8/12

Programao I Estruturas de Deciso

IF com SENO
SE condio ENTO ... SENO ... FIM SE;

Se a condio for avaliada como verdadeira, a(s) instruo(es) entre o ENTO e o SENO sero executadas Se a condio for avaliada como falsa, a(s) instruo(es) entre o SENO e o FIM SE sero executadas.

A condio uma expresso condicional (depois de avaliada, retorna somente verdadeiro ou falso).

Programao I Estruturas de Deciso

IF com SENO
SE condio ENTO ... SENO ... FIM SE; if (condio) { ... } else { ... }

Se a condio for avaliada como verdadeira, a(s) instruo(es) entre o primeiro par de chaves sero executadas Se a condio for avaliada como falsa, a(s) instruo(es) entre o segundo par de chaves (logo aps o else) sero executadas. Nenhuma condio deve ser especificada aps o else. No existe ponto e vrgula logo depois do fecha parnteses que delimita a condio. No existe a keyword then na linguagem C. 2

29/8/12

Programao I Estruturas de Deciso

IF sem SENO
SE condio ENTO ... FIM SE; ...

Se a condio for avaliada como verdadeira, a(s) instruo (es) entre o ENTO e o FIM SE sero executadas Se a condio for avaliada como falsa, a instruo imediatamente aps o FIM SE ser executada.

Programao I Estruturas de Deciso

IF sem SENO
SE condio ENTO ... FIM SE; if (condio) { ... } ...

Se a condio for avaliada como verdadeira, a(s) instruo (es) entre o par de chaves sero executadas Se a condio for avaliada como falsa, a instruo logo depois do fecha chaves ser executada. No existe ponto e vrgula logo depois do fecha parnteses que delimita a condio.

29/8/12

Programao I Estruturas de Deciso

Operadores de Comparao (ou Relacionais)


Nome Igual Diferente Maior Menor Menor ou Igual Maior ou igual Algoritmo = C == != > < <= >=

> <

Cuidado para no trocar o = pelo == ou vice-versa Quando queremos atribuir uma expresso (ou valor) a uma varivel, usamos somente um =. Um nico sinal de igual normalmente no aparece na condio do if. Quando queremos saber se uma varivel exatamente igual a outra varivel ou a um nmero ou a uma expresso, usamos dois =. Dois iguais s aparecem dentro da condio do if.

Programao I Estruturas de Deciso

Operadores Lgicos
Nome E OU No Algoritmo E OU NO C && || !

Cuidado!!!!

Correto: Errado:

>= => > =

<= =< < =

!= =! ! =
6

29/8/12

Programao I Estruturas de Deciso

Sugesto
Deste ponto em diante, teremos vrias situaes onde encontraremos vrios parenteses e/ou chaves sendo abertos e fechados. Isto pode gerar alguma confuso fazendo com que algum abre chaves, abre parenteses, fecha chaves ou fecha parenteses seja esquecido. Para ajudar a minimizar esta possibilidade, sugere-se que o esqueleto do if seja escrito e que este esqueleto seja depois preenchido. if ( { } else { } Primeiro 11 else { printf(Aluno Reprovado!); } ) if ( media >= 5 ) ) { printf(Aluno Aprovado!); } Depois

Programao I Estruturas de Deciso

Comentrios
O uso de comentrios uma forma de documentar partes de um programa. Um comentrio pode: indicar o que ser armazenado em uma varivel; indicar o que determinado trecho de um programa far; lembrar que algum trecho deve ser modificado; ... Os comentrios s so vistos por quem est desenvolvendo o programa. Quem est executando o programa no tem acesso aos comentrios Existem dois tipos de comentrios:

Comentrios de Linha e Comentrios de Bloco.

12

29/8/12

Programao I Estruturas de Deciso Comentrios de Linha So indicados por duas barras normais consecutivas

//.

No DEV C++, tanto as barras quanto o texto seguinte a elas fica em azul (por padro) Quaisquer caracteres aps a segunda barra j so considerados como parte do comentrio. O comentrio termina exatamente no fim da linha. Qualquer coisa depois do fim da linha deixa de fazer parte do comentrio. Os comentrios no precisam terminar em ponto e vrgula.

int idade;

// armazena idade do funcionario // l o salrio do funcionrio

scanf ( "%f", & salario ); if (salario > 2743.33) ...

// verifica a faixa salarial para calcular o imposto

// o trecho a seguir calcula todos os descontos do funcionrio descontos = INSS + IRRF + vales + descontos_por_falta;

13

Programao I Estruturas de Deciso Comentrios de Bloco Seu incio indicado por uma barra normal seguida por um asterisco. Seu fim indicado dos por um asterisco seguido por uma barra normal. Todo o texto entre estas duas sequncias de caracteres considerado como parte do comentrio. No Dev C++, todo o texto (incluindo os indicadores de incio e fim) ficam destacados na cor azul (por padro). Quaisquer caracteres aps a sequncia de trmino deixam de fazer parte do comentrio. Os comentrios no podem terminar em ponto e vrgula. /* A seguir so declaradas todas as variveis usadas no programa de controle de folha de pagamento */ int idade; // armazena a idade do funcionrio float salrio; // armazena o salrio do funcionrio

14

29/8/12

Programao I Estruturas de Deciso

Exerccio 1
Fazer um programa para ler a nota da PP e a nota da PF para uma determinada disciplina. Aps a leitura, calcular e apresentar a mdia na tela (2 posies na parte inteira e 1 na parte decimal). Ao final, informar se o aluno foi aprovado ou no. Mdia = (PP + 2 x PF) / 3

pp: 3 pf: 4 media: 3.7 Reprovado

pp: 6.5 pf: 7.7 media: 7.3 Aprovado 15

Programao I Estruturas de Deciso

Exerccio 1
... float nota_da_pp, nota_da_pf, media_do_aluno; // Leitura dos dados printf("Informe a nota da pp:"); scanf("%f", &nota_da_pp); printf("Informe a nota da pf:"); scanf("%f", &nota_da_pf); // Calculo da media ponderada media_do_aluno = (nota_da_pp + 2 * nota_da_pf) / 3; // Impressao da media do aluno printf("A media do aluno eh %4.1f", media_do_aluno); // Mostra se o aluno foi aprovado ou no conforme a sua media if (media_do_aluno >= 5) { printf("\nAluno Aprovado!!!\n"); } else { printf("\nAluno Reprovado!!!\n"); } ...
16

29/8/12

Programao I Estruturas de Deciso

Exerccio 1a
Fazer um programa para ler a nota da PP, a nota da PF e a frequencia do aluno para uma determinada disciplina. Aps a leitura, calcular e apresentar a mdia na tela (3 posies na parte inteira e 2 na parte decimal). Ao final, informar se o aluno foi aprovado ou no. Mdia = (PP + 2 x PF) / 3
pp: 3 pf: 4 freq.: 80 media: 3.7 Reprovado pp: 6.5 pf: 7.7 freq.: 60 media: 7.3 Reprovado pp: 6.5 pf: 7.7 freq.: 78 media: 7.3 Aprovado 17

Programao I Estruturas de Deciso

Exerccio 1a
... float nota_da_pp, nota_da_pf, media_do_aluno, frequencia;
// Leitura dos dados

printf("Informe a nota da pp:"); scanf("%f", &nota_da_pp); printf("Informe a nota da pf:"); scanf("%f", &nota_da_pf); printf("Informe a frequencia do aluno:"); scanf("%f", & frequencia);
// Calculo da media ponderada

media_do_aluno = (nota_da_pp + 2 * nota_da_pf) / 3;


// Impressao da media do aluno

printf("A media do aluno eh %6.2f", media_do_aluno);


// Mostra se o aluno foi aprovado ou no conforme a sua media e frequencia

if (media_do_aluno >= 5 && frequencia >= 75) { printf("\nAluno Aprovado!!!\n"); } else { printf("\nAluno Reprovado!!!\n"); } ...
18

29/8/12

Programao I Estruturas de Deciso

Exerccio 2
Faa um programa em C para ler os coeficientes reais a, b, e c de uma equao do segundo grau. Aps a leitura dos coeficientes, calcular e apresentar o valor do delta (5 posies na parte inteira e 4 posies na parte decimal). Ao final, indicar se o valor de delta Positivo, Negativo ou Zero.
a=1, b=2, c=1 a=1, b=1, c=1 a=1, b=2, c=-3 delta = 0 delta = -3 delta = 16 O valor de delta eh Zero O valor de delta eh Negativo O valor de delta eh Positivo

19

Programao I Estruturas de Deciso

Exerccio 2
... float coef_a, coef_b, coef_c, delta; // Leitura dos dados printf("Informe o valor do coeficiente a:"); scanf("%f", &coef_a); printf("Informe o valor do coeficiente b:"); scanf("%f", &coef_b); printf("Informe o valor do coeficiente c:"); scanf("%f", &coef_c); // Calculo do valor do delta delta = coef_b * coef_b - 4 * coef_a * coef_c; // Impressao do valor do delta printf("O valor do Delta eh %10.4f\n", delta); // Mostra se delta positivo, negativo ou zero if ( delta < 0 ) { printf("O valor de delta eh negativo!"); } if ( delta > 0 ) { printf("O valor de delta eh positivo!"); } if ( delta == 0 ) { printf("O valor de delta eh zero!"); }
...

20

29/8/12

Programao I Estruturas de Deciso

Exerccio 3
Fazer um programa em C para ler 2 nmeros inteiros. Ao final, indicar se o 1 nmero maior que o 2, se o 2 maior que o primeiro, ou se os dois nmeros so iguais.
N1: 1 N2: 4 O 1 n o menor ... N1: 4 N2: 1 O 2 n o menor ... N1: 4 N2: 4 Os nmeros so iguais

21

Programao I Estruturas de Deciso

Exerccio 3
... int n1, n2; // Leitura dos dados printf("Informe o 1o numero:"); scanf("%i", &n1); printf("Informe o 2o numero:"); scanf("%i", &n2); // Mostra o resultado da comparao dos dois nmeros if ( n1 > n2 ) { printf("O 1o numero eh o maior!"); } if ( n1 < n2 ) { printf("O 2o numero eh o maior!"); } if ( n1 == n2 ) { printf("Os 2 numeros sao iguais!"); } ...

22

29/8/12

Programao I Estruturas de Deciso

Exerccio 4
Faa um programa em C para ler 3 nmeros inteiros e ao final, mostrar o maior nmero. Desconsiderar o empate.

23

Programao I Estruturas de Deciso

Exerccio 4
... int n1, n2, n3; // Leitura dos dados printf("Informe o 1o numero:"); scanf("%i", &n1); printf("Informe o 2o numero:"); scanf("%i", &n2); printf("Informe o 3o numero:"); scanf("%i, &n3); // Mostra o resultado da comparao dos tres nmeros if ( n1 > n2 && n1 > n3 ) { printf("O maior eh %i!, n1); } if ( n2 > n1 && n2 > n3 ) { printf(O maior eh %i!, n2); } if ( n3 > n1 && n3 > n2 ) { printf(" O maior eh %i!, n3); } ...
24

10

29/8/12

Programao I Estruturas de Deciso

Exerccio 5
Fazer um programa para ler a idade de uma pessoa e indicar a sua situao em relao ao voto. Obs.:
Idade menor que 16 anos: Voto no permitido; Idade maior ou igual a 16 e menor que 18 anos: Voto facultativo; Idade maior ou igual a 18 e menor ou igual a 69 anos: Voto obrigatrio; Idade maior ou igual a a 70 anos: Voto facultativo.

Fazer com um IF para cada uma das 4 situaes.

25

Programao I Estruturas de Deciso

Exerccio 5
... int idade; // Leitura dos dados printf("Informe a idade da pessoa:"); scanf("%i", &idade); // Mostra as possibilidades de votao if ( idade < 16 ) { printf("Ainda nao eh possivel votar!"); } if ( idade >= 16 && idade < 18 ) { printf("O voto eh opcional!"); } if ( idade >= 18 && idade <= 69 ) { printf("O voto eh obrigatorio!"); } if ( idade >= 70 ) { printf("O voto eh opcional!"); } ...
26

11

29/8/12

Programao I Estruturas de Deciso

Exerccio 6 - Fazer um programa para ler a idade de


uma pessoa e indicar a sua situao em relao ao voto. Obs.:
Idade menor que 16 anos: Voto no permitido; Idade maior ou igual a 16 e menor que 18 anos ou idade maior ou igual a 70 : Voto facultativo; Idade maior ou igual a 18 e menor ou igual a 69 anos: Voto obrigatrio;

Usar um nico IF para o voto facultativo (total de 3 IFs)

27

Programao I Estruturas de Deciso

Exerccio 6
... int idade; // Leitura dos dados printf("Informe a idade da pessoa:"); scanf("%i", &idade); // Mostra as possibilidades de votao if ( idade < 16 ) { printf("Ainda nao eh possivel votar!"); } if ( idade >= 16 && idade < 18 || idade >= 70 ) { printf("O voto eh opcional!"); } if ( idade >= 18 && idade <= 69 ) { printf("O voto eh obrigatorio!"); } ...
28

12

29/8/12

Programao I Estruturas de Deciso

Exerccio 7 Modifique o exerccio anterior para


incluir um comentrio de bloco no incio do programa indicando o que o programa faz e incluir tambm um comentrio de linha sobre a varavel idade do eleitor.

29

Programao I Estruturas de Deciso

Exerccio 7
/* Este programa verifica se um determinado eleitor j pode votar (idade acima de 16 anos) ou se ele ainda no pode votar */ ... int idade; // a varivel idade armazena a idade do eleitor.

30

13

29/8/12

Programao I Estruturas de Deciso

Exerccio 8 - O imposto de renda apresenta diferentes


alquotas (taxa) para diferentes faixas salariais. Faa um programa em C para ler o salrio mensal de um funcionrio e indicar o percentual de desconto (aliquota) e o valor a ser descontado do salrio para o Imposto de Renda Retido na Fonte. Usar ifs separados.
Alquota do Imposto de Renda Retido na Fonte Base de clculo mensal At R$ 1.372,81 De R$ 1.372,82 a R$ 2.743,25 Acima de R$ 2.743,25 Alquota -15% 27,5%

Dvidas com clculo de porcentagem: http://www.exatas.mat.br/porcentagem.htm http://www.profcardy.com/cardicas/porcentagem3.php http://www.juliobattisti.com.br/tutoriais/jorgeasantos/matematicaconcursos011.asp

entrada Salrio=1000 Salrio=2000 Salrio=3000 aliquota=0 aliquota=15 aliquota=27.5 desconto=0 desconto=300 desconto=825 31

sada

Programao I Estruturas de Deciso

Exerccio 8
... float salario, aliquota, desconto; // Leitura dos dados printf("Informe o salario:"); scanf("%f", &salario); // calcula a aliquota para cada faixa if ( salario <= 1372.81 ) { aliquota = 0; } if ( salario > 1372.81 && salario <= 2743.25 ) { aliquota = 15; } if ( salario > 2743.25 ) { aliquota = 27.5; } // calcula e mostra o desconto desconto = salario * ( aliquota / 100 ); printf("Aliquota=%4.1f%%, desconto=%f", aliquota, desconto); ...
32

14