Professional Documents
Culture Documents
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
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
Prof. Sergio
4
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
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
B- LINGUAGEM PASCAL
TIPOS DE DADOS
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
OPERADORES 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
Prof. Sergio
8
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)
Prof. Sergio
9
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
OPERADOR DE ATRIBUIÇÃO
Prof. Sergio
11
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
Prof. Sergio
12
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.
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).
Prof. Sergio
13
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.
A1-) Desenvolva um programa para ler quatro valores e calcular a média destes valores.
Prof. Sergio
14
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.
Prof. Sergio
15
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.
COMENTÁRIOS
Prof. Sergio
16
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.
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.
B9-) Desenvolva um programa para realizar a leitura de um número e calcular o seno deste
número.
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
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);
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
Prof. Sergio
18
C- ESTRUTURAS DE SELEÇÃO
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
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.
begin
Abre o bloco de comandos do programa principal.
clrscr;
Limpa a tela de execução do programa.
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.
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
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.
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.
begin
Abre o bloco de comandos do programa principal.
clrscr;
Limpa a tela de execução do programa.
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
end;
Finaliza o bloco de comandos da 1ª estrutura IF.
begin
Abre o bloco de comandos da 2ª estrutura IF.
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.
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
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.
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.
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
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.
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.
begin
Abre o bloco de comandos do programa principal.
clrscr;
Prof. Sergio
24
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.
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.
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
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.
Prof. Sergio
26
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
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.
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.
.
.
.
< 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.
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.
program escrever_numero;
Este comando indica o início do programa, cujo nome é escrever_numero.
Prof. Sergio
30
uses CRT;
Carrega a biblioteca CRT para que os comandos funcionem normalmente.
begin
Abre o bloco de comandos do programa principal.
clrscr;
Limpa a tela de execução do programa.
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.
else
O seu bloco de comandos será executado se o valor da variável numero for diferente
de todos os valores de comparação.
end;
Finaliza o bloco de comandos da estrutura CASE.
Prof. Sergio
31
readkey;
Cria uma pausa na execução do programa, apresentando o resultado até que uma
tecla seja pressionada.
end.
Finaliza o programa.
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
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
D- LAÇOS DE REPETIÇÃO
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.
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
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.
program escrever_mensagem;
uses CRT;
var i, vezes: byte;
begin
clrscr;
write(„Informe o número de repetições: ‟);
Prof. Sergio
35
readln(vezes);
for i:= 1 to vezes do
begin
writeln(„Linguagem Pascal‟);
end;
readkey;
end.
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.
begin
Abre o bloco de comandos do programa principal.
clrscr;
Limpa a tela de execução do programa.
realdn(vezes);
Realiza a leitura de um número e armazena este valor na variável vezes.
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
Cria uma pausa na execução do programa, apresentando o resultado até que uma
tecla seja pressionada.
end.
Finaliza o programa.
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.
I5-) Desenvolva um programa para ler quatro notas de 10 alunos e calcular a média destas
notas por aluno.
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.
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
saga vencedora e o total de votos de cada saga. Se ocorrer um empate, o mesmo deverá ser
indicado.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
begin
Abre o bloco de comandos do programa principal.
clrscr;
Prof. Sergio
40
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.
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.
J1-) Desenvolva um programa para apresentar os números de 1 até 100 em ordem crescente
e depois em ordem decrescente.
Prof. Sergio
41
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
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.
Sintaxe:
repeat
< conjunto de instruções >;
until < condição >;
Prof. Sergio
43
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.
program escrever_mensagem;
uses CRT;
var cont: byte;
begin
clrscr;
cont:= 0;
repeat
writeln(„Linguagem Pascal‟);
cont:= cont + 1;
until (cont = 5);
readkey;
end.
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.
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
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.
readkey;
Cria uma pausa na execução do programa, apresentando o resultado até que uma
tecla seja pressionada.
end.
Finaliza o programa.
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.
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.
begin
Abre o bloco de comandos do programa principal.
clrscr;
Limpa a tela de execução do programa.
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.
readkey;
Cria uma pausa na execução do programa, apresentando o resultado até que uma
tecla seja pressionada.
end.
Finaliza o programa.
Prof. Sergio
46
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
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.
Prof. Sergio
48
Código Erro
Prof. Sergio
49
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
Código Erro
Prof. Sergio