Você está na página 1de 52

APOSTILA DE PROGRAMAÇÃO BÁSICA

APOSTILA 1:

LÓGICA DE
PROGRAMAÇÃO
EM PASCAL
A- Conceitos Básicos de Programação 02
B- Linguagem Pascal 06
C- Estruturas de Seleção 18
D- Laços de Repetição 33
E- Lista de Erros do Pascal 48 Prof. Sergio
2

Lógica de Programação em Pascal

A- CONCEITOS BÁSICOS DE PROGRAMAÇÃO

A programação é a arte de fazer com que o computador execute operações que lhe
serão solicitadas. A esse conjunto de operações ou atividades dá-se o nome de Programa. Os
programas são criados através de uma codificação chamada de código-fonte que pode ser
escrito em diversas linguagens de programação, seja ela de baixo-nível ou de alto-nível.
Para facilitar o entendimento dos conceitos acima, abaixo serão apresentadas
diversas definições de vários conceitos utilizados em programação:
 Programa: conjunto de instruções/comandos que seguem uma ordem lógica, que
é criado através de uma linguagem de programação.
 Linguagem de Programação: é uma notação formal para a descrição de
algoritmos que serão executados por um computador. Exemplos: Pascal, C, C++,
Basic, Java, Clipper, Assembly entre outras.
 Algoritmo: é um conjunto de instruções ordenadas logicamente que visam um
objetivo específico, ou seja, uma receita.
 Código-Fonte: é o código de um programa escrito em uma linguagem de
programação.
 Linguagem de Alto-Nível: linguagem de programação, cujo sua escrita se
assemelha com a linguagem natural dos homens. Exemplos: Pascal, Basic, Java,
Clipper.
 Linguagem de Baixo-Nível: linguagem de programação, cujo sua escrita
corresponde às características da arquitetura do computador, ou seja, uma
linguagem próxima de ser entendida pelo hardware. Exemplo: Assembly.
 Linguagem de Máquina: linguagem que o hardware entende, baseada em
sequências de 0s e 1s.
 Linguagem Fonte: é o código escrito pelo programador, ou seja, o código-fonte.
 Linguagem Objeto: é o código fonte convertido em outra linguagem,
normalmente a linguagem de máquina.
 Ambiente de Programação: software que permite o desenvolvimento de
programas, através de uma linguagem de programação, de um depurador
(debugger) e de um compilador.
 Depurador (Debugger): programa que verifica os possíveis erros existentes no
código-fonte.
 Compilador: programa que converte o código-fonte (linguagem fonte) em
linguagem objeto, normalmente em linguagem de máquina.
 Interpretador: programa que executa um código-fonte (linguagem fonte)
diretamente. Exemplo: Navegadores de Web.

Prof. Sergio
3

Lógica de Programação em Pascal

 Montador: programa que converte um programa escrito em Linguagem Assembly


em Linguagem de Máquina (executável).
Além dos conceitos apresentados acima, outros conceitos também são importantes
para aqueles que querem se tornar programadores:
 Sintaxe: conjunto de regras que define a forma correta de utilização de
determinada linguagem de programação.
 Semântica: conjunto de normas que define as possibilidades de manuseio de
algumas regras da sintaxe. Exemplo: adicionar um valor numérico inteiro dentro
de um valor numérico real (variável), porém o contrário não será possível.
 Variável: utilização de um nome para representar um espaço de memória capaz
de armazenar um determinado valor.
Abaixo será apresentado um programa para ler a média de aluno e dizer se ele foi
aprovador ou reprovado através de várias linguagens de programação.
 Linguagem Pascal:
program situacao;
uses crt;
var media: real;
begin
clrscr;
write(„Informe a média anual: „);
readln(media);
if media >= 6 then
begin
Writeln(„APROVADO‟);
end
else
begin
Writeln(„REPROVADO‟);
end;
end.

 Linguagem Basic (Visual Basci):


Dim media As Single;
media= CSng(txtMedia.text);
If (media >= 6) Then
lblSituacao.Caption= “APROVADO”;
Else
lblSituacao.Caption= “REPROVADO”;
End If

Prof. Sergio
4

Lógica de Programação em Pascal

 Linguagem C:
#include <stdio.h>
int main()
{
float media;
printf(“Informe a média anual: ”);
scanf(“%f”,&media);
if (media >= 6)
{
Printf(“APROVADO”\n);
}
else
{
Printf(“REPROVADO”\n);
}
}

ALGORITMO

O conceito central da programação é o de algoritmo. Programar é basicamente


construir algoritmos. Um algoritmo é um conjunto de ações que executadas corretamente
resultarão em um objetivo específico. Exemplos:
1) Se arrumar para ir à escola
acordar com o despertador tocando
levantar da cama
escovar os dentes
trocar de roupa
tomar o café
2) Fazer a lição de casa
abrir o caderno na lição correspondente
ler o enunciado da lição
responder o enunciado da lição
repetir as duas ações anteriores para todas as lições
Um algoritmo pode ser simplificador, assim como detalhista, dependendo da ocasião:
1) Se arrumar para ir à escola
acordar com o despertador tocando
desligar o despertador
tirar a coberta
levantar da cama
calçar a sandália
Prof. Sergio
5

Lógica de Programação em Pascal

ir ao banheiro
pegar a escova e a pasta de dentes
colocar pasta na escova de dentes
escovar os dentes
voltar para o quarto
pegar a roupa da escola
tirar o pijama
colocar o uniforme da escola
sair do quarto
ir até a cozinha
pegar o copo
colocar o café
pegar o pão
passar manteiga
comer o pão
beber o café
3) Fazer a lição de casa
pegar o caderno
abrir o caderno
abrir a página da lição correspondente
ler o enunciado da lição
pensar no enunciado e na possível resposta
pesquisar o que desconhecer
responder o enunciado da lição
repetir as quatro ações anteriores para todas as lições
fechar o caderno
guardar o caderno
É possível identificar que um algoritmo possa ser criado de diversas formas,
cumprindo todas as atividades básicas solicitadas, assim como criar um mesmo bolo de
formas diferentes, seguindo apenas uma receita básica.

EXERCÍCIOS

1) Fazer um algoritmo para fazer um suco de laranja da forma mais detalhada possível.
2) Fazer um algoritmo que apresente todas as suas atividades desde o acordar até chegar na
escola.

Prof. Sergio
6

Lógica de Programação em Pascal

B- LINGUAGEM PASCAL

A linguagem de programação Pascal foi desenvolvida pelo suíço Niklaus Wirth,


professor da Universidade de Zurique (Suiça), para ensinar seus alunos a programar. O nome
da Linguagem Pascal foi uma homenagem a Blaise Pascal, filósofo e matemático francês que
viveu entre 1623 e 1662.
Em 1970, é disponibilizado o primeiro compilador para a linguagem Pascal. Com o
passar de alguns anos, a linguagem saiu dos muros acadêmicos e decolou no mercado
mundial como uma poderosa linguagem de programação. Em 1983, a Borland Internacional
criou a primeira versão do Turbo Pascal. Nos anos seguintes outras versões foram lançadas
até a versão Turbo Pascal 7.0. Em seguida a Borland transformou a linguagem estrutura
Pascal em uma linguagem orientada a objetos: Object Pascal. O Object Pascal se tornou a
base do Delphi 1.0 que permitia desenvolver aplicações em ambiente Windows. O Delphi
passou por diversas atualizações, entre elas: Delphi 3, Delphi 5, Delphi 7, Delphi 2005, Delphi
2009.

TIPOS DE DADOS

Os dados são representados pelas informações a serem processadas por um


computador. A linguagem Pascal fornece um conjunto de tipos de dados predefinidos, entre
eles:
 Byte: números inteiros entre 0 e 255.
 Integer: números inteiros entre: -32.768 e 32.767.
 Longint: números inteiros entre: -2.147.483.648 e 2.147.483.647.
 Real: números inteiros e decimais entre: 2,9E-39 e 1,7E+38.
 Extended: números inteiros e decimais entre: 3,4E-4.932 e 1,1E+4,932.
 Char: permite apenas um caractere. Exemplo: A, B, 1, 3.
 String: permite sequência de caracteres de até 255 caracteres. Exemplo: João,
Liceu.
 Boolean: permite valores lógicos. True para verdadeiro e False para falso.

Observações:
 Um valor do tipo inteiro pode ser armazenado em variáveis do tipo real, porém
um valor do tipo real não poder ser armazenado em variáveis do tipo inteiro.
 Uma variável do tipo Boolean só pode receber os valores True ou False.
 Uma variável do tipo String pode receber um valor do tipo Char, mas uma variável
do tipo Char não pode receber uma String, exceção feita a apenas uma única
posição da string.

Prof. Sergio
7

Lógica de Programação em Pascal

 Sempre que for necessário armazenar um número inteiro superior a faixa


permitida pelo tipo Longint, deverá ser utilizado em seu lugar o tipo de dados
Real ou Extended.

OPERADORES ARITMÉTICOS

A linguagem Pascal possui um conjunto de símbolos utilizados para cálculos


aritméticos:

Operadores Descrição
+ Adição de números inteiros ou reais, além de concatenação de
caracteres e strings.
Exemplos:
5+2=7
4,5 + 2,2 = 6,7
‘João’ + ‘ Silva’ = ‘João Silva’
- Subtração e negação de valores inteiros ou reais.
Exemplos:
5–2=3
4,5 – 2,2 = 2,3
* Multiplicações de números inteiros ou reais.
Exemplos:
5 * 2 = 10
4,5 * 2,2 = 9,9
/ Divisão com resultado real, para operandos inteiros ou reais.
Exemplos:
5 / 2 = 2,5
4,4 / 2,2 = 2,0
DIV Divisão entre números inteiros com resultado também inteiro, sem
a casa decimal.
Exemplos:
5 DIV 2 = 2
4 DIV 2 = 2
MOD Resto da divisão entre números inteiros.
Exemplos:
5 MOD 2 = 1
4 MOD 2 = 0

OPERADORES RELACIONAIS

A linguagem Pascal possui um conjunto de símbolos utilizados para comparações,


que resultam em um resultado do tipo Boolean, ou seja, True (Verdadeiro) ou False (Falso).

Prof. Sergio
8

Lógica de Programação em Pascal

Esses operadores relacionais podem ser utilizados com todos os tipos de valores. São
eles:

Operadores Descrição
= Verifica se existe igualdade entre os valores.
Exemplos:
5 = 2 (False)
‘João’ = ‘João’ (True)
<> Verifica se existe diferença entre os valores.
Exemplos:
5 <> 2 (True)
‘João’ <> ‘João’ (False)
> Verifica se o valor da esquerda é maior que o valor da direita.
Exemplos:
5 > 2 (True)
‘Paulo’ > ‘Pedro’ (False)
< Verifica se o valor da direita é menor que o valor da direita.
Exemplos:
5 < 2 (False)
‘Paulo’ < ‘Pedro’ (True)
>= Verifica se o valor da esquerda é maior ou igual ao valor da direita.
Exemplos:
5 >= 2 (True)
10 >= 10 (True)
<= Verifica se o valor da esquerda é menor ou igual ao valor da
direita.
Exemplos:
5 <= 2 (False)
10 <= 10 (True)
IN Operador de conjunto. Retorna verdadeiro se o valor pertencer a
um conjunto de valores.
Exemplos:
5 IN [1..10] (True)
‘A’ IN *‘E’,’I’,’O’+ (False)

