Comandos If-else. Unesp Campus de Guaratinguetá. Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro. 5.



Documentos relacionados
Programação: Estruturas de seleção

7. Estrutura de Decisão

9.1.2 Laços Controlados por Entrada: Contador

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

3. Estruturas de seleção

INTRODUÇÃO À LINGUAGEM C++

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

Apresentar os conceitos básicos e as estruturas de linguagem relacionadas à tomada de decisão ofertadas pela linguagem C, tais como:

Conceitos básicos da linguagem C

Aula 3 Desvio Condicional

Estrutura Condicional em Java

9 Comandos condicionais

Bacharelado em Ciência e Tecnologia BC-0505 Processamento da Informação Lista de Exercícios EXTRA Nº 02 Algoritmos Estruturas de Seleção

Variáveis e Comandos de Atribuição

Exercícios práticos - Folha 3

Linguagem de Programação I

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

7 Testes e Condições. Unesp Campus de Guaratinguetá

AULA 1 AULA 2. Estudo dirigido para as três primeiras AULAS de LPI Professora ANITA MACIEL 1º ESTUDO DIRIGIDO

A linguagem C oferece quatro estruturas de decisão: if, if-else, switch e o operador condicional.

Estrutura switch if-else switch switch switch if-else-if switch switch case default break switch switch break Observações: case

ALGORITMOS E FLUXOGRAMAS

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

Elementos de programação em C

LINGUAGEM C. Estrutura básica de um programa

ALP Algoritmos e Programação

Algoritmos e Programação

Introdução a Computação

CURSO BÁSICO DE PROGRAMAÇÃO AULA 9. Introdução a linguagem C Estruturas de decisão

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

1. Estrutura de seleção. Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição

20 Caracteres - Tipo char

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

Lista de Exercícios 3 Estrutura Condicional

Definição. de solução de um problema passo-a-passo. Representa a lógica l. passo.

Universidade Federal de Rondônia Técnicas de Desenvolvimento de Programas Lista 4

Resumo da Matéria de Linguagem de Programação. Linguagem C

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

Técnicas de Programação I

Comandos Sequenciais if else, e Switch

Controle de Fluxo Comandos de decisão

Capítulo 2: Introdução à Linguagem C

5 Apresentando a linguagem C

Convertendo Algoritmos para a Linguagem C

Lista de Exercícios 3 Estruturas de Controle Profa Susana M Iglesias

valor_dolar = converte(valor_compra, taxa_dolar); valor_final = converte(valor_dolar, taxa_real) * ;

Universidade Federal de Goiás Instituto de Informática

Introdução à Lógica de Programação

14.1 Vetor - Problemas

Programação de Computadores I Pseudocódigo PROFESSORA CINTIA CAETANO

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

JavaScript (ou JScript)

Trabalho de laboratório Avaliação semestral Exame final MÉDIA PONDERADA CONCEITO

compreender a importância de cada estrutura de controle disponível na Linguagem C;

Estruturas de entrada e saída

Algoritmo para converter uma temperatura em Fahrenheit para Celsius

José Romildo Malaquias

O comando switch. c Professores de ALPRO I 04/2012. Faculdade de Informática PUCRS. ALPRO I (FACIN) O comando switch 04/ / 31

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia de Computação CECOMP

A estrutura de repetição em um algoritmo consiste na execução de um trecho do mesmo levando em consideração certas condições imposta pelo algoritmo.

Estruturas de Dados. Alguns dados não costumam ser tão simples assim... Podem ser compostos por vários dados distintos

insfcanceof new public switch transient while byte continue extends for int null

Controle de Fluxo Comandos de decisão

ESTRUTURA CONDICIONAL

Estruturas de Repetição

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA DISCUSSÃO DOS EXERCÍCIOS E CONSTRUÇÃO DE PROGRAMAS SEQUENCIAIS. Prof. Dr. Daniel Caetano

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

02. [Manzano, 1996] Escreva um programa em C que apresente os quadrados dos números inteiros de 15 a 200.

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Testando e Comparando Valores

