• Nenhum resultado encontrado

5- A Lógica da Programação Comandos If-else

N/A
N/A
Protected

Academic year: 2021

Share "5- A Lógica da Programação Comandos If-else"

Copied!
28
0
0

Texto

(1)

1

Unesp – Campus de Guaratinguetá

Curso de Programação Computadores

Profa. Cassilda Ribeiro

5- A Lógica da Programação

Comandos If

Comandos If

-

-

else

else

2

5. A Lógica da programação

 Neste tópico começaremos a ver em detalhes, a lógica que está por traz dos programas computacionais. Para tanto vamos, ao mesmo tempo, aprender a fazer algoritmos e a colocá-los em linguagem C.

Exemplo 1:Dados os comprimentos dos lados de um triângulo (nas variáveis LADO1 e LADO2), fazer um algoritmo para determinar e imprimir o comprimento do terceiro lado (HIPOTENUSA). Suponha que todas as variáveis sejam inteiras.

5.1 Introdução

lado1

lado2

hipotenusa

?

H = (L

12

+L

22

)

1/2 3 Algoritmo: Pitágoras

variáveis LADO1, LADO2, Q1, Q2: inteiros. HIPOTENUSA:real;

Inicio

1. [Ler dados conhecidos] Leia (LADO1, LADO2);

2. [Calcular os quadrados dos lados conhecidos] Q1  LADO1 ↑ 2;

Q2  LADO2 ↑ 2;

3. [Calcular o comprimento do terceiro lado] HIPOTENUSA SQRT (Q1 + Q2); 4. [Sair resultado]

Escreva (´Lados =`, LADO1, LADO2, HIPOTENUSA); Fim

Declarações

Instruções

5.1 Introdução 4 Algoritmo: Pitágoras Declarar variáveis; Inicio Leia (L1, L2); Q1  L1 ↑ 2; Q2  L2 ↑ 2; H SQRT (Q1 + Q2); Escreva(L1,L2,H); Fim

Algoritmo

5.1 Introdução

Código C

// Dados os 2 catetos de um triângulo, //este programa calcula a hipotenusa!

#include <stdio.h> #include <stdlib.h> #include <math.h> main() { //Inicio float L1, L2, H, Q1,Q2; printf(“Forneça L1 e L2:”); scanf(“%f%f”,&L1,&L2); Q1=pow(L1,2); Q2=pow(L2,2); H = sqrt(Q1 + Q2); printf(“L1=%f, L2=%f, H=%f \n”,L1,L2,H); system(“pause”); }//Fim

(2)

5

Para se descobrir isto, deve-se rastrear o algoritmo,

isto é, executá-lo manualmente, com dados numéricos,

utilizando lápis e papel para registrar os valores

tomados pelas variáveis a cada passo.

5.2. Rastreando um Algoritmo

O

exemplo 2

a seguir ilustra o rastreamento do

algoritmo do exemplo 1.

L1=3

L2=4

Algoritmo

H=5

4

5.2. Rastreando um Algoritmo



Depois de elaborado um algoritmo, como saber se

ele faz o que se supõe que faça?

6 Algoritmo: Pitágoras Declarar variáveis; Inicio Leia (L1, L2); Q1  L1 ↑ 2; Q2  L2 ↑ 2; H SQRT (Q1 + Q2); Escreva(L1,L2,H); Fim

Algoritmo

Q2

?

Passo L1 L2 Q1 H Saída

3 4 9

?

?

1

3 4 9 16 ?

?

2

5.2. Rastreando um Algoritmo

Suponha que conheçamos os

dois catetos de um triângulo retângulos cujas medidas são 3cm e 4cm. Então os dados de entrada são 3 e 4.

Exemplo 2: Rastrear Pitágoras

1

3 4 9 16 5

?

3

3 4 9 16 5 3,4,5

4 2 3 4 7

5.2. Rastreando um Algoritmo

Fazer um algorítmo que leia quatro notas (NOTA1,

NOTA2, NOTA3 e NOTA4 )e calcula a nota média,

armazena o resultado na variável MEDIA. O resultado final deve ser impresso com uma

mensagem explicativa. Toda as variáveis são reais.

Exemplo 3: Calcular Média

Algoritmo Notas

Variáveis N1, N2, N3, N4, MEDIA; Inicio

1. [Ler as notas individuais] Escreva(“digite as 4 notas”) Leia ( N1, N2, N3, N4 ); 2. [Calcular a nota média]

MEDIA ( N1 + N2 + N3 + N4 ) / 4.0; 3. [Sair resultados]

Escreva (´Nota Final =`, MEDIA); Fim

Algoritmo

Aqui está sendo dada uma ordem para que o computador leia os

dados necessários para calcular a média. 8

Fazer um algorítmo que leia quatro notas (NOTA1,

NOTA2, NOTA3 e NOTA4 )e calcula a nota média,

armazena o resultado na variável MEDIA. O resultado final deve ser impresso com uma

mensagem explicativa. Toda as variáveis são reais.

Exemplo 3: Calcular Média

Algoritmo Notas

Variáveis N1, N2, N3, N4, MEDIA; Inicio

1. [Ler as notas individuais] Escreva(“digite as 4 notas”)

Leia ( N1, N2, N3, N4 ); 2. [Calcular a nota média]

MEDIA ( N1 + N2 + N3 + N4 ) / 4.0; 3. [Sair resultados]

Escreva (´Nota Final =`, MEDIA); Fim

Algoritmo

Aqui está sendo dada uma ordem para que o computador escreva na tela o valor da média que ele calculou.

5.2. Rastreando um Algoritmo

(3)

9

Exemplo 3: Código C

include<stdlib.h> include<stdio.h> main() { float n1, n2, n3, n4,media;

printf(“Forneça as notas n1, n2, n3 e n4:”); scanf(“%f%f%f%f”,&n1,&n2,&n3,&n4); media = (n1 + n2 + n3 + n2)/4.0;

printf(“ Nota Final = %f \n”,media); system(“pause”); } Passo N1 N2 N3 N4 M Saída 6.0 6.5 8.0 9.5 ? ? 1 6.0 6.5 8.0 9.5 7.5 ? 2 6.0 6.5 8.0 9.5 7.5 7.5 3 1 2 3

5.2. Rastreando um Algoritmo

10

Uma outra forma de escrever em Linguagem C o programa

associado ao algoritmo que resolve o Exemplo 3 é:

/* ---*

* Programa do exemplo 3- Tópico 5 *

* Cálculo da média final entre 4 notas *

*---*/

#include <stdio.h>

#include <stdlib.h>

main()

{

float N1, N2, N3, N4, MEDIA;

printf(

"DIGITE A NOTA1 "

);

scanf

("%f"

,&N1);

Aqui está sendo dada uma ordem para que o computador escreva a frase “DIGITE A NOTA1”

Aqui está sendo dada uma ordem para que o computador guarde na memória a NOTA1 que foi digitada

5.3. Trabalhando com a Linguagem C

continua na pg. seguinte

11 printf("NOTA1=%f\n",NOTA1);

printf("\nDIGITE A NOTA2 "); scanf("%f",&N2);

printf("NOTA2=%f\n",NOTA2); printf("\nDIGITE A NOTA3 "); scanf("%f",&N3);

printf("NOTA3=%f\n“ ,NOTA3); printf("\nDIGITE A NOTA4 "); scanf("%f",&N4);

printf("NOTA4=%f\n",NOTA4); MEDIA = (N1+N2+N3+N4)/4.0; printf("\n ");

printf("NOTA FINAL = %f\n", MEDIA); system("pause");

}

Aqui está sendo dada uma ordem para que o computador escreva a frase “NOTA1=”, seguido do valor da variável que está armazenado na memória.

Aqui está sendo calculado o valor da MEDIA

Aqui está sendo dada uma ordem para que o

computador escreva a frase “NOTA FINAL=”, seguido do valor da MEDIA que foi calculada anteriormente.

5.3. Trabalhando com a Linguagem C

12 Ao se executar o programa do exemplo 3, aparece a

seguinte tela:

(4)

13

Exemplo 4:Fazer um algoritmo que leia um valor em dólar e o converta para real.

O Exemplo 4 em

Linguagem C torna-se: Algoritmo Conversão

Variáveis: Qdolar, Qreal,taxa: real Inicio

1.[Ler a taxa e quantidade Qdolar] Leia (taxa, Qdolar)

2. [Converter dolar para real] Qreal  taxa * Qdolar.

3. [Sair resultados] Escreva (Qdolar“dolar =Qreal reais) Fim

5.3. Trabalhando com a Linguagem C

14

/*====================================

* Este eh o programa do exemplo 4- tópico 5

*

*====================================*/

#include <stdio.h>

#include <stdlib.h>

main()

{

float taxa, Qdolar, Qreal;

//ler dados

printf(

"digite o valor da taxa em reais\n"

);

scanf(

"%f"

,&taxa);

printf(

"digite a quantidade de dolares que deseja trocar\n"

);

scanf(

"%f"

,&Qdolar);

//Converter dolar para real

Qreal = taxa * Qdolar;

// Sair resultados

printf (

"%.2f dolares = %.2f reais\n"

,Qdolar,Qreal);

system(

"pause"

);

}

//Fim

Ordena ao computador que escreva na tela a frase em vermelho Ordena ao computador que leia e armazene na memória o número digitado pelo usuário

5.3. Trabalhando com a Linguagem C

15 Algoritmo Converte_Chuva

Variáveis: POL, MILIM: real. Inicio

1. [Ler dados conhecidos]

Escreva (“ Digite o valor da chuva em polegadas”) Leia ( POL )

2. [Converter polegadas em milímetros] MILIM  25.4 * POL

3. [Sair resultado]

Escreva (´Quantidade de chuva em mm =`,MILIMETROS) Fim