OPERADORES LÓGICOS (BOOLEANOS)

A linguagem Pascal possui um conjunto de símbolos utilizados para comparações


lógicas entre outras comparações/condições, que resultam em um resultado do tipo
Boolean, ou seja, True (Verdadeiro) ou False (Falso).
Esses operadores lógicos só podem ser utilizados com valores do tipo Boolean. São
eles:

Prof. Sergio
9

Lógica de Programação em Pascal

Operadores Descrição
NOT Inverte o resultado de uma expressão lógica.
Tabela da Verdade - Regra:
Operando A NOT A
V F
F V
Exemplos:
NOT(5 = 2) (True)
NOT(‘João’ = ‘João’) (False)
AND O resultado será verdadeiro apenas se ambos operandos forem
verdadeiros.
Tabela da Verdade - Regra:
Operando A Operando B A AND B
V V V
V F F
F V F
F F F
Exemplos:
5 <> 2 (True)
‘João’ <> ‘João’ (False)
OR O resultado será verdadeiro quando pelo menos um dos operandos
for verdadeiro.
Tabela da Verdade - Regra:
Operando A Operando B A OR B
V V V
V F V
F V V
F F F
Exemplos:
5 <> 2 (True)
‘João’ <> ‘João’ (False)
XOR Com o Exclusive OR, o resultado será verdadeiro se apenas um dos
operandos for verdadeiros.
Tabela da Verdade - Regra:
Operando A Operando B A XOR B
V V F
V F V
F V V
F F F
Exemplos:
5 <> 2 (True)
‘João’ <> ‘João’ (False)

EXPRESSÕES
Prof. Sergio
10

Lógica de Programação em Pascal

Em expressões mais elaboradas, é possível utilizar diversos operadores em conjunto,


sejam eles aritméticos, relacionais ou lógicos. A ordem de execução das expressões é:
1º) expressões dentro de parênteses.
2º) operador unário menos ou negação. Exemplo: -(5 + 2).
3º) operador NOT.
4º) operadores multiplicativos *, /, DIV, MOD e AND.
5º) operadores aditivos: +, - , OR, XOR.
6º) operadores relacionais =, <, >, <>, <=, >=, IN.

OPERADOR DE ATRIBUIÇÃO

O operador de Atribuição := é utilizado para armazenar um determinado valor direto


ou resultante de uma expressão em uma variável.
Exemplos:
A := 5 + 2;
Nome := ‘João da Silva’;
Media := (Nota1 + Nota2 + Nota3 + Nota4) / 4;

ESTRUTURA BÁSICA DE UM PROGRAMA EM PASCAL

Todo programa criado em Pascal segue a seguinte estrutura:


program nome_do_programa;
<área de declarações de bibliotecas, variáveis, rotinas, entre outros>
begin
<lógica do programa>
end.

Um programa em Pascal começa obrigatoriamente com:


program nome_do_programa;
onde nome_do_programa é o nome a ser dado ao programa, nome este que não pode
ser repetido durante o programa.

A codificação do programa deve ser criada entre:


begin
<lógica do programa>
end.
Observações:

Prof. Sergio
11

Lógica de Programação em Pascal

1) Todo nome criado no programa deve começar com uma letra e ser criado através
de caracteres não especiais, ou seja, só é permitido a utilização de letras,
números e o underscor (traço semelhante ao sublinhado). Exemplos:
calculo_media, programa1.
2) Todo final de comando deve ser encerrado com o símbolo ; (ponto e vírgula).

DECLARAÇÃO DE VARIÁVEIS

Todo programa necessitará da utilização de variáveis. Na linguagem Pascal a


declaração e indicação do tipo de valor são obrigatórios. Essa declaração é realizada da
seguinte forma:
var nome_variavel : tipo_de_dado ;
A regra para o nome da variável segue as mesmas observações para o nome do
programa, ou seja, deve começar com uma letra e ser criado através de caracteres não
especiais, ou seja, só é permitido a utilização de letras, números e o underscor (traço
semelhante ao sublinhado). Exemplos:
var media_anual : real;
nota1, nota2, nota3, nota4: real;
nome_aluno: string;
Dentro de uma declaração de variáveis, a palavra var só aparecerá uma vez.

COMANDOS BÁSICOS DA LINGUAGEM PASCAL

A linguagem Pascal possui alguns comandos básicos utilizados em todos os


programas:
 CLRSCR: limpa a tela de execução e posiciona o cursor na primeira linha da tela.
 WRITE: permite a escrita de mensagens e valores na tela.
 WRITELN: permite a escrita de mensagens e valores na tela, além de posicionar o
cursor na linha de baixo.
 READ: permite a leitura de um valor que será armazenado na variável indicada.
 READLN: permite a leitura de um valor que será armazenado na variável indicada,
além de posicionar o cursor na linha de baixo.
 READKEY: captura a tecla pressionada, mantendo o programa pausado até esse
pressionamento.
Para a correta execução dos comandos, é necessária a declaração da biblioteca, antes
da declaração das variáveis, que possui as informações de execução destes comandos:
uses CRT;
PRIMEIROS EXEMPLOS

Prof. Sergio
12

Lógica de Programação em Pascal

Para escrever os programas na Linguagem Pascal, será utilizado o software Turbo


Pascal 7.0 da Borland.
Após a digitação do programa (código-fonte) é necessário compilar/executar o
programa, de forma que o mesmo seja testado. Para isso é utilizado a combinação de teclas
Ctrl + F9 ou utilizar a opção de menu: RUN > RUN.

1) Programa para escrever a mensagem “Bem vindo a programação” na tela.

program calcula_soma;
uses crt;
begin
clrscr;
write(„Bem vindo a programação„);
readkey;
end.

Explicação:

program calcula_soma;
- A palavra chave program identifica que o programa começa nessa linha. O nome do
programa é calcula_soma.

uses crt;
- Nesse momento a biblioteca de comandos CRT é carrega na memória, de forma que
todos os comandos funcionem corretamente.

begin
- Foi aberto o bloco de comando correspondente ao programa principal.

clrscr;
- Nesse momento a tela de execução é limpa.

write(„Bem vindo a programação„);


- Nesse momento irá aperecer a mensagem “Bem vindo a programação” na tela.

readkey;
- Nesse momento o programa será pausado. Caso não seja utilizado essa função, o
programa será finalizado e o usuário não poderá ver a mensagem escrita pelo comando
anterior.

end.
- Esse comando encerra o programa. É a única linha de comando que é finaliza com o
símbolo . (ponto final) e não o símbolo ; (ponto e vírgula).

2) Programa para ler o nome de uma pessoa e apresentá-lo na tela.


program ler_nome;
uses crt;

Prof. Sergio
13

Lógica de Programação em Pascal

var nome: string;


begin
clrscr;
write(„Informe o nome de uma pessoa: „);
readln(nome);
writeln(„O nome informado é: „, nome);
readkey;
end.

3) Programa para ler dois valores inteiros e apresentar a soma destes dois valores:
program calcula_soma;
uses crt;
var valor1, valor2, soma: integer;
begin
clrscr;
write(„Informe o 1º valor: „);
readln(valor1);
write(„Informe o 2º valor: „);
readln(valor2);
soma:= valor1 + valor2;
writeln(„O resultado da soma é: „, soma);
readkey;
end.

4) Programa para ler dois valores reais e apresentar o valor da multiplicação entre
eles:
program calcula_multiplicacao;
uses crt;
var valor1, valor2, resul: real;
begin
clrscr;
write(„Informe o 1º valor: „);
readln(valor1);
write(„Informe o 2º valor: „);
readln(valor2);
resul:= valor1 + valor2;
writeln(„O resultado é: „, resul:1:2);
readkey;
end.

Observação: para apresentação em tela de números reais é necessário a utilização da


formatação nome_da_variavel:1:2 para dizer que o resultado será apresentado com duas
casas decimais.

LISTA DE EXERCÍCIOS A - EXERCÍCIOS BÁSICOS

A1-) Desenvolva um programa para ler quatro valores e calcular a média destes valores.
Prof. Sergio
14

Lógica de Programação em Pascal

A2-) Desenvolva um programa para ler um valor e calcular o seu quadrado (potência de 2).

A3-) Desenvolva um programa para ler os lados de um retângulo e calcular a área deste
retângulo, utilizando a fórmula: ÁREA=LADO1*LADO2.

A4-) Desenvolva um programa para ler uma temperatura em graus Centígrados e apresentá-
la convertida em graus Fahrenheit. A fórmula de conversão é: F=(9*C+160)/5, onde F é a
temperatura em Fahrenheit e C é a temperatura em Centígrados.

A5-) Desenvolva um programa para ler uma temperatura em graus Fahrenheit e apresentá-
la convertida em graus Centígrados. A fórmula de conversão é: C=(F-32)*(5/9), onde F é a
temperatura em Fahrenheit e C é a temperatura em Centígrados.

A6-) Desenvolva um programa para ler o raio e a altura de uma lata de óleo e calcular o valor
do seu volume, utilizando a fórmula: VOLUME=3.14159*R*R*ALTURA.

A7-) Desenvolva um programa para ler o preço de um produto e calcular o preço à vista
deste produto com 10% de desconto. O programa deverá realizar os seguintes passos:
 Estabelecer a leitura da variável PRECO (preço bruto do produto);
 Calcular o valor do desconto (DESCONTO) dividindo o preço por 100 e
multiplicando pelo percentual de desconto ((PRECO/100)*10).
 Calcular o preço do produto à vista (PRECO_VISTA), descontando o valor do
desconto do preço bruto do produto (PRECO - DESCONTO).
Apresentar os valores do preço bruto e do preço à vista, além do desconto: PRECO,
DESCONTO e PRECO_VISTA.

A8-) Desenvolva um programa para calcular o salário líquido de um funcionário a partir do


seu salário bruto. O programa deverá realizar os seguintes passos:
 Estabelecer a leitura da variável HT (horas trabalhadas no mês);
 Estabelecer a leitura da variável VH (valor da hora trabalhada);
 Estabelecer a leitura da variável PD (percentual de desconto);
 Calcular o salário bruto (SB), sendo este a multiplicação das variáveis HT e VH;
 Calcular o total de desconto (TD) com base no valor de PD dividido por 100 e
multiplicado pelo SB;
 Calcular o salário líquido (SL), deduzindo o desconto total do salário bruto (SB –
TD);
Apresentar os valores dos salários bruto e líquido, além do desconto total: SB,TD e SL.

A9-) Desenvolva um programa para efetuar o cálculo da quantidade de litros de combustível


gastos em uma viagem, utilizando-se um automóvel que faz 12km por litro. Para obter o
cálculo, o usuário deverá fornecer o tempo gasto na viagem e a velocidade média durante a
mesma. Desta forma, será possível obter a distância percorrida com a fórmula DISTANCIA =
TEMPO * VELOCIDADE. Tendo o valor da distância, basta calcular a quantidade de litros de
combustível utilizada na viagem com a fórmula: LITROS_USADOS = DISTANCIA / 12. O

