Algoritmos e
Programação
Thyago Maia Tavares de Farias
Aula 12
Sumário
Pascal – Conceitos e Ambiente
Passos para a construção de
Software
1º passo: Conhecimento do problema;
2º passo: Construção do algoritmo;
3º passo: Codificação do algoritmo em uma
linguagem de programação;
Problema !!!
Solução
Codificação
Linguagens de programação
Para armazenar um algoritmo na memória de
um computador, e para que o mesmo seja
executável, é necessário que o mesmo seja
programado (codificado);
Precisamos transcrever nossos algoritmos para
uma linguagem de programação;
Exemplos: Pascal, C, Java, Cobol, etc.
Na disciplina, utilizaremos a linguagem de
programação Pascal;
A linguagem Pascal
Desenvolvida em 1968 por Niklaus Wirth, da
Universidade Técnica de Zurique, na Suíça;
Objetivo: Oferecer uma linguagem para o ensino
de programação que fosse simples, coerente e
capaz de confeccionar programas claros e
legíveis;
Batizada em homenagem a Blaise Pascal,
filósofo, matemático e inventor da primeira
calculadora mecânica;
A linguagem Pascal
Linguagem parecida com a linguagem
algorítmica;
Usa o paradigma estruturado, onde qualquer
problema pode ser resolvido utilizando três
estruturas:
Sequencial;
Condicional;
Iterativa (repetição);
Adaptando algoritmos para a
linguagem Pascal
Ex.:
PORTUGOL
Algoritmo “exemplo”
PASCAL
Var numero: inteiro
program exemplo;
Uses crt;
Var numero: integer;
Inicio
begin
escreva(“Informe um número: ”)
leia(numero)
numero <- numero + 10;
escreva(“Novo número: ”, numero)
fimalgoritmo
write(‘Informe um número: ‘);
readln(numero);
numero := numero + 10;
write(‘Novo número: ‘, numero);
end.
Área de Declarações
Declaração de Uso das Unidades:
• Um programa Pascal pode fazer uso
de algumas unidades padrão, tais
como: CRT, PRINTER, etc.
• A unidade CRT faz a adequação do
hardware com seu programa.
PASCAL
program exemplo;
Uses crt;
Var numero: integer;
begin
Declaração de Variáveis:
var <lista-de-identificadores>: <tipo>
onde,
<lista-de-identificadores>:
lista variáveis de um mesmo tipo
<tipo-de-dado>:
nome de um dos tipos pré-definidos ou
criados pelo programador
write(“Informe um número: ”);
readln(numero);
numero := numero + 10;
write(“Novo número: ”, numero);
end.
Tipos de variáveis
Integer
Equivalente ao tipo inteiro em algoritmos;
Nome
Valor mínimo
Valor máximo
Bytes ocupados
Integer
-32.768
32.767
2
Exemplo de declaração:
Em algoritmos:
var numero: inteiro
Em Pascal:
var numero: integer;
Tipos de variáveis
Integer
Tipos variantes:
Nome
Valor mínimo
Valor máximo
Bytes ocupados
Shortint
-128
127
1
Byte
0
255
1
Word
0
65.535
2
Longint
-2.147.483.648
2.147.483.647
4
Tipos de variáveis
Real
Equivalente ao tipo real em algoritmos;
Nome
Valor mínimo
Valor máximo
Bytes ocupados
Real
-2.9 x 10-39
1.7 x 1038
6
Exemplo de declaração:
Em algoritmos:
var numero: real
Em Pascal:
var numero: real;
Tipos de variáveis
Real
Tipos variantes:
Nome
Valor mínimo
Valor máximo
Bytes ocupados
Single
-1.5 x 10-45
1.7 x 1038
4
Double
5.0 x 10-324
1.7 x 10308
5
Extended
3.4 x 10-4932
1.1 x 104932
10
Comp
-2-63+1
2-63-1
8
Tipos de variáveis
Boolean
Equivalente ao tipo lógico em algoritmos;
Valores
True
False
Exemplo de declaração:
Em algoritmos:
var valor: logico
Em Pascal:
var valor: boolean;
Tipos de variáveis
String
Equivalente ao tipo literal em algoritmos (tamanho
máximo de caracteres: 255);
Exemplo de declaração:
Em algoritmos: var time: literal
Em Pascal:
var time: String;
Exemplo de atribuição:
Em algoritmos: time <- “Sport Recife”
Em Pascal:
time := ‘Sport Recife’;
Tipos de variáveis
String
Podemos limitar o tamanho de um string, utilizando
[ + tamanho do texto + ] ao lado da especificação de
tipo
Exemplo de declaração:
var time: String[10];
var sexo: String[1];
Var nome_completo: String[100];
Tipos de variáveis
Char
Equivalente ao tipo literal em algoritmos, porém
representa um único caractere;
Exemplo de declaração:
Em algoritmos: var sexo: literal
Em Pascal:
var sexo: char;
Exemplo de atribuição:
Em algoritmos: sexo <- “M”
Em Pascal:
sexo := ‘M’;
Variáveis
Representam os espaços reservados na memória
para armazenar informações;
Funcionamento, declaração e atribuição
semelhantes às variáveis utilizadas em
algoritmos;
Assim como em algoritmos, cada variável possui
um nome (identificador) e um tipo;
As regras para criação de nomes de variáveis são
as mesmas utilizadas em algoritmos;
Variáveis
Regras para identificadores de variáveis:
Não devem ser extensas demais;
Caracteres permitidos: números, letras e sublinhado;
Primeiro caractere é sempre uma letra;
Identificadores não podem se repetir;
Não são permitidos caracteres em branco;
Não são permitidos caracteres especiais;
Não podemos utilizar palavras reservadas em nomes
de variáveis;
Variáveis
Exemplos de declaração:
var numero: integer;
nome: string;
sexo: char;
salario: real;
Palavras Reservadas
Nomes utilizados pelo computador para representar
comandos, operadores e nomes de seção de programas;
Constantes
Variáveis que assumem um determinado valor
atribuído e não pode ser alterado ao longo do
programa;
Constantes assumem o tipo de valor a ela
atribuído (não é necessária a definição de tipo na
declaração!);
Uma constante, assim como uma variável,
deverá ser declarada na área de declarações;
Constantes
Para declarar constantes, utilizamos a palavra
reservada CONST, seguido do seu identificador
(nome) + = + valor da constante + ;
Exemplos:
CONST time_professor = ‘Sport Recife’;
CONST pi = 3.1416;
CONST max = 10;
Comentários
Texto delimitado entre {} ou (* *)
Seu conteúdo não é compilado;
Pode conter qualquer tipo de caractere;
Pode conter mais de uma linha;
Pode ser colocado em qualquer região do
programa;
Utilizado para documentar código, esclarecer
alguma região de código, etc.;
Comentários
Exemplo:
program exemplo;
{área de declarações}
Uses crt;
Var numero: integer;
begin
{lista de instruções}
write(“Informe um número: ”);
readln(numero);
numero := numero + 10;
write(“Novo número: ”, numero);
end.
Área de Comandos
Área de Comandos:
PASCAL
• Delimitada pelo BEGIN e END.
• Os comandos são separados entre si
pelo delimitador ponto-e-vírgula.
• A forma geral é:
Begin
End.
< comando >;
...
< comando >;
program exemplo;
Uses crt;
Var numero: integer;
begin
write(“Informe um número: ”);
readln(numero);
numero := numero + 10;
write(“Novo número: ”, numero);
end.
Comando de atribuição
Utilizado para atribuir um valor a uma variável,
um resultado de uma expressão ou o valor de
outra variável;
Equivalente ao comando de atribuição <utilizando em algoritmos;
Sintaxe em Pascal:
Nome_variavel := valor, variável ou expressão;
Comando de atribuição
OBS: No comando de atribuição, a variável e
seu valor devem ter o mesmo tipo, exceto nos
seguintes casos:
Variáveis reais podem receber valores integer;
Variáveis string podem receber valores char;
Exemplos:
nome := ‘Thyago’;
media := (nota1+nota2) / 2;
Comandos de Entrada
Utilizado para receber dados digitados pelo
usuário;
Funcionamento similar ao comando leia
utilizado em algoritmos;
Comandos de entrada disponíveis em Pascal:
read
readln (similar ao read, realizando também a leitura
do “new line” (nova linha) após o pressionamento
da tecla Enter);
Comandos de Entrada
Exemplo: programa que lê o nome e a idade de
um usuário:
program exemplo;
Uses crt;
Var nome: string;
idade: integer;
begin
readln(nome);
readln(idade);
end.
Comandos de Saída
Utilizado para exibir dados;
Funcionamento similar ao comando escreva e
escreval utilizados em algoritmos;
Comandos de saída disponíveis em Pascal:
write (similar ao escreva)
writeln (realiza a escrita de dados e passa o cursor
para a próxima linha). Similar ao escreval
Comandos de Saída
No caso de variáveis do tipo integer ou real,
podemos apresentar os dados na formatação
desejada;
Exemplo:
Media := (8 + 2) / 2;
Writeln(Media); {escreveria 5.00000000E + 01}
Writeln(Media:0:2); {escreveria 5.00}
Comandos de Saída
Exemplo: programa que lê o nome e a idade de
um usuário:
program exemplo;
Uses crt;
Var nome: string;
idade: integer;
begin
writeln(‘Digite seu nome:’);
readln(nome);
writeln(‘Digite sua idade:’);
readln(idade);
writeln(‘Seu nome: ’, nome);
writeln(‘Sua idade: ’, idade);
end.
Operadores
Operador
Exemplo
Comentário
:=
X := 1
O valor 1 é atribuído a variável X.
+
X+Y
Soma o conteúdo de X e de Y.
-
X–Y
Subtrai o conteúdo de Y do conteúdo de X.
*
X*Y
Multiplica o conteúdo de X pelo conteúdo de Y.
/
X/Y
Obtém o quociente da divisão de X por Y.
DIV
X DIV Y
Obtém o quociente inteiro da divisão de X por Y.
MOD
X MOD Y
Obtém o resto da divisão inteira de X por Y.
=
X=Y
Testa se o conteúdo de x é igual ao conteúdo de Y.
<>
X <>
Testa se o conteúdo de x é diferente do conteúdo de Y.
>=
X >= Y
Testa se o conteúdo de x é maior ou igual ao de Y.
<=
X <= Y
Testa se o conteúdo de x é menor ou igual ou de Y.
>
X>Y
Testa se o conteúdo de x é maior do que o conteúdo de Y.
<
X<Y
Testa se o conteúdo de x é menor do que o conteúdo de
Y.
Funções Predefinidas
Funções Matemáticas
Função
Comentários
ABS (x)
Obtém o valor absoluto de x.
LOG(x)
Obtém o logaritmo de x.
TRUNC (x)
FRAC(x)
ROUND (x)
Obtém a parte inteira do número real armazenado em x.
Obtém a parte fracionária do número real armazenado em x.
Arredonda x.
SIN (x)
Calcula o seno de x.
COS (x)
Calcula o cosseno de x.
PI
SQRT (x)
SQR (x)
Retorna o valor de ¶
Calcula a raiz quadrada de x.
Calcula x elevado ao quadrado.
INC (x, Y)
Incrementa a variável x com o valor da variável Y.
DEC (x,y)
Decrementa a variável x com o valor da variável Y
Ambientes de Programação
Free Pascal Compiler
Código aberto e gratuito;
Interpreta Pascal e Object Pascal;
Criado em 1993;
Versões para vários sistemas operacionais;
Ambientes de Programação
Dev-Pascal
Gratuito;
Código Aberto;
Ambientes de Programação
Turbo Pascal
Compilador Pascal;
Software
Proprietário da
Borland
International;
Em 1995, deixou de
ser desenvolvido;
Licença de uso livre;
Ambientes de Programação
Pascal ZIM
Desenvolvido no Departamento
de Ciências da Computação da
Universidade de Brasília, sendo
utilizado pelo curso desde 2000.
O compilador implementa um
subconjunto da linguagem
Pascal e contém as estruturas de
dados, funções e comandos
mais utilizados.
É freeware.
Ambientes de Programação
Download:
Free Pascal Compiler: http://www.freepascal.eti.br/
Dev-Pascal: http://www.bloodshed.net/devpascal.html
Turbo Pascal:
http://www.netdownloads.com.br/Download/2303/TurboPascal-70.html
Pascal ZIM: http://pascalzim.tripod.com/index.html