Exemplo 5:Fazer um algoritmo que leia uma quantidade de chuvas em polegadas e converta para milímetros. Todas as variáveis são reais. Todas as variáveis em questão são reais.

Colocando o Exemplo 5 em Linguagem C

5.3. Trabalhando com a Linguagem C

16

Programa do Exemplo 5

/*====================================== * Este é o programa do exemplo 5 - tópico 5 * *======================================*/ # include <stdio.h> # include <stdlib.h> main() { float POL,MILIM;

printf("Digite o valor da chuva em polegadas="); scanf("%f",&POL);

printf("\n ");

printf("Chuva em Polegadas = %f\n", POL); MILIM = 25.4 * POL;

printf ("\n");

printf("Chuva em Milímetros = %f\n", MILIM); printf("\n ");

system("pause"); }

(5)

17

Programa do Exemplo 5 : Continuação

Ao se executar o programa do exemplo 5, aparece a seguinte tela:

5.3. Trabalhando com a Linguagem C

18 Algoritmo Lanchonete

Variáveis: HAM , CHE , C1, FRITAS, REFRI, MILK: inteiro

CONTA, C1, C2, C3, C4, C5, CUSTO1 CUSTO2 CUSTO3 CUSTO4, CUSTO5 : real. inicio

1.[Ler dados de entrada] Leia ( HAM , C1 ) Leia ( CHE , C2 ) Leia (FRITAS , C3 ) Leia ( REFRI , C4 ) Leia ( MILK , C5 )

Exemplo 6:Fazer um algoritmo que leia uma quantidade de itens comprados ( HAM, CHE, FRITAS, REFRI, MILK ), bem como seus custos ( C1, C2, C3, C4, C5 ) e calcule a conta final. As variáveis relativas a itens comprados são inteiras e as variáveis relativas a custo são reais.

: Algoritmo do Exemplo 6

5.3. Trabalhando com a Linguagem C

19 2. [Calcular o custo total de cada item]

CUSTO1  HAM * C1 CUSTO2  CHE * C2 CUSTO3  FRITAS * C3 CUSTO4  REFRI * C4 CUSTO5  MILK * C5 3. [Calcular a conta final]

CONTA  CUSTO1 + CUSTO2 + CUSTO3 + CUSTO4 + CUSTO5 4. [Impressão de resultados]