Prof. Sergio
15

Lógica de Programação em Pascal

programa deverá apresentar os valores da velocidade média, tempo gasto na viagem, a


distância percorrida e a quantidade de litros utilizados na viagem.

A10-) Desenvolva um programa para ler dois valores para as variáveis A e B, efetuar a troca
dos valores de forma que a variável A passe a possuir o valor da variável B e que a variável B
passe a possuir o valor da variável A. Apresentar os valores trocados.

FUNÇÕES MATEMÁTICAS DA LINGUAGEM PASCAL

A Linguagem Pascal possui diversas funções matemáticas, entre elas:


 ABS: retorna o valor absoluto de um número ou expressão numérica. Exemplo:
ABS(-2)= 2.
 COS: retorna o valor do co-seno de um número ou expressão numérica.
 RANDOM: retorna um número aleatório que varia entre 0 e 1, ou dentro de um
limite indicado.
 RANDOMIZE: permite gerar uma nova semente para a geração de números
aleatórios.
 ROUND: converte um número real em inteiro arredondado. Exemplo: Round(5,6)
= 6.
 SIN: retorna o valor do seno de um número ou expressão numérica.
 SQR: retorna o quadrado do número ou expressão numérica utilizada. Exemplo:
SQR(4) = 16.
 SQRT: retorna a raiz quadrada do número ou expressão numérica utilizada.
Exemplo: SQRT(16) = 4.
 TRUNC: converte um número real em inteiro truncando a parte decimal.
Exemplo: Trunc(5,6) = 5.

Para utilizar todas as funções acima, deve seguir o sintaxe abaixo:


Nome_variavel := função (número ou expressão numérica) ;
Exemplos:
valor_absoluto:= abs(numero_negativo);
valor_coseno:= cos(90);
valor_seno:= sen(90);
valor_aleatorio:= random(100); {gera números entre 0 e 99}
numero:= round(numero_real);
quadrado:= sqr(numero);
raiz:= srqt(numero);

COMENTÁRIOS

{ Os comentários devem estar entre chaves para não serem executados. }

LISTA DE EXERCÍCIOS B - EXERCÍCIOS COM FUNÇÕES MATEMÁTICAS

Prof. Sergio
16

Lógica de Programação em Pascal

B1-) Desenvolva um programa para realizar a leitura de um número e calcular o seu valor
absoluto.

B2-) Desenvolva um programa para realizar a leitura de um número real e apresentar a parte
inteira deste número.

B3-) Desenvolva um programa para realizar a leitura de um número real e apresentar o


resultado do arredondamento deste número.

B4-) Desenvolva um programa para realizar a leitura de um número e calcular a potência de


2 deste número.

B5-) Desenvolva um programa para realizar a leitura de um número e calcular a sua raiz
quadrada.

B6-) Desenvolva um programa para realizar a leitura de dois números e calcular o quociente
inteiro da divisão destes números.

B7-) Desenvolva um programa para realizar a leitura de dois números e calcular o resto da
divisão destes números.

B8-) Desenvolva um programa para realizar a leitura de um número e calcular o co-seno


deste número.

B9-) Desenvolva um programa para realizar a leitura de um número e calcular o seno deste
número.

B10-) Desenvolva um programa para apresentar cinco números aleatórios.

LISTA DE EXERCÍCIOS C - EXERCÍCIOS DE EXPRESSÕES

C1-) Calcule as expressões, respeitando a procedência dos operadores:


a-) resultado:= ABS(-8) + SQR(3) + ABS(-2);
b-) resultado:= TRUNC(6.5) + ROUND(4.7) – 10 DIV 5;
c-) resultado:= 9 MOD 2 – 8 DIV 2 * SQRT(25);
d-) resultado:= SRQ(7 MOD 2 + 4 DIV 2) * ROUND (2.5);

C2-) Sendo A, B, X, Y variáveis do tipo numérico, quais os resultados fornecidos por cada uma
das seguintes funções, onde A:=10, B:=3, X:=2.5 e Y:=1.2.
a-) resultado:= ABS(X + Y – A);
b-) resultado:= ABS(A – SQR(B) + Y);
c-) resultado:= ABS(A – 4 * X);
d-) resultado:= ROUND(A – X);
e-) resultado:= ROUND(B + Y);
f-) resultado:= ROUND(Y – X);
Prof. Sergio
17

Lógica de Programação em Pascal

g-) resultado:= TRUNC(SRQ(B) + X);


h-) resultado:= TRUNC(A / 3 + 1);
i) resultado:= TRUNC(X – 3.2);
j-) resultado:= ABS(A – B * B * B);
k-) resultado:= ABS(A – B);
l-) resultado:= (B + A) DIV (A – 2);
m-) resultado:= (A – B) MOD (B + 1);

C3-) Sendo P, Q, R, S variáveis do tipo numérico, quais os resultados fornecidos por cada
uma das seguintes funções, onde P:=2, Q:=3, R:=12 e S:=4.5.
a-) resultado:= 100 * Q DIV P + R;
b-) resultado:= P * R MOD 5 – Q / 2;
c-) resultado:= ABS(S – R) + SQR(Q) – R / 4 * P – 3;
d-) resultado:= SQRT(R + SQR(P)) + ROUND(5.2);
e-) resultado:= R MOD (P + 1) – Q * R;
f-) resultado:= 1 + SQRT(R + SRQ(P)) – TRUNC(S – 1);
g-) resultado:= 1 + (R + 5) DIV SQR(Q) * ABS(2 * P * Q – R);
h-) resultado:= P + ROUND(2.9 + TRUNC(0.3 + 5) * 2);

Lista de Exercícios D - Exercícios de tabela da verdade

D1-) Com base nas tabelas verdade, determine o resultado lógico das expressões
mencionadas, assinalando se são verdadeiras ou falsas. Considere para as respostas os
seguintes valores:
X= -1, A= 3, B= 7, C= 8 e D= 6

a-) not (X > 3) Verdadeiro ( ) Falso ( )


b-) (X < 1) and not (B > D) Verdadeiro ( ) Falso ( )
c-) not (D < 0) and (C > 5) Verdadeiro ( ) Falso ( )
d-) not (X > 3) or (C < A) Verdadeiro ( ) Falso ( )
e-) (A > B) or (C > B) Verdadeiro ( ) Falso ( )
f-) (X >= 2) or (X < 7) Verdadeiro ( ) Falso ( )
g-) (X < 1) and (B >= D) Verdadeiro ( ) Falso ( )
h-) (D < 0) or (C > 5) Verdadeiro ( ) Falso ( )
i-) not (D > 3) or not (B < 7) Verdadeiro ( ) Falso ( )
j-) (A > B) or not (C > B) Verdadeiro ( ) Falso ( )
k-) (A > B) and (B < D) and (C > A) Verdadeiro ( ) Falso ( )
l-) (A > B) or (B < D) or (C > A) Verdadeiro ( ) Falso ( )
m-) not ( not (A < B) and not (C < A)) Verdadeiro ( ) Falso ( )
n-) not ((D > A) and not (C < B) or (D < B)) Verdadeiro ( ) Falso ( )

Prof. Sergio
18

Lógica de Programação em Pascal

C- ESTRUTURAS DE SELEÇÃO

Para entender melhor o que é uma estrutura de seleção, iremos imaginar um


programa que calcule a média final de um aluno. Nesse momento essa média final é apenas
um número que não diz se ele passou ou não. É necessário verificar se essa média final
atingiu um determinado valor, ou seja, se a média final é maior ou igual a um valor mínimo
requerido. Essa comparação nada mais é que uma condição, que dependendo do seu
resultado o aluno estará aprovado ou reprovado. Essa verificação é realizada dentro de uma
estrutura de seleção.
Estruturas de Seleção, também conhecida como estrutura de decisão ou desvio
condicional, é uma estrutura que permite a execução de um conjunto de instruções A ou B
dependendo de uma condição, ou seja, dependendo do valor da condição será executado o
conjunto de instruções A, ou será executado o conjunto de instruções B.
Existem diversas formas de estruturas de seleção. Na linguagem Pascal são três:
estrutura de seleção simples, estrutura de seleção composta e estrutura de múltipla.

ESTRUTURA DE SELEÇÃO SIMPLES

Nesse tipo de estrutura, um determinado conjunto de instruções será executado


apenas se o valor da condição for verdadeiro.
Sintaxe:
if < condição > then
begin
< conjunto de instruções >;
end;

Observação: se a quantidade de instruções internas do if...then for maior que 1 então


será obrigatório o uso do begin...end para delimitar o bloco de instruções, caso contrário,
não será necessário.

Exemplo 1: Programa que ler a idade de uma pessoa e dizer se essa pessoa tem 20
anos.

program verificar_idade;
uses CRT;
var idade: integer;
begin
clrscr;
write(„Informe a idade: „);
realdn(idade);
if idade = 20 then
begin
writeln(„Essa pessoa tem 20 anos‟);
end;
readkey;
end.

Prof. Sergio
19

Lógica de Programação em Pascal

Segue uma análise do programa do exemplo 1:

program verificar_idade;
Este comando indica o início do programa, cujo nome é verificar_idade.

uses CRT;
Carrega a biblioteca CRT para que os comandos funcionem normalmente.

var idade: integer;


Declara a variável idade do tipo integer, ou seja, número inteiro.

begin
Abre o bloco de comandos do programa principal.

clrscr;
Limpa a tela de execução do programa.

write(„Informe a idade: „);


Apresenta a mensagem “Informe a idade: “ na tela, de forma que o usuário saiba o
que fazer.

realdn(idade);
Realiza a leitura de uma idade e armazena este valor na variável idade.

if idade = 20 then
Verifica se o valor armazenado na variável idade é igual a 20.

begin
Abre o bloco de comandos da estrutura IF.

writeln(„Essa pessoa tem 20 anos‟);


Apresenta a mensagem “Essa pessoas tem 20 anos” se o resultado da condição do IF
for verdadeira.

end;
Finaliza o bloco de comandos da estrutura IF.

readkey;
Cria uma pausa na execução do programa, apresentando o resultado até que uma
tecla seja pressionada.

end.
Finaliza o programa.

Exemplo 2: Programa que ler a idade de uma pessoa e dizer se essa pessoa tem 20
anos ou não.
Prof. Sergio
20

Lógica de Programação em Pascal

program verificar_idade;
uses CRT;
var idade: integer;
begin
clrscr;
write(„Informe a idade: „);
realdn(idade);
if idade = 20 then
begin
writeln(„Essa pessoa tem 20 anos‟);
end;
if idade <> 20 then
begin
writeln(„Essa pessoa não tem 20 anos‟);
end;
readkey;
end.

Segue uma análise do programa do exemplo 1:

program verificar_idade;
Este comando indica o início do programa, cujo nome é verificar_idade.

uses CRT;
Carrega a biblioteca CRT para que os comandos funcionem normalmente.

var idade: integer;


