c_aula5_if_else

46
1 Unesp – Campus de Guaratinguetá Curso de Programaªo Computadores Prof. Anbal Tavares Profa. Cassilda Ribeiro 5- A Lgica da Programaªo Comandos If-else 2 5. A Lógica da programação ! Neste tpico comearemos a ver em detalhes, a lgica 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 tringulo (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 1 2 +L 2 2 ) 1/2

Upload: andersondreamerslove

Post on 20-Oct-2015

46 views

Category:

Documents


0 download

TRANSCRIPT

  • 1Unesp Campus de Guaratinguet

    Curso de Programao ComputadoresProf. Anbal Tavares

    Profa. Cassilda Ribeiro

    5- A Lgica da ProgramaoComandos If-else

    2

    5. A Lgica da programao

    ! Neste tpico comearemos a ver em detalhes, a lgica 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 tringulo (nas variveis LADO1 e LADO2), fazer um algoritmo para determinar e imprimir o comprimento do terceiro lado (HIPOTENUSA). Suponha que todas as variveis sejam inteiras.

    5.1 Introduo

    lado1

    lado2

    hipotenusa ?

    H = (L12+L22)1/2

  • 3Algoritmo: Pitgorasvariveis LADO1, LADO2, Q1, Q2: inteiros.HIPOTENUSA:real;Inicio1. [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

    Declaraes

    Instrues

    5.1 Introduo

    4

    Algoritmo: Pitgoras

    Declarar variveis;

    InicioLeia (L1, L2);

    Q1 " L1 2;Q2 " L2 2; H" SQRT (Q1 + Q2);

    Escreva"(L1,L2,H);Fim

    // Dados os 2 catetos de um tringulo,//este programa calcula a hipotenusa!#include #include #include main(){ //Inicio

    float L1, L2, H;printf(Fornea L1 e L2:); scanf(%f%f,&L1,&L2);H = sqrt(L1*L1 + L2*L2);printf( L1=%f, L2=%f, H=%f \n,L1,L2,H);system(pause);

    }//Fim

    Cdigo CAlgoritmo

    5.1 Introduo

  • 5Para se descobrir isto, deve-se rastrear o algoritmo, isto , execut-lo manualmente, com dados numricos, utilizando lpis e papel para registrar os valores tomados pelas variveis a cada passo.

    ! Depois de elaborado um algortmo, como saber se ele faz o que se supe que faa?

    5.2. Rastreando um Algoritmo

    5. A Lgica da programao

    O exemplo 2 a seguir ilustra o rastreamento do algoritmo do exemplo 1.

    34

    Algoritmo 5

    4

    6

    Algoritmo: Pitgoras

    Declarar variveis;

    InicioLeia (L1, L2);

    Q1 " L1 2;Q2 " L2 2; H" SQRT (Q1 + Q2);

    Escreva"(L1,L2,H);Fim

    Algoritmo

    3 4

    Q2

    ?Passo L1 L2 Q1 H Sada

    3 4 9 ? ?19 16 ? ?2

    5.2. Rastreando um Algoritmo

    Suponha que conheamos os dois catetos de um tringuloretngulos cujas medidas so 3cm e 4cm. Ento os dados de entrada so 3 e 4.

    Exemplo 2: Rastrear Pitgoras

    1

    3 4 9 16 5 ?33 4 9 16 5 3,4,54

    23

    4

  • 75.2. Rastreando um Algoritmo

    Fazer um algortmo que leiaquatro notas (NOTA1, NOTA2, NOTA3 e NOTA4 ) e calcula a nota mdia,armazena o resultado navarivel MEDIA. Oresultado final deve ser

    impresso com uma mensagem explicativa. Todaas variveis so reais.

    Exemplo 3: Calcular Mdia

    Algoritmo NotasVariveis N1, N2, N3, N4, MEDIA;Inicio1. [Ler as notas individuais]

    Escreva(digite as 4 notas)Leia ( N1, N2, N3, N4 );

    2. [Calcular a nota mdia]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 osdados necessrios para calcular a mdia.

    8

    Fazer um algortmo que leiaquatro notas (NOTA1, NOTA2, NOTA3 e NOTA4 ) e calcula a nota mdia,armazena o resultado navarivel MEDIA. Oresultado final deve ser

    impresso com uma mensagem explicativa. Todaas variveis so reais.

    Exemplo 3: Calcular Mdia

    Algoritmo NotasVariveis N1, N2, N3, N4, MEDIA;Inicio1. [Ler as notas individuais]

    Escreva(digite as 4 notas)Leia ( N1, N2, N3, N4 );

    2. [Calcular a nota mdia]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 mdia que ele calculou.

    5.2. Rastreando um Algoritmo

  • 95.2. Rastreando um Algoritmo

    Passo N1 N2 N3 N4 M Sada

    6.0 6.5 8.0 9.5 ? ?16.0 6.5 8.0 9.5 7.5 ?26.0 6.5 8.0 9.5 7.5 7.53

    Algoritmo NotasVariveis N1, N2, N3, N4, M;Inicio1. [Ler as notas individuais]

    Escreva(fornea n1, n2, n3, n4)Leia ( N1, N2, N3, N4 );

    2. [Calcular a nota mdia]MEDIA "( N1 + N2 + N3 + N4 ) / 4.0;

    3. [Sair resultados]Escreva (Nota Final =`, MEDIA);

    Fim

    Algoritmo

    12

    3

    main(){float n1, n2, n3, n4, m;printf(Fornea n1, n2, n3 e n4:); scanf(%f%f%f%f,&n1,&n2,&n3,&n4);m = (n1 + n2 + n3 + n2)/4.0;printf( Nota Final = %f \n,m);system(pause);}

    Cdigo C

    1

    23

    10

    Uma outra forma de escrever em Linguagem C o programa associado ao algoritmo que resolve o Exemplo 3 :

    /* -------------------------------------------------** Programa do exemplo 3- Tpico 5 * * Clculo da mdia final entre 4 notas **---------------------------------------------------*/#include #include main(){ float NOTA1, NOTA2, NOTA3, NOTA4, MEDIA;printf("DIGITE A NOTA1 ");scanf("%f",&NOTA1); continua na pg. seguinte

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

    Aqui est sendo dadauma ordem para que o computador guarde namemria a NOTA1que foi digitada

    5.3. Trabalhando com a Linguagem C

  • 11

    printf("NOTA1=% f\n",NOTA1);printf("\nDIGITE A NOTA2 ");scanf("% f",&NOTA2);printf("NOTA2=% f\n",NOTA2);printf("\nDIGITE A NOTA3 ");scanf("% f",&NOTA3);printf("NOTA3=% f\n ,NOTA3);printf("\nDIGITE A NOTA4 ");scanf("% f",&NOTA4);printf("NOTA4=% f\n",NOTA4);MEDIA = (NOTA1+NOTA2+NOTA3+NOTA4)/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 varivel que est armazenado na memria.

    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:

    5.3. Trabalhando com a Linguagem C

  • 13

    Algoritmo FahrenheitVariveis: TEMPCE, TEMPFA: realInicio1.[Ler a temperatura em celsius]

    Leia (TEMPCE)2. [Converter a temperatura para fahrenheit]

    TEMPFA " ( 9.0 / 5.0 ) * TEMPCE + 323. [Sair resultados]

    Escreva (Temperatura em Fahrenheit =`, TEMPFA)

    Fim

    Exemplo 4: Fazer um algoritmo que leia uma temperatura na escala Celsius e a converta para a escala Fahrenheit. Todas as variveis em questo so reais.

    O Exemplo 4 emLinguagem C torna-se:

    Algoritmo FahrenheitVariveis: TEMPCE, TEMPFA: realInicio1.[Ler a temperatura em celsius]

    Leia (TEMPCE)2. [Converter a temperatura para fahrenheit]

    TEMPFA " ( 9.0 / 5.0 ) * TEMPCE + 323. [Sair resultados]

    Escreva (Temperatura em Fahrenheit =`, TEMPFA)

    Fim

    5.3. Trabalhando com a Linguagem C

    14

    /*====================================* Este o programa do exemplo 4-tpico 5 **====================================*/#include #include mainmainmainmain()()()(){ { { { floatfloatfloatfloat TEMPCE, TEMPFA;printfprintfprintfprintf ("DIGITE A TEMPERATURA EM oC ");scanfscanfscanfscanf ("% f",&TEMPCE);printfprintfprintfprintf ("\n ");printfprintfprintfprintf ("Temperatura Lida, em Celsius = % f\n", TEMPCE);

    Ordena ao computador que escreva na tela a frase em vermelho

    Ordena ao computador que leia e armazene na memria o nmero digitado pelo usurio

    5.3. Trabalhando com a Linguagem C

  • 15

    TEMPFA = (9.0/5.0) * TEMPCE + 32;printfprintfprintfprintf ("\n ");printfprintfprintfprintf ("Temperatura em Fahrenheit = % f\n", TEMPFA);printfprintfprintfprintf ("\n ");systemsystemsystemsystem ("pause");}}}}

    Calcula o valor da temperatura em Fahrenheit e a guarda na memria

    Imprime valor da temperatura em Fahrenheit, calculada acima, bem como a frase em vermelho

    Continuao do programa do exemplo 4

    5.3. Trabalhando com a Linguagem C

    16

    Algoritmo Converte_ChuvaVariveis: POL, MILIM: real.Inicio1. [Ler dados conhecidos]

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

    2. [Converter polegadas em milmetros]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 milmetros. Todas as variveis so reais. Todas as variveis em questo so reais.

    Colocando o Exemplo 5em Linguagem C

    5.3. Trabalhando com a Linguagem C

  • 17

    Programa do Exemplo 5

    /*======================================* Este o programa do exemplo 5 - tpico 5 **======================================*/# include # include 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 Milmetros = %f\n", MILIM);printf("\n ");system("pause");}

    5.3. Trabalhando com a Linguagem C

    18

    Programa do Exemplo 5 : Continuao

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

    5.3. Trabalhando com a Linguagem C

  • 19

    Algoritmo LanchoneteVariveis: HAM , CHE , C1, FRITAS, REFRI, MILK: inteiro

    CONTA, C1, C2, C3, C4, C5, CUSTO1 CUSTO2 CUSTO3 CUSTO4, CUSTO5 : real.inicio1.[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 variveis relativas a itens comprados so inteiras e as variveis relativas a custo so reais.

    : Algoritmo do Exemplo 6 5.3. Trabalhando com a Linguagem C

    20

    2. [Calcular o custo total de cada item]CUSTO1 " HAM * C1CUSTO2 " CHE * C2CUSTO3 " FRITAS * C3CUSTO4 " REFRI * C4CUSTO5 " MILK * C5

    3. [Calcular a conta final]CONTA " CUSTO1 + CUSTO2 + CUSTO3 + CUSTO4 + CUSTO5

    4. [Impresso de resultados]Escreva (Hambrguer (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)Sada

    Algoritmo do Exemplo 6

    Colocando o Exemplo 6em Linguagem C

    5.3. Trabalhando com a Linguagem C :

  • 21

    Programa do Exemplo 6

    /* ------------------------------------* Programa do exemplo 6 - Tpico 5 * * Clculo da Conta de uma Lanchonete **-------------------------------------*/#include #include main(){ float C1, C2, C3, C4,C5, CONTA; //Declara variveisfloat 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");

    5.3. Trabalhando com a Linguagem C :

    22

    Programa do Exemplo 6 : Continuao

    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");printf("DIGITE A quantidade de Milkshake\n");printf("consumida e o seu custo unitario ");scanf("%d%f",&MILK,&C5);

  • 23

    Programa do Exemplo 6 : Continuao

    /*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;

    24

    Programa do Exemplo 6 : Continuao

    /*Impresso 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:

  • 25

    Programa do Exemplo 6 : Continuao

    26

    Suponha que temos duas variveis numricas, A e B, cujos valores so diferentes, e desejamos imprimir amaior delas.

    5.4 Seleo de Aes Alternativas

    Neste caso utilizamos uma construo chamadaSe_Ento_Seno

    SIM NOA > B ?

    escreva (A) escreva (B)

  • 27

    Em Linguagem Algortmica a construo Se_Ento_Senotem o seguinte formato:

    Se condioento alternativa verdadeiraseno alternativa falsa

    Exemplo:Se A > Bento Escreva ( A )seno Escreva ( B )

    5.4 Seleo de Aes Alternativas

    28

    ! Um conjunto especial de operadores relacionais solicitado para expressar condies. So eles:

    !=

    ===

    Operador em Linguagem C

    no igual ( diferente de )

    menor do que ou igual a

    maior do que ou igual aigual a=

    menor do que

    SignificadoOperador em Linguagem Algortmica

    5.4 Seleo de Aes Alternativas

  • 29

    Exemplo 7: Fazer um algortmo em que dadas as trs notas individuais em trs aspectos do ano escolar (Lab, Exame_inter, Exame_final) para um estudantechamado Nome. O algortmo deve calcular a mdia final com pesos de 20%,30% e 50%, respectivamente. O relatrio de sada deve fornecer o nome do aluno,suas notas individuais,sua mdia final e uma mensagem caso o aluno estejareprovado. A varivel Mdia real.

    Algoritmo RelatrioVariveis: Lab, Exame_inter, Exame_final, Mdia : reais

    Nome : cadeia de caractereIncio1. [Ler dados]Leia [Nome, Lab, Exame_inter, Exame_final]2. [Calcular a mdia]Mdia " 0.2 * Lab + 0.3 * Exame_inter + 0.5 * Exame_final

    5.4 Seleo de Aes Alternativas

    30

    3. [Imprimir resultados]Escreva (Nome estudante:, Nome)Escreva (Nota Laboratrio:`, Lab)Escreva (Exame Intermedirio:`, Exame_inter)Escreva (Exame Final`, Exame_final)Escreva ( Mdia Final:`, Mdia)4. [Verificar se tem aluno reprovado]Se Media < 5.0ento Escreva (Reprovado`)

    Fim

    5.4 Seleo de Aes Alternativas

    Exemplo 7: Continuao....

  • 31

    5.4 Seleo de Aes Alternativas

    Exemplo 8: Faa um algoritmo que leia dois valores, determine o maior deles e o imprima com uma mensagem de identificao. Assumir que todas as variveis so inteiras.

    Algoritmo MostreVariveis: Valor1, Valor2, Max : inteirasIncio1. [Ler os valores]

    Leia ( Valor1, Valor2 )2. [Determinar o maior]

    Se Valor1 > Valor2ento Max " Valor1

    Escreva (O Primeiro valor maior`)seno Max " Valor2

    Escreva (O Segundo Valor maior`)

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

    4. [Terminar]Fim

    32

    Diagrama de blocos Diagrama de blocos -- FluxogramaFluxograma

    5.4 Seleo de Aes 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 algortmica que tambm chamamos de portugol.

    ! Uma outra maneira de se escrever algoritmos atravs de fluxograma ou diagrama de bloco. No fluxograma, as aes a serem executadas so representadas de maneira grfica.

    ! Embora a linguagem algortmica seja mais utilizada, existem vrios livros que utilizam o fluxograma para explicar partes do algoritmo, devido ao seu forte apelo visual

    ! A seguir mostramos rapidamente as ferramentas utilizadas para aconfeco de um fluxograma.

  • 33

    5.4.1 Diagrama de blocos - Fluxograma

    SmboloSmbolo DescrioDescrio

    Inicio/Fim Delimita o incio ou o final das instrues.

    Leitura de dados (atravs do teclado, pex).Leitura

    Avaliao de uma condio.Cond

    Apresentao de resultados.Resultados

    Operacoes Atribuio ou operao de processamento.

    Fluxo de execuo.

    Conexo entre partes do algoritmo.

    5.4 Seleo de Aes Alternativas

    34

    5.4 Seleo de Aes Alternativas

    Suponha duas variveis numricas, A e B, com valores diferentes, e deseja-se imprimir a maior delas.

    Problema Maior

    Variaveis A, B;Inicio1. 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

  • 35

    5.4.2 Ses Encaixados

    Exemplo 9 : Faa um algoritmo que leia trs nmeros A, B e C e imprima o valor do maior. Assumir valores distintos e reais.

    Algortmo Max_3Variveis A, B, C, Max : reaisIncio1. [Ler dados]

    Leia (A, B, C)

    Em algumas aplicaes, uma das alternativas de uma estrutura Se_Ento_Seno pode envolver outras decises

    5.4.2 Seleo de Aes Alternativas : Ses Encaixados

    36

    2. [Determinar o maior valor, comparando pares]

    Se A > BEnto Se A > C

    ento Max " A ( A > B,A > C )seno Max " C ( C > A > B )

    Seno Se B > Cento Max " B ( B > A, B > C )seno Max " C ( C > B > A )

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

    4. [Terminar]Fim

    Exemplo 9: Continuao....

    Se A > B

    Se A > C

    FV

    V V

    A; B;

    Se B > C

    F

    C;C;F

    Inicio

    Ler A,B,C;

    Escreva(Max);

    Final

    5.4.2 Seleo de Aes Alternativas : Ses Encaixados

  • 37

    Ex1: Se C1ento Se C2ento S1seno S2

    Em que condies S2 executado?

    Cuidado com a paragrafao

    onde: C1 e C2 significam condies e S1 e S2, comandos

    Isso no fica claro.

    5.4.2 Seleo de Aes Alternativas : Ses Encaixados

    38

    Ex2:Se C1 Se C1ento Se C2 ento Se C2

    ento S1 ento S1seno S2 seno S2

    5.4.2 Seleo de Aes Alternativas : Ses Encaixados

    Neste exemplo, o comando Se C2 s ser executado se a condio C1 for Verdadeira. Se C1 for falsa, nenhum comando ser Executado.

    Neste exemplo, o comando Se C2 s ser executado se a condio C1 for verdadeira. Se ela for falsa, o comando S2 ser executado

  • 39

    5.4.2 Seleo de Aes Alternativas : Ses Encaixados

    Exemplo 10: Uma empresa decidiu dar uma gratificao de Natal a seus funcionrios. Esta gratificao calculada com base no nmero de horas extras trabalhadas e o nmero de horas de falta. A frmula para se calcular o prmio a seguinte:

    Extra 2 /3 * Faltas.

    O prmio distribudo segundo a tabela a seguir:

    10 10 mas 20 mas 30 mas 40 horas

    Prmio (R$)Extra 2/3 * FaltasPede-se um algoritmo e

    um programa em C, para ler informaes de

    funcionrios e calcular o prmio a ser dado.

    40

    Algoritmo BnusVariveis: Extras, Faltas, Pagamentos : reais

    Nome : cadeiaIncio1. [Ler informaes de um funcionrio]

    Leia (Nome, Extras, Faltas)2. [Calcular o prmio]Se Extras (2/3.0) * Faltas > 40Ento Pagamento " 50Seno Se Extras (2/3.0) * Faltas >30

    Ento Pagamento " 40Seno Se Extras (2/3.0) * Faltas >20

    Ento Pagamento " 30Seno Se Extras (2/3.0)*Faltas>10

    Ento Pagamento " 20Seno Pagamento " 10

    3. [Imprimir resultados]Escreva ( Prmio para`, Nome,`=R$`, Pagamento)Fim

    Exemplo 10: continuao

    Se A > 40

    Se A > 30

    Se A > 20

    Se A > 10

    V

    F

    F

    F

    V

    V

    F

    V

    P50;

    P40;

    P30;

    P20;

    P10;

  • 41

    # Podemos melhorar este algortmo, calculando o valor do teste(Extra (2/3.0) * Faltas) somente uma vez. Para isto vamos introduzir uma varivel temporria (Valor_teste).

    2.1 [Calcular o valor teste]Valor_teste " Extras (2/3.0) * Faltas

    2.2 [Calcular o prmio]Se Valor_teste > 40Ento Pagamento " 50Seno Se Valor_teste > 30

    Ento Pagamento " 40Seno Se Valor_teste > 20

    Ento Pagamento " 30Seno Se Valor_teste > 10

    Ento Pagamento "20Seno Pagamento "10

    Exemplo 10: continuao

    42

    Comando if

    # Sintaxe:if (expresso verdadeira)

    execute comando ou bloco de comandos

    # Exemplo:

    Falso = 0Verdadeiro 0

    if (contador > 9)contador = 0;

    5.4.3 Seleo de Aes Alternativas: O Comando if

    Em linguagem C a construo Se Ento - Seno feita atravs do:

  • 43

    # Exemplo:

    5.4.3 Seleo de Aes Alternativas: O Comando if

    OBS: Quando dentro do comando if, forem executados mais de um comando (bloco de comando) necessrio colocar chaves, {}, para marcar o inicio e o fim dos comandos a serem executados.

    if (contador >9) {

    contador = 0;soma = 32

    }

    Aqui tem duas aes sendo feitas dentro da condio verdadeira

    Chave marcando o fim da condio verdadeira

    Chave marcando o inicio da condio verdadeira

    44

    Fazer um programa em C que leia um nmero e impri-ma uma mensa-gem dizendo se ele maior que 10, menor ou igual a 10.

    5.4.3 Seleo de Aes Alternativas: O Comando if

    #include #include main ()

    { /* Inicio do programa */int num;printf ("Digite um numero: ");scanf ("%d",&num);if (num > 10)

    printf ("\n\n O numero e 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 e menor que 10");system("pause");

    }

    Observe a chave { marcando o inicio do if

    Exemplo 11

  • 45

    5.4.4 Seleo de Aes Alternativas: O Comando elseelse

    O Comando else pode ser considerado um complemento do comando if, cujos comandos sero executados SOMENTE SE a expresso, especificada aps o comando if, for 0 (falsa).

    # Sintaxe:if (expresso verdadeira)

    execute comando1 ou bloco1 de comandoselse

    execute comando2 ou bloco2 de comandos

    Falso = 0Verdadeiro 0

    46

    Exemplo 12Exemplo 12

    #include #include main ( ) {

    int num;printf ("Digite um numero: ");scanf ("%d", &num);if (num == 10) {//inicio ento

    printf ("\n\n Voce acertou!\n");printf ("O numero e igual a 10.\n");

    }//fim entoelse {//inicio seno

    printf ("\n\n Voce errou!\n");printf ("O numero e diferente de 10.\\nn");

    }//fim senosystem("pause");

    }

    Refazer o programa em C do exemplo 11 anterior, utilizando o comando else

    5.4.4 Seleo de Aes Alternativas: O Comando elseelse

  • 47

    5.4.5 Seleo de Aes Alternativas: if-else encaixados

    ! possvel aninhar construes do tipo if-else em diversos nveis.

    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 ;

    48

    Exerccios-Comando IfIf-- elseelse

    Exemplo 13: Colocar o Exemplo 7 em Linguagem C

    #include #include main()

    {// declarar variveisfloat lab,exame1, exame_final, media; int nome; //1. [Ler dados]printf( "Digite o numero do aluno: " );scanf("%d",&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 mdia]media= 0.2*lab + 0.3 * exame1 + 0.5*exame_final; continua na pgina seguinte

  • 49

    Continuao do Exemplo 13

    // 3. [imprimir resultados]printf ("\nNo. estudante:%d\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

    continuao

    50

    Exerccios-Comando IfIf-- elseelse

    Exemplo 14: Colocar o Exemplo 9 em Linguagem C

    #include #include main( ){// declarar variveisfloat A, B, C, max; //1. [Ler dados]printf( "Digite tres numeros A, B, C\n" );scanf("%f%f%f",&A,&B,&C); #continua na pgina 46

    Exemplo 9 : Faa um programaque leia trs nmeros A, B e C e imprima o valor do maior.Assumir valores distintos e reais.

  • 51

    Continuao do Exemplo 14

    // 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 pgina seguinte

    52

    Continuao do Exemplo14

    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

  • 53

    #include #include main ( ){

    int a, b, c, maior, meio, menor ; // declarao de variveis.// Leitura de dadosprintf(" 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 prxima pgina

    Exemplo 15: Refazer o programa do exemplo 14 para imprimir os 3 nmeros na ordem crescente.

    Exerccios-Comando IfIf-- elseelse

    54

    elseif ( 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

    Exerccios-Comando IfIf-- elseelse

  • 55

    Exerccios para Casa - Comando IfIf-- elseelse

    1) Colocar em Linguagem C os algoritmos dos exemplos 8, e 10.2) Fazer um programa em C que leia 4 nmeros (A, B, C, D) e encontre

    o maior deles. Imprima uma mensagem dizendo qual deles o maiore o valor do maior.

    3) Faa um programa em C que calcule o aumento de salrio para o corrente ano. Se salrio >1000 o aumento de 5%. Seno o aumento de 7%.

    4) Preparar um algoritmo e um programa em C para ler os comprimentos dos trs lados de um tringulo (S1, S2, e S3) e determinar que tipo de tringulo 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. Ento:

    Se A B + C nenhum triangulo formadoSe A2 = B2 + C2 um triangulo retangulo formado,Se A2 > B2 + C2 um triangulo obtusangulo formadoSe A2 < B2 + C2 um triangulo acutangulo formado

    54

    56

    Exerccios para Casa - Comando IfIf-- elseelse

    5) Faa um programa que leia dois valores, o primeiro servindo de indicador de operao e o segundo correspondendo ao raio de uma circunferncia. Caso o primeiro valor lido seja igual a 1, calcular e imprimir a rea desta circunferncia. Se o valor lido for 2, calcular e imprimir o permetro da circunferncia. E se o valor lido for diferente destes dois valores; imprimir uma mensagem dizendo que o indicador de operao foi mal fornecido.

    6) Fazer um programa que: dada a altura e peso de uma pessoa, calcule seu ndice de massa corporal. Frmula: peso dividido por altura ao quadrado. Faixas: 18,5 e 25 e

  • 57

    Exerccios para Casa - Comando IfIf-- elseelse

    7) Faa um programa que leia dois valores, o primeiro servindo de indicador de operao e o segundo correspondendo ao raio de uma circunferncia. Caso o primeiro valor lido seja igual a 1, calcular e imprimir a rea desta circunferncia. Se o valor lido for 2, calcular e imprimir o permetro da circunferncia. E se o valor lido for diferente destes dois valores; imprimir uma mensagem dizendoque o indicador de operao foi mal fornecido.

    8)Fazer um programa que resolva uma equao de segundo grau, realizando consistncias dos valores do discriminante e do coeficiente "a". Caso o discriminante seja negativo, dever apenas ser impressa a mensagem: " Esta equao no possui razes reais" . Caso o coeficiente "a" seja igual zero, dever ser impressa a mensagem: " Esta no uma equao de segundo grau" e deverser fornecido o valor da nica raiz. Se o discriminante for maior ou igual a zero e o coeficiente "a" no for nulo, devero ser impressas: "as razes da equao: ax2 + bx + c = 0 so R1 = xxx e R2 = xxx".

    56

    58

    Resoluo Exerccios para Casa 1

    #include #include // Programa: Mostre o maior de 2 numerosmain(){

    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");}

    Colocar o

    exemplo 8

    em C

    #continua na prxima

    pgina

  • 59

    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");

    }

    Resoluo Exerccio para Casa 1

    60

    #include #include #include 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");

    }

    Resoluo Exerccio para Casa: Exerccio 8

  • 61

    5.4.6 Aplicao: O paradoxo da inovao

    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 no estivessemprocessados em 1900.

    Herman Hollerith (estatstico):

    Foi encarregado pela Agncia Estatsticados EUA de desenvolver uma tcnica para acelerar o processamento dos dadosdo censo, levando apenas 3 anos.

    62

    5.4.6 Aplicao: O paradoxo da inovao

    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 elevar 8 anos e que no pode ser movida da mquina uma veziniciada. De acordo com a Lei de Moore deve-se esperar amelhoria dos processadores ou deve-se comear hoje ?

    ?Soluo: O senso comum diz que melhor comear agora, mas antes de por a mo na massa bom olhar a Tabela dadaa seguir:

    !

  • 63

    Tempo Total

    (anos)

    Tempo deDesenvolvimento

    (anos)

    Tempo deProcessamento

    (anos)

    5.4.6 Aplicao: O paradoxo da inovao

    0 8 8

    1 4 5

    Incio

    0. ano

    1. ano

    2 2 42. ano

    Final

    8. ano

    5. ano

    4. ano

    3 1 43. ano 4. ano

    4 0,5 4,54. ano 4. ano

    !Observao: melhor comear no 2. ou 3. Ano, pois com isso pode-se terminar antes a tarefa. Esta anlise tambm pode ser til para dividir recursos entre produo e pesquisa.

    64

    5.4.6 Aplicao: O paradoxo da inovao

    Forma Geral: O paradoxo da inovao pode ser formulado de acordo com trs parmetros: tempo de desenvolvimento t,taxa de aperfeioamento a e tempo de processamento p.

    tapty

    )/1(+=

    No caso anterior, os valores eram:

    p = 8 e a = 50% = 0.5.tty 2

    8+=

    A frmula para o caso geralser dada por:

    Considerando-se t varivel, a e pfixos, para encontrar o menor tempo y, pode-se fazer dy/dt = 0.

    Alternativa: Valea pena esperar se

    p/(1/a) > 1

  • 65

    5.4.6 Aplicao: O paradoxo da inovao

    Tempo Total

    (anos)

    Tempo deDesenvolvimento

    (anos)

    Tempo deProcessamento

    (anos)

    0 8 8

    1 4 5

    Incio

    0. ano

    1. ano

    2 2 42. ano

    Final

    8. ano

    5. ano

    4. ano

    3 1 43. ano 4. ano

    4 0,5 4,54. ano 4. ano

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

    66

    5.4.6 Aplicao: O paradoxo da inovao

    // Programa: paradoxo da inovao.#include #include main(){

    float a, p, r;printf(Fornea a e p:); scanf(%f %f,&a,&p);r = p/(1/a);if (r > 1.0)

    printf(Espere);else

    printf(Comece);system(pause);

    }

    Cdigo CAlgoritmo: Inovaovariveis: r,p,a: real; InicioEscreva(Fornea a e p)Leia (a, p);

    r " (p/(1/a));Se (r > 1.0)Ento Escreva(Espere);Seno

    Escreva(Comece);Fim

    Exemplo 16

  • 67

    Um problema simples: Ano Bissexto. Simples ?

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

    5.4.6 Aplicao: Ano Bissexto

    68

    Egito Antigo: 365 dias

    Roma Antiga: 365,25 dias

    4 anos = 1 dia intercalar

    Calendrio Alexandrino

    Calendrio Juliano

    4 anos = 1 ano bissexto

    Mas o ano solar dura: 365,242199 dias !

    33001

    4001

    1001

    41365 365,242199 ++

    Ou seja:

    5.4.6 Aplicao: Ano Bissexto

  • 69

    Ano Calendrio Ano Solar

    1 Ano

    2 Ano

    3 Ano

    4 Ano

    ++33001

    4001

    1001

    41365*2

    33001

    4001

    1001

    41365 ++

    ++33001

    4001

    1001

    41365*3

    365 dias

    2*365 dias

    +++33001

    4001

    1001*4

    44365*4

    3*365 dias

    4*365 dias

    Mais um dia no ano !Ano Bissexto !

    Mas e quanto aos demais termos ?

    5.4.6 Aplicao: Ano Bissexto

    70

    Em 1582, Gregrio XIII:

    Calendrio Gregoriano

    Nova definio para ano bissexto

    33001

    4001

    1001

    41365 365,242199 ++

    Cada 4 anos + 1 dia

    Cada 100 anos - 1 dia

    Cada 400 anos + 1 dia

    5.4.6 Aplicao: Ano Bissexto

  • 71

    Algoritmo

    OBSERVAO: Subtrair 1 dia do calendrio a cada 3300 anos

    Se resto(ano/100) 0 entoSe (ano/400) = 0

    ento bissexto; (b)Seno no_bissexto; (c)

    SenoSe (ano/4) = 0

    ento bissexto; (a)Seno no_bissexto; (c)

    (a) No divisvel por 100 e divisvel por 4.

    (b) Divisvel por 100 e 400.

    (c) Os demais anos no so Bissextos.

    Exemplo 17- Ano Bissexto

    Em 1582, Gregrio XIII:

    Calendrio Gregoriano

    Nova definio para ano bissexto

    5.4.6 Aplicao: Ano Bissexto

    72

    Exerccios - Comando IfIf-- elseelse

    //Exemplo 17//programa que calcula quando um ano Bissexto

    # include # include 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);

    elseprintf(" O Ano %d Nao e bissexto \n\n", ano);

  • 73

    Exerccios - Comando IfIf-- elseelse

    //continuao programa ano bissextoelse

    if (ano%4 == 0) printf("O Ano %d eh bissexto \n\n", ano );

    elseprintf(" O Ano %d nao eh bissexto \n", ano);

    system("pause");}

    74

    a) Exemplo de Conjuno : UM < 2 e UM < 0verdadeiro falso $ falso

    5.4.7 Seleo de Aes Alternativas: Condies Compostas

    Utilizao de Condies Compostas

    ! Alguns problemas ficam mais simples se utilizarmos condies compostas ao invs de relaes simples.

    ! As condies compostas podem ser do tipo e conjuno, ou disjuno e no negao.

    Seja a varivel UM = 1. As expresses a seguir resultam em:

  • 75

    b) Exemplo de disjuno : UM < 2 ou UM < 0verdadeiro falso $ verdadeiro

    c) Exemplo de negao :No UM < 2

    falso

    5.4.7 Seleo de Aes Alternativas: Condies Compostas

    OBS: As condies compostas podem ser utilizadas tanto nos comandos Se como nos repita condicionais.

    76

    1) Suponha que I e J sejam variveis inteiras com valores 6 e 12, respectivamente. Quais das seguintes condies so 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) No I > 6

    %Verdadeiro

    5.4.7 Seleo de Aes Alternativas: Condies Compostas

    %Verdadeiro

    %Verdadeiro

    %Verdadeiro

    %Verdadeiro

    %Verdadeiro

  • 77

    2) Assuma que A, B, C e D so variveis e S1, S2 , S3 e S4 so comandos ou alternativas.

    a) Usando condies compostas reescreva as instrues abaixo:

    Se A > B Ento Se B C

    ento Se C Dento S1seno S2

    seno S3Seno S4

    5.4.7 Seleo de Aes Alternativas: Condies Compostas

    78

    Soluo 1:

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

    ento S1seno S2

    Seno Se (A > B e B > C)Ento S3

    Se (A B)Ento S4

    Soluo 2:

    Se (A > B e B C ) e (C D) ento S1Se (A > B e B C ) e (C = D) ento S2Se (A > B) e (B > C)ento S3Se (A B) ento S4

    5.4.7 Seleo de Aes Alternativas: Condies Compostas

  • 79

    b) Reescrever a instruo abaixo, como uma estrutura Seutilizando somente condies simples.

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

    Soluo :Se A < BEnto Se C D

    ento Se B Dento S1

    5.4.7 Seleo de Aes Alternativas: Condies Compostas

    80

    Operadores Lgicos em C

    Operador Significado&& Conjuno lgica (and).|| Disjuno lgica (or).! Negao lgica (not).

    A !AVerdade FalsoFalso Verdade

    Negao

    A BFalso FalsoVerdade Falso

    Conjuno

    Falso VerdadeVerdade Verdade

    A&&BFalsoFalsoFalsoVerdade

    A BFalso FalsoVerdade Falso

    Conjuno

    Falso VerdadeVerdade Verdade

    A||BFalsoVerdadeVerdadeVerdade

  • 81

    # include # include 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 ); elseprintf(" O Ano %d nao eh bissexto \n", ano); }

    system("pause");}

    Refazer o programa do Ano Bissexto usando Condies Compostas

    5.4.7 Seleo de Aes Alternativas: Condies Compostas

    82

    Exemplo18: Usando condies compostas, fazer um algoritmo em um programa em C que leia trs nmeros, A, B e C e imprima o maior deles. Assuma que os valores so diferentes.

    5.4.7 Seleo de Aes Alternativas: Condies Compostas

    Algortmo Max_3Variveis A, B, C, Max : realIncio1. [Ler dados]Leia ( A, B, C )

    2. [Determinar o maior valor]Se (A > B e A > C) ento Max " ASe (B > A e B > C) ento Max " BSe (C > A e C > B) ento Max " C3. [Imprimir maior valor]Escreva (Maior valor =`, Max )4. [Terminar]Fim

  • 83

    5.4.7 Seleo de Aes Alternativas: Condies Compostas

    #include #include main(){ //Iniciofloat 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

    84

    Exemplo19: Fazer um algoritmo e um programa em C, utilizando condies compostas, que leia trs nmeros e imprima o maior e menor deles. Assume-se que os valores so diferentes.

    Algortmo Max_Min_3Variveis A, B, C, Max, Min : realIncio1. [Ler dados]Leia ( A, B, C )2. [Determinar o maior e menor valor]Se (A > B e A > C) e (B < C) ento Max " A

    Min " BSe (A > B e A > C) e (C < B) ento Max " A

    Min " CSe (B > A e B > C) e (A > C) ento Max " B

    Min " C

    Se (B > A e B > C) e (A < C) ento Max " BMin " A

    Se (C > A e C > B) e (B > A) ento Max " CMin " A

    Se (C > A e C > B) e (B < A) ento Max " CMin " B

    3. [Imprimir o maior e o menor valor]Escreva (Maior valor =`, Max )Escreva (Menor valor =`, Min )4. [Terminar]Fim

    5.4.7 Seleo de Aes Alternativas: Condies Compostas

  • 85

    5.4.7 Seleo de Aes Alternativas: Condies Compostas

    #include #include 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 prxima pg . . .

    Programa em C

    86

    if(B > A && B > C && A < C) continuao{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.7 Seleo de Aes Alternativas: Condies Compostas

  • 87

    5.4.8 Seleo de Aes Alternativas: Comando SwitchSwitch

    ! Quando for necessrio escolher uma dentre vrias opes, ao invs de aninhar construes do tipo if-else em diversos nveis, pode ser prefervel utilizar o comando Switch.

    switch (expresso){

    case (constante 1): intrues 1; break;case (constante 2): intrues 2; break;...case (constante n): intrues n; break;default: instrues;

    }

    88

    Fazer um programa que leia um caractere ch indicando o estado civil e imprima uma mensagem de acordo com a correspondncia:

    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 20: Estado Civil

    5.4.8 Seleo de Aes Alternativas: Comando SwitchSwitch

    #include #include 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

    No esquecer o break !

  • 89

    5.4.8 Seleo de Aes Alternativas: Comando SwitchSwitch

    #include #include 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: CCasadoSolteiroDivorcioViuvoPressione uma tecla para continuar

    Resultado da Execuo

    !Sem o break; todos oscase abaixo do caseselecionado sero

    executados.

    90

    5.4.8 Seleo de Aes Alternativas: Mais exercicios

    1) Escreva um programa que pede para o usurio entrar um nmero correspondente a um dia da semana e que ento apresente na tela o nome do dia, utilizando o comando switch.

    2) Dadas as seguintes informaes de um funcionrio: Numero funcional, idade, cargo e o seu salrio bruto e considerando que:

    a)O salrio bruto teve um reajuste de 38%.b)O funcionrio receber uma gratificao de 20% do salrio bruto.c)O Salrio liquido total descontado em 15%Faa um programa para:

    Imprimir Numero funcional, idade e cargo.Imprimir o salrio bruto.Imprimir o salrio lquido.

  • 91

    Mas, Continua...

    Fim do if