Estrutura
Condicional
Esta estrutura é conhecida também como estrutura de
decisão ou de seleção, e é caracterizada por execução de determinados códigos
de programação dependendo da veracidade de uma condição. Neste tópico serão
apresentadas as estruturas de condição simples, composta, aninhada (uma dentro
da outra) e a estrutura Case.
Estrutura Condicional – Simples (Voltar ao Índice) [Não estamos a utilizar ELSE] |
||
|
Estrutura condicional simples
com apenas uma instrução: |
Estrutura condicional simples
com mais de uma instrução: |
|
Sintaxe: SE condição ENTÃO comando Nota: O comando
só será executado se a condição for verdadeira. Uma condição é uma comparação que possui dois valores
possíveis, verdadeiro ou falso. |
Sintaxe: SE condição ENTÃO INÍCIO comando1 comando2 comando3 FIM Nota: Aqui o comando
também só será executado se a condição
for verdadeira, a diferença dos
dois exemplos acima é que, quando o número de instruções a serem
executadas forem maior que um, então é necessário colocar as instruções
dentro de blocos (Begin = INICIO e End = FIM).
FIM
= END |
|
Exemplo com apenas uma
instrução: |
Exemplo com mais de uma
instrução: |
|
A) Compila o seguinte programa e descreve, por palavras tuas o seu
funcionamento Uses Crt; var X, Y : Integer; begin Writeln ('Digite dois
Números:'); { Mostra no ecrã a mensagem} Readln (X, Y); { Lê os dois números } If (X > Y) Then {Condição - SE X for maior que Y} Writeln ('X é Maior que Y,
e seu valor é = ', X); end. |
D) Compila o seguinte programa e descreve, por palavras tuas o seu
funcionamento uses Crt; var X, Y : Integer; begin Writeln
('Entre com dois Números:'); { Mostra no ecrã a mensagem} Readln (X, Y);
{ Lê os dois números } If (X = Y) Then {Condição - SE X for igual a Y} Begin {INICIO - Repare abaixo que existe duas
instruções, dois comandos Writeln, por isso estão
entre BEGIN e END} Writeln ('X
é igual que Y'); Writeln ('O
Valor de X é =', X); End; {FIM} end. |
Para programar é
preciso saber inglês |
B) Compila o seguinte programa e
traduz o enunciado In the following program the user will input his/her age (integer type). The program will check if the user is able to apply for a driving license. If the
user is of legal age (i.e. 18), the program will encourage the user to apply. Otherwise, the program will
calculate the number of years remaining till the age of 18. Program driving; Var age : char; begin writeln(‘when to apply for a driving license’); write(‘Type your age (try to be honest please!) : ‘); readln(age); if age < 18 then
write(‘CONGRATULATIONS...you can apply’) end. |
E) Compila o seguinte programa e
descreve, por palavras tuas o seu funcionamento Exemplo utilizando operadores
Lógicos: uses Crt; var X, Y :
Integer; begin Writeln ('Entre com dois Números:'); { Mostra no ecrã a mensagem} Readln (X, Y); { Lê os dois números } If ((X > Y) And (Y <> 0)) Then {Condição - SE X for maior que Y E Y
diferente de 0 - Repare no And} Begin {INICIO - Repare abaixo que existe três
instruções, três comandos Writeln, por isso estão
entre BEGIN = INICIO e END = FIM} Writeln ('X é Maior que Y'); Writeln ('Y é diferente de 0'); Writeln ('O Valor de X é =', X); End; {FIM} end. |
|
c) Compila o seguinte programa e escreve um enunciado para o programa write('Introduza um numero
real: '); readln(A); if (A>=0) then writeln('Numero positivo ou nulo'); end; |
Pré-requisitos: Recordar as tabelas de verdade Notas: Repare no operador Lógico AND,
só serão executados os comandos Writeln, se as duas
condições forem verdadeiras. Se a variável X for maior que a variável Y e se
a variável Y for diferente de 0 (zero). F) Compila o seguinte programa e descreve, por palavras tuas o seu
funcionamento Exemplo utilizando operadores Lógicos: uses Crt; var X, Y : Integer; begin Writeln
('Entre com dois Números:'{ Mostra no ecrã a mensagem} Readln (X, Y);
{ Lê os dois números } If ((X > Y) Or (Y <> 0)) Then {Condição - SE X for maior que Y OU Y diferente de 0 (zero)- Repare no Or} Begin {INICIO - Repare abaixo que existe três
instruções, três comandos Writeln, por isso estão
entre BEGIN = INICIO e END = FIM} Writeln ('X
é Maior que Y'); Writeln ('Y
é diferente de 0'); Writeln ('O
Valor de X é =', X); End; {FIM} end. Notas: Nesse caso acima utilizando o
Operador Lógico OR (OU), serão executados os comandos Writeln,
se uma das duas condições forem verdadeira. Se a
variável X for maior que a variável Y OU Se a variável Y for diferente de 0
(zero). |
ENVIAR AO PROFESSOR (PROFCARLOS2006@gmail.com) 6- programas (A, B, C, D, E, F) 4- explicações (A, D, E, F) 1- enunciado (C) 1 –tradução (B) |
Estrutura Condicional
– Composta (Voltar ao Índice) |
||
|
Estrutura condicional composta
com apenas um comando: |
Estrutura condicional composta
com mais de um comando: |
|
Sintaxe: SE condição ENTÃO comando1 SENÃO comando2 Notas: O comando1 só será
executado se a condição for verdadeira, caso contrário, se a condição
for falsa, será executado o comando2. |
Sintaxe: SE condição ENTÃO INÍCIO comando1 comando2 comando3 FIM SENÃO INÍCIO comando4 comando5 FIM SE = IF ENTÃO = THEN SENÃO = ELSE INÍCIO = BEGIN FIM = END |
|
Exemplo com apenas uma
instrução |
Exemplo com mais de uma
instrução: |
|
A) Compila o seguinte programa e descreve, por palavras tuas o seu
funcionamento Uses Crt; var X, Y : Integer; begin Writeln
('Digita dois Números:'); { Mostra no ecrã a mensagem} Readln (X, Y);
{ Lê os dois números } If (X > Y) {Condição - SE X for maior que Y} Then Writeln ('X é Maior que Y, e seu valor é = ', X) {Entra no comando apenas se X for maior
que Y - Repare que antes de ELSE não vai ";"} Else Writeln ('Y é maior ou igual a X, seu valor é = ',Y); {Entra no comando se Y for maior ou igual
a X} end. |
D) Compila o seguinte programa e descreve, por palavras tuas o seu
funcionamento Uses Crt; var X, Y : Integer; begin Writeln
('Digita dois Números:'); { Mostra no ecrã a mensagem} Readln (X, Y); { Lê os dois
números } If (X > Y) {Condição - SE X for maior que Y} Then Begin Writeln ('X é Maior que Y'); Writeln ('O valor de X é
=', X); End { Repara que não tem ponto e vírgula por que
"End" está antes do "Else"} Else Begin Writeln
('Y é Maior ou Igual a X'); Writeln
('O valor de Y é =', Y); End; end. { Sempre no "End"
do programa principal vai ponto final ".", e não ponto e virgula
";"} |
|
B) Compila o seguinte programa e
traduz o enunciado In the following program the user will input his/her age (integer type). The program will check if the user is able to apply for a driving license. If the
user is of legal age (i.e. 18), the program will encourage the user to apply. Otherwise, the program will
calculate the number of years remaining till the age of 18. Program driving; Var age : char; begin writeln(‘when to apply for a driving license’); write(‘Type your age (try to be honest please!) : ‘); readln(age); if age < 18 then
write(‘CONGRATULATIONS...you can apply’) else write(‘you have to wait
‘, 18 – age, ’years); readln; end. |
E) Cria um algoritmo que verifique se
um número introduzido pelo utilizador é maior ou menor que PI Program Pzim ; const PI=3.14; var x : real; Begin writeln
('digite um numero'); readln
(x); if x< PI then writeln('x
menor que PI') else writeln('x
maoir que PI'); End. |
|
c) Compila o seguinte programa e escreve um enunciado para o programa write('Introduza um
numero real: '); readln(A); if (A>=0) then begin writeln('Numero positivo
ou nulo'); end else begin writeln('Numero negativo'); end; |
F) Elabore um algoritmo que calcule a
área de um quadrado e de um retângulo, juntamente com o resultado (área)
informar o utilizador se a figura geométrica é um quadrado ou um retângulo. Begin writeln('digite l1:'); readln(l1); writeln('digite l2:'); readln(l2); if L1=L2 then writeln
('a area é de um quadrado'); else writeln
('a area e de um retangulo'); End. |
ENVIAR AO
PROFESSOR (PROFCARLOS2006@gmail.com) 6- programas (A, B, C, D, E, F) 4- explicações (A, D, E, F) 1- enunciado (C) 1 –tradução (B) |
##Exercícios de fixação## Estrutura
Condicional – Composta
(Voltar
ao Índice) |
||||||||||||||||||
|
01- Sabendo que uma milha marítima equivale a um mil, oitocentos e
cinquenta e dois metros e que um quilômetro possui mil metros, fazer um
programa para converter milhas marítimas em quilômetros. |
|
||||||||||||||||
|
02- Calcular
e exibir a tensão (V) de um determinado circuito eletrónico a partir dos
valores da resistência (R) e corrente elétrica (I) que serão digitados.
Utilize a lei de Ohm. |
Quando essa lei é verdadeira
num determinado condutor mantido à temperatura constante, este denomina-se
condutor ôhmico. A resistência de um dispositivo
condutor é dada pela fórmula: R = V/I ou V = R I Onde: V é a diferença de potencial
elétrico (ou tensão, ou ddp) medida em volt
(V); I é a intensidade da corrente elétrica
medida em ampère (A) e R é a resistência elétrica medida em ohm
(Ω). |
||||||||||||||||
|
03- Digitar o valor de uma
temperatura em graus Celsius, calcular e exibir sua temperatura equivalente
em Fahrenheit. |
|
||||||||||||||||
|
04- Digitados três valores distintos. Exibir o maior
deles. Program Pzim ; var a, b, c:real; Begin readln(a); readln(b); readln(c); If (a>b)and (b>c)then writeln('maior a') else
if
(b>a) and(b>c) then writeln('maior b') else writeln('maior c'); End. |
|
||||||||||||||||
|
05- Digitar o peso e a altura
de uma determinada pessoa. Após a digitação, mostrar se esta pessoa está ou
não com seu peso ideal. |
|
||||||||||||||||
|
06- Faça um programa para ler três números e
escrever se estes podem ou não formar um triângulo. Program Pzim ; var l1, l2, l3: real; Begin readln(l1); readln(l2); readln(l3); if (l1+l2<l3) or (l1+l3<l2) or
(l2+l3<l1) then writeln('não dá') else writeln('OKOKOKOKOKKOKOK'); End. |
Observação – Para
formar os lados de um triângulo cada
um dos valores tem que ser menor que a soma dos outros dois. |
||||||||||||||||
|
07- Faça um programa para ler três números e se
estes poderem formar um triângulo dizer se o triângulo é “EQUILÁTERO”,
“ISÓCELES” OU “ESCALENO”. Program Pzim ; var l1, l2, l3:real ; Begin readln(l1); readln(l2); readln(l3); If (l1=l2)and (l2=l3) then writeln('equilátero todos os lados iguais') else if
(l1<>l2)and(l2<>l3)then writeln('escaleno todos os lados diferentes') else
writeln('isósceles'); End. |
|
||||||||||||||||
|
08 – Digitar o peso, o sexo e a altura de
uma determinada pessoa. Após a digitação, exibir se esta pessoa está ou não
com seu peso ideal. Veja tabela da relação peso/altura². Program Pzim ; var sexo:real; p, a, r:real ; Begin writeln('digite
o sexo da pessoa (F - Feminino 1) (M- Masculino)'); readln(sexo); writeln('peso'); readln(p); writeln('zl'); readln(a); r:=p*(a*a); if (sexo=1) then
begin if r<0.0019 then
writeln('mulher a abeixo do peso',r)
else
if r>=0.0024 then writeln('mulher a acima do peso',r)
else writeln('mulher a ok do peso',r);
end else
begin
if r<0.0019 then
writeln('mcccculher
a abeixo do peso',r)
else
if
r>=0.0024 then writeln('mcccculher a
acima do peso',r) else writeln('mcccculher a ok do peso',r);
end; End. |
|
||||||||||||||||
ENVIAR AO
PROFESSOR (PROFCARLOS2006@GMAIL.COM) |
Estrutura Condicional Aninhada (Voltar ao Índice) |
|||||||||||||||||
|
|
|
|||||||||||||||
|
A estrutura condicional aninhada é semelhante à
estrutura condicional com AND |
||||||||||||||||
|
|
|
|||||||||||||||
|
O if aninhado é simplesmente
um if dentro da declaração de um outro if externo. É necessário saber exatamente a qual if um determinado else
está ligado, para não ocasionar erro na lógica do programa. Exemplos de IF's
aninhados: Uses Crt; Var X, Y, A, B : Integer; Begin Readln (X,Y,A,B); If (X > Y) Then { Entrará no
Próximo If apenas se a variável X for maior que a variavel Y } | If (A > B) | | Then Writeln ('X é maior que Y e A é maior que B') {Sem
";"} | Else Writeln ('A não é Maior que B') {Sem ";"} Else Writeln ('X não é maior que Y'); End. { O caracter
"|" serve para indicar qual IF pertence a qual ELSE} { Repare que
antes do ELSE nao tem ";"} |
Exemplo de IF's aninhados: Uses Crt; Var X, Y, A, B : Integer; Begin Readln (X,Y,A,B); If (X
> Y) Then | If (A
> B) | Then Begin | | | Writeln ('X é
maior que Y e A é maior que B'); | | | Writeln ('O
Valor de X é = ', X); | | | Writeln ('O
Valor de A é = ', A); | | End | Else Begin | | Writeln
('A não é Maior que B'); | | Writeln
('O Valor de B é = ', B); | End Else Writeln ('X não é maior que Y'); End. Notas: Repare que para cada BEGIN
sempre terá um END, e tem que ficar atento sempre em relação a qual ELSE
perfence a qual IF. Os
programas acima para compilá-los é necessários tirar todos os
caracteres "|" (pipe), que foi utilizado
para mostrar a inter-relação entre BEGIN's -
END's e IF's
- ELSE's. |
|||||||||||||||
|
a) Compila o seguinte programa e
escreve um enunciado para o programa Var nota : Integer; Begin writeln('digite uma nota'); readln(nota); if nota >9 then begin writeln('aprovado'); end; if nota<10 then begin if nota>=8 then begin writeln('recuperaçao'); end; if nota<8 then begin writeln('reprovado'); end; end; readln; End. A1) Tendo em conta que este tipo de abordagem
à função SE é semelhante à utilização de AND. Reescreve o algoritmo
utilizando IF…AND…Then em vez do SE
aninhado. |
|
|||||||||||||||
|
b) Compila o seguinte programa e escreve um enunciado para o programa var { local
variable definition } a, b :
integer; begin a := 100; b:= 200; (* check
the boolean condition *) if (a =
100) then (* if
condition is true then check the following *) if ( b =
200 ) then (* if
nested if condition is true then print
the following *) writeln('Value of a is 100 and value of b is 200' ); writeln('Exact value of a is: ', a ); writeln('Exact value of b is: ', b ); readln; end. |
|
|||||||||||||||
|
c) Compila o seguinte programa e
escreve um enunciado para o programa var nome:string; n1,n2,n3,media:real; f:integer; Begin writeln('Digite os dados do
aluno'); write('Nome: '); readln(nome); write('3 notas: '); readln(n1,n2,n3); if (n1<0) or (n1>10) or (n2<0) or
(n2>10) or (n3<0) or (n3>10) then begin write('Notas inválidas, digite
notas de 0 a 10!'); readln(n1,n2,n3); end; media:=(n1+n2+n3)/3; write('Quantidade de faltas :'); readln(f); if f<0 then begin write('Faltas inválidas!
digite um número maior ou igual a 0!'); readln(f); end; write('O aluno ',nome,' está '); if (media>=5) and (f<18) then write('aprovado com média: ',media:2:2); if media<5 then write('reprovado por
média: ',media:2:2); if f>17 then write('reprovado
por falta: ',f:2); readln; End. |
|
|||||||||||||||
|
d) Compila o seguinte programa e escreve um enunciado para o programa var A,B,C:integer; Begin | clrscr; | writeln('Digite
os lados do triângulo'); | readln(A,B,C); | if
(A<B+C) and (B<A+C) and (C<A+B) then | | begin | | | write('Os números formam os lados de um triângulo '); | |
| if (A=B) and (B=C)and (C=A)
then | | |
| write('equilátero
') |
| | else |
| | | if (A=B) and (A<>C)or (B=C)and
(C<>A)or(A=C)and (A<>B)then |
| | | | write('isósceles') |
| | | else |
| | | | write('escaleno'); | | end | else
write('Os números não formam os lados de um
triângulo'); | readln;
End. |
|
|||||||||||||||
|
e) Compila o seguinte programa e
escreve um enunciado para o programa var {Definição das variáveis saldo, limite e valorADebitar do tipo real} saldo, limite, valorADebitar : real; begin {Atribuição de valores a saldo e limite} saldo := 200; limite := 500; {Solicitar ao utilizador o valor a debitar.} writeln('Qual
o valor a debitar?'); readln(valorADebitar); {Se o saldo somado ao limite for maior que o
valor a debitar, então debite o valorADebitar do
saldo} if (saldo
+ limite > valorADebitar)
then begin saldo := saldo - valorADebitar; writeln('Debito
efetuado com sucesso.'); end {Senão, imprima: 'Saldo Insuficiente'} else begin writeln('Saldo insuficiente.'); end; writeln('Fim
da transacao. retire o cartão'); readln; end. |
|
|||||||||||||||
|
Var nota : Integer; Begin writeln('digite uma nota'); readln(nota); if nota >9 then begin writeln('aprovado'); end else if (nota<10) and (nota>=8) then begin writeln('recuperaçao'); end else begin writeln('reprovado'); end; readln; End. |
|
|||||||||||||||
ENVIAR AO
PROFESSOR (PROFCARLOS2006@GMAIL.COM) Enunciados a;
b; c; d; e. Programas A1. (Voltar ao
Índice) |
Else Pendente (Voltar ao Índice) |
||
|
|
|
|
|
|
|
|
|
|
Else pendente acontece
quando ele se encontra "perdido" dentro do código, ou seja, ele não
sabe a qual If pertence. Exemplo de Else pendente: Uses Crt; Var X, Y, A, B : Integer; Begin Readln (X,Y,A,B); If (X
> Y) Then If (A
> B) Then Writeln ('A é maior que
B') Else Writeln
('A não é Maior que B'); End. Notas: O compilador adota que o Else sempre será do If
mais interno.
|
Exemplo de como resolver o problema do Else pendente: Uses Crt; Var X, Y, A, B : Integer; Begin Readln (X,Y,A,B); If (X
> Y) Then Begin If (A
> B) Then Writeln ('A é maior que
B') Else Writeln
('A não é Maior que B'); End; End. Notas: Para que não haja duvidas a
qual If o Else
pertence utilize os
delimitadores BEGIN - END. |
|
|
|
|
|
|
|
Estrutura Case (Voltar
ao Índice) |
||
|
|
|
|
|
|
|
|
|
|
O comando CASE é importante para a
estruturação de um programa que possua diversas opções de execução,
tornando-o bem legivel e estruturado, evitando o
uso do IF de forma repetida. O comando CASE trás junto com ele
uma restrição, onde, seletor tem que ser do tipo char,
integer ou boolean. Sintaxe: CASE seletor OF alvo1
: comando1; alvo2
: comando2; alvo3
: comando3; END;
CASE seletor OF
alvo1 : BEGIN ... instruções ...
END; alvo2 : comando2; alvo3
: BEGIN ... instruções
... END; ELSE comando4; END; |
Exemplo: Uses Crt; Var Y, X : Integer; Begin Readln (X, Y); Case X Of 1
: Begin Y :=
4; Writeln ('Entrou
no Primeiro alvo'); End; 2
: Begin Y :=
3; Writeln
('Entrou no Segundo alvo'); End; 3 : Writeln ('Entrou no Terceiro alvo'); Else Writeln ('Entrou
no Else'); End; End. |
|
Exemplo: { Um simples exemplo de como se trabalha com a Estrutura
Case } Uses Crt; Var X : Integer; Begin Readln (X); Case X Of 1 : Writeln ('Ola Mundo'); { E o valor de X for igual a 1, irá executar essa linha } 2 : Writeln ('GNOIA'); { X = 2, essa
linha será executada } 3 : Writeln ('Software Livre'); { X = 3 - essa linha será executada } End; End. |
|
|
|
|
|
|
01- Faça um programa para ler três números e
escrever se estes podem ou não formar um triângulo. Observação – Para formar
os lados de um triângulo cada um
dos valores tem que ser menor que a soma dos outros dois. Resolução: Program triangulo ; var l1,l2,l3:integer; Begin clrscr; writeln('Digite os lados do triângulo'); readln(l1,l2,l3); if
(l1<l2+l3) and (l2<l1+l3) and (l3<l1+l2) then writeln('Os números formam os lados de um
triângulo') else writeln('Os números não formam os lados de um
triângulo'); readkey; End. |
||||||||||||
|
02- Faça um programa para ler três números e se estes poderem formar um
triângulo dizer se o triângulo é “EQUILÁTERO”, “ISÓCELES” OU “ESCALENO”. Resolução: Program triangulo ; var
A,B,C:integer; Begin | clrscr; | writeln('Digite
os lados do triângulo'); | readln(A,B,C); |
if (A<B+C) and (B<A+C) and (C<A+B) then |
| begin | | | write('Os números formam os lados de um triângulo '); | | |
if (A=B) and (B=C)and (C=A) then |
| | |
write('equilátero ') |
| | else |
| | | if (A=B) and (A<>C)or (B=C)and
(C<>A)or(A=C)and (A<>B)then |
| | | | write('isósceles') |
| | | else |
| | | | write('escaleno'); |
| end | else
write('Os números não formam os lados de um
triângulo'); | readkey;
End. |
||||||||||||
|
03- Faça um programa que leia as três
notas, as faltas e o nome de um aluno e imprima sua situação. ( “APROVADO”, “REPROVADO POR FALTA” ou
“REPROVADO POR MÉDIA” ) Observação – A média para aprovação é 5.0 e o limite
de faltas é 17. Resolução: Program aluno; var nome:string; n1,n2,n3,media:real; f:integer; Begin clrscr; writeln('Digite os dados do aluno'); write('Nome: '); readln(nome); write('3 notas: '); readln(n1,n2,n3); if (n1<0)
or (n1>10) or (n2<0) or (n2>10) or (n3<0) or (n3>10) then begin write('Notas inválidas, digite notas de 0 a 10!'); readln(n1,n2,n3); end; media:=(n1+n2+n3)/3; write('Quantidade de faltas :'); readln(f); if
f<0 then
begin write('Faltas inválidas! digite um número maior ou igual a 0!'); readln(f); end; write('O aluno ',nome,' está '); if (media>=5) and
(f<18) then write('aprovado
com média: ',media:2:2); if media<5 then write('reprovado por média: ',media:2:2); if f>17
then write('reprovado por
falta: ',f:2); readkey; End. |
||||||||||||
|
Exemplo de um programa: program exemplo; const n1= 5; n2= 3; var x,y:integer; comp: boolean; begin writeln('Digite um multiplo de ',n1, ' e outro multiplo
de ', n2, ': '); read(x,y); comp:= x > y; writeln(x, ' > ',
y, ' = ', comp); readln; readln; end. No programa acima, o bloco de comandos que é executado
começa logo após o begin. O bloco contém 6 comandos. Os dois últimos estão
escritos na mesma linha, mas apenas por conveniência. Cada comando deve ser separado
do seguinte por um ponto-e-vírgula. Após o ultimo comando de um bloco o ponto-e-vírgula é
opcional. No exemplo acima, n1 e n2 poderiam também ter sido
declaradas como variáveis inteiras, em vez de constantes. Nesse caso, seus
valores deveriam entrar como comandos de atribuição, dentro do bloco, como
abaixo. O efeito seria exatamente o mesmo. O exemplo mostra o uso de comentário delimitado por (* e *)
. Comentários podem também ser delimitados por { e } . program exemplo2; (****************************************************************** Este exemplo
evita usar constantes. Mas mostra o uso
de comentários. *******************************************************************) var n1,n2,x,y:integer; comp: boolean; begin n1:=5; n2:=3; writeln('Digite um multiplo de ',n1,
' e outro multiplo de ', n2, ': '); read(x,y); comp:= x > y; writeln(x, ' >
', y, ' = ', comp); readln; readln; end. |
||||||||||||
|
Exemplo: No
exemplo abaixo, a expressão é uma variável c ,
do tipo caractere. O primeiro caso é uma lista com duas faixas de valores, e inclui
todas as letras maiúsculas entre A e Z, e todas as letras minúsculas entre a
e z. O segundo caso inclui os dígitos
de 0 a 9. O terceiro caso inclui uma lista com 4 valores ,
que são os caracteres usados para as operações aritméticas. Caso a expressão
c não tenha nenhum desses valores, os dois comandos após o else serão executados. program exemplo; var c: char; begin write('Entre
com um caractere: '); readln(c); case c of 'A'..'Z','a'..'z':
writeln('Caractere lido
e'' letra.'); '0'..'9': begin writeln('Caractere lido
e'' um digito '); writeln('entre 0 e 9');
end; '+','-','*','/':
writeln('Caractere
lido e'' um operador matematico.'); else
writeln('O caractere lido nao
e'' letra, nem digito,'); writeln('nem
operador matematico.'); end; end. Para melhor compreender o exemplo acima,
segue abaixo o programa equivalente usando comandos if..then...else equivalentes: program exemplo_if; var c: char; begin write('Entre
com um caractere: '); readln(c); if
(c>='A') and (c <= 'Z') or (c>= 'a') and (c <= 'z') then writeln('Caractere lido e'' letra.') else if
(c>='0') and (c<= '9')
then begin writeln('Caractere lido e'' um digito '); writeln('entre 0 e 9');
end else if
(c='+') or (c='-') or (c='*') or (c= '/') then writeln('Caractere
lido e'' um operador matematico.') else begin writeln('O caractere lido nao
e'' letra, nem digito,'); writeln('nem operador matematico.'); end; end. |
||||||||||||
EXERCÍCIOS DE FIXAÇÃO |
|||||||||||||
|
1)
Escrever um programa em Pascal que solicita do usuário os coeficientes a, b e
c da equação de segundo grau:
ax2 + bx + c = 0 e
imprime uma das seguintes respostas no ecrã: a)
Existem duas raízes reais com valores <valor 1> e
<valor 2> b)
Existe apenas uma raiz real, com valor <valor único> c)
Não existem valores reais. O programa deve calcular inicialmente o determinante b2
– 4*a*c. Caso seja positivo,
calcula os valores (–b + sqrt(b*b-4*a*c))/(2*a)
e (-b-sqrt(b*b-4*a*c))/(2*a)
e imprime a primeira resposta. Caso seja nulo, calcula o valor –b /(2*a) e
imprime a segunda resposta. E caso seja negativo, imprime a terceira
resposta. 2)
Escrever um programa em Pascal que calcula o Imposto de Renda anual de um
contribuinte pessoa física. O usuário deve digitar os seguintes valores reais:
a)
o rendimento bruto tributável recebido no ano; b)
o total de deduções a que tem direito; c)
o valor de Imposto de Renda na fonte, já pago
durante o ano. Como resposta, o programa deve escrever uma das frases
abaixo: a)
Imposto a pagar:
<valor em euros e cêntimos> b)
Imposto a receber por devolução: <valor em euros e cêntimos > O valor do cálculo do Imposto usa a tabela progressiva
divulgada pelo Governo, que neste ano é a seguinte:
A Base de
cálculo acima é obtida subtraindo o total das deduções do rendimento bruto
tributável recebido no ano. O imposto é calculado em partes, um valor para
cada faixa de rendimentos. |
||||||||||||
begin writeln('digita milhas'); readln(m); me:=m*1852; writeln('metros ',me:4:4); readln; k:=((m*1852)/1000); writeln('metros ',k:4:4); readln; end. |