Declara a variável idade do tipo integer, ou seja, número inteiro.

begin
Abre o bloco de comandos do programa principal.

clrscr;
Limpa a tela de execução do programa.

write(„Informe a idade: „);


Apresenta a mensagem “Informe a idade: “ na tela, de forma que o usuário saiba o
que fazer.

realdn(idade);
Realiza a leitura de uma idade e armazena este valor na variável idade.

if idade = 20 then
Verifica se o valor armazenado na variável idade é igual a 20.

begin
Abre o bloco de comandos da 1ª estrutura IF.
Prof. Sergio
21

Lógica de Programação em Pascal

writeln(„Essa pessoa tem 20 anos‟);


Apresenta a mensagem “Essa pessoas tem 20 anos” se o resultado da condição do 1º
IF for verdadeira.

end;
Finaliza o bloco de comandos da 1ª estrutura IF.

if idade <> 20 then


Verifica se o valor armazenado na variável idade é diferente de 20.

begin
Abre o bloco de comandos da 2ª estrutura IF.

writeln(„Essa pessoa não tem 20 anos‟);


Apresenta a mensagem “Essa pessoas tem não 20 anos” se o resultado da condição
do 2º IF for verdadeira.

end;
Finaliza o bloco de comandos da 2ª estrutura IF.

readkey;
Cria uma pausa na execução do programa, apresentando o resultado até que uma
tecla seja pressionada.

end.
Finaliza o programa.

Veja nesse segundo exemplo que as duas condições são verificadas (se a idade é igual
a 20 ou não), sendo que apenas uma das mensagens será escrita, devido às condições.

LISTA DE EXERCÍCIOS E - EXERCÍCIOS DE ESTRUTURAS DE SELEÇÃO SIMPLES

E1-) Desenvolva um programa que leia dois valores e informe qual dos valores é o maior. Se
os números forem iguais, o programa deverá indicar esta igualdade.

E2-) Desenvolva um programa que leia um número e informe se este número é maior,
menor ou igual a 100.

E3-) Desenvolva um programa para auxiliar uma empresa na classificação dos funcionários
nos departamentos da empresa. O programa devera solicitar a cada funcionário o código do
departamento em que ele deverá trabalhar e apresentar ao funcionário a descrição do
departamento correspondente ao código indicado.
Código Departamento
1 Expedição

Prof. Sergio
22

Lógica de Programação em Pascal

2 Recursos Humanos
3 Logística
4 Contabilidade

E4-) Desenvolva um programa para ler dois valores numéricos e apresentar a diferença do
maior pelo menor.

E5-) Desenvolva um programa para efetuar a leitura de três valores (A, B e C) e apresentar os
valores dispostos em ordem crescente.

E6-) Desenvolva um programa para realizar a leitura de um número entre 0 e 10. O


programa deverá apresentar a descrição deste número. Exemplo: 9 – nove.

E7-) Desenvolva um programa para ler dois nomes e apresentá-los em ordem alfabética.

E8-) Desenvolva um programa para ler um número e verificar se o mesmo é menor que 5,
maior que 10 ou entre 5 e 10.

E9-) Desenvolva um programa para ler dois números e realizar a divisão do maior pelo
menor, apresentando o resultado.

E10-) Desenvolva um programa para calcular o reajuste salarial dos funcionários de um


empresa de desenvolvimento de softwares. O programa deverá solicitar a leitura do código e
o salário atual do funcionário e realizar o reajuste salarial de acordo com a tabela abaixo. O
programa deverá apresentar o salário antigo, o novo salário, o valor do reajuste e a função
do funcionário.
Código Função Percentual
1 Operador 5%
2 Programador 10%
3 Analista 15%
Lembrete: Fórmulas para o cálculo do reajuste salarial
REAJUSTE:= (SALARIO_ATUAL / 100) * PERCENTUAL;
SALARIO_NOVO:= SALARIO_ATUAL + REAJUSTE;

ESTRUTURA DE SELEÇÃO COMPOSTA

Nesse tipo de estrutura, teremos pelo menos dois conjuntos de instruções, sendo
que apenas um deles será executado. A escolha de qual conjunto de instruções será
executado dependerá das condições. Se o resultado da condição do If for verdadeiro, então
será executado o bloco de comando/instruções do IF, caso contrário será executado o bloco
de comandos/instruções do else.
Sintaxe:
if < condição > then
begin
< conjunto de instruções A >;
Prof. Sergio
23

Lógica de Programação em Pascal

end
else
begin
< conjunto de instruções B >;
end;

Observação:
1) se a quantidade de instruções internas do if...then ou do else for maior que 1
então será obrigatório o uso do begin...end para delimitar o bloco de instruções, caso
contrário, não será necessário.
2) antes do else não pode ser colocado o símbolo ; (ponto e vírgula).

Exemplo 2: Programa que ler a idade de uma pessoa e dizer se essa pessoa tem 20
anos ou não.

program verificar_idade;
uses CRT;
var idade: integer;
begin
clrscr;
write(„Informe a idade: „);
realdn(idade);
if idade = 20 then
begin
writeln(„Essa pessoa tem 20 anos‟);
end
else
begin
writeln(„Essa pessoa não tem 20 anos‟);
end;
readkey;
end.

Segue uma análise do programa do exemplo 1:

program verificar_idade;
Este comando indica o início do programa, cujo nome é verificar_idade.

uses CRT;
Carrega a biblioteca CRT para que os comandos funcionem normalmente.

var idade: integer;


Declara a variável idade do tipo integer, ou seja, número inteiro.

begin
Abre o bloco de comandos do programa principal.

clrscr;
Prof. Sergio
24

Lógica de Programação em Pascal

Limpa a tela de execução do programa.

write(„Informe a idade: „);


Apresenta a mensagem “Informe a idade: “ na tela, de forma que o usuário saiba o
que fazer.

realdn(idade);
Realiza a leitura de uma idade e armazena este valor na variável idade.

if idade = 20 then
Verifica se o valor armazenado na variável idade é igual a 20.

begin
Abre o bloco de comandos da estrutura IF.

writeln(„Essa pessoa tem 20 anos‟);


Apresenta a mensagem “Essa pessoas tem 20 anos” se o resultado da condição do 1º
IF for verdadeira.

end
Finaliza o bloco de comandos da estrutura IF.

else
O seu bloco de comandos será executado se o resultado da condição (idade = 20) for
falso.

begin
Abre o bloco de comandos da estrutura ELSE.

writeln(„Essa pessoa não tem 20 anos‟);


Apresenta a mensagem “Essa pessoas tem não 20 anos” se o resultado da condição
do IF for verdadeiro.

end;
Finaliza o bloco de comandos da estrutura ELSE.

readkey;
Cria uma pausa na execução do programa, apresentando o resultado até que uma
tecla seja pressionada.

end.
Finaliza o programa.

Veja nesse exemplo que apenas uma condição é verificada (se a idade é igual a 20),
diferentemente da estrutura de seleção simples que realiza duas verificações (se a idade é
igual a 20 e se a idade é diferente de 20). Na estrutura de seleção composta dois blocos (ou
conjuntos) de instruções podem ser executados dependendo de apenas uma condição. Caso
Prof. Sergio
25

Lógica de Programação em Pascal

o resultado dessa condição seja verdadeiro, então o 1º bloco de comandos (correspondente


ao IF) será executado, e se a condição tiver o resultado de falso, então o 2º bloco de
comandos (correspondente ao ELSE) será executado.

LISTA DE EXERCÍCIOS F - EXERCÍCIOS DE ESTRUTURAS DE SELEÇÃO COMPOSTA

F1-) Indique o resultado da variável X dos trechos de programa abaixo. Para as saídas
considere os seguintes valores: A= 3, B= 2, C= -5 e D= 7.

a-) If not (D > 5) Then


X:= (A + B) * D
Else
X:= (A – B) / C;
Writeln(X);

b-) If (A > 2) and (B < 7) Then


X:= (A + 2) * (B – 2)
Else
X:= (A + B) / D * (C + D);
Writeln(X);

c-) If (A = 2) or (B < 7) Then


X:= (A + 2) * (B – 2)
Else
X:= (A + B) / D * (C + D);
Writeln(X);

d-) If (A > 2) or not (B < 7) Then


X:= A + B – 2
Else
X:= A – B;
Writeln(X);

e-) If not (A > 2) or not (B < 7) Then


X:= A + B
Else
X:= A / B;
Writeln(X);

f-) If not (A > 3) and not (B < 5) Then


X:= A + D
Else
X:= D / B;
Writeln(X);

Prof. Sergio
26

Lógica de Programação em Pascal

g-) If (C >= 2) and (B <= 7) Then


X:= (A + D) / (B + D)
Else
X:= D * (C – ( B + D));
Writeln(X);

h-) If (A >= 2) or (C <= 1) Then


X:= (A + D) / 2
Else
X:= D * C;
Writeln(X);

i-) If (A > B) and (C < D) and (A < C) Then


X:= A + B
Else
X:= A – B;
Writeln(X);

j-) If (A < B) or (C > D) or (A < C) Then


X:= C + D
Else
X:= C – D;
Writeln(X);

LISTA DE EXERCÍCIOS G - EXERCÍCIOS DE ESTRUTURAS DE SELEÇÃO COMPOSTA

G1-) Desenvolva um programa que leia dois valores e informe qual dos valores é o maior. Se
os números forem iguais, o programa deverá indicar esta igualdade.

G2-) Desenvolva um programa que leia um número e informe se este número é maior,
menor ou igual a 100.

G3-) Desenvolva um programa para auxiliar uma empresa na classificação dos funcionários
nos departamentos da empresa. O programa devera solicitar a cada funcionário o código do
departamento em que ele deverá trabalhar e apresentar ao funcionário a descrição do
departamento correspondente ao código indicado.
Código Departamento
1 Expedição
2 Recursos Humanos
3 Logística
4 Contabilidade
5 Departamento Pessoal
6 Informática

Prof. Sergio
27

Lógica de Programação em Pascal

G4-) Desenvolva um programa para auxiliar uma escolinha de futebol na classificação das
categorias das equipes de futebol. O programa deverá ler a idade da criança e apresentar o
nome da categoria em a criança deve jogar, através da tabela abaixo:
Idade Categoria
6 a 8 anos Dente de Leite
9 a 11 anos Pré-Mirim
12 e 13 anos Mirim
14 e 15 anos Infantil
16 e 17 anos Juvenil
18 a 20 anos Juniores

G5-) Desenvolva um programa para ler quatro valores referentes a 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 5. Se o aluno não foi aprovado, indicar uma mensagem
informando esta condição. Apresentar junto com a mensagem o valor da média do aluno
para qualquer condição.

G6-) Desenvolva um programa para ler quatro valores referentes a 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. Se o valor da média for menor que 7, solicitar a nota de
exame, somar com o valor da média e obter nova média. Se a nova média for maior ou igual
a 5, apresentar uma mensagem dizendo que o aluno foi aprovado em exame. Se o aluno não
foi aprovado, indicar uma mensagem informando esta condição. Apresentar junto com as
mensagens o valor da média do aluno, para qualquer condição.