INF 1005 Programação I

Linguagem e Técnicas de Programação I Operadores, expressões e funções. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Prof. Vania Gimenez.Notas de aula Lógica de programação- Este material não substitui os livros indicados no site no link bibliografia.

EXERCÍCIOS. 2. Faça um algoritmo que receba dois números e ao final mostre a soma, subtração, multiplicação e a divisão dos números lidos.

Lista de Exercícios Fluxograma, Estruturas de Sequência e Decisão Prof: Yuri Frota

ATENÇÃO!!! Rui Morgado - TLP 2

Exercícios de Fixação Pseudocódigo e Estruturas Básicas de Controle

CURSO BÁSICO DE PROGRAMAÇÃO AULA 9. Revisão Aula Anterior Estruturas de Decisão (If e Switch)

ESTRUTURA DE UM PROGRAMA EM C++ Estrutura de um Programa em C++

Plano de Aula. if(condição) { bloco de comandos; } else { bloco de comandos2; }

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores

17 - Funções e Procedimentos em C Programação Modular

Algoritmo Iterativo. Dilema do Martelo x Edifício. O Martelo. O Edifício 01/06/2014. Dilema das ações x declarações

Linguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto

Curso de Programação Computadores

Lista de Exercícios. Vetores

INF 1007 Programação II

Laboratório de Programação I

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes

2 echo "PHP e outros.";

BC0501 Linguagens de Programação

Programação científica C++

Simulado de Algoritmos - Respostas

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

Transcrição:

5- A Lógica da Programação Comandos If-else Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro 1 5. A Lógica da programação 5.1 Introduçã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. lado1 hipotenusa? lado2 H = (L 12 +L 22 ) 1/2 2

5.1 Introdução Declarações 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 Instruções 3 5.1 Introdução Algoritmo 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 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; printf( Forneça 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 4

5. A Lógica da programação 5.2. Rastreando um Algoritmo! Depois de elaborado um algorítmo, como saber se ele faz o que se supõe que faça? 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. 3 4 Algoritmo 5 O exemplo 2 a seguir ilustra o rastreamento do algoritmo do exemplo 1. 5 4 5.2. Rastreando um Algoritmo Exemplo 2: Rastrear Pitágoras 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. Algoritmo Algoritmo: Pitágoras Declarar variáveis; Inicio Leia (L1, L2); Passo L1 L2 Q1 Q2 H Saída 1 2 3 4 3 4 9??? 3 4 9 16?? 3 4 9 16 5? 3 4 9 16 5 3,4,5 Q1 " L1 2; 1 Q2 " L2 2; 2 H" SQRT (Q1 + Q2); Escreva"(L1,L2,H); Fim 3 4 6

5.2. Rastreando um Algoritmo Exemplo 3: Calcular Média 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. Algoritmo 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 Aqui está sendo dada uma ordem para que o computador leia os dados necessários para calcular a média. 7 5.2. Rastreando um Algoritmo Exemplo 3: Calcular Média 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. Algoritmo 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 Aqui está sendo dada uma ordem para que o computador escreva na tela o valor da média que ele calculou. 8

5.2. Rastreando um Algoritmo main() { float n1, n2, n3, n4, m; printf( Forneça n1, n2, n3 e n4: ); 1 scanf( %f%f%f%f,&n1,&n2,&n3,&n4); m = (n1 + n2 + n3 + n2)/4.0; 2 printf( Nota Final = %f\n,m); 3 system( pause ); Passo N1 N2 N3 N4 M Saída 1 2 3 Código C 6.0 6.5 8.0 9.5?? 6.0 6.5 8.0 9.5 7.5? 6.0 6.5 8.0 9.5 7.5 7.5 Algoritmo Algoritmo Notas Variáveis N1, N2, N3, N4, M; Inicio 1. [Ler as notas individuais] Escreva( forneça n1, n2, n3, n4 ) Leia ( N1, N2, N3, N4 ); 1 2. [Calcular a nota média] 2 MEDIA "( N1 + N2 + N3 + N4 ) / 4.0; 3. [Sair resultados] 3 Escreva ( Nota Final =`, MEDIA); Fim 9 5.3. Trabalhando com a Linguagem C 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() { 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 float NOTA1, NOTA2, NOTA3, NOTA4, MEDIA; printf("digite A NOTA1 "); scanf("%f",&nota1); continua na pg. seguinte 10

5.3. Trabalhando com a Linguagem C 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); ME DIA = (NOTA1+NOTA2+NOTA3+NOTA4)/4.0; printf("\n "); printf("nota FINAL = % f\n", ME DIA); 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. 11 5.3. Trabalhando com a Linguagem C Ao se executar o programa do exemplo 3, aparece a seguinte tela: 12

5.3. Trabalhando com a Linguagem C Exemplo 4: Fazer um algoritmo que leia uma temperatura na escala Celsius e a converta para a escala Fahrenheit. Todas as variáveis em questão são reais. Algoritmo Fahrenheit Variáveis: TEMPCE, TEMPFA: real Inicio 1.[Ler a temperatura em celsius] Leia (TEMPCE) 2. [Converter a temperatura para fahrenheit] TEMPFA " ( 9.0 / 5.0 ) * TEMPCE + 32 3. [Sair resultados] Escreva ( Temperatura em Fahrenheit =`, TEMPFA) Fim O Exemplo 4 em Linguagem C torna-se: 13 5.3. Trabalhando com a Linguagem C /*==================================== * E ste é o programa do exemplo 4-tópico 5 * *====================================*/ #include <stdio stdio.h> #include <stdlib stdlib.h> main() { floattempce, TEMPFA; printf ("DIGITE A TE MPE RATURA E M o C"); scanf ("% f",&te MP CE ); printf ("\n "); 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 printf ("Temperatura Lida, em Celsius = % f\n", TE MP CE ); 14

5.3. Trabalhando com a Linguagem C Continuação do programa do exemplo 4 TE MP FA = (9.0/5.0) * TE MP CE + 32; printf ("\n "); printf ("Temperatura em Fahrenheit = % f\n", TE MP FA); printf ("\n "); system ("pause"); Imprime valor da temperatura em Fahrenheit, calculada acima, bem como a frase em vermelho Calcula o valor da temperatura em Fahrenheit e a guarda na memória 15 5.3. Trabalhando com a Linguagem C 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. Algoritmo Converte_Chuva Variáveis: POL, MILIM: real. Inicio 1. [Ler dados conhecidos] Escreva ( Digite o valor da chuva em polegadas ) Colocando o Exemplo 5 Leia ( POL ) em Linguagem C 2. [Converter polegadas em milímetros] MILIM " 25.4 * POL 3. [Sair resultado] Escreva ( Quantidade de chuva em mm =`,MILIMETROS) Fim 16

5.3. Trabalhando com a Linguagem C /*====================================== * 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"); Programa do Exemplo 5 17 5.3. Trabalhando com a Linguagem C Programa do Exemplo 5 : Continuação Ao se executar o programa do exemplo 5, aparece a seguinte tela: 18

5.3. Trabalhando com a Linguagem C : Algoritmo do Exemplo 6 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 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 ) 19 5.3. Trabalhando com a Linguagem C : Algoritmo do Exemplo 6 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 Colocando o Exemplo 6 em Linguagem C 20

5.3. Trabalhando com a Linguagem C : 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"); 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"); printf("digite A quantidade de Milkshake\n"); printf("consumida e o seu custo unitario "); scanf("%d%f",&milk,&c5); 22

Programa do Exemplo 6 : Continuação /*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 25 5.4 Seleção de Ações Alternativas Suponha que temos duas variáveis numéricas, A e B, cujos valores são diferentes, e desejamos imprimir a maior delas. Neste caso utilizamos uma construção chamada Se_Então_Senão SIM A > B? NÃO escreva (A) escreva (B) 26

5.4 Seleção de Ações Alternativas 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 ) 27 5.4 Seleção de Ações Alternativas! Um conjunto especial de operadores relacionais é solicitado para expressar condições. São eles: Operador em Linguagem Algorítmica > < = Operador em Linguagem C > < == >= <=!= Significado maior do que menor do que igual a maior do que ou igual a menor do que ou igual a não igual ( diferente de ) 28

5.4 Seleção de Ações Alternativas 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 29 5.4 Seleção de Ações Alternativas Exemplo 7: Continuação... 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 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 Seleção de Ações Alternativas Diagrama de blocos - Fluxograma! 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 32 confecção de um fluxograma.

5.4 Seleção de Ações Alternativas 5.4.1 Diagrama de blocos - Fluxograma Símbolo Inicio/Fim Leitura Cond Resultados Operacoes Descrição Delimita o início ou o final das instruções. Leitura de dados (através do teclado, pex). Avaliação de uma condição. Apresentação de resultados. Atribuição ou operação de processamento. Fluxo de execução. Conexão entre partes do algoritmo. 33 5.4 Seleção de Ações Alternativas Problema Maior Suponha duas variáveis numéricas, A e B, com valores diferentes, e deseja-se imprimir a maior delas. Algoritmo Maior Variaveis A, B; Inicio 1. Ler(A,B); 2. Se (A > B) entao imprimir A; Senao imprimir B; Fim Inicio Ler A,B; Se A>B V F Escreva(A); Escreva(B); Final 34

5.4.2 Seleção de Ações Alternativas : Ses Encaixados 5.4.2 Ses Encaixados Em algumas aplicações, uma das alternativas de uma estrutura Se_Então_Senão pode envolver outras decisões 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) 35 5.4.2 Seleção de Ações Alternativas : Ses Encaixados Exemplo 9: Continuação... 2. [Determinar o maior valor, comparando pares] Inicio Ler A,B,C; 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 V V F Se A > B V Se A > C Se B > C F F A; C; B; C; Escreva(Max); Final 36

5.4.2 Seleção de Ações Alternativas : Ses Encaixados Cuidado com a paragrafação Ex1: Se C1 então Se C2 então S1 senão S2 onde: C1 e C2 significam condições e S1 e S2, comandos Em que condições S2 é executado? Isso não fica claro. 37 5.4.2 Seleção de Ações Alternativas : Ses Encaixados Ex2: Se C1 então Se C2 então S1 senão S2 Se C1 então Se C2 então S1 senão S2 Neste exemplo, o comando Se C2 só será executado se a condição C1 for Verdadeira. Se C1 for falsa, nenhum comando será Executado. Neste exemplo, o comando Se C2 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: Extra 2/3 * Faltas > 40 horas > 30 mas <= 40 horas > 20 mas <= 30 horas > 10 mas <= 20 horas <= 10 horas Prêmio (R$) 50 40 30 20 10 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 Exemplo 10: continuação 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 Se A > 40 F Se A > 30 F Se A > 20 F Se A > 10 F P 10; V V P 40; V P 30; V P 20; P 50; 40

Exemplo 10: continuação # Podemos melhorar este algorítmo, calculando o valor 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 41 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: Comando if # Sintaxe: if (expressão é verdadeira) execute comando ou bloco de comandos Falso = 0 Verdadeiro 0 # Exemplo: if (contador > 9) contador = 0; 42

5.4.3 Seleção de Ações Alternativas: O Comando if 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. # Exemplo: Aqui tem duas ações sendo feitas dentro da condição verdadeira Chave marcando o inicio da condição verdadeira Chave marcando o fim da condição verdadeira if (contador >9) { contador = 0; soma = 32 43 5.4.3 Seleção de Ações Alternativas: O Comando if Exemplo 11 Fazer um programa em C que leia um número e imprima uma mensagem dizendo se ele é maior que 10, menor ou igual a 10. Observe a chave { marcando o inicio do if #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 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"); 44

5.4.4 Seleção de Ações Alternativas: O Comando else O Comando else pode 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) Falso = 0 Verdadeiro 0 execute comando1 ou bloco1 de comandos else execute comando2 ou bloco2 de comandos 45 5.4.4 Seleção de Ações Alternativas: O Comando else #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 e diferente de 10.\\nn"); //fim senão system("pause"); Exemplo 12 Refazer o programa em C do exemplo 11 anterior, utilizando o comando 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 Exercícios-Comando If- else Exemplo 13: Colocar o Exemplo 7 em Linguagem C #include <stdlib.h> #include <stdio.h> main() { // declarar variáveis float 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 média] media= 0.2*lab + 0.3 * exame1 + 0.5*exame_final; continua na página seguinte 48

Continuação 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 continuação 49 Exercícios-Comando If- else Exemplo 14: 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); 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. #continua na página 46 50

Continuação 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 página seguinte 51 Continuação 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 52

Exercícios-Comando If- else #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; Exemplo 15: Refazer o programa do exemplo 14 para imprimir os 3 números na ordem crescente. #continua na próxima página 53 Exercícios-Comando If- else 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 54

Exercícios para Casa - Comando If- 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 (S 1, S 2, e S 3 ) e determinar que tipo de triângulo temos, com base nos seguintes casos. Sejam A o maior dos lados de S 1, S 2, e S 3 e B e C os outros dois lados. Então: Se A B + C nenhum triangulo é formado Se A 2 = B 2 + C 2 um triangulo retangulo é formado, Se A 2 > B 2 + C 2 um triangulo obtusangulo é formado Se A 2 < B 2 + C 2 um triangulo acutangulo é formado 55 54 Exercícios para Casa - Comando If- else 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. 55 56

Exercícios para Casa - Comando If- else 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". 56 57 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"); Colocar o exemplo 8 em C #continua na próxima página 58

Resolução Exercício para Casa 1 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"); 59 Resolução Exercício para Casa: Exercício 8 #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"); 60

5.4.6 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. 61 5.4.6 Aplicação: O paradoxo da inovação 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: 62

5.4.6 Aplicação: O paradoxo da inovação Início Tempo de Desenvolvimento (anos) Tempo de Processamento (anos) Tempo Total (anos) Final 0º. ano 1º. ano 2º. ano 0 8 8 1 4 5 2 2 4 8º. ano 5º. ano 4º. ano 3º. ano 3 1 4 4º. ano 4º. ano 4 0,5 4,5 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. 63 5.4.6 Aplicação: O paradoxo da inovação 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. No caso anterior, os valores eram: p = 8 e a = 50% = 0.5. A fórmula para o caso geral será dada por: 8 y= t+ t 2 y = t + p (1/ a ) t 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 64

5.4.6 Aplicação: O paradoxo da inovação No caso anterior: 8/(1/0.5) = 4 > 1 Início Tempo de Desenvolvimento (anos) Tempo de Processamento (anos) Tempo Total (anos) Final 0º. ano 1º. ano 2º. ano 0 8 8 1 4 5 2 2 4 8º. ano 5º. ano 4º. ano 3º. ano 3 1 4 4º. ano 4º. ano 4 0,5 4,5 4º. ano 65 5.4.6 Aplicação: O paradoxo da inovação Exemplo 16 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 Código C // 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 ); 66

5.4.6 Aplicação: Ano Bissexto Um problema simples: Ano Bissexto. Simples? Quantos dias demora a Terra para dar uma volta completa no Sol? 67 5.4.6 Aplicação: Ano Bissexto Egito Antigo: 365 dias 4 anos = 1 dia intercalar Calendário Alexandrino Roma Antiga: 365,25 dias 4 anos = 1 ano bissexto Calendário Juliano Mas o ano solar dura: 365,242199 dias! Ou seja: 1 1 1 365,242199 365 + + 4 100 400 1 3300 68

5.4.6 Aplicação: Ano Bissexto 1º Ano Ano Calendário 365 dias Ano Solar 1 1 1 365 + + 4 100 400 1 3300 2º Ano 2*365 dias 2 * 365 + 1 4 1 100 + 1 400 1 3300 3º Ano 3*365 dias 3* 365 + 1 4 1 100 + 1 400 1 3300 4º Ano 4*365 dias 4 * 365 + 4 4 + 4 * 1 100 + 1 400 1 3300 Ano Bissexto! Mais um dia no ano! Mas e quanto aos demais termos? 69 5.4.6 Aplicação: Ano Bissexto Em 1582, Gregório XIII: Nova definição para ano bissexto Calendário Gregoriano 1 1 1 365,242199 365 + + 4 100 400 1 3300 Cada 4 anos + 1 dia Cada 100 anos - 1 dia Cada 400 anos + 1 dia 70

5.4.6 Aplicação: Ano Bissexto Em 1582, Gregório XIII: Nova definição para ano bissexto Exemplo 17- Ano Bissexto (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. Calendário Gregoriano Algoritmo 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) OBSERVAÇÃO: Subtrair 1 dia do calendário a cada 3300 anos 71 Exercícios - Comando If- else //Exemplo 17 //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 e bissexto \n\n", ano); 72

Exercícios - Comando If- else //continuação programa ano bissexto 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"); 73 5.4.7 Seleção de Ações Alternativas: 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: a) Exemplo de Conjunção : UM < 2 e UM < 0 verdadeiro falso $ falso 74

5.4.7 Seleção de Ações Alternativas: Condições Compostas 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. 75 5.4.7 Seleção de Ações Alternativas: Condições Compostas 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 %Verdadeiro %Verdadeiro %Verdadeiro %Verdadeiro f) Não I > 6 %Verdadeiro %Verdadeiro 76

5.4.7 Seleção de Ações Alternativas: Condições Compostas 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 77 5.4.7 Seleção de Ações Alternativas: Condições Compostas 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 78

5.4.7 Seleção de Ações Alternativas: Condições Compostas 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 79 Operadores Lógicos em C Operador Significado && Conjunção lógica ( and ). Disjunção lógica ( or ).! Negação lógica ( not ). Conjunção Conjunção A B A&&B A B A B Falso Verdade Falso Verdade Falso Falso Verdade Verdade Falso Falso Falso Verdade Falso Verdade Falso Verdade Falso Falso Verdade Verdade Falso Verdade Verdade Verdade Negação A!A Verdade Falso Falso Verdade 80

5.4.7 Seleção de Ações Alternativas: Condições Compostas Refazer o programa do Ano Bissexto usando Condições Compostas # 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"); 81 5.4.7 Seleção de Ações Alternativas: Condições Compostas Exemplo18: 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 82

5.4.7 Seleção de Ações Alternativas: Condições Compostas #include <stdlib.h> #include <stdio.h> Programa em C 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"); 83 5.4.7 Seleção de Ações Alternativas: Condições Compostas Exemplo19: 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 84

5.4.7 Seleção de Ações Alternativas: Condições Compostas #include <stdlib.h> #include <stdio.h> Programa em C 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... 85 5.4.7 Seleção de Ações Alternativas: Condições Compostas if(b > A && B > C && A < C) {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"); continuação 86

5.4.8 Seleção de Ações Alternativas: Comando 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. 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; 87 5.4.8 Seleção de Ações Alternativas: Comando Switch Exemplo 20: Estado Civil Fazer um programa que leia um caractere ch indicando 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 ); Programa: 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 Não esquecer o break! system("pause"); 88

5.4.8 Seleção de Ações Alternativas: Comando Switch Programa: 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 ); case S : printf ( Solteiro \n ); case D : printf ( Divorcio \n ); case V : printf ( Viuvo \n ); default: printf( Est. Inc. ); //fim switch system("pause");! Sem o break; todos os case abaixo do case selecionado serão executados. Resultado da Execução Qual estado civil: C Casado Solteiro Divorcio Viuvo Pressioneumateclaparacontinuar 89 5.4.8 Seleção de Ações Alternativas: Mais exercicios 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. 2) Dadas as seguintes informações de um funcionário: 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 Numero funcional, idade e cargo. Imprimir o salário bruto. Imprimir o salário líquido. 90

Mas, Continua... Fim do if 91