Escreva (´Hambúrguer (R$´,C1`)`,CUSTO1) Escreva (´Chesburguer (R$´,C2`)`,CUSTO2) Escreva (´Batatas fritas (R$´,C3`)`,CUSTO3) Escreva (´Refrigerantes (R$´,C4`)`,CUSTO4) Escreva (´Milkshake (R$´,C5`)`,CUSTO5) Escreva (´Total`,CONTA)

Saída

Algoritmo do Exemplo 6

Colocando o Exemplo 6 em Linguagem C 5.3. Trabalhando com a Linguagem C :

20

Programa do Exemplo 6

/*

---* Programa do exemplo 6 - Tópico 5 ---* * Cálculo da Conta de uma Lanchonete *

*---*/

#include <stdio.h> #include <stdlib.h>

main() {

float C1, C2, C3, C4,C5, CONTA; //Declara variáveis

float CUSTO1, CUSTO2, CUSTO3, CUSTO4,CUSTO5; int HAM, CHE, FRITAS, REFRI, MILK;

/*Ler dados de entrada*/

printf("DIGITE A quantidade de hamburgueres\n"); printf("consumida e o seu custo unitario "); scanf("%d%f",&HAM,&C1);

printf("\n\n");

(6)

21

Programa do Exemplo 6 : Continuação

printf("DIGITE A quantidade de Chesburgueres\n"); printf("consumida e o seu custo unitario ");

scanf("%d%f",&CHE,&C2); printf("\n\n");

printf("DIGITE A quantidade de Fritas\n"); printf("consumida e o seu custo unitario "); scanf("%d%f",&FRITAS,&C3);

printf("\n\n");

printf("DIGITE A quantidade de Refrigerantes\n"); printf("consumida e o seu custo unitario ");

scanf("%d%f",&REFRI,&C4); printf("\n\n");

22

Programa do Exemplo 6 : Continuação

printf("DIGITE A quantidade de Milkshake\n"); printf("consumida e o seu custo unitario "); scanf("%d%f",&MILK,&C5);

/*

Calcular o custo de cada item*/

CUSTO1 = HAM * C1; CUSTO2 = CHE * C2; CUSTO3 = FRITAS * C3; CUSTO4 = REFRI * C4; CUSTO5 = MILK * C5;

/*Calcular a conta final*/

CONTA = CUSTO1 + CUSTO2 + CUSTO3 + CUSTO4 + CUSTO5;

23

Programa do Exemplo 6 : Continuação

/*Impressão de resultados*/

printf("===================================\n\n"); printf ("Hamburguer (%f R$) = %f\n",C1,CUSTO1); printf ("Chesburguer (%f R$) = %f\n",C2,CUSTO2); printf ("Batatas fritas(%f R$) = %f\n",C3,CUSTO3); printf ("Refrigerantes (%f R$) = %f\n",C4,CUSTO4); printf ("Milkshake (%f R$) = %f\n",C5,CUSTO5); printf ("==================Total = %f\n\n",CONTA); system("pause");

}

Ao se executar o programa do exemplo 6, aparece a seguinte tela:

24 Programa do Exemplo 6 : Continuação

(7)

25

Suponha que temos duas variáveis numéricas, A e B,

cujos valores são diferentes, e desejamos imprimir a

maior delas.

5.4 Seleção de Ações Alternativas

Neste caso utilizamos uma construção chamada

Se_Então_Senão

SIM NÃO

A > B ?

escreva (A) escreva (B)

26

Em Linguagem Algorítmica a construção

Se_Então_Senão

tem o seguinte formato:

Se “

condição

então “

alternativa verdadeira

senão “

alternativa falsa

Exemplo:

Se A > B

então Escreva ( A )

senão Escreva ( B )

5.4 Seleção de Ações Alternativas

27



Um conjunto especial de operadores relacionais é

solicitado para expressar condições. São eles:

!= <= >= == < > Operador em Linguagem C

não igual ( diferente de ) ≠

menor do que ou igual a ≤

maior do que ou igual a ≥ igual a = menor do que < maior do que > Significado Operador em Linguagem Algorítmica

5.4 Seleção de Ações Alternativas

28

Exemplo 7:Fazer um algorítmo em que dadas as três notas individuais em três aspectos do ano escolar (Lab, Exame_inter, Exame_final) para um estudante chamado Nome. O algorítmo deve calcular a média final com pesos de 20%, 30% e 50%, respectivamente. O relatório de saída deve fornecer o nome do aluno, suas notas individuais,sua média final e uma mensagem caso o aluno esteja reprovado. A variável Média é real.

Algoritmo Relatório

Variáveis: Lab, Exame_inter, Exame_final, Média : reais Nome : cadeia de caractere

Início

1. [Ler dados]

Leia [Nome, Lab, Exame_inter, Exame_final] 2. [Calcular a média]

Média  0.2 * Lab + 0.3 * Exame_inter + 0.5 * Exame_final

5.4 Seleção de Ações Alternativas

(8)

29 3. [Imprimir resultados]

Escreva (´Nome estudante:´, Nome) Escreva (´Nota Laboratório:`, Lab)

Escreva (´Exame Intermediário:`, Exame_inter) Escreva (´Exame Final`, Exame_final)

Escreva ( ´Média Final:`, Média) 4. [Verificar se tem aluno reprovado]

Se Media < 5.0

então Escreva (´Reprovado`) Fim

5.4 Seleção de Ações Alternativas

Exemplo 7: Continuação....

30

5.4 Seleção de Ações Alternativas

Exemplo 8:

Faça um algoritmo que leia dois valores, determine o maior

deles e o imprima com uma mensagem de identificação. Assumir que

todas as variáveis são inteiras

.

Algoritmo Mostre

Variáveis: Valor1, Valor2, Max : inteiras Início

1. [Ler os valores] Leia ( Valor1, Valor2 ) 2. [Determinar o maior]

Se Valor1 > Valor2 então Max  Valor1

Escreva (´O Primeiro valor é maior`) senão Max  Valor2

Escreva (´O Segundo Valor é maior`)

3. [Imprimir o maior valor] Escreva (´Maior Valor =`, Max) 4. [Terminar]

Fim

31

5.4.1

5.4.1

Diagrama de blocos

Diagrama de blocos

-

-

Fluxograma

Fluxograma

5.4 Seleção de Ações Alternativas

 Como já foi dito anteriormente, antes de se fazer um programa, deve-se fazer um algoritmo de problema. Para tanto temos utilizado uma linguagem algorítmica que também chamamos de portugol.

 Uma outra maneira de se escrever algoritmos é através de fluxograma ou diagrama de bloco. No fluxograma, as ações a serem executadas são representadas de maneira gráfica.

 Embora a linguagem algorítmica seja mais utilizada, existem vários livros que utilizam o fluxograma para explicar partes do algoritmo, devido ao seu forte apelo visual

 A seguir mostramos rapidamente as ferramentas utilizadas para a

confecção de um fluxograma. 32

Símbolo

Símbolo

Descrição

Descrição

Inicio/Fim Delimita o início ou o final das instruções.

Leitura de dados (através do teclado, pex).

Leitura

Avaliação de uma condição.

Cond

Apresentação de resultados.

Resultados

Operacoes Atribuição ou operação de processamento. Fluxo de execução.

Conexão entre partes do algoritmo.

(9)

33

Suponha duas variáveis

numéricas, A e B, com

valores diferentes, e

deseja-se imprimir a

maior delas.

Problema Maior

Variaveis A, B; Inicio 1. Ler(A,B); 2. Se (A > B) entao imprimir A; Senao imprimir B; Fim

Algoritmo Maior

V

Inicio

Ler A,B;

Se A>B

Escreva(B); Escreva(A);

Final

F

5.4.1 Diagrama de blocos - Fluxograma

34

Exemplo 9 :

Faça um algoritmo que leia três números A, B e C e imprima

o valor do maior. Assumir valores distintos e reais.

Algorítmo Max_3

Variáveis A, B, C, Max : reais Início

1. [Ler dados] Leia (A, B, C)

Em algumas aplicações, uma das alternativas de uma

estrutura Se_Então_Senão pode envolver outras decisões

5.4.2 Seleção de Ações Alternativas :

Ses Encaixados

5.4.2 Seleção de Ações Alternativas : Ses Encaixados

35 2. [Determinar o maior valor, comparando pares]

Se A > B

Então Se A > C

então Max  A ( A > B,A > C )

senão Max  C ( C > A > B ) Senão Se B > C

então Max  B ( B > A, B > C )

senão Max  C ( C > B > A )

3. [Imprimir o maior valor] Escreva (´Maior valor =`, Max) 4. [Terminar] Fim Exemplo 9: Continuação.... Se A > B Se A > C F V V V A; B; Se B > C F C; C; F Inicio Ler A,B,C; Escreva(Max); Final

5.4.2 Seleção de Ações Alternativas :

Ses Encaixados

36

Ex1: Se C1

então Se C2

então S1

senão S2

Em que condições S2 é executado?

Cuidado com a paragrafação

onde: C1 e C2 significam

condições e S1 e S2,

comandos

Isso não fica claro.

(10)

37

Ex2:

Se C1

Se C1

então

Se

C2

então

Se

C2

então

S1

então

S1

senão

S2

senão S2

5.4.2 Seleção de Ações Alternativas :

Ses Encaixados

Neste exemplo, o comando SeC2 só será executado se a condição C1 for Verdadeira. Se C1 for falsa, nenhum comando será Executado.

Neste exemplo, o comando SeC2 só será executado se a condição C1 for verdadeira. Se ela for falsa, o comando S2 será executado

38

5.4.2 Seleção de Ações Alternativas :

Ses Encaixados

Exemplo 10:Uma empresa decidiu dar uma gratificação de Natal a seus funcionários. Esta gratificação é calculada com base no número de horas extras trabalhadas e o número de horas de falta. A fórmula para se calcular o prêmio é a seguinte:

Extra – 2 /3 * Faltas. O prêmio é distribuído segundo a tabela a seguir:

10 <= 10 horas 20 > 10 mas <= 20 horas 30 > 20 mas <= 30 horas 40 > 30 mas <= 40 horas 50 > 40 horas Prêmio (R$)

Extra – 2/3 * Faltas Pede-se um algoritmo e

um programa em C, para ler informações de funcionários e calcular o

prêmio a ser dado.

39 Algoritmo Bônus

Variáveis: Extras, Faltas, Pagamentos : reais Nome : cadeia

Início

1. [Ler informações de um funcionário] Leia (Nome, Extras, Faltas) 2. [Calcular o prêmio]

Se Extras – (2/3.0) * Faltas > 40 Então Pagamento  50

Senão Se Extras – (2/3.0) * Faltas >30 Então Pagamento  40

Senão Se Extras – (2/3.0) * Faltas >20 Então Pagamento  30

Senão Se Extras – (2/3.0)*Faltas>10 Então Pagamento  20 Senão Pagamento  10 3. [Imprimir resultados]

Escreva (´Prêmio para`, Nome,`=R$`, Pagamento) Fim Exemplo 10: continuação Se A > 40 Se A > 30 Se A > 20 Se A > 10 V F F F V V F V P←←←←50; P←←←←40; P←←←←30; P←←←←20; P←←←←10; 40



Podemos melhorar este algorítmo, calculando ovalor do teste (Extra – (2/3.0) * Faltas)somente uma vez. Para isto vamos introduzir uma variável temporária (Valor_teste).

2.1 [Calcular o valor teste]

Valor_teste  Extras – (2/3.0) * Faltas 2.2 [Calcular o prêmio] Se (Valor_teste > 40) Então Pagamento  50 Senão Se Valor_teste > 30 Então Pagamento  40 Senão Se Valor_teste > 20 Então Pagamento  30 Senão Se Valor_teste > 10 Então Pagamento 20 Senão Pagamento 10 Exemplo 10:

continuação

(11)

41

Comando

if

# Sintaxe:

if (

expressão é verdadeira

)

execute comando ou bloco de comandos

# Exemplo:

Falso = 0 Verdadeiro ≠ 0

if (contador > 9)

contador = 0;

5.4.3 Seleção de Ações Alternativas: O Comando if

Em linguagem C a construção

Se – Então - Senão

é feita através do:

42

# Exemplo:

OBS:

Quando dentro do comando

if

, forem executados

mais de um comando (bloco de comando) é

necessário colocar chaves, {}, para marcar o

inicio e o fim dos comandos a serem executados.

if (contador >9) {

contador = 0; soma = 32 }

Aqui tem duas ações sendo feitas dentro da condição verdadeira

Chave marcando o fim da condição verdadeira Chave marcando o inicio da condição verdadeira

5.4.3 Seleção de Ações Alternativas: O Comando if

43 Fazer um programa em C que leia um número e impri-ma uimpri-ma mensa-gem dizendo se ele é maior que 10, menor ou igual a 10. #include <stdio.h> #include <stdlib.h> main () { /* Inicio do programa */ int num;

printf ("Digite um numero: "); scanf ("%d",&num);

if (num > 10)

printf ("\n\n O numero digitado eh maior que 10"); if (num == 10) { /* Inicio do if */

printf ("\n\n Voce acertou!\n");

printf ("O numero digitado e igual a 10."); } /* fim do if*/

if (num < 10)

printf ("\n\n O numero digitado eh menor que 10"); system("pause"); } Observe a chave { marcando o inicio do if

Exemplo 11

5.4.3 Seleção de Ações Alternativas: O Comando if

44

5.4.4 Seleção de Ações Alternativas: O Comando

else

else

O Comandoelsepode ser considerado um complemento do

comando if, cujos comandos serão executados SOMENTE SE a expressão, especificada após o comando if, for 0 (falsa).

#

Sintaxe:

if (

expressão é verdadeira

)

execute comando1 ou bloco1 de comandos

else

execute comando2 ou bloco2 de comandos

Falso = 0 Verdadeiro ≠ 0

(12)

45 #include <stdio.h> #include <stdlib.h> main ( ) { int num;

printf ("Digite um numero: "); scanf ("%d", &num);

if (num == 10) {//inicio então

printf ("\n\n Voce acertou!\n"); printf ("O numero e igual a 10.\n"); }//fim então

else {//inicio senão

printf ("\n\n Voce errou!\n");

printf ("O numero eh diferente de 10.\\nn"); }//fim senão system("pause"); }

Refazer o programa

em C do exemplo 11

anterior, utilizando

o comando else

Exemplo 12

Exemplo 12

5.4.4 Seleção de Ações Alternativas: O Comando

else

else

46

5.4.5 Seleção de Ações Alternativas:

if-else encaixados



É possível aninhar construções do tipo

if-else

em

diversos níveis.

if (cond1) /* if1 */ if (cond2) /* if2 */ comando if2 ; else /* else2 */ comando else2 ; else /* else1 */ if (cond3) /* if3 */ if (cond4) /* if4 */ comando if4 ; else /* else4 */ comando else4 ; else /* else3 */ comando else3 ; 47

5.4.6- Exercícios resolvidos - Comando

If

If

-

-

else

else

Exercício 1: Colocar o

Exemplo 7

em Linguagem C

#include <stdlib.h> #include <stdio.h>

main() {

// declarar variáveis

float lab,exame1, exame_final, media; char nome[30];

//1. [Ler dados]

printf( "Digite o nome do aluno: "); scanf("%s",&nome);

printf("\n\n");

printf("Digite as notas de: lab, exame1 e exame_final, do aluno:%d\n", nome); scanf("%f%f%f",&lab,&exame1,&exame_final);

//2. [Calcular a média]

media= 0.2*lab + 0.3* exame1 + 0.5*exame_final; continua na página seguinte 48

Continuação do Exercício 1 // 3. [imprimir resultados]

printf ("\nNome. estudante:%s\n",nome); printf("\n");

printf("Nota Laboratorio: %f\n\n",lab); printf("Exame1: %f\n\n",exame1);

printf("Exame Final: %f\n\n",exame_final); printf("Media Final: %f\n\n",media); if(media < 5.0) printf("Reprovado\n\n\n"); else printf("Aprovado\n\n"); system("PAUSE"); }// fim programa

(13)

49

Exercício 2: Colocar o Exemplo 9 em Linguagem C

#include <stdlib.h> #include <stdio.h> main( ) {// declarar variáveis float A, B, C, max; //1. [Ler dados]

printf( "Digite tres numeros A, B, C\n"); scanf("%f%f%f",&A,&B,&C);

// 2. [Determinar o maior valor, comparando pares]

if (A > B) { if (A > C)

{ max = A ; //( A > B , A > C )

printf( "\nO maior valor eh o A\n"); }

else

{ max = C ; // (A > B e C >A )

printf( "\nO maior valor eh o C\n"); }

}



continua na página 50

Exemplo 9 :Faça um programa que leia três números A, B e C e imprima o valor do maior.Assumir valores distintos e reais.

5.4.6- Exercícios resolvidos - Comando

If

If

-

-

else

else

50

Continuação do Exercício 2

else

{ if (B > C) // ( B > A, B > C )

{ max = B;

printf( "\nO maior valor eh o B\n"); }

else

{ max = C; // ( C > B > A )

printf( "\nO maior valor eh o C\n"); }

}

// 3. [Imprimir o maior valor]

printf ("\nMaior valor =%f\n\n", max); system("pause");

} //4. Fim do programa

5.4.6- Exercícios resolvidos - Comando

If

If

-

-

else

else

51

#include <stdlib.h>

#include <stdio.h>

main ( )

{

int a, b, c, maior, meio, menor ;

// declaração de variáveis.

// Leitura de dados

printf(

" Entre com tres numeros inteiros\n"

);

scanf(

"%d%d%d"

,&a,&b,&c);

if ( a > b )

if ( a > c )

{

maior = a;

if ( b > c ) { meio = b; menor = c; }

else { meio = c; menor = b; }

}

else { maior = c; meio = a; menor = b; }



continua na próxima página

Exercício 3: Refazer o programa do Exercício 2 para imprimir os 3 números na ordem crescente.

5.4.6- Exercícios resolvidos - Comando

If

If

-

-

else

else

52

else

if ( a > c ) { maior = b; meio = a; menor = c; }

else

{

menor = a;

if ( b > c ) { maior = b; meio = c; }

else { maior = c; meio = b; }

}

printf(

"Em ordem crescente: %d %d %d\n\n"

, menor, meio, maior);

system(

"pause"

);

}

//fim programa

Continuação do Exercício 3

(14)

53

5.4.7- Exercícios para Casa - Comando

If

If

-

-

else

else

1) Colocar em Linguagem C os algoritmos dos exemplos 8, e 10.

2) Fazer um programa em C que leia 4 números (A, B, C, D) e encontre o maior deles. Imprima uma mensagem dizendo qual deles é o maior e o valor do maior.

3) Faça um programa em C que calcule o aumento de salário para o corrente ano. Se salário >1000 o aumento é de 5%. Senão o aumento é de 7%.

4) Preparar um algoritmo e um programa em C para ler os comprimentos dos três lados de um triângulo (S1, S2, e S3) e determinar que tipo de triângulo temos, com base nos seguintes casos. Sejam A o maior dos lados de S1, S2, e S3 e B e C os outros dois lados. Então:

Se A ≥ B + C nenhum triangulo é formado

Se A2 = B2+ C2um triangulo retangulo é formado, Se A2 > B2+ C2um triangulo obtusangulo é formado Se A2< B2+ C2um triangulo acutangulo é formado

53 54

5) Faça um programa que leia dois valores, o primeiro servindo de indicador de operação e o segundo correspondendo ao raio de uma circunferência. Caso o primeiro valor lido seja igual a 1, calcular e imprimir a área desta circunferência. Se o valor lido for 2, calcular e imprimir o perímetro da circunferência. E se o valor lido for diferente destes dois valores; imprimir uma mensagem dizendo que o indicador de operação foi mal fornecido.

6) Fazer um programa que: dada a altura e peso de uma pessoa, calcule seu índice de massa corporal. Fórmula: peso dividido por altura ao quadrado. Faixas: <= 18,5 - abaixo do peso normal; > 18,5 e <= 25 - peso normal; > 25 e <=30 - peso acima do normal; acima de 30 - peso excessivo.

54

5.4.7- Exercícios para Casa - Comando

If

If

-

-

else

else

55 7) Faça um programa que leia dois valores, o primeiro servindo de indicador de operação e o segundo correspondendo ao raio de uma circunferência. Caso o primeiro valor lido seja igual a 1, calcular e imprimir a área desta circunferência. Se o valor lido for 2, calcular e imprimir o perímetro da circunferência. E se o valor lido for diferente destes dois valores; imprimir uma mensagem dizendo que o indicador de operação foi mal fornecido.

8)Fazer um programa que resolva uma equação de segundo grau, realizando consistências dos valores do discriminante e do coeficiente "a". Caso o discriminante seja negativo, deverá apenas ser impressa a mensagem: " Esta equação não possui raízes reais" . Caso o coeficiente "a" seja igual à zero, deverá ser impressa a mensagem: " Esta não é uma equação de segundo grau" e deverá ser fornecido o valor da única raiz. Se o discriminante for maior ou igual a zero e o coeficiente "a" não for nulo, deverão ser impressas: "as raízes da equação: ax2 + bx + c = 0 são R1 = xxx e R2 = xxx".

55

5.4.7- Exercícios para Casa - Comando

If

If

-

-

else

else

56

Resolução Exercícios para Casa (1)

#include <stdlib.h>

#include <stdio.h>

// Programa: Mostre o maior de 2 numeros

main()

{

int Valor1, Valor2, Max;

//1. [Ler os valores]

printf(

"Digite dois numeros \n"

);

scanf(

"%d%d"

,&Valor1,&Valor2 );

//2. [Determinar o maior]

if (Valor1 > Valor2)

{ Max = Valor1;

printf (

"\nO Primeiro valor eh maior\n"

);

}



continua na próxima página Ex casa 1: Colocar o exemplo 8 em C

(15)

57

else

{

Max = Valor2;

printf (

"\nO Segundo Valor eh maior\n"

);

}

//3. [Imprimir o maior valor]

printf(

"Maior Valor =%d\n\n"

, Max);

//4. [Terminar]

system(

"PAUSE"

);

}

Resolução Exercício para Casa 1

58 #include <stdlib.h> #include <stdio.h> #include <math.h> main() { int a, b, c;

float delta, raiz1, raiz2;

printf("digite os coeficientes a, b, c da equacao\n"); scanf("%d%d%d",&a,&b,&c);

if(a==0)

{ printf(" esta equacao eh de 1o. grau\n"); raiz1= -c/b;

printf(" sua raiz eh: %f \n", raiz1); } else { delta=(pow(b,2)-4*a*c); if(delta >= 0) { raiz1=(b+sqrt(delta))/(2*a); raiz2=(b-sqrt(delta))/(2*a);

printf("as raizes sao:R1= %f,R2=%f \n",raiz1,raiz2); }

else printf("Esta equacao nao possui raizes reais\n"); }

system("PAUSE"); }

Resolução Exercício para Casa (8)

59

5.4.8 Aplicação: O paradoxo da inovação

Os dados do censo (que ocorre a cada 10 anos) de 1880 dos EUA levaram quase 8 anos para serem processados. Temia-se que os dados do censo de 1890 não estivessem processados em 1900.

Herman Hollerith

(estatístico):

Foi encarregado pela Agência Estatística

dos EUA de desenvolver uma técnica

para

acelerar

o processamento dos dados

do censo, levando apenas 3 anos.

60 Lei de Moore: O fundador da Intel, Gordon Moore, constatou que a capacidade de processamento dos computadores dobra a cada 1 ano, enquanto os custos permanecem fixos.

Problema: Imagine que uma tarefa deve ser processada e levará 8 anos e que não pode ser movida da máquina uma vez iniciada. De acordo com a Lei de Moore deve-se esperar a melhoria dos processadores ou deve-se começar hoje ?

?

Solução: O senso comum diz que é melhor começar agora, mas antes de por a mão na massa é bom olhar a Tabela dada a seguir:

!

(16)

61 Tempo Total (anos) Tempo de Desenvolvimento (anos) Tempo de Processamento (anos) 0 8 8 1 4 5 Início 0º. ano 1º. ano 2 2 4 2º. ano Final 8º. ano 5º. ano 4º. ano 3 1 4 3º. ano 4º. ano 4 0,5 4,5 4º. ano 4º. ano

!

Observação: É melhor começar no 2º. ou 3º. Ano, pois com isso pode-se terminar antes a tarefa. Esta análise também pode ser útil para dividir recursos entre produção e pesquisa.

5.4.8 Aplicação: O paradoxo da inovação

62 Forma Geral: O paradoxo da inovação pode ser formulado de acordo com três parâmetros: tempo de desenvolvimento t, taxa de aperfeiçoamento a e tempo de processamento p.

t

a

p

t

y

)

/

1

(

+

=

No caso anterior, os valores eram:

p = 8 e a = 50% = 0.5.

y

t

2

t

8

+

=

A fórmula para o caso geral

será dada por:

Considerando-se

t

variável,

a

e

p

fixos, para encontrar o menor

tempo

y

, pode-se fazer

dy/dt = 0.

Alternativa:

Vale

a pena esperar se

p/(1/a) > 1

5.4.8 Aplicação: O paradoxo da inovação

63 Tempo Total (anos) Tempo de Desenvolvimento (anos) Tempo de Processamento (anos) 0 8 8 1 4 5 Início 0º. ano 1º. ano 2 2 4 2º. ano Final 8º. ano 5º. ano 4º. ano 3 1 4 3º. ano 4º. ano 4 0,5 4,5 4º. ano 4º. ano

No caso anterior: 8/(1/0.5) = 4 > 1

5.4.8 Aplicação: O paradoxo da inovação

64 // Programa: paradoxo da inovação.

#include <stdio.h> #include <stdlib.h> main() { float a, p, r; printf(“Forneça a e p:”); scanf(“%f %f”,&a,&p); r = p/(1/a); if (r > 1.0) printf(“Espere”); else printf(“Comece”); system(“pause”); }

Código C

Algoritmo: Inovação variáveis: r,p,a: real; Inicio

Escreva(“Forneça a e p”) Leia (a, p);

r  (p/(1/a)); Se (r > 1.0)

Então Escreva(‘Espere’); Senão

Escreva(‘Comece’); Fim

Exemplo 12

(17)

65

Um problema simples: Ano Bissexto. Simples ?

Quantos dias demora a Terra para dar uma volta completa no Sol ?

5.4.8 Aplicação: Ano Bissexto

66

Egito Antigo: 365 dias

Roma Antiga: 365,25 dias 4 anos = 1 dia intercalar Calendário Alexandrino

Calendário Juliano 4 anos = 1 ano bissexto

Mas o ano solar dura:

365,242199 dias !

3300

1

400

1

100

1

4

1

365

365,242199

+

+

Ou seja:

5.4.8 Aplicação: Ano Bissexto

67

Ano Calendário Ano Solar

1º Ano 2º Ano 3º Ano 4º Ano

+

+

3300

1

400

1

100

1

4

1

365

*

2

3300

1

400

1

100

1

4

1

365

+

+

+

+

3300

1

400

1

100

1

4

1

365

*

3

365 dias 2*365 dias       − + − + + 3300 1 400 1 100 1 * 4 4 4 365 * 4 3*365 dias 4*365 dias

Mais um dia no ano ! Ano Bissexto !

Mas e quanto aos demais termos ?

5.4.8 Aplicação: Ano Bissexto

68

Em 1582, Gregório XIII:

Calendário Gregoriano

Nova definição para ano bissexto

3300

1

400

1

100

1

4

1

365

365,242199

+

+

Cada 4 anos + 1 dia Cada 100 anos - 1 dia

Cada 400 anos + 1 dia

(18)

69

Algoritmo

OBSERVAÇÃO: Subtrair 1 dia do calendário a cada 3300 anos Se resto(ano/100) é 0 então Se (ano/400) = 0 então bissexto; (b) Senão não_bissexto; (c) Senão Se (ano/4) = 0 então bissexto; (a) Senão não_bissexto; (c)

(a)Não divisível por 100 e divisível por 4.

(b) Divisível por 100 e 400. (c) Os demais anos não são Bissextos.

Exemplo 16- Ano Bissexto

Em 1582, Gregório XIII:

Calendário Gregoriano

Nova definição para ano bissexto

5.4.8 Aplicação: Ano Bissexto

70

//Exemplo 13: Programa que calcula quando um ano é Bissexto # include <stdio.h>

# include <stdlib.h> main ( )

{ int ano, resto;

printf("Forneca o ano:"); scanf("%d",&ano); if (ano%100== 0)

if (ano%400== 0)

printf("O Ano %d eh bissexto \n\n", ano); else

printf(" O Ano %d Nao eh bissexto \n\n", ano); else

if (ano%4== 0)

printf("O Ano %d eh bissexto \n\n", ano ); else

printf(" O Ano %d nao eh bissexto \n", ano); system("pause");

}

5.4.8 Aplicação: Ano Bissexto- Programa em C

71

a) Exemplo de Conjunção :

UM < 2 e UM < 0

verdadeiro falso



falso

5.4.9 Seleção de Ações Alternativas:

Condições Compostas

Utilização de Condições Compostas

Utilização de Condições Compostas



Alguns problemas ficam mais simples se utilizarmos

condições compostas ao invés de relações simples.



As condições compostas podem ser do tipo “e”

conjunção, “ou” disjunção e “não” negação.

Seja a variável UM = 1. As expressões a seguir resultam em:

72

b) Exemplo de disjunção :

UM < 2 ou UM < 0

verdadeiro falso

 verdadeiro

c) Exemplo de negação :

Não UM < 2

falso

OBS:

As condições compostas podem ser

utilizadas tanto nos comandos “Se” como nos

“repita condicionais”.

(19)

73

1) Suponha que I e J sejam variáveis inteiras com valores 6

e 12, respectivamente. Quais das seguintes condições

são verdadeiras?

a)

2 * 1 ≤ J

b)

2 * I – 1 < J

c)

I > 0 e I ≤ 10

d)

I > 25 ou (I < 8 e J > 10)

e)

I < 4 ou J > 5

f)

Não I > 6

Verdadeiro

Verdadeiro

Verdadeiro

Verdadeiro

Verdadeiro

Verdadeiro

5.4.9 Seleção de Ações Alternativas:

Condições Compostas

74

2) Assuma que A, B, C e D são variáveis e S

1

, S

2

, S

3

e S

4

são

comandos ou alternativas.

a) Usando condições compostas reescreva as instruções

abaixo:

Se A > B

Então Se B ≤ C

então Se C ≠ D

então S

1

senão S

2

senão S

3

Senão S

4

5.4.9 Seleção de Ações Alternativas:

Condições Compostas

75

Solução 1:

Se (A > B e B ≤ C)

Então Se C ≠ D

então S

1

senão S

2

Senão Se (A > B e B > C)

Então S

3

Se (A ≤ B)

Então S

4

Solução 2:

Se (A > B e B

C ) e (C ≠ D)

então S

1

Se (A > B e B

C ) e (C = D)

então S

2

Se (A > B) e (B > C)

então S

3

Se (A

B) então S

4

5.4.9 Seleção de Ações Alternativas:

Condições Compostas

76

b) Reescrever a instrução abaixo, como uma estrutura “Se”

utilizando somente condições simples.

Se (A < B e C ≠ D) e (B > D ou B = D)

então S

1

Solução :

Se A < B

Então Se C ≠ D

então Se B ≥ D

então S

1

(20)

77

Operadores Lógicos em C

Operadores Lógicos em C

Operador Significado

&& Conjunção lógica (“and”).

|| Disjunção lógica (“or”).

! Negação lógica (“not”).

A !A Verdade Falso Falso Verdade Negação A B Falso Falso Verdade Falso Conjunção Falso Verdade Verdade Verdade A&&B Falso Falso Falso Verdade A B Falso Falso Verdade Falso Conjunção Falso Verdade Verdade Verdade A||B Falso Verdade Verdade Verdade

5.4.9 Seleção de Ações Alternativas:

Condições Compostas

78

# include <stdio.h> # include <stdlib.h> main ( )

{

int ano, resto;

printf("Forneca o ano:"); scanf("%d",&ano);

if ((ano%100== 0) && (ano%400== 0)) printf("O Ano %d eh bissexto \n\n", ano); else { if ((ano%4== 0) && (ano%100!= 0))

printf("O Ano %d eh bissexto \n\n", ano ); else

printf(" O Ano %d nao eh bissexto \n", ano); } system("pause");

}

Exemplo14:Refazer o programa do Ano Bissexto usando Condições Compostas

5.4.9 Seleção de Ações Alternativas:

Condições Compostas

79

Exemplo15:

Usando condições compostas, fazer um algoritmo em um

programa em C que leia três números, A, B e C e imprima o maior

deles. Assuma que os valores são diferentes.

Algorítmo Max_3

Variáveis A, B, C, Max : real

Início

1. [Ler dados]

Leia ( A, B, C )

2. [Determinar o maior valor]

Se (A > B e A > C) então Max

 A

Se (B > A e B > C) então Max

 B

Se (C > A e C > B) então Max

 C

3. [Imprimir maior valor]

Escreva (

´Maior valor =`

, Max )

4. [Terminar]

Fim

5.4.9 Seleção de Ações Alternativas:

Condições Compostas

80

#include <stdlib.h>

#include <stdio.h>

main()

{

//Inicio

float A, B, C, Max;

// 1. [Ler dados]

printf(

"Digite tres numero diferentes\n"

);

scanf(

"%f%f%f"

,&A,&B,&C );

//2. [Determinar o maior valor]

if (A > B && A > C) Max = A;

if (B > A && B > C) Max = B;

if (C > A && C > B) Max = C;

//3. [Imprimir maior valor]

printf(

"Maior valor =%3.1f\n\n"

, Max )

system(

"pause"

);

}

Programa em C

(21)

81

Exemplo16:

Fazer um algoritmo e um programa em C, utilizando

condições compostas, que leia três números e imprima o maior e

menor deles. Assume-se que os valores são diferentes.

Algorítmo Max_Min_3

Variáveis A, B, C, Max, Min : real Início

1. [Ler dados]

Leia ( A, B, C )

2. [Determinar o maior e menor valor]

Se (A > B e A > C) e (B < C) então Max  A Min  B Se (A > B e A > C) e (C < B) então Max  A Min  C Se (B > A e B > C) e (A > C) então Max  B Min  C Se (B > A e B > C) e (A < C) então Max  B Min  A Se (C > A e C > B) e (B > A) então Max  C Min  A Se (C > A e C > B) e (B < A) então Max  C Min  B 3. [Imprimir o maior e o menor valor] Escreva (´Maior valor =`, Max ) Escreva (´Menor valor =`, Min ) 4. [Terminar]

Fim

5.4.9 Seleção de Ações Alternativas:

Condições Compostas

82

#include <stdlib.h> #include <stdio.h>

main() {

float A,B, C,Max, Min;

//1. [Ler dados]

printf("Digite tres numeros diferentes\n" ); scanf("%f%f%f",&A,&B,&C);

//2. [Determinar o maior e menor valor]

if(A > B && A > C && B > C) { Max = A;

Min = C;}

if(A > B && A > C && B < C) { Max = A;

Min = B;}

if(B > A && B > C && A > C) { Max = B;

Min =C;} continua na próxima pg . . .

Programa em C

5.4.9 Seleção de Ações Alternativas:

Condições Compostas

83 if(B > A && B > C && A < C) …

continuação

{Max= B; Min = A; }

if(C > A && C > B && B >A) { Max =C; Min= A; } if (C > A && C > B && B < A) {Max = C; Min = B; }

//3. [Imprimir o maior e o menor valor]

printf("Maior valor =%4.1f\n\n",Max); printf("Menor valor =%4.1f\n\n", Min); system( "PAUSE");

}

5.4.9 Seleção de Ações Alternativas:

Condições Compostas

84

5.4.10 Seleção de Ações Alternativas: Comando

Switch

Switch

O Comando

Switch

Switch

 Quando for necessário escolher uma dentre várias opções, ao

invés de aninhar construções do tipo if-else em diversos níveis, pode ser preferível utilizar o comando Switch. A sintaxe do switch é dada por:

switch (expressão) {

case (constante 1): intruções 1; break; case (constante 2): intruções 2; break; ...

case (constante n): intruções n; break; default: instruções;

(22)

85

5.4.10 Seleção de Ações Alternativas: Comando

Switch

Switch



A palavra expressão indica qualquer avaliação cujo resultado seja

um valor numérico dos tipos char, int ou long.

 O switch compara o resultado da expressão com o valor de cada

constanteque segue a cada um dos case. Se o valor não for igual a nenhuma das constantesapresentadas pelos case, então, são executadas as instruções que seguem o default.

 A utilização do comando defaulté opcional.

 Cada casedo switchsó pode avaliar uma única constantedo tipo char, int ou long

Observação importante:Após um comando case ser selecionado, se não existir o break, todos os casessubseqüentes e suas instruções

serão executados. 86

Fazer um programa que leia um caractere chindicando o estado civil e imprima uma mensagem de acordo com a correspondência: Se (ch = C) Escreva(‘Casado’); Se (ch = S) Escreva(‘Solteiro’); Se (ch = D) Escreva(‘Divorciado’); Se (ch = V) Escreva(‘Viuvo’); Default Escreva(‘Estado Incorreto’);

Exemplo 17: Estado Civil

#include <stdio.h> #include <stdlib.h>

main ( ) {

char ch;

printf (“Qual estado civil: "); scanf ("%c", &ch);

switch (ch) {

case ‘C’: printf (“Casado \n”); break; case ‘S’: printf (“Solteiro \n”); break; case ‘D’: printf (“Divorcio \n”); break; case ‘V’: printf (“Viuvo \n”); break; default: printf(“Est. Inc.”); break; }//fim switch

system("pause"); }

Programa: Estado Civil

Não esquecer o break !

5.4.10 Seleção de Ações Alternativas: Comando

Switch

Switch

87 #include <stdio.h> #include <stdlib.h> main ( ) { char ch;

printf (“Qual estado civil: "); scanf ("%c", &ch);

switch (ch) {

case ‘C’: printf (“Casado \n”); case ‘S’: printf (“Solteiro \n”); case ‘D’: printf (“Divorcio \n”); case ‘V’: printf (“Viuvo \n”); default: printf(“Est. Inc.”); }//fim switch

system("pause"); }

Programa: Estado Civil

Qual estado civil: C Casado

Solteiro Divorcio Viuvo

Pressione uma tecla para continuar…

Resultado da Execução

!

Sem o

break;

todos os

case

abaixo do case

selecionado serão

executados.

5.4.10 Seleção de Ações Alternativas: Comando

Switch

Switch

88

5.4.10 Seleção de Ações Alternativas: Comando

Switch

Switch

OBS: o comando

break

interrompe a execução do

switch

, e continua a execução do programa na

instrução seguinte ao switch

Ex. 1) Escreva um programa que pede para o usuário

entrar um número

correspondente a um dia da

semana e que então apresente na tela o nome do dia,

utilizando o comando switch.

(23)

89

5.4.11 Exercícios Seleção de Ações Alternativas

// programa exemplo 1 switch

#include <stdio.h>

#include <stdlib.h>

main ()

{ int dia;

char ch;

printf(

"\tDigite o dia da semana:\n "

);

printf(

"\t1==> para segunda feira\n"

);

printf(

"\t2==> para terca feira\n"

);

printf(

"\t3==> para quarta feira\n"

);

printf(

"\t4==> para quinta feira\n"

);

printf(

"\t5==> para sexta feira\n"

);

printf(

"\t6==> para sabado\n"

);

printf(

"\t7==> para domingo\n"

);

scanf (

"%d"

,&dia);

90

switch (dia) {

case

1

: printf (

" O dia escolhido eh Segunda Feira\n"

);break;

case

2

: printf (

" O dia escolhido eh Terca Feira\n"

);break;

case

3

: printf (

" O dia escolhido eh Quarta Feira\n"

); break;

case

4

: printf (

" O dia escolhido eh Quinta Feira\n"

); break;

case

5

: printf (

" O dia escolhido eh Sexta Feira\n"

);break;

case

6

: printf (

" O dia escolhido eh Sabado\n"

);break;

case

7

: printf (

" O dia escolhido eh Domingo\n"

);break;

default: printf(

" Dia Inexistente\n"

);

}

//fim switch

system(

"pause"

);

}

Ex 1- Continuação

5.4.11 Exercícios Seleção de Ações Alternativas

91 Ex. 2) Dadas as seguintes informações de um funcionário:

Nome, Numero funcional, idade, cargo e o seu salário bruto e considerando que:

a) O salário bruto teve um reajuste de 38%.

b) O funcionário receberá uma gratificação de 20% do salário bruto.

c) O Salário liquido total é descontado em 15% Faça um programa para:

•Imprimir Nome, Numero funcional, idade e cargo. •Imprimir o salário bruto.

•Imprimir o salário líquido.

5.4.11 Exercícios sobre Seleção de Ações Alternativas

92

#include <stdlib.h> #include <stdio.h>

main()

{ int num_func, idade;

float Sal_Bruto, Reajuste,Sal_liq,GRAT,Desconto; char nome[30], cargo[30];

printf("digite o nome do funcionario\n"); gets(nome);

printf("digite o cargo do funcionario\n"); gets(cargo);

printf("digite o numero funcional\n"); scanf("%d",&num_func);

printf("digite o valor do salario bruto %s\n",nome); scanf("%f",&Sal_Bruto);

Solução Ex. 2

(24)

93

5.4.11 Exercícios sobre Seleção de Ações Alternativas

Reajuste = Sal_Bruto*0.38; GRAT = Sal_Bruto * 0.20;

Sal_Bruto = Sal_Bruto+GRAT+Reajuste; Desconto = Sal_Bruto*0.15;

Sal_liq = Sal_Bruto - Desconto; printf("\n\n");

printf("Nome:%s cargo:%s No. Funcional:%d\n", nome, cargo,num_func); printf("===================================================\n"); printf("salario Bruto \t%.2f\n",Sal_Bruto);

printf("Reajuste \t%.2f\n",Reajuste); printf("Gratificacao \t%.2f\n",GRAT); printf("Desconto \t%.2f\n",Desconto); printf("Salario Liquido \t%.2f\n",Sal_liq);

printf("====================================================\n"); system("PAUSE");

}

Solução Ex. 2 - Continuação

94

5.4.11 Exercícios sobre Seleção de Ações Alternativas

95 3)O salário liquido de um professor da rede pública é calculado da

seguinte maneira:

Os vencimentos recebidos são: Salário Base inicial (SBI), Gratificação de representação(GRAT), Qüinqüênio (QUIN) e Sexta parte (SEXT_P).

A gratificação de representação (GRAT) é paga na sua totalidade para quem está exercendo um cargo de chefia. Se a pessoa não está exercendo o cargo de chefia, mas já exerceu, ela recebe 20% do valor total da gratificação para cada dois ano exercido, assim se ela exerceu o cargo por 4 anos, ela recebe 20% do valor total da gratificação.

A cada 5 anos a pessoa recebe 5% de aumenta relativo ao qüinqüênio (QUIN), assim quem está trabalhando a 17 anos recebe 15% de aumento relativo a 3 qüinqüênios.

Depois de 20 anos de serviço a pessoa recebe mais a sexta parte do salário, calculado do seguinte modo:

SEXT_P= (SBI+QUIN+GR)/6. 84

5.4.11 Exercícios sobre Seleção de Ações Alternativas

96 Os descontos efetuados são IAMSP, Previdência e Imposto de

renda.

O desconto relativo ao IAMSP é de 2% e o da previdência é de 11%. Isto é feito sobre o total de vencimentos (SBT),onde: SBT=SBI+GRAT+SEXT_P+QUIN.

O desconto do IR é feito sobre o SBT-IAMSP-PREV-150.69* numero de dependentes., de acordo com a tabela abaixo:

692.78 27.5 Acima de 37432.19 505.62 22.5 De 2995,70 à 37432.19 280.94 15.0 De 2246.75 à 2995.70 112.43 7.5 De 1499.15 à 2246.75 -Até 1499.15

Parcela a deduzir do imposto em R$ Alíquota %

Base de Cálculo em R$

(25)

97 Isto é, verificar em qual faixa o

VALOR=(SBT-IAMSP-PREV-150.69* N_dep) se encaixa. Por exemplo, se VALOR >= à 3743.19 reais, o imposto a ser pago será:

IR = (VALOR*0.275)-692.78. O salário liquido final será: SL=SBT-IAMSP-PREV

Fazer um programa em C que leia o nome do professor, seu cargo, seu salário base inicial, o número de seus

dependentes, o tempo de serviço em anos, se está ou não exercendo cargo de chefia ou se já exerceu e por quanto tempo e a seguir calcule e imprima o seu salário bruto, cada um dos descontos efetuados, o total de descontos e por fim o salário liquido.

5.4.11 Exercícios sobre Seleção de Ações Alternativas

98 Para fazer esse programa é necessário começar a pensar em

quais variáveis precisam ser criadas. São necessárias as seguintes variáveis:

SBI ⇒⇒ para armazenar o valor do salário inicial⇒⇒

GRAT ⇒⇒⇒⇒ para armazenar o valor da gratificação relativo a cargo de chefia.

QUIN ⇒⇒⇒⇒ para armazenar o valor do acréscimo salarial relativo ao tempo de serviço

SBT ⇒⇒⇒⇒ para armazenar o valor do salário bruto total. Lembre-se que SBL=(SBI+GRAT+QUIN+SEXT_P)

SL ⇒⇒⇒ para armazenar o valor do salário Liquido

SEXT_P ⇒⇒⇒⇒ para armazenar o valor do acréscimo salarial relativo a sexta parte por 20 anos de serviço

IAMSP ⇒⇒⇒⇒ para armazenar o desconto relativo ao iamsp que é de 2% de (SBI+GRAT)

PREV ⇒⇒⇒⇒ para armazenar o desconto relativo a previdencia que é de 11% de (SBI+GRAT)

5.4.11 Exercícios sobre Seleção de Ações Alternativas

99 IR ⇒⇒⇒⇒ para armazenar o valor do imposto de renda a ser pago.

SL ⇒⇒⇒ para armazenar o valor do salário liquido que é obtido pelo ⇒ SBT-IAMSP-PREV-IR.

Todas essas variáveis devem ser do tipo float porque elas representam dinheiro.

Para se calcular o valor da gratificação GRAT será necessário criar as seguintes variáveis: chefe, nchefe, perc_grat. A variável chefe vai ser lida e seu valor será zero se o funcionário não está

exercendo atualmente um cargo de chefia ou 1 caso contrário. Se a pessoa estiver exercendo o cargo de chefia, GRAT = 1046.1. Se a pessoa não está exercendo, mas já exerceu cargo de chefia, ela receberá 20% de 1046.1 R$, a cada 2 anos que esteve como chefe, e esta porcentagem é armazenada em perc_grat. Então essa porcentagem é calculada da seguinte maneira:

perc_grat= 20*(nchefe/2),

onde nchefe é o numero de anos que a pessoa esteve como chefe.

5.4.11 Exercícios sobre Seleção de Ações Alternativas

100 Observe que nchefe é uma variável do tipo inteira que está sendo

dividida pelo numero inteiro 2. O resultado dessa divisão é um numero inteiro. Assim, se a pessoa esteve como chefe por 3 anos, a divisão de nchefe/2 será 1, porque divisão de inteiro por inteiro resulta na parte inteira da divisão. Neste caso a variável perc_grat será:

perc_grat= 20*(nchefe/2) = 20*(3/2) = 20 E a gratificação será de GRAT=(1046.1*20)/100.0;

Para se calcular o valor do aumento relativo aos qüinqüênios (QUIN) é necessário calcular o numero de qüinqüênios, para tanto são

necessárias as variáveis nquin, e Temp_serv, ambas do tipo inteiro.Temp_serv vai armazenar quantos anos de serviço tem o funcionário, e este valor deve ser lido, isto é o usuário vai fornecer via teclado este valor. Deste modo o numero de qüinqüênios será nquin = Temp_serv/5. Como Temp_serv é inteira e está sendo dividida por 5 inteiro, o valor armazenado em nquin será a parte inteira divisão. Assim, se Temp_serv=9, nquin = 1. Deste modo o valor

(26)

101 Do aumento relativo aos qüinqüênios é dado por:

QUIN= (SBI+GRAT)*(Nquin*0.05);

Observe que antes de se calcular o valor do qüinqüênio foi calculado o valor da gratificação GRAT.

O calculo da Sexta Parte deve ser feito somente após o calculo do qüinqüênio, pois a sexta parte é calculada por:

Se o tempo de serviço for maior ou igual 20 anos SEXT_P=(SBI+GRAT+QUIN)/6.0.. Senão SEXT_P=0.0

No calculo do imposto de Renda (IR), serão necessárias as variáveis Valor, Alíquota, Parcela, todas do tipo float para armazenar

respectivamente, o Valor para se calcular em qual faixa o funcionário se encontra e assim calcular a Alíquota a ser paga e a Parcela a se deduzir do imposto. Será necessário também a variável N-dep, do tipo int para armazenar o numero de dependentes do funcionário. Este numero deve ser lido. A variável valor será calculada por:

Valor = SBT-IAMSP-PREV-150.69*N_dep;

5.4.11 Exercícios sobre Seleção de Ações Alternativas

102 Observe que para se calcular a variável valor é necessário ter

calculado antes as variáveis:

SBT= salário bruto total, IAMSP e PREV

O valor do salário liquido será : SL = SBT-IAMSP-PREV-IR;

A seguir é apresentado o programa, solicitado, bem como a execução de exemplo.

5.4.11 Exercícios sobre Seleção de Ações Alternativas

103

#include <stdlib.h> #include <stdio.h> main()

{ int N_dep, Nquin, Temp_serv,chefe, nchefe, perc_grat; float SBI,SBT, Valor, QUIN, SEXT_P, IAMSP, PREV,IR,SL; float GRAT, Aliquota, Parcela;

char nome[30], cargo[30];

printf("digite o nome do funcionario\n"); gets(nome);

printf("digite o cargo do funcionario\n"); gets(cargo);

printf("digite o valor do salario base inicial do %s\n",nome); scanf("%f",&SBI);

printf("digite o numero de dependentes do %s\n", nome); scanf("%d",&N_dep);

printf("digite o tempo de servico do %s\n", nome); scanf("%d",&Temp_serv);

Solução Exercício 3

5.4.11 Exercícios sobre Seleção de Ações Alternativas

104 printf("O funcionario em questao esta exercendo algum cargo de chefia?\n");

printf("digite 1 para sim e zero para nao\n"); scanf(" %d",&chefe); //Calculo da gratificação if(chefe==1) GRAT=1046.1; else { nchefe=0;

printf("Se o funcionario exerceu no passado algum cargo de chefia,\n digite o numero de anos.\n");

scanf("%d",&nchefe); perc_grat= 20*(nchefe/2);

GRAT=(1046.1*perc_grat)/100.0; }

Solução Exercício 3 - Continuação

(27)

105 // Calculo do quinquenio

Nquin= Temp_serv/5;

QUIN= (SBI+GRAT)*(Nquin*0.05);

// Calculo da Sexta Parte. if(Temp_serv >= 20)

SEXT_P=(SBI+GRAT+QUIN)/6.0; else SEXT_P=0.0;

// Calculo do Salario bruto total

SBT=(SBI+GRAT+QUIN+SEXT_P);

//calculo dos descontos IAMSP, PREV

IAMSP=SBT*0.02; PREV=SBT*0.11;

Solução Exercício 3 - Continuação

5.4.11 Exercícios sobre Seleção de Ações Alternativas

106 //Calculo do IR Valor = SBT-IAMSP-PREV-150.69*N_dep; if( Valor< 1499.15) { Aliquota=0; Parcela=0;}

else if( Valor< 2246.75) {Aliquota=0.075;

Parcela=112.43;} else if( Valor< 2995.7)

{Aliquota=0.15; Parcela=280.94;} else if( Valor< 3743.19)

{Aliquota=0.225; Parcela=505.62;} else {Aliquota=0.275; Parcela=692.78;} IR=(Valor*Aliquota)-Parcela; SL = SBT-IAMSP-PREV-IR;

Solução Exercício 3 - Continuação

5.4.11 Exercícios sobre Seleção de Ações Alternativas

107 printf("Nome:%s cargo:%s\n", nome, cargo);

printf("==============================================\n"); printf("Vencimento \t%.2f\n",SBI);

printf("Gratif. de representacao\t%.2f\n",GRAT); printf("Adicional Tempo Servico \t%.2f\n",QUIN); printf("Sexta Parte \t%.2f\n",SEXT_P); printf("Salario Bruto \t%.2f\n",SBT);

printf("======= Descontos==============================\n"); printf("Contribuicao Previdencia\t%.2f\n",PREV);

printf("IAMSP \t%.2f\n",IAMSP); printf("IMPOSTO DE RENDA \t%.2f\n",IR);

printf("==============================================\n"); printf("Total de Descontos \t%.2f\n",PREV+IAMSP+IR);

printf("==============================================\n"); printf("Salario Liquido \t%.2f\n",SL);

printf("===============================================\n\n\n"); system("PAUSE");

}

Solução Exercício 3 - Continuação

5.4.11 Exercícios sobre Seleção de Ações Alternativas

108

Solução Exercício 3 - Resultado

(28)

109 Mas, Continua...

Fim do if

Fim do if

Fim do if

Fim do if

Este material foi

Este material foi

Este material foi

Este material foi

desenvolvido por:

desenvolvido por:

desenvolvido por:

desenvolvido por:

Aníbal

Aníbal

Aníbal

Aníbal

Aníbal

Aníbal

Aníbal

Aníbal

Tavares de Azevedo e

Tavares de Azevedo e

Tavares de Azevedo e

Tavares de Azevedo e

Tavares de Azevedo e

Tavares de Azevedo e

Tavares de Azevedo e

Tavares de Azevedo e

Cassilda Maria Ribeiro

Cassilda Maria Ribeiro

Cassilda Maria Ribeiro

Cassilda Maria Ribeiro

Cassilda Maria Ribeiro

Cassilda Maria Ribeiro

Cassilda Maria Ribeiro

Cassilda Maria Ribeiro

Referências

Documentos relacionados

Portanto, o jiu jitsu brasileiro torna-se então mais um conteúdo possível de ser aplicado nas aulas de Educação Física escolar, juntamente com outras tantas modalidades dentro do

Visto que há uma necessidade de mudar o atual e lastimante estado da água, percebe-se que essa cartilha será de fundamental importância para a conscientização da população

Foi apresentada, pelo Ademar, a documentação encaminhada pelo APL ao INMETRO, o qual argumentar sobre a PORTARIA Nº 398, DE 31 DE JULHO DE 2012 E SEU REGULAMENTO TÉCNICO

Neste trabalho avaliamos as respostas de duas espécies de aranhas errantes do gênero Ctenus às pistas químicas de presas e predadores e ao tipo de solo (arenoso ou

Os métodos estatísticos para análise de dados podem ser classificados como métodos descritivos (Estatística descritiva) e métodos inferenciais (Estatística

No entanto, expressões de identidade não são banidas da linguagem com sentido apenas porque a identidade não é uma relação objetiva, mas porque enunciados de identi- dade

Viscosidad e baixa da emulsão Não há Redução na eficiência de separação E III NT Gerar relatório de viscosidade das emulsões antes do processamento Gerência de

Para acessar as opções de gerenciamento de energia, acesse o Menu pela tecla [MENU] e usando as teclas de navegação (F2/▲ e F3/▼) marque a opção “Opções” e