Programação: Estruturas de seleção



Documentos relacionados
7. Estrutura de Decisão

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

Controle de Fluxo Comandos de decisão

Controle de Fluxo Comandos de decisão

Aula 3 Desvio Condicional

Estrutura Condicional em Java

9 Comandos condicionais

Técnicas de Programação I

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

INTRODUÇÃO À LINGUAGEM C++

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

Variáveis e Comandos de Atribuiçã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. Vitor Valerio de Souza Campos

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

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

José Romildo Malaquias

LINGUAGEM C. Estrutura básica de um programa

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

Elementos de programação em C

Convertendo Algoritmos para a Linguagem C

Java Como Programar, 8/E

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

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

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

Conceitos básicos da linguagem C

Linguagem C Funções definidas pelo usuário. Lógica de Programação

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

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:

Algoritmos e Programação

ESTRUTURA CONDICIONAL

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

ALP Algoritmos e Programação

Testando e Comparando Valores

Programação: Tipos, Variáveis e Expressões

INF 1007 Programação II

Exercícios práticos - Folha 3

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

Estruturas de Controle em PHP

Estruturas de entrada e saída

BC0501 Linguagens de Programação

5 Apresentando a linguagem C

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

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

Algoritmos Estruturas Seqüenciais. José Gustavo de Souza Paiva

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

Programação científica C++

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

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

Programação Estruturada e Orientada a Objetos REVISÃO

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

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

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

LTP-IV. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

Estrutura Condicional C++

Introdução à Programação

Introdução a Computação

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

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

INFORMÁTICA E COMPUTAÇÃO CMP 1060 CONTROLE DE FLUXO ESTRUTURA CONDICIONAL 1

Estruturas de Repetição

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

Comandos de repetição while

Estruturas de Dados Aula 15: Árvores 17/05/2011

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

Programação WEB I Estruturas de controle e repetição

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

JavaScript (ou JScript)

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

Aula 02: C# - Estruturas de Decisão

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti

Capítulo 7. Estruturas de Decisão. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Programação Funcional. Aula 4. Definindo Funções. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2011.

Programação. Folha Prática 4. Lab. 4. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.

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

Linguagem de Programação I

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

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

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

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

Programando em C++ Histórico da Linguagem C

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

14.1 Vetor - Problemas

Estruturas de repetição (Ciclos)

9.1.2 Laços Controlados por Entrada: Contador

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Introdução. Introdução. Objetivos da Aula. Bases Computacionais da Ciência(BC-0005)

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

LINGUAGEM C UMA INTRODUÇÃO

- Aulas 57, 58, 59 e 60 - Técnicas de programação. Funções

Exercícios de Revisão Java Básico

Q1 Q2 Q3 Nota. Departamento de Informática - PUC-Rio INF 1005 Programação I P2 20/10/2010. Aluno: Exemplo (apenas um exemplo!):

CURSO BÁSICO DE PROGRAMAÇÃO AULA 7

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

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

Técnicas de Programação I

ALGORITMOS MEMÓRIA, VARIÁVEIS E CONSTANTES, OPERADORES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Transcrição:

Programação de Computadores I Aula 07 Programação: Estruturas de seleção José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/53

Valores booleanos Os valores booleanos (ou valores verdade) são verdadeiro e falso. São muito utilizados para indicar se uma condição é satisfeita ou não, e executar comandos diferentes em cada caso. Diferentemente da maioria das linguagens de programação, C não possui um tipo de dados específico para os valores booleanos. Em C o tipo int é utilizado para os valores booleanos. O valor verdadeiro é representado por qualquer número inteiro diferente de zero, e o valor falso é representado por zero. 2/53

Operações relacionais Operações relacionais comparam dois valores, resultando em um valor booleando. <expressão> == <expressão> retorna verdadeiro quando as expressões forem iguais. Ex: a == b <expressão>!= <expressão> retorna verdadeiro quando as expressões forem diferentes. Ex: a!= b 3/53

Operações relacionais (cont.) <expressão> > <expressão> retorna verdadeiro quando a expressão da esquerda tiver valor maior que a expressão da direita. Ex: a > b <expressão> < <expressão> retorna verdadeiro quando a expressão da esquerda tiver valor menor que a expressão da direita. Ex: a < b 4/53

Operações relacionais (cont.) <expressão> >= <expressão> retorna verdadeiro quando a expressão da esquerda tiver valor maior ou igual que a expressão da direita. Ex: a >= b <expressão> <= <expressão> retorna verdadeiro quando a expressão da esquerda tiver valor menor ou igual que a expressão da direita. Ex: a <= b 5/53

Operações Lógicas Operações lógicas (ou, e, não, etc) são realizadas com valores lógicos, resultando em outro valor lógico (verdadeiro ou falso, como nas oeprações relacionais). 6/53

Operações Lógicas (cont.) <expressão> && <expressão> retorna verdadeiro quando ambas as expressões são verdadeiras. Sua tabela de verdade é a b a && b V V V V F F F V F F F F Ex: a == 0 && b == 0 7/53

Operações Lógicas (cont.) <expressão> <expressão> retorna verdadeiro quando pelo menos uma das expressões é verdadeiras. Sua tabela de verdade é a b a b V V V V F V F V V F F F Ex: a == 0 b == 0 8/53

Operações Lógicas (cont.)! <expressão> retorna verdadeiro quando a expressão é falsa, e retorna falso quando a expressão é verdadeira. Sua tabela de verdade é a!a V F F V Ex:! (a == 0) 9/53

Operações Lógicas (cont.) A operações lógicas são frequentemente usadas em combinação com operadores relacionais, como por exemplo: ((2 > 1) (3 < 7)) : resultado VERDADEIRO ((3 < 2) && (2 == 2)) : resultado FALSO ((5!= 0) (1 < 2)) : resultado VERDADEIRO 10/53

Estruturas de seleção Os comandos de seleção permitem selecionar entre várias alternativas de comandos, qual deve ser executada. Com os comandos if e if else a escolha das alternativas é baseada no resultado de uma condição, isto é, de uma expressão booleana que resulta em um valor verdadeiro ou falso. Com o comando switch a escolha da alternativa a ser executa é baseada no valor de uma expressão inteira. 11/53

Comando if O comando if serve para alterar o fluxo de execução de um programa baseado no valor de uma condição, ou seja, de uma expressão lógica (verdadeiro ou falso). if (expr_log) comando O comando no corpo do if somente será executado se a condição expressa por expr_log for verdadeira. 12/53

Comando if (cont.) V condição comando F 13/53

Comando if (cont.) Exemplo Ler a idade de uma pessoa e exibir a mensagem menor se a idade for menor que 18 anos. 14/53

Comando if (cont.) #include < stdio.h > int main(void) { int idade; printf("digite a idade: "); scanf("%d", &idade); if (idade < 18) printf("menor\n"); printf("fim\n"); return 0; } 15/53

Comando if (cont.) Exemplo: Escreva um programa que lê o valor total das vendas de um vendedor e calcula e exibe o prêmio que o vendedor deverá receber, correspondente a 7% do valor das vendas. Se o valor do prêmio for maior do que 200, o programa imprime ainda uma mensagem de congratulação. 16/53

Comando if (cont.) #include< stdio.h > int main(void) { double vendas; printf(" Valor total das vendas: "); scanf("%lf", &vendas); double premio = vendas * 0.07; printf(" Prêmio: %.2 f\ n", premio); if (premio >= 200) printf(" Congratulações pelo prêmio!\ n"); return 0; } 17/53

Comando if else O comando if else permite escolher entre duas alternativas com base no valor de uma condição. Uma condição é uma expressão booleana, e o seu valor pode ser verdadeiro ou falso. Portanto a escolha pode ser feita no máximo entre duas alternativas. if (exprlog) comando 1 ; else comando 2 ; Primeiro avalia-se a condição representada por exprlog. Se o resultado for verdadeiro, executa-se o primeiro comando comando1 e o segundo comando comando2 é ignorado. Caso contrário o comando comando2 é executado e o comando comando1 é ignorado. 18/53

Comando if else (cont.) V condição F comando 1 comando 2 19/53

Comando if else (cont.) 20/53

Comando if else (cont.) Exemplo: Ler dois números e exibir o maior deles. 21/53

Comando if else (cont.) #include < stdio.h > int main(void) { double num1, num2; printf(" Digite dois números: "); scanf("%lf%lf", &num1, &num2); if (num1 > num2) printf(" O maior número é % f\ n", num1); else printf(" O maior número é % f\ n", num2); return 0; } 22/53

Comando if else (cont.) Exemplo: Dado um número inteiro, informar se ele é par ou ímpar. 23/53

Comando if else (cont.) #include < stdio.h > int main(void) { int num; printf(" Digite um numero inteiro: "); scanf("%d", &num); if (num % 2 == 0) //divisível por dois? printf("%d é par\n", num); else printf("%d é ímpar\n", num); return 0; } 24/53

Comando if else (cont.) Exemplo: Faça um algoritmo que leia os valores A, B, C e imprima na tela se a soma de A + B é menor que C ou maior igual a C. 25/53

Comando if else (cont.) #include< stdio.h > int main(void) { int A, B, C; printf(" Inserir 3 números :\ n"); scanf("%d %d %d", &A, &B, &C); if (A+B >= C) printf("%d + %d >= %d\n", A, B, C); else printf("%d + %d < %d\n", A, B, C); return 0; } 26/53

Comando de bloco Cada alternativa que escrevemos nos comandos condicionais deve ser formados por um único comando. Então o que fazer quando precisamos executar mais de um comando dentro de uma única alternativa? Se simplesmente escrevemos um comando depois do outro: if (expr_log) comando1; comando2; não vai funcionar, pois apenas o comando1 faz parte do if. comando2 será executado sempre, logo depois que o comando if terminar. 27/53

Comando de bloco (cont.) Solução: usar um comando de bloco. O comando de bloco é formado por uma sequência de comandos colocados entre chaves. if (expr_log) { comando1; //executado se expr_log for verdadeira comando2; comando3; } else { comando4; //executado se expr_log for falsa comando5; } 28/53

Comando de bloco (cont.) Exemplo: Dado um número inteiro, exibir uma mensagem informando se o número é par ou ímpar, e exibir seu quadrado quando ele for par, ou seu cubo quando ele for ímpar. 29/53

Comando de bloco (cont.) #include < stdio.h > int main(void) { int num; printf(" Digite um número inteiro: "); scanf("%d", &num); if (num % 2 == 0) //divisível por dois? { printf("%d é par.\n", num); printf(" o quadrado de % d é % d\ n", num, num*num); } else { printf("%d é ímpar.\n", num); printf(" o cubo de % d é % d\ n", num, num*num*num); } return 0; } 30/53

Comando de bloco (cont.) Exemplo: Faça um algoritmo que leia o nome, o sexo e o estado civil de uma pessoa. Caso o sexo seja femenino e estado civil seja casado, solicitar o tempo de casamento (em anos). As entradas para sexo serão: F para femenino ou M para masculino, e para estado civil: C para casdo ou S para solteiro. 31/53

Comando de bloco (cont.) #include< stdio.h > int main(void) { char nome[50]; char sexo, estadocivil; int anos; printf("nome: "); scanf(" %49[ˆ\n]%*[ˆ\n]", nome); printf(" Sexo ( M: masculino, F: femenino ): "); scanf(" %c", &sexo); printf(" Estado civil ( C: casado, S: solteiro ): "); scanf(" %c", &estadocivil); if (sexo == F && estadocivil == C ) { printf(" Tempo de casamento : "); scanf("%d", &anos); } return 0; } 32/53

Aninhamento de Ifs if (expr_log) if (expr_log2) comando1; //executado se expr_log e //expr_log2 forem verdadeiras else comando2; //expr_log verdadeira e expr_log2 falsa else comando3; //executado se expr_log é falsa 33/53

Aninhamento de Ifs (cont.) Exemplo: Mostrar se um número par é divisível por 3. 34/53

Aninhamento de Ifs (cont.) #include < stdio.h > int main(void) { int num; printf(" Digite um número inteiro: "); scanf("%d", &num); if (num % 2 == 0) // o número é par? if (num % 3 == 0) // o número é divisível por 3? printf(" É par e divisível por 3\ n"); else printf(" É par mas não é divisível por 3\ n"); else printf("não é par\n"); return 0; } 35/53

Aninhamento de Ifs (cont.) Exemplo: Dado um número par determinar se ele é ou não divisível por 3. Se o número for ímpar mostrar se ele é divisível ou não por 5. 36/53

Aninhamento de Ifs (cont.) #include < stdio.h > int main(void) { int num; printf("digite o numero: "); scanf("%d", &num); if (num % 2 == 0) // divisível por dois => PAR if (num % 3 == 0) printf(" Par divisível por 3\ n"); else printf(" Par não divisível por 3\ n"); else // Se não for par, é ÍMPAR if (num % 5 == 0) printf(" Ímpar divisível por 5\ n"); else printf(" Ímpar não divisível por 5\ n"); return 0; } 37/53

Aninhamento de Ifs (cont.) Exemplo: Ler as quatro notas escolares de um aluno e imprimir uma mensagem dizendo que o aluno foi aprovado se o valor da média escolar for maior ou igual a 7,0. Se a média for entre 5,0 (inclusive) e 7,0, informar que o aluno está em recuperação. Se a média for inferior a 5.0 o aluno foi reprovado. 38/53

Aninhamento de Ifs (cont.) #include< stdio.h > int main(void) { double n1, n2, n3, n4; printf(" Digite as 4 notas do aluno: "); scanf("%lf%lf%lf%lf", &n1, &n2, &n3, &n4); double media = (n1 + n2 + n3 + n4) / 4.0; printf(" A média do aluno é %.2 f\ n", media); if (media >= 7) printf(" Aluno aprovado \ n"); else if (media >= 5) printf(" Aluno em recuperação \ n"); else printf(" Aluno reprovado \ n"); return 0; } 39/53

Estrutur de seleção múltipla: comando switch Permite a escolha de uma entre várias alternativas. A seleção é feita através de uma expressão de controle. Cada alternativa é uma lista de comandos rotulada com uma constante (literal). A expressão de seleção e as constantes devem ser de um mesmo tipo integral (char, int, short int, long int, etc.) float, double e string não são permitidos. A lista de comandos de uma alternativa só termina com o comando break ou no final do switch. 40/53

Estrutur de seleção múltipla: comando switch (cont.) Execução do switch 1. Avalia-se a expressão de controle. 2. Seleciona-se a primeira alternativa cujo rótulo é igual ao valor da expressão de controle, e executa-se a lista de comandos correspondente. 41/53

Estrutur de seleção múltipla: comando switch (cont.) switch (expressão) { case cte 1 : comandos 1 ; break; case cte 2 : comandos 2 ; break;... case cte n : comandos n ; break; default: comando 0 ; } temp expressão temp = constante 1 V comandos 1 F temp = constante 2 V comandos 2 F temp = constante n V comandos n F comandos 0 42/53

Estrutur de seleção múltipla: comando switch (cont.) O switch executa todos os comandos a partir da alternativa escolhida até o final do switch ou até encontrar o comando break. É necessário usar o comando break no final de cada alternativa (exceto a última) para evitar que os comandos das alternativas seguintes sejam executados. As alternativas são mutuamente exclusivas somente quando cada caso termina com o comando break. Quando o valor da expressão não coincidir com aqueles especificados nas alternativas e houver a alternativa rotulada com default então esta alternativa será escolhida. 43/53

Estrutur de seleção múltipla: comando switch (cont.) O switch só permite comparar expressões com constantes. Se precisarmos comparar com variáveis ou verificar faixas de valores, devemos usar o comando if. 44/53

Estrutur de seleção múltipla: comando switch (cont.) Exemplo: Os dois trechos de programa abaixo são equivalentes: switch (x) { case 1: printf("x é 1"); break; case 2: printf("x é 2"); break; default: printf("x é outro"); } if (x == 1) printf("x é 1"); else { if (x == 2) printf("x é 2"); else printf("x é outro"); } 45/53

Estrutur de seleção múltipla: comando switch (cont.) Exemplo Escreva um programa que leia o código de um determinado produto e mostre a sua classificação de acordo com a tabela abaixo. código classificação 1 Alimento não-perecível 2 Alimento perecível 3 Vestuário 4 Limpeza 46/53

Estrutur de seleção múltipla: comando switch (cont.) #include <stdio.h> int main(void) { int cod; printf(" Código do produto: "); scanf("%d", &cod); switch (cod) { case 1: printf(" Alimento nao - perecível \n"); break; case 2: printf(" Alimento perecível \n"); break; case 3: printf(" Vestuário \n"); break; case 4: printf(" Limpeza\n"); break; default:printf(" Produto não existente \n"); } return 0; } 47/53

Estrutur de seleção múltipla: comando switch (cont.) Exemplo Dado um caracter, escreva na tela se ele é ou não uma vogal (pode considerar apenas letras minúsculas). 48/53

Estrutur de seleção múltipla: comando switch (cont.) #include < stdio.h > int main(void) { char letra; printf(" Inserir um caracter : "); scanf("%c", &letra); switch (letra) { case a : case e : case i : case o : case u : printf("vogal!!\n"); break; default : printf(" Nao é uma vogal\ n"); } return 0; } 49/53

Exercícios em aula 1. Faça um algoritmo que leia uma variável e some 5 caso seja par ou some 8 caso seja ímpar. Imprimir o resultado desta operação. 2. Encontrar o dobro de um número caso ele seja positivo e o seu triplo caso seja negativo, imprimindo o resultado. 3. O IMC (Indice de Massa Corporal) é um critério da Organização Mundial de Saúde para dar uma indicação sobre a condição de peso de uma pessoa adulta. A fórmula é IMC = peso/(altura) 2. Elabore um algoritmo que leia o peso e a altura de um adulto e mostre sua condição de acordo com a tabela abaixo. IMC em adultos abaixo de 18.5 entre 18.5 e 25 entre 25 e 30 acima de 30 condição abaixo do peso peso normal acima do peso obeso 50/53

Exercícios propostos 1. Dada uma letra, escreva na tela se essa letra é ou não uma vogal (pode considerar apenas letras minúsculas). 2. Escreva um programa que recebe um operador aritmético e dois operandos e calcule a operação indicada. As operações possíveis são soma(+), subtração(-), multiplicação(*) e divisão(/). 51/53

Exercícios propostos (cont.) 3. Elabore um algoritmo que calcule o que deve ser pago por um produto, considerando o preço normal de etiqueta e a escolha da condição de pagamento. Utilize os códigos da tabela a seguir para ler qual a condição de pagamento escolhida e efetuar o cálculo adequado. Código Condição de pagamento 1 À vista em dinheiro ou cheque, recebe 10% de desconto 2 À vista no cartão de crédito, recebe 15% de desconto 3 Em duas vezes, preço normal de etiqueta sem juros 4 Em duas vezes, preço normal de etiqueta mais juros de 10% 52/53

FIM 53/53