G7-) Desenvolva um programa para calcular o reajuste salarial dos funcionários de um


empresa. O programa deverá solicitar a leitura do código e o salário atual do funcionário e
realizar o reajuste salarial de acordo com a tabela abaixo. O programa deverá apresentar os
seguintes valores: salário antigo, salário novo e reajuste.
Código Percentual
1 5%
2 10%
3 15%
4 20%
5 25%
6 30%
Lembrete: Fórmulas para o cálculo do reajuste salarial
REAJUSTE:= (SALARIO_ATUAL / 100) * PERCENTUAL;
SALARIO_NOVO:= SALARIO_ATUAL + REAJUSTE;

G8-) Desenvolva um programa para calcular o reajuste salarial dos funcionários de um


empresa de desenvolvimento de softwares. O programa deverá solicitar a leitura do código e
o salário atual do funcionário e realizar o reajuste salarial de acordo com a tabela abaixo. O
programa deverá apresentar o salário antigo, o novo salário, o valor do reajuste e a função
do funcionário.
Código Função Percentual
Prof. Sergio
28

Lógica de Programação em Pascal

1 Operador 5%
2 Programador 10%
3 Analista 15%
4 Gerente 25%

G9-) Desenvolva um programa para ler três valores (X, Y e Z). O programa deverá verificar se
estes três valores podem ser os comprimentos dos lados de um triângulo e, se forem,
verificar se é um triângulo eqüilátero, isósceles ou escaleno. Se eles não forem um triângulo,
escrever uma mensagem.
Propriedades e definições dos triângulos:
 O comprimento de cada lado de um triângulo é menor do que a soma dos
comprimentos dos outros dois lados;
 Chama-se triângulo eqüilátero ao triângulo que tem os comprimentos dos três
lados iguais;
 Chama-se triângulo isósceles ao triângulo que tem os comprimentos de dois lados
iguais. Portanto, todo triângulo eqüilátero é também isósceles;
 Chama-se triângulo escaleno ao triângulo que tem os comprimentos de seus três
lados diferentes.

G10-) Desenvolva um programa para efetuar a leitura de três valores (A, B e C) e apresentar
os valores dispostos em ordem crescente.

G11-) Desenvolva um programa para realizar a leitura de três valores (A, B e C) e calcular a
equação do 2º grau, apresentando as duas raízes, se para os valores informados for possível
realizar o referido cálculo.

G12-) Desenvolva um programa para ler um número e indicar se ele é um número par ou
ímpar.

ESTRUTURA DE SELEÇÃO MÚLTIPLA

Nesse tipo de estrutura, teremos um valor ordinal (número ou expressão numérica


com resultado inteiro ou um caractere ou um valor lógico) para ser utilizado na comparação
automática com diversos valores. A estrutura case irá verificar se esse valor ordinal é igual a
alguns dos valores de comparação. Se caso esse valor ordinal for igual a um destes valores
de comparação, o bloco de instruções correspondente será executado, caso contrário será
executado o bloco de comando da estrutura ELSE.
Sintaxe:
case < expressão > of
< valor 1 > : begin
< conjunto de instruções 1 >;
end;
< valor 2 > : begin
< conjunto de instruções 2 >;
end;
Prof. Sergio
29

Lógica de Programação em Pascal

.
.
.
< valor n > : begin
< conjunto de instruções N >;
end
else
begin
< conjunto de instruções B >;
end;
end;

Observação:
1) se a quantidade de instruções internas de cada valor ou do else for maior que 1
então será obrigatório o uso do begin...end para delimitar o bloco de instruções, caso
contrário, não será necessário.
2) antes do else não pode ser colocado o símbolo ; (ponto e vírgula).
3) o conjunto de instruções internas ao ELSE somente será executado se todas as
comparações com os diversos valores retornarem o valor falso. O bloco de comandos ELSE é
opcional.

Exemplo: Programa para ler um número entre 1 e 5 e apresentar a sua descrição.

program escrever_numero;
uses CRT;
var numero: byte;
begin
clrscr;
write(„Informe um número entre 1 e 5: „);
realdn(numero);
case (numero) of
1: writeln(„O número „, numero, „ é um.‟);
2: writeln(„O número „, numero, „ é dois.‟);
3: writeln(„O número „, numero, „ é três.‟);
4: writeln(„O número „, numero, „ é quatro.‟);
5: writeln(„O número „, numero, „ é cinco.‟)

else
writeln(„Número fora da faixa solicitada‟);
end;
readkey;
end.

Segue uma análise do programa do exemplo:

program escrever_numero;
Este comando indica o início do programa, cujo nome é escrever_numero.

Prof. Sergio
30

Lógica de Programação em Pascal

uses CRT;
Carrega a biblioteca CRT para que os comandos funcionem normalmente.

var numero: byte;


Declara a variável idade do tipo byte, ou seja, número inteiro entre 0 e 255.

begin
Abre o bloco de comandos do programa principal.

clrscr;
Limpa a tela de execução do programa.

write(„Informe um número entre 1 e 5: „);


Apresenta a mensagem “Informe um número entre 1 e 5: “ na tela, de forma que o
usuário saiba o que fazer.

realdn(numero);
Realiza a leitura de um número e armazena este valor na variável numero.

case (numero) of
Abre a estrutura case associando o valor da variável número ao valor ordinal.

1: writeln(„O número „, numero, „ é um.‟);


Verifica se o valor da variável numero é 1, se for, a mensagem irá aparecer na tela..

2: writeln(„O número „, numero, „ é dois.‟);


Verifica se o valor da variável numero é 2, se for, a mensagem irá aparecer na tela..

3: writeln(„O número „, numero, „ é três.‟);


Verifica se o valor da variável numero é 3, se for, a mensagem irá aparecer na tela..

4: writeln(„O número „, numero, „ é quatro.‟);


Verifica se o valor da variável numero é 4, se for, a mensagem irá aparecer na tela..

5: writeln(„O número „, numero, „ é cinco.‟)


Verifica se o valor da variável numero é 5, se for, a mensagem irá aparecer na tela..

else
O seu bloco de comandos será executado se o valor da variável numero for diferente
de todos os valores de comparação.

writeln(„Número fora da faixa solicitada‟);


Se o valor da variável numero for diferente dos valores de comparação, a mensagem
“Número fora da faixa solicitada” será apresentada na tela.

end;
Finaliza o bloco de comandos da estrutura CASE.
Prof. Sergio
31

Lógica de Programação em Pascal

readkey;
Cria uma pausa na execução do programa, apresentando o resultado até que uma
tecla seja pressionada.

end.
Finaliza o programa.

LISTA DE EXERCÍCIOS H - EXERCÍCIOS DE ESTRUTURAS DE SELEÇÃO MÚLTIPLA

H1-) Desenvolva um programa para realizar a leitura de um código de erro e retornar a


mensagem correspondente ao código informado de acordo com a tabela abaixo:
Código Mensagem de Erro
1 Identificador Inválido
2 Esperando Número Inteiro
3 Tipo de Dado Indefinido
4 Parâmetro Incorreto
5 Memória Insuficiente

H2-) Desenvolva um programa para auxiliar uma empresa na classificação dos funcionários
nos departamentos da empresa. O programa devera solicitar a cada funcionário o código do
departamento em que ele deverá trabalhar e apresentar ao funcionário a descrição do
departamento correspondente ao código indicado.
Código Departamento
1 Expedição
2 Recursos Humanos
3 Logística
4 Contabilidade
5 Departamento Pessoal
6 Informática

H3-) Desenvolva um programa para calcular o reajuste salarial dos funcionários de um


empresa. O programa deverá solicitar a leitura do código e o salário atual do funcionário e
realizar o reajuste salarial de acordo com a tabela abaixo. O programa deverá apresentar os
seguintes valores: salário antigo, salário novo e reajuste.
Código Percentual
1 5%
2 10%
3 15%
4 20%
5 25%
6 30%
Lembrete: Fórmulas para o cálculo do reajuste salarial
REAJUSTE:= (SALARIO_ATUAL / 100) * PERCENTUAL;
SALARIO_NOVO:= SALARIO_ATUAL + REAJUSTE;
Prof. Sergio
32

Lógica de Programação em Pascal

H4-) Desenvolva um programa para calcular o reajuste salarial dos funcionários de um


empresa de desenvolvimento de softwares. O programa deverá solicitar a leitura do código e
o salário atual do funcionário e realizar o reajuste salarial de acordo com a tabela abaixo. O
programa deverá apresentar o salário antigo, o novo salário, o valor do reajuste e a função
do funcionário.
Código Função Percentual
1 Operador 5%
2 Programador 10%
3 Analista 15%
4 Gerente 25%

H5-) Desenvolva um programa para auxiliar uma escolinha de futebol na classificação das
categorias das equipes de futebol. O programa deverá ler a idade da criança e apresentar o
nome da categoria em a criança deve jogar, através da tabela abaixo:
Idade Categoria
6 a 8 anos Dente de Leite
9 a 11 anos Pré-Mirim
12 e 13 anos Mirim
14 e 15 anos Infantil
16 e 17 anos Juvenil
18 a 20 anos Juniores

Prof. Sergio
33

Lógica de Programação em Pascal

D- LAÇOS DE REPETIÇÃO

Existem situações onde é necessário repetir a execução de um determinado conjunto


de instruções. Isto pode ser conseguido de duas formas: a primeira é duplicando esse
conjunto de instruções tantas vezes necessário e a outra forma é com a utilização dos laços
de repetição.
Laços de Repetição, também conhecidas como estruturas de repetição ou malhas de
repetição ou loopings, são estruturas que permite a execução de um conjunto de instruções
por diversas vezes, quantidade essa que pode ser pré-definida ou não. Os laços de repetição
existentes na linguagem Pascal são: laço de repetição com variável de controle, laço de
repetição com teste lógico no início e laço de repetição com teste lógico no fim.

Laço de Repetição com Variável de Controle

Esse laço de repetição permite controlar o número de repetições através de uma


variável de controle automaticamente.
Sintaxe:
for < variavel_controle > := < valor_inicial> to/downto < valor_final > do
begin
< conjunto de instruções >;
end;

Observações:
1) A opção to indica que o valor da variável de controle será alterada com o
acréscimo de 1 valor. Exemplo: após a primeira execução, o valor da variável de
controle será -> variavel_controle = variavel_controle + 1.
2) A opção downto indica que o valor da variável de controle será alterada com o
acréscimo de -1 valor. Exemplo: após a primeira execução, o valor da variável de
controle será -> variavel_controle = variavel_controle - 1.
3) Se a quantidade de instruções internas do for...to...do for maior que 1 então será
obrigatório o uso do begin...end para delimitar o bloco de instruções, caso
contrário, não será necessário.

Exemplo 1) Programa para apresentar a mensagem “Linguagem Pascal” 5 vezes.

program escrever_mensagem;
uses CRT;
var i: byte;
begin
clrscr;
for i:= 1 to 5 do
begin
writeln(„Linguagem Pascal‟);
end;
readkey;
end.
Segue uma análise do programa do exemplo 1:
Prof. Sergio
34

Lógica de Programação em Pascal

program escrever_mensagem;
Este comando indica o início do programa, cujo nome é escrever_mensagem.

uses CRT;
Carrega a biblioteca CRT para que os comandos funcionem normalmente.

var i: byte;
Declara a variável i do tipo byte, ou seja, número inteiro entre 0 e 255.

begin
Abre o bloco de comandos do programa principal.

clrscr;
Limpa a tela de execução do programa.

for i:= 1 to 5 do
Inicia a estrutura de repetição, cujo variável de controle começa com o valor em 1 e
finaliza em 5 (total de repetições é: final – inicial + 1).

begin
Abre o bloco de comandos da estrutura FOR.

writeln(„Linguagem Pascal‟);
Apresenta a mensagem “Linguagem Pascal” o tanto de vezes controlado pela
estrutura FOR.

end;
Finaliza o bloco de comandos da estrutura FOR.

readkey;
Cria uma pausa na execução do programa, apresentando o resultado até que uma
tecla seja pressionada.

end.
Finaliza o programa.

Exemplo 2) Programa para apresentar a mensagem “Linguagem Pascal” tantas vezes


quanto o usuário quiser.

program escrever_mensagem;
uses CRT;
var i, vezes: byte;
begin
clrscr;
write(„Informe o número de repetições: ‟);

Prof. Sergio
35

Lógica de Programação em Pascal

readln(vezes);
for i:= 1 to vezes do
begin
writeln(„Linguagem Pascal‟);
end;
readkey;
end.

Segue uma análise do programa do exemplo 2:

program escrever_mensagem;
Este comando indica o início do programa, cujo nome é escrever_mensagem.

uses CRT;
Carrega a biblioteca CRT para que os comandos funcionem normalmente.

var i, vezes: byte;


Declara a variável i e vezes do tipo byte, ou seja, número inteiro entre 0 e 255.

begin
Abre o bloco de comandos do programa principal.

clrscr;
Limpa a tela de execução do programa.

write(„Informe o número de repetições: „);


Apresenta a mensagem “Informe o número de repetições: “ na tela, de forma que o
usuário saiba o que fazer.

realdn(vezes);
Realiza a leitura de um número e armazena este valor na variável vezes.

for i:= 1 to vezes do


Inicia a estrutura de repetição, cujo variável de controle começa com o valor em 1 e
finaliza no valor informado na variável vezes (total de repetições é: final – inicial + 1).

begin
Abre o bloco de comandos da estrutura FOR.

writeln(„Linguagem Pascal‟);
Apresenta a mensagem “Linguagem Pascal” o tanto de vezes controlado pela
estrutura FOR.

end;
Finaliza o bloco de comandos da estrutura FOR.

readkey;

Prof. Sergio
36

Lógica de Programação em Pascal

Cria uma pausa na execução do programa, apresentando o resultado até que uma
tecla seja pressionada.

end.
Finaliza o programa.

LISTA DE EXERCÍCIOS I - EXERCÍCIOS DE ESTRUTURAS DE REPETIÇÃO COM VARIÁVEL DE CONTROLE

I1-) Desenvolva um programa para apresentar os números de 1 até 100 em ordem crescente
e depois em ordem decrescente.

I2-) Desenvolva um programa para apresentar as letras de “a” até “z” em ordem crescente e
depois em ordem decrescente.

I3-) Desenvolva um programa para apresentar os resultados da tabuada do número 5 no


seguinte layout: “5 x “ N “ = “ 5*N

I4-) Desenvolva um programa para ler um número e apresentar os resultados da tabuada


deste número.

I5-) Desenvolva um programa para ler quatro notas de 10 alunos e calcular a média destas
notas por aluno.

I6-) Desenvolva um programa para ler a média de 20 alunos e calcular a quantidade de


alunos que foram aprovados. Para um aluno ser aprovado a sua média deve ser maior ou
igual a 6.

I7-) Desenvolva um programa para ler a idade de um conjunto de alunos (N alunos) de uma
sala de aula e calcular a média das idades destes alunos.

I8-) Desenvolva um programa para calcular o reajuste salarial de todos os funcionários de


um empresa. O programa deverá solicitar a leitura da quantidade de funcionários, além do
código e o salário atual de cada funcionário e realizar o reajuste salarial de cada funcionário
de acordo com a tabela abaixo. O programa deverá apresentar os seguintes valores para
cada funcionário: salário antigo, salário novo e reajuste.
Código Percentual
1 5%
2 15%
3 25%
4 30%

I9-) Desenvolva um programa para realizar uma pesquisa de saga de filmes com 20 pessoas.
O programa deverá solicitar a opção de melhor saga de filme para o usuário. As sagas
concorrentes são: Matrix e Senhor dos Anéis. Ao final o programa deverá indicar qual foi à

Prof. Sergio
37

Lógica de Programação em Pascal

saga vencedora e o total de votos de cada saga. Se ocorrer um empate, o mesmo deverá ser
indicado.

I10-) Desenvolva um programa para realizar a leitura de um conjunto de números (N


números) e ao final indicar qual é o maior e o menor número deste conjunto.

I11-) Desenvolva um programa para calcular e apresentar o total da soma obtida dos cem
primeiros números inteiros (1+2+3+4+5+6+7+...+96+97+98+99+100).

I12-) Desenvolva um programa para apresentar todos os valores numéricos inteiros ímpares
situados na faixa de 0 à 50. Para verificar se o número é impar, efetuar dentro do laço a
verificação lógica desta condição com a instrução if, perguntando se o número é impar.
Sendo, mostre-o.

I13-) Desenvolva um programa para calcular a soma de todos os numero impares de 0 à 20 e


a multiplicação de todos os números pares de 0 à 20.

I14-) Desenvolva um programa para ler um número e calcular o fatorial deste número.
Fatorial: F(4) = 4! = 4*3*2*1 = 24
F(0) = 0! = 1

I15-) Desenvolva um programa para calcular a potência de um número por uma base
qualquer. O programa deverá realizar a leitura da base e do expoente.

Laço de Repetição com Teste Lógico no Início

Esse laço de repetição permite controlar o número de repetições através de uma


condição no início da estrutura. Enquanto esta condição for verdadeira, o bloco de
comandos será executado. No momento em que esta condição for falso, o bloco de
comandos não será mais executado e a execução do programa continuará a partir do
primeiro comando existente após a estrutura do laço de repetição.
Sintaxe:
While < condição > do
begin
< conjunto de instruções >;
end;

Observações:
1) Se a quantidade de instruções internas do for...to...do for maior que 1 então será
obrigatório o uso do begin...end para delimitar o bloco de instruções, caso
contrário, não será necessário.
2) Se a quantidade de comparações na condição for maior que 1, será necessário a
utilização de parênteses para separar as condições.

Exemplo 1) Programa para apresentar a mensagem “Linguagem Pascal” 5 vezes.


Prof. Sergio
38

Lógica de Programação em Pascal

program escrever_mensagem;
uses CRT;
var cont: byte;
begin
clrscr;
cont:= 0;
while cont < 5 do
begin
writeln(„Linguagem Pascal‟);
cont:= cont + 1;
end;
readkey;
end.

Segue uma análise do programa do exemplo 1:

program escrever_mensagem;
Este comando indica o início do programa, cujo nome é escrever_mensagem.

uses CRT;
Carrega a biblioteca CRT para que os comandos funcionem normalmente.

var cont: byte;


Declara a variável cont do tipo byte, ou seja, número inteiro entre 0 e 255.

begin
Abre o bloco de comandos do programa principal.

clrscr;
Limpa a tela de execução do programa.

cont:= 0;
Atribui o valor 0 a variável cont. Esse processo é chamado de inicialização da variável.

while cont < 5 do


Inicia a estrutura de repetição, cujo o número de repetições será determinado pela
condição (nesse caso, enquanto o valor da variável cont for menor que 5, o bloco de
comandos será executado).

begin
Abre o bloco de comandos da estrutura WHILE.

writeln(„Linguagem Pascal‟);
Apresenta a mensagem “Linguagem Pascal” o tanto de vezes controlado pela
estrutura WHILE.

cont:= cont + 1;
Prof. Sergio
39

Lógica de Programação em Pascal

Atribui um novo valor a variável cont (somou 1 no valor anterior da própria variável
cont). Esse processo é chamado de incremento de variável.

end;
Finaliza o bloco de comandos da estrutura WHILE.

readkey;
Cria uma pausa na execução do programa, apresentando o resultado até que uma
tecla seja pressionada.

end.
Finaliza o programa.

Exemplo 2) Programa para apresentar a mensagem “Linguagem Pascal” tantas vezes


quanto o usuário quiser.

program escrever_mensagem;
uses CRT;
var cont, vezes: byte;
begin
clrscr;
write(„Informe o número de repetições: ‟);
readln(vezes);
cont:= 0;
while cont < 5 do
begin
writeln(„Linguagem Pascal‟);
cont:= cont + 1;
end;
readkey;
end.

Segue uma análise do programa do exemplo 1:

program escrever_mensagem;
Este comando indica o início do programa, cujo nome é escrever_mensagem.

uses CRT;
Carrega a biblioteca CRT para que os comandos funcionem normalmente.

var cont: byte;


Declara as variáveis cont e vezes do tipo byte, ou seja, número inteiro entre 0 e 255.

begin
Abre o bloco de comandos do programa principal.

clrscr;
Prof. Sergio
40

Lógica de Programação em Pascal

Limpa a tela de execução do programa.

write(„Informe o número de repetições: „);


Apresenta a mensagem “Informe o número de repetições: “ na tela, de forma que o
usuário saiba o que fazer.

realdn(vezes);
Realiza a leitura de um número e armazena este valor na variável vezes.

cont:= 0;
Atribui o valor 0 a variável cont. Esse processo é chamado de inicialização da variável.

while cont < vezes do


Inicia a estrutura de repetição, cujo o número de repetições será determinado pela
condição (nesse caso, enquanto o valor da variável cont for menor que o valor armazenado
na variável vezes, o bloco de comandos será executado).

begin
Abre o bloco de comandos da estrutura WHILE.

writeln(„Linguagem Pascal‟);
Apresenta a mensagem “Linguagem Pascal” o tanto de vezes controlado pela
estrutura WHILE.

cont:= cont + 1;
Atribui um novo valor a variável cont (somou 1 no valor anterior da própria variável
cont). Esse processo é chamado de incremento de variável.

end;
Finaliza o bloco de comandos da estrutura FOR.

readkey;
Cria uma pausa na execução do programa, apresentando o resultado até que uma
tecla seja pressionada.

end.
Finaliza o programa.

Observação: a condição da estrutura de repetição com teste lógico no início pode


envolver todos os tipos de dados e qualquer tamanho ou quantidade de comparações,
desde que o resultado destas comparações seja booleano, ou seja, verdadeiro ou falso.

LISTA DE EXERCÍCIOS J - EXERCÍCIOS DE ESTRUTURAS DE REPETIÇÃO COM TESTE LÓGICO NO INÍCIO

J1-) Desenvolva um programa para apresentar os números de 1 até 100 em ordem crescente
e depois em ordem decrescente.
Prof. Sergio
41

Lógica de Programação em Pascal

J2-) Desenvolva um programa para ler um número e escrever todos os números de 0 até
este número, indicando se cada um é par ou ímpar.

J3-) Desenvolva um programa para uma empresa fazer um pesquisa de mercado para saber
se as pessoas gostaram ou não de um novo produto lançado no mercado. Para isso, o
programa deverá solicitar o sexo do entrevistado e sua resposta (sim ou não). O programa
deverá realizar a pesquisa enquanto houver a solicitação de uma nova entrada de dados
através da variável RESP. Ao final o programa deverá apresentar os seguintes resultados:
 O número de pessoas que responderam sim;
 O número de pessoas que responderam não;
 A porcentagem de pessoas do sexo feminino que responderam sim;
 A porcentagem de pessoas do sexo masculino que responderam não.

J4-) Desenvolva um programa para uma Universidade realizar uma pesquisa entre os alunos
que ingressam nesta Universidade. Para isso, o programa deverá solicitar o sexo do
entrevistado e o código do curso que deseja realizar.
Código Curso
1 Engenharia da Computação
2 Administração
3 Medicina
4 Psicologia
O programa deverá realizar a pesquisa enquanto houver a solicitação de uma nova
entrada de dados através da variável RESP. Ao final o programa deverá apresentar os
seguintes resultados:
 O total de homens que pretendem cursar Engenharia da Computação;
 O total de mulheres que pretendem cursar Psicologia;
 O percentual de pessoas que pretendem cursar Medicina;
 O percentual de homens que pretendem cursar Administração;
 O percentual de mulheres que pretendem cursar Medicina.

J5-) Desenvolva um programa para ler um número e calcular o fatorial deste número.
Fatorial: F(4) = 4! = 4*3*2*1 = 24
F(0) = 0! = 1

J6-) Desenvolva um programa para realizar um censo na cidade de São Paulo. O programa
deverá solicitar a leitura da idade, da região em que reside (Centro, Leste, Norte, Oeste ou
Sul) e o sexo das pessoas. O programa deverá realizar a pesquisa enquanto houver a
solicitação de uma nova entrada de dados através da variável RESP. Ao final o programa
deverá apresentar os seguintes resultados:
 O total de homens e mulheres que residem em cada região da cidade;
 O percentual de homens e mulheres que residem em cada região da cidade;
 O total de homens menores de idade (menores de 18) que residem na Zona Leste
da cidade;
 O percentual de mulheres maiores de idade (maiores de 18) que residem na Zona
Sul da cidade;
Prof. Sergio
42

Lógica de Programação em Pascal

 O percentual de homens que residem na Zona Central da cidade;


 O total de pessoas que residem em São Paulo.

J7-) Desenvolva um programa para realizar uma pesquisa de saga de filmes. O programa
deverá solicitar a opção de melhor saga de filme para o usuário. As sagas concorrentes são:
Matrix e Senhor dos Anéis. Ao final o programa deverá indicar qual foi à saga vencedora e o
total de votos de cada saga. Se ocorrer um empate, o mesmo deverá ser indicado. O
programa deverá realizar a pesquisa enquanto houver a solicitação de uma nova entrada de
dados através da variável RESP.

J8-) Desenvolva um programa para realizar uma eleição entre dois candidatos ao cargo de
gerente de uma empresa. O programa deverá apresentar o nome dos candidatos (Fujiro
NaKombi e Takaro Né) para a escolha dos eleitores. Ao final o programa deverá indicar qual
será o novo gerente da empresa, o total de votos e o percentual de votos de cada candidato.
Se ocorrer um empate, o mesmo deverá ser indicado e o programa deverá solicitar um voto
de desempate. O programa deverá realizar a pesquisa enquanto houver a solicitação de uma
nova entrada de dados através da variável RESP.

J9-) Desenvolva um programa para realizar uma pesquisa de cursos universitários para uma
Universidade. Os cursos que estarão na pesquisa são: Ciência da Computação, Direito e
Letras. O programa deverá receber o voto de cada entrevistado e ao final deverá apresentar
a colocação, o total de votos e o percentual de votos de cada curso. Os possíveis empates
também deverão ser verificados. O programa deverá realizar a pesquisa enquanto houver a
solicitação de uma nova entrada de dados através da variável RESP.

J10-) Desenvolva um programa para realizar uma pesquisa de mercado sobre os automóveis:
CORSA, PALIO e GOL. O programa deverá receber o voto de cada entrevistado e ao final
deverá apresentar a colocação, o total de votos e o percentual de votos de cada automóvel.
Os possíveis empates também deverão ser verificados. O programa deverá realizar a
pesquisa enquanto houver a solicitação de uma nova entrada de dados através da variável
RESP.

Laço de Repetição com Teste Lógico no Fim

Esse laço de repetição permite controlar o número de repetições através de uma


condição no final da estrutura. Enquanto esta condição for falsa, o bloco de comandos será
executado, ou seja, o bloco de comandos será executado até que a condição seja verdadeira.
Nesse momento, o bloco de comandos não será mais executado e a execução do programa
continuará a partir do primeiro comando existente após a estrutura do laço de repetição.

Sintaxe:
repeat
< conjunto de instruções >;
until < condição >;
Prof. Sergio
43

Lógica de Programação em Pascal

Observações:
1) Se a quantidade de comparações na condição for maior que 1, será necessário a
utilização de parênteses para separar as condições.
2) Pelo menos uma vez o conjunto de instruções será executado antes da primeira
verificação da condição.

Exemplo 1) Programa para apresentar a mensagem “Linguagem Pascal” 5 vezes.

program escrever_mensagem;
uses CRT;
var cont: byte;
begin
clrscr;
cont:= 0;
repeat
writeln(„Linguagem Pascal‟);
cont:= cont + 1;
until (cont = 5);
readkey;
end.

Segue uma análise do programa do exemplo 1:

program escrever_mensagem;
Este comando indica o início do programa, cujo nome é escrever_mensagem.

uses CRT;
Carrega a biblioteca CRT para que os comandos funcionem normalmente.

var cont: byte;


Declara a variável cont do tipo byte, ou seja, número inteiro entre 0 e 255.

begin
Abre o bloco de comandos do programa principal.

clrscr;
Limpa a tela de execução do programa.

cont:= 0;
Atribui o valor 0 a variável cont. Esse processo é chamado de inicialização da variável.

repeat
Inicia a estrutura de repetição.

writeln(„Linguagem Pascal‟);

Prof. Sergio
44

Lógica de Programação em Pascal

Apresenta a mensagem “Linguagem Pascal” o tanto de vezes controlado pela


estrutura REPEAT.

cont:= cont + 1;
Atribui um novo valor a variável cont (somou 1 no valor anterior da própria variável
cont). Esse processo é chamado de incremento de variável.

until (cont = 5);


Finaliza o bloco de comandos da estrutura UNTIL, cujo número de repetições será
determinado pela condição (nesse caso, enquanto o valor da variável cont for diferente que
5, o bloco de comandos será executado).

readkey;
Cria uma pausa na execução do programa, apresentando o resultado até que uma
tecla seja pressionada.

end.
Finaliza o programa.

Exemplo 2) Programa para apresentar a mensagem “Linguagem Pascal” tantas vezes


quanto o usuário quiser.

program escrever_mensagem;
uses CRT;
var cont, vezes: byte;
begin
clrscr;
write(„Informe o número de repetições: ‟);
readln(vezes);
cont:= 0;
repeat
writeln(„Linguagem Pascal‟);
cont:= cont + 1;
until (cont = vezes);
readkey;
end.

Segue uma análise do programa do exemplo 1:

program escrever_mensagem;
Este comando indica o início do programa, cujo nome é escrever_mensagem.

uses CRT;
Carrega a biblioteca CRT para que os comandos funcionem normalmente.

var cont: byte;


Declara as variáveis cont e vezes do tipo byte, ou seja, número inteiro entre 0 e 255.
Prof. Sergio
45

Lógica de Programação em Pascal

begin
Abre o bloco de comandos do programa principal.

clrscr;
Limpa a tela de execução do programa.

write(„Informe o número de repetições: „);


Apresenta a mensagem “Informe o número de repetições: “ na tela, de forma que o
usuário saiba o que fazer.

realdn(vezes);
Realiza a leitura de um número e armazena este valor na variável vezes.

cont:= 0;
Atribui o valor 0 a variável cont. Esse processo é chamado de inicialização da variável.

repeat
Inicia a estrutura de repetição.

writeln(„Linguagem Pascal‟);
Apresenta a mensagem “Linguagem Pascal” o tanto de vezes controlado pela
estrutura REPEAT.

cont:= cont + 1;
Atribui um novo valor a variável cont (somou 1 no valor anterior da própria variável
cont). Esse processo é chamado de incremento de variável.

until (cont = vezes);


Finaliza o bloco de comandos da estrutura UNTIL, cujo número de repetições será
determinado pela condição (nesse caso, enquanto o valor da variável cont for diferente que
o valor da variável vezes, o bloco de comandos será executado).

readkey;
Cria uma pausa na execução do programa, apresentando o resultado até que uma
tecla seja pressionada.

end.
Finaliza o programa.

Observação: a condição da estrutura de repetição com teste lógico no fim pode


envolver todos os tipos de dados e qualquer tamanho ou quantidade de comparações,
desde que o resultado destas comparações seja booleano, ou seja, verdadeiro ou falso.

LISTA DE EXERCÍCIOS K - EXERCÍCIOS DE ESTRUTURAS DE REPETIÇÃO COM TESTE LÓGICO NO INÍCIO

Prof. Sergio
46

Lógica de Programação em Pascal

K1-) Desenvolva um programa para apresentar os números de 1 até 100 em ordem


crescente e depois em ordem decrescente.

K2-) Desenvolva um programa para ler um número e escrever todos os números de 0 até
este número, indicando se cada um é par ou ímpar.

K3-) Desenvolva um programa para uma empresa fazer um pesquisa de mercado para saber
se as pessoas gostaram ou não de um novo produto lançado no mercado. Para isso, o
programa deverá solicitar o sexo do entrevistado e sua resposta (sim ou não). O programa
deverá realizar a pesquisa enquanto houver a solicitação de uma nova entrada de dados
através da variável RESP. Ao final o programa deverá apresentar os seguintes resultados:
 O número de pessoas que responderam sim;
 O número de pessoas que responderam não;
 A porcentagem de pessoas do sexo feminino que responderam sim;
 A porcentagem de pessoas do sexo masculino que responderam não.

K4-) Desenvolva um programa para uma Universidade realizar uma pesquisa entre os alunos
que ingressam nesta Universidade. Para isso, o programa deverá solicitar o sexo do
entrevistado e o código do curso que deseja realizar.
Código Curso
1 Engenharia da Computação
2 Administração
3 Medicina
4 Psicologia
O programa deverá realizar a pesquisa enquanto houver a solicitação de uma nova
entrada de dados através da variável RESP. Ao final o programa deverá apresentar os
seguintes resultados:
 O total de homens que pretendem cursar Engenharia da Computação;
 O total de mulheres que pretendem cursar Psicologia;
 O percentual de pessoas que pretendem cursar Medicina;
 O percentual de homens que pretendem cursar Administração;
 O percentual de mulheres que pretendem cursar Medicina.

K5-) Desenvolva um programa para ler um número e calcular o fatorial deste número.
Fatorial: F(4) = 4! = 4*3*2*1 = 24
F(0) = 0! = 1

K6-) Desenvolva um programa para realizar um censo na cidade de São Paulo. O programa
deverá solicitar a leitura da idade, da região em que reside (Centro, Leste, Norte, Oeste ou
Sul) e o sexo das pessoas. O programa deverá realizar a pesquisa enquanto houver a
solicitação de uma nova entrada de dados através da variável RESP. Ao final o programa
deverá apresentar os seguintes resultados:
 O total de homens e mulheres que residem em cada região da cidade;
 O percentual de homens e mulheres que residem em cada região da cidade;
 O total de homens menores de idade (menores de 18) que residem na Zona Leste
da cidade;
Prof. Sergio
47

Lógica de Programação em Pascal

 O percentual de mulheres maiores de idade (maiores de 18) que residem na Zona


Sul da cidade;
 O percentual de homens que residem na Zona Central da cidade;
 O total de pessoas que residem em São Paulo.

K7-) Desenvolva um programa para realizar uma pesquisa de saga de filmes. O programa
deverá solicitar a opção de melhor saga de filme para o usuário. As sagas concorrentes são:
Matrix e Senhor dos Anéis. Ao final o programa deverá indicar qual foi à saga vencedora e o
total de votos de cada saga. Se ocorrer um empate, o mesmo deverá ser indicado. O
programa deverá realizar a pesquisa enquanto houver a solicitação de uma nova entrada de
dados através da variável RESP.

K8-) Desenvolva um programa para realizar uma eleição entre dois candidatos ao cargo de
gerente de uma empresa. O programa deverá apresentar o nome dos candidatos (Fujiro
NaKombi e Takaro Né) para a escolha dos eleitores. Ao final o programa deverá indicar qual
será o novo gerente da empresa, o total de votos e o percentual de votos de cada candidato.
Se ocorrer um empate, o mesmo deverá ser indicado e o programa deverá solicitar um voto
de desempate. O programa deverá realizar a pesquisa enquanto houver a solicitação de uma
nova entrada de dados através da variável RESP.

K9-) Desenvolva um programa para realizar uma pesquisa de cursos universitários para uma
Universidade. Os cursos que estarão na pesquisa são: Ciência da Computação, Direito e
Letras. O programa deverá receber o voto de cada entrevistado e ao final deverá apresentar
a colocação, o total de votos e o percentual de votos de cada curso. Os possíveis empates
também deverão ser verificados. O programa deverá realizar a pesquisa enquanto houver a
solicitação de uma nova entrada de dados através da variável RESP.

K10-) Desenvolva um programa para realizar uma pesquisa de mercado sobre os


automóveis: CORSA, PALIO e GOL. O programa deverá receber o voto de cada entrevistado e
ao final deverá apresentar a colocação, o total de votos e o percentual de votos de cada
automóvel. Os possíveis empates também deverão ser verificados. O programa deverá
realizar a pesquisa enquanto houver a solicitação de uma nova entrada de dados através da
variável RESP.

Prof. Sergio
48

Lógica de Programação em Pascal

E- LISTA DE ERROS DO PASCAL

LISTA DE ERROS DE COMPILAÇÃO

Código Erro

1 Não existe espaço em memória


2 Identificador esperado
3 Identificador desconhecido
4 Identificador já existente
5 Erro de sintaxe
6 Erro na constante real
7 Erro na constante integer
8 Constante string excede a linha
9 Excesso de arquivos aninhados
10 Fim de arquivo não esperado
11 Linha muito longa
12 Espera a identificação do tipo
13 Muitos arquivos aberto simultaneamente
14 Nome de arquivo inválido
15 Arquivo não encontrado
16 Disco cheio
17 Diretiva de compilação inválida
18 Excesso de arquivos
19 Ponteiro nunca antes declarado
20 Identificador de variável esperada
21 Erro de tipo
22 Estrutura muito larga
23 Faixa de valores inválida para a faixa
24 Componentes definidos em outro arquivo ou objeto
25 Tamanho de string inválido
26 Tipo incompatível
27 Faixa de valores inválida
28 Limite inferior maior que o superior
29 Tipo escalar esperado
30 Constante inteira esperada
31 Constante esperada
32 Constante real ou inteira esperada
33 Ponteiro esperado
34 Tipo do resultado da função inválido
35 Espera um Label
36 Espera BEGIN
37 Espera END
38 Espera expressão Integer
39 Espera expressão Ordinal

Prof. Sergio
49

Lógica de Programação em Pascal

40 Espera EXPRESSÃO Boolean


41 Operando incompatível com operador
42 Erro na expressão
43 Associação ilegal
44 Identificador de campo esperado
45 Arquivo objeto muito grande
46 EXTERN indefinido
47 Registro inválido no objeto
48 Segmento de código muito grande
49 Segmento de dados muito largo
50 Esperda "DO"
51 Definição de "PUBLIC" inválida
52 Definição de "EXTERN" inválida
53 Excesso de definições em "EXTERN"
54 Espera "OF"
55 Espera "INTERFACE"
56 Referência relocável inválida
57 Espera "THEN"
58 Espera "TO" ou "DOWNTO"
59 Forward indefinido
60 Excesso de procedures
61 Typecast indefinido
62 Divisão por zero
63 Tipo de arquivo inválido
64 Tipo de variável não pode ser usado em READ ou WRITE
65 Variável ponteiro esperada
66 Variável String esperada
67 Expressão String esperada
68 Referência Circular em unit
69 Nome de Unit incompátivel
71 Nome de unit duplicado
72 Erro no formato da Unit
73 Implementation esperada
74 Tipos incompatíveis em CASE
75 Variável registro esperada
76 Constante fora da faixa
77 Variável de arquivo esperada
78 Expressão de ponteiro esperada
79 Expressão Integer ou Real esperada
80 Label não está no bloco corrente
81 Label definida anteriormente
82 Label indefinida
83 Argumento @@ inválido
84 UNIT esperada
85 ";" esperado
86 ":" esperado
Prof. Sergio
50

Lógica de Programação em Pascal

87 "," esperado
88 "(" esperado
89 ")" esperado
90 "=" esperado
91 ":=" esperado
92 "[" ou "(." esperado
93 "]" ou ".)" esperado
94 "." esperado
95 ".." esperado
96 Excesso de variáveis
97 Variável de controle do FOR inválida
98 Variável Integer esperada
99 Arquivo ou procedimento não permitido neste ponto
100 Tamanho da String incompatível
101 Erro de ordenação
102 Constante String esperado
103 Variável Integer ou real esperada
104 Variável Ordinal esperada
105 Erro em INLINE
106 Expressão Character esperada
107 Excesso de itens relocados
108 Estouro em operação aritmética
109 Não pode ser utilizado em FOR, WHILE ou REPEAT
110 Tabela de informação de Debug estourou
111 ...
112 Constante CASE fora da faixa
113 Erro na sentença
114 Procedimento de interrupção não pode ser chamado
115 ...
116 A diretiva de compilação 8087 deve estar ativada
117 Endereço do destino não encontrado
118 Inclusão de arquivos não permitida neste ponto
119 Método de hierarquia não pode ser utilizado aqui
120 ...
121 Qualificação inválida
122 Referência de variável inválida
123 Excesso de simbólicos
124 Parte de comando muito grande
125 ...
126 Arquivos devem ter parâmetro "VAR"
127 Excesso de simbólicos condicionais
128 Diretiva condicional em local não apropriado
129 Falta diretiva ENDIF
130 Erro na definição condicional
131 Cabeçalho incompatível com definição anterior
132 Erro crítico em disco
Prof. Sergio
51

Lógica de Programação em Pascal

133 Não é possível avaliar esta expressão


134 Expressão terminada incorretamente
135 Formato especificado inválido
136 Referência indireta inválida
137 Não são permitidas variáveis estruturadas neste local
138 Não pode avaliar falta Unit System
139 Não pode acessar este simbólico
140 Operação com ponto flutuante inválida
141 Não pode compilar Overlays em memória
142 Espera variável Procedure ou Function
143 Referência a Procedure ou Function inválida
144 Não pode tornar esta Unit em Overlay
145 Excesso de aninhamento
146 Erro em acesso a arquivo
147 Tipo "Object" esperado
148 Objeto Local não é permitido
149 Virtual esperado
150 Identificador Method esperado
151 Virtual constructors não são permitidos
152 Identificador Constructor esperado
153 Identificador Destructor esperado
154 Um único Fail dentro de constructors
155 Operação inválida no registro
156 Referência de memória esperada
157 Não pode somar ou subtarir em simbólicos relocáveis
158 Combinação inválida no registro
159 Instruções do 286/287 não habilitadas
160 Referência a simbólico inválida
161 Erro na geração do código
162 ASM esperado
163 Método dinâmico com índice duplicado
164 Identificador de "resourse" duplicado
165 Índice "export" duplicado ou inválido
166 Procedimento ou função esperada
167 Símbolo não exportável
168 Nome de "export" duplicado
169 Cabeçalho de arquivo executável muito grande
170 Excesso de segmentos

LISTA DE ERROS DE EXECUÇÃO

Código Erro

1 Número de função inválido


2 Arquivo não encontrado
Prof. Sergio
52

Lógica de Programação em Pascal

3 Path não encontrado


4 Muitos arquivos abertos simultaneamente
5 Erro de acesso a arquivo
6 Handle do arquivo inválido
12 Código de acesso de arquivo inválido
15 Número de drive inválido
16 Diretório atual não pode ser removido
17 Não pode haver renomeação dea arquivos entre discos
18 Não há mais arquivos
100 Erro de leitura em disco
101 Erro de gravação em disco
102 Arquivo não assinalado
103 Arquivo fechado
104 Arquivo não foi aberto para "input"
105 Arquivo não foi aberto para "output"
106 Formato numérico inválido
150 Disco protegido
151 Erro interno do dispositivo do DOS
152 Drive não está pronto
154 Erro na CRC
156 Erro de posicionamento em disco
157 Erro de tipo de disco
158 Setor não encontrado
159 Impressora sem papel
160 Falta dispositivo de saída
161 Falta dispositivo de leitura
162 Falta de equipamento
200 Divisão por zero
201 Erro na checagem da faixa
202 Estouro na pilha de "Stack"
203 Estouro "Heap" de memória
204 Operação inválida com ponteiro
205 Estouro em operação com ponto flutuante
206 Erro de "underflow"
207 Operação inválida com ponto flutuante
208 Gerenciador de "Overlay" não instalado
209 Erro de leitura em um arquivo "Overlay"
210 Objeto não inicializado
211 Chamada em um método abstrato
212 Erro no registro "Stream"
213 Índice da "Collection" forma de faixa
214 Estouro no objeto "Collection"
215 Erro de estouro em operação aritmética
216 Falta proteção geral

Prof. Sergio