Vous êtes sur la page 1sur 13

CENTRO UNIVERSITRIO DO LESTE DE MINAS GERAIS ENGENHARIA DE PRODUO, ENGENHARIA ELTRICA, ENGENHARIA MECNICA, ENGENHARIA DE M ATERIAIS, ENGENHARIA SANITRIA

E AMBIENTAL, ENGENHARIA CIVIL E TECNLOGOS


DISCIPLINA: Fundamentos da Computao I Ncleo dos Professores de Informtica Material de Apoio Parte 3

Material de Apoio Parte 3 - Estrutura Condicional e Operadores Relacionais e Lgicos


1) Objetivos:
Trabalhar com Estrutura Condicional - Permitir a escolha de um ou mais comandos a serem executados. Trabalhar com Operadores Relacionais - Realizar comparaes entre dois valores.

2) Livro texto:
ASCENIO, A. F.G., CAMPOS, E.A.V. Fundamentos da Programao de Computadores (Algoritmos, Pascal e C/C++). Editora: Pearson, 2002.

3) Fundamentao Terica :

Operadores Relacionais
Usamos os operadores relacionais para realizar comparaes entre dois valores de mesmo tipo primitivo. Tais valores so representados por constantes, variveis ou expresses aritmticas. Exemplos:

Operadores Relacionais
Operador > >= < <= <> = Descrio Maior que Maior ou igual Menor que Menor ou igual Diferente Igual Pascal > >= < <= <> =

A seguir, so apresentados alguns exemplos de comparaes vlidas: Comparao Vlida varivel e constante varivel e varivel varivel e expresso expresso e expresso Exemplos: a) 2 * 4 = 24/3 b) 15 mod 4 = 19 mod 6 3 1 . V (Verdadeiro) Exemplo X=3 A<>B Y=W+J (X + 1) < (Y + 4)

F (Falso)

Operadores Lgicos
Os operadores lgicos permitem que mais de uma condio seja testada em uma nica expresso, ou seja, pode-se fazer mais de uma comparao (teste) ao mesmo tempo. A Tabela abaixo, apresenta os operadores lgicos que utilizaremos nesta disciplina.

Operao Negao Conjuno Disjuno (no-exclusiva)

Operador NO E OU

E, OU e NO so os principais operadores lgicos, base para a construo de sistemas digitais e da Lgica proposicional. Os operadores E, OU so operadores binrios, ou seja, necessitam de dois elementos, enquanto o NO unrio. Na computao, esses elementos so normalmente variveis binrios, cujos possveis valores atribudos so 0 ou 1. Porm, a lgica empregada para essas variveis serve tambm para sentenas (frases) da linguagem humana, onde se esta for verdade corresponde ao valor 1, e se for falsa corresponde ao valor 0. Essas frases so chamadas proposies. Uma proposio uma afirmao que pode ser dita como verdadeira ou falsa. Ex. Est chovendo

E (AND) - O operador E analisa dois valores lgicos, retornando verdadeiro apenas quando ambos so verdadeiros. A tabela-verdade para o E a seguinte: A F V F V B F F V V AEB F F F V

Analogia imagine as seguintes proposies: A: tem quatro patas; B: mia; C: um gato.

Podemos ento dizer que a proposio C verdadeira se as proposies A e B forem verdadeiras. Se tem quatro patas, mas no mia, ou mia mas no tem quatro patas, no podemos dizer que um gato. Portanto, podemos dizer que C = A e B. OU (OR): o operador ou analisa dois valores lgicos, retornado falso apenas quando ambos so falsos. Ex. A tabela-verdade para o ou a seguinte: A B A ou B F F V F F V V V F V V V

Analogia imagine que Samuel flamenguista e anti-corinthiano. Agora imagine as seguintes proposies: A: Flamengo classificado para a Libertadores da Amrica; B: Corinthians rebaixado; C: Samuel feliz.

Samuel ficaria feliz se A ou B fossem proposies verdadeiras. Ficaria ainda muito feliz se ambas fossem verdadeiras. Logo, C = A Or B. Assim no necessrio que A e B sejam ambas verdadeiras para que C o seja.

NO (NOT): o operador no um operador unrio (ao contrrio dos anteriores, que so binrios), o que significa que ele age sobre um nico valor. O no retorna o contrrio do valor analisado. A tabela-verdade para o no a seguinte: A V F no A F V

Exemplos: Expresso Se chover e relampejar, eu no saio. Se chover ou relampejar, eu no saio. Quando eu no saio? Somente quando chover e relampejar ao mesmo tempo (apenas 1 possibilidade). Somente quando chover, somente quando relampejar ou quando chover e relampejar ao mesmo tempo (3 possibilidades).

A) Se (salario > 180) e (salrio < 800) Ento Escreva: ('Salrio vlido para financiamento'); Seno Escreva: ('Salrio fora da faixa permitida para financiamento'); Fim-se; B) Se (idade < 18) ou (idade > 95) Ento Escreva: ('Voc no pode fazer carteira de motorista'); Seno Escreva: ('Voc pode possuir carteira de motorista'); FimSe

C) Se (idade > = 18) e (idade < = 95) e (aprovado_exame = 'sim') Ento Escreva: ('Sua carteira de motorista estar pronta em uma semana'); Seno Escreva: ('Voc no possui idade permitida ou no passou nos testes'); FimSe Exerccios: 1) Sabendo que A=3, B=7 e C=4, informe se as expresses abaixo so verdadeiras ou falsas. a) (A+C) > B ( ) b) B >= (A + 2) ( ) c) C = (B A) ( ) d) (B + A) <= C ( ) e) (C+A) > B ( ) 2) Sabendo que A=5, B=4 e C=3 e D=6, informe se as expresses abaixo so verdadeiras ou falsas. a) (A > C) e (C <= D) ( ) b) (A+B) > 10 ou ((A + B ) = (C + D)) ( ) c) (A>=C) e (D >= C) ( )

3) Com base na tabela-verdade, determine o resultado lgico das expresses mencionadas (Verdadeira ou Falsa). Considere para as respostas os seguintes valores: X=1, A=3, B=5, C=8 e D=7. a) no (X > 3) b) (X < 1) e (no(B > D)) c) no(D < 0) e (C > 5) d) no((X > 3) ou(C < 7)) e) (A > B) ou (C > B) f) (X >= 2) g) (X < 1) e (B >= D) h) ( D < 0) ou (C > 5) i) no(D > 3) ou no(B < 7) j) (A > B) ou no(C > B) 4) Para A = V, B = V e C = F, qual o resultado da avaliao das seguintes expresses: a) (A e B) ou (A ou B) b) (A ou B) e (A e C) c) A ou C e B xor A e no B 5) Construa a tabela verdade para os casos abaixo: a) A e B A B AeB b) A ou B A B A ou B c) no (A e B) A B No (A e B) d) A e (B ou C) A B C A e (B ou C) e) no((A e B) ou C) V V V V V F V F V V F F F V V F V F F F V F F F V V V F F V F F V V V F F V F F V V V F F V F F

A B C no((A e B) ou C)

V V V

V V F

V F V

V F F

F V V

F V F

F F V

F F F

f) (A ou B) e C A B C (A ou B) e C V V V V V F V F V V F F F V V F V F F F V F F F

g) A e B e C h) (A e B) ou C i) A ou (B e C) 6) Indique o resultado lgico das seguintes expresses: a) (2 > 3) e (6 < 8) ou (3> 7) b) ((( 10 / 2 ) MOD 2) > 5 ) ou no( 3 < ( 2 MOD 2)) c) no (2 < 3)

Estrutura Condicional Simples


Um conjunto de instrues (pode ser apenas uma instruo) executado se a condio que estiver sendo testada for afirmativa. se <condio> ento comando1; fim-se; ou caso de um grupo de comandos se <condio> ento inicio comando 1; comando 2; . comando n; fim fim-se; Exemplo1: O algoritmo abaixo calcula o valor do abono famlia (10% do salrio por filho) para o funcionrio que tem filhos. Algoritmo Abono; var salario, abono: real; filhos: inteiro; Incio Escreva (Informe o salrio); Leia (salario); Escreva (Informe quantidade de filhos); Leia (filhos); se ( filhos > 0 ) ento abono salario * 0,10 * filhos; salario salario + abono; fim-se; Escreva (O seu salrio : , salario); fim-algoritmo.

Program abono; var salario, abono: real; filhos: integer; Begin write('Informe o salrio: '); read(salario); writeln('Informe a quantidade de filhos: '); read(filhos);

if filhos > 0 then begin abono := salario * 0.10 * filhos; salario := salario + abono; end; writeln('O salrio : ', salario:0:2); End.

Representao com Fluxograma da Estrutura Condicional Simples


Alm das figuras utilizadas no algoritmo sequencial simples, utilizamos o losango para representar a estrutura de deciso. Abaixo est a representao do exemplo1

Inicio

Salario, filho Condio

sim

Filho > 0

no

abono salario * 0,10 * filhos; salario salario + abono;

salario

Fim

Estrutura Condicional Composta


Permite a escolha entre dois grupos de comandos a serem executados. Caso a condio seja verdadeira determinadas aes sero executadas, caso negativo, outro conjunto de aes ser executado. se <condio> ento comando1; seno comando2; fim-se; se ou caso de um grupo de comandos <condio> ento inicio comando 1;

comando 2; . Comando n; seno fim inicio comando A; comando B; fim fim-se; Exemplo2: O algoritmo abaixo verifica se o nmero informado pelo usurio par ou mpar. Algoritmo ImparPar; var numero: inteiro; Incio Escreva(Informe o nmero); Leia(numero); Se( numero MOD 2 = 0) ento Escreva(O nmero par); Seno Escreva(O nmero mpar); Fim-se; Fim-algoritmo. Program ParImpar ; var numero: integer; Begin write('Informe um nmero: '); read(numero); if (numero MOD 2 = 0) then writeln('O nmero informado par') else writeln('O nmero informado mpar'); End.

Importante: No Pascal, se dentro da instruo IF tiver mais de um comando a serem executados, obrigatrio o uso do begin/end (Exemplo 1), caso contrrio no necessrio o begin/end e nem o (pontoe-vrgula) na linha anterior ao else. Exemplo Program ParImpar ; var numero: integer; Begin write('Informe um nmero: '); read(numero); if (numero MOD 2 = 0) then writeln('O nmero par') else writeln('O nmero mpar'); End. Program ParImpar ; var numero: integer; Begin write('Informe um nmero: '); read(numero); if (numero MOD 2 = 0) then begin writeln('O nmero par'); end else begin writeln('O nmero mpar'); end End.

Exemplo 3 Elabore um algoritmo que aps ler 2 nmeros informe qual o menor nmero fim {Em Portugus Estruturado} seno inicio Algoritmo ComparaNumeros; escreva (Menor nmero = , y ); var x, z : inteiro; fim inicio fim_Algoritmo. escreva (Digite o nmero inteiro (x): ); leia ( x ); escreva (Digite o nmero inteiro (y): ); leia ( y ); se ( x<y ) ento inicio escreva (Menor nmero = , x );

{Em Pascal} program ComparaNumeros;; var x, y : integer; begin writeln('Digite o nmero inteiro (x): ); readln( x ); writeln('Digite o nmero inteiro (y): ); readln( y );

if (x<y) then begin writeln(Menor nmero = , x); end else begin writeln(Menor nmero = , y); end; end.

Representao com Fluxograma da Estrutura Condicional Composta


Representao do exemplo2

Inicio

numero Condio

sim O nmero mpar

no numero MOD 2 = 0

no O nmero par

Fim

Exerccio 1: 1) Faa um algoritmo que leia os valores A, B, C e diga se a soma de A + B menor que C. Program MenorSoma ; var A, B, C: integer; Begin write('Informe valor para A, B e C '); read(A, B, C); if (A + B) < C then writeln('A soma de A e B menor que C'); End.

2) Faa um algoritmo que leia dois valores inteiros A e B. Se os valores forem iguais o programa dever somlos, armazenar na variavel C e mostrar o resultado. Caso contrrio multiplique A por B, armazene o resultado na varivel C e mostre. Program Compara ; var A, B, C: integer;

Begin write('Informe valores para A e B: '); read(A, B); if (A = B)then C:= (A + B) else C:=(A * B); writeln('O valor de C ', C); End.

3) Faa um algoritmo que leia o nome e trs notas de uma disciplina de um aluno e ao final escreva o nome do aluno, sua mdia e se ele foi aprovado ou reprovado. A mdia para aprovao 7. Program media ; var N1, N2, N3, media: real; nome: string; Begin write('Informe seu nome: '); read(nome); writeln('Informe as 3 notas'); read(N1, N2, N3); media := (N1 + N2 + N3)/3; if media < 7 then writeln('O(a) aluno(a) ', nome,' teve mdia ', media:0:2, ' e foi reprovado(a)') else writeln('O(a) aluno(a) ', nome,' teve mdia ', media:0:2, ' e foi aprovado (a)'); End.

4) Escreva um algoritmo para ler um valor e escrever se ele est entre os nmeros 1 e 10 ou no est. (Em Pascal) Program entre1e10 ; var n: integer; Begin write('Informe um nmero: '); read(n); if (n > 1) and (n < 10) then writeln(n, ' est entre 1 e 10') else writeln(n, ' no est entre 1 e 10'); End.

Estrutura Condicional se aninhado ou encadeado


Um comando SE pode aparecer dentro de outros comandos SE. Ele usado para tomadas de decises para mais de 2 opes. se condio ento sequncia A de comandos seno se condio ento sequncia B de comandos seno sequncia C de comandos fim se fim se

Exemplos: se estiver fazendo sol ento se eu tiver dinheiro ento vou ao clube; fim-se; fim-se; se estiver fazendo sol ento se eu tiver dinheiro ento vou ao clube; seno fico em casa; fim-se; fim-se; se estiver fazendo sol ento se eu tiver dinheiro ento vou ao clube; seno fico em casa; fim-se; seno se eu tiver dinheiro vou ao cinema; seno vou assistir filme em casa; fim-se; fim-se;

se estiver fazendo sol ento se eu tiver dinheiro ento vou ao clube; seno fico em casa; fim-se; seno vou assistir filme; fim-se;

Exemplos: 1) Dado dois valores A e B quaisquer, faa um algoritmo que imprima se A > B, ou A < B , ou A = B Program Compara ; var A, B: integer; Begin write('Informe um valor para A: '); read(A); write('Informe um valor para B: '); read(B); if (A > B) then write('A maior que B') else if (A < B) then write('A menor que B') else write('A igual a B'); End.

2) Desenvolva uma calculadora da seguinte forma: O usurio informa 2 nmeros e um operador matemtico (+, -, *, /). O programa dever calcular a operao desejada pelo usurio. Program Calculadora ; var A, B, resultado: real; sinal: char; Begin write('Informe um nmero: '); read(A); write('Informe outro nmero: '); read(B); write('Informe um sinal (+, -, *, /): '); read(sinal); if (sinal='+') then resultado := A + B else if (sinal = '-') then resultado := A - B else if(sinal='*') then resultado := A *B else resultado := A/B; write('O resultado : ', resultado:0:2); End.

3) Program equacao_segundograu ; var A,B,C, { nmeros informados pelo usurio } DELTA , { termo da equao de 2 grau } R1,R2: real ; {razes da equao de 2 grau } Begin writeln ('**** Programa Calcula Raiz equao segundo grau: ax2 + bx + c **** '); writeln; write (' Digite o coeficiente (A): ' ); read ( A); write (' Digite o coeficiente (B): ' ); read ( B ); write (' Digite o coeficiente (C): ' ); read ( C ); DELTA := B * B - 4 * A * C ; writeln; if ( DELTA < 0 ) then write ( ' No existem razes para a equao' ) else if ( DELTA = 0 ) then begin { bloco 01} R1 := - B / ( 2 * A ); R2 := R1 ; write ( ' As razes so iguais: ' , R1); end { bloco 01 } else begin { bloco 02 } R1 := ( - B + SQR( DELTA ))/ ( 2 * A ); R2 := ( - B - SQR( DELTA )) / ( 2 * A ); write ( ' As razes so diferentes: ' , R1 , ' e ', R2 ); end ; { bloco 02 } End.

Considere a equao de segundo grau da forma ax2 + bx + c = 0. Teste o programa com as seguintes equaes e anote o resultado. a. x + 6 x + 9 = 0 b. 3 x - x + 3 = 0 c. 2 x - 2 x - 12 = 0

d. 3 x - 10 x + 3 = 0

Representao da Estrutura Condicional Aninhada utilizando Fluxograma


Representao do exemplo1 de Estrutura Condicional Aninhada

Inicio

A, B

sim

A>B

no

A<B

no

A igual a B

sim A maior que B A menor que B

Fim

Exerccios
1) Uma empresa vai dar uma gratificao aos empregados que tenham mais de 1 ano de servio: 10% para os que tenham menos de 10 anos e 25% para os demais. Calcule a gratificao de um dado funcionrio, dado o seu salrio e o tempo de servio.

2) Escreva um algoritmo que dada a idade da pessoa, retorne se a pessoa um beb, uma criana, um adolescente ou um adulto. A saber: 0 a 3 anos beb 4 a 10 anos criana 11 a 18 adolescente Acima de 18 adulto.

3) Dado trs valores X, Y, Z, verificar se eles podem ser os comprimentos dos lados de um tringulo, e se forem, verificar se um tringulo equiltero, issceles ou escaleno. Se eles no formarem um tringulo, escrever uma mensagem. Antes da elaborao do algoritmo, torna-se necessria a reviso de algumas propriedades e definies. Propriedade - O comprimento de cada lado de um tringulo menor do que a soma dos comprimentos dos outros dois lados. Definio 1 - Tringulo eqiltero: os comprimentos dos trs lados iguais, Definio 2 - Tringulo issceles: os comprimentos de dois lados iguais. Definio 3 - Tringulo escaleno: os comprimentos dos trs lados diferentes. 4) Considerando os valores de A = -3, B = 16, C = +4 e D= 1,5. Responda as questes abaixo: a) 2 * * B 2 / / C - ard (D) b) int (B / D) - B div 3 5) Construa um programa que leia trs (3) nmeros e informe qual o maior. 6) AUMENTE o programa anterior para que ele TAMBM verifique e escreva se entre os nmeros digitados existem nmeros iguais entre si ou se todos so diferentes. DICA: se (x = y) ou (y = z) ou (x = z) ento e ...... SALVE e rode duas vezes testando para nmeros diferentes e nmeros iguais. OBS.: {No algoritmo} {Na linguagem Pascal} se (..........) ou (..........) if .(........) or (.) ento .................. then ........................ seno ................. else ........................ ; 7) AUMENTE o programa para que ele TAMBM verifique e escreva se os nmeros digitados foram digitados em ordem crescente ou no. SALVE e rode 3 vezes testando para a) nmeros em ordem crescente; b) nmeros em ordem decrescente; c) Nmeros desordenados. 8) Faa um programa que dever solicitar ao usurio seu nome e o nmero de horas que ele trabalhou no ms e calcular e exibir o seu nome e salrio sabendo que funcionrios que trabalharam at 180 horas ganharo R$ 6,00 por hora e os demais recebero R$ 7,00 por hora. SALVAR na sua pasta US------ e rodar duas vezes testando para funcionrios que trabalharam menos e mais de 180 horas. DICA para a declarao de variveis: var Nome: string[35]; Horas: integer; 9) AUMENTE o programa para que ele TAMBEM leia o Sexo do funcionrio e d uma gratificao de R$120,00 para todas as mulheres. SALVAR e rodar duas vezes para um homem e uma mulher com o mesmo nmero de horas trabalhadas. DICA: se sexo = F ento ............. 10) Construa um algoritmo que leia o preo de 3 produtos comprados, em seguida leia a forma de pagamento: vista ou com um cheque para 30 dias. Pea ao usurio para digitar um (1) quando for comprar vista e zero (0) quando for dar um cheque para 30 dias. Calcular e escrever o preo total da compra. Seu algoritmo dever calcular e escrever tambm o preo final desta compra sabendo-se que para compras vista tem-se um desconto de 10 % e para compras com 30 dias no cheque tem-se um aumento de 5%. 11) Crie um programa que solicite do usurio um nmero e mostre ao usurio se o nmero negativo, positivo ou igual a 0. 12) Elabore um algoritmo que leia o sexo e a altura de uma pessoa e que calcule o seu peso ideal conforme a frmula abaixo: Homens: Peso Ideal => (72,7 * Altura) - 58 Mulheres: Peso Ideal => (62,1 * Altura) - 44,7

Vous aimerez peut-être aussi