Documente Academic
Documente Profesional
Documente Cultură
Programação I
Autor:
Josiane Alves de Sousa
Técnicas de Programação I
fevereiro/2003
1. Linguagens de Programação: 03
1.1. Conceito 03
1.2. Objetivo 03
2. Introdução a Programação 02
2.1. Conhecimentos básicos necessários 03
2.2. Práticas de um bom programador 04
2.3. Programação Estruturada 04
2.4. Processo de desenvolvimento de programas 05
3. Introdução a Linguagem Pascal 06
3.1. Histórico 06
3.2. Estrutura de um programa Pascal 06
3.3. Símbolos especiais 08
3.4. Comentários em um programa 09
4. Tipos de Dados Básicos 09
4.1. Inteiros 10
4.2. Reais 11
4.3. Caracteres 11
4.4. Lógicos 11
4.5. Enumerado (ENUMERATED) 11
4.6. Subintervalo 12
4.7. Literais (Tipo estruturado básico) 12
5. Variáveis 12
5.1. Declaração de Variáveis 12
5.2. Inicialização de Variáveis. 13
6. Constantes: 13
6.1. Sem tipo definido (Constantes verdadeiras) 13
6.2. Com tipo definido (Parecidas com variáveis) 13
6.3. Constantes predefinidas 14
7. Expressões e Operadores 14
7.1. Tipos de Operadores 14
7.2. Operadores Atribuição (:=) 14
7.3. Operadores Aritméticos 15
7.3.1. Binários e Unários 15
7.3.2. Aritmética de Inteiros e Aritmética de Reais 15
7.4. Manipulação de Bits 16
7.5. Concatenação (+) 16
7.6. Operadores Relacionais 16
7.7. Operadores Lógicos 17
7.8. Operadores de Ponteiros 18
7.9. Operadores de Conjuntos 18
7.10. Operadores de Tipe-Cast 18
7.11. Tipos de expressões 19
7.12. Hierarquia dos Operadores Aritméticos, Relacionais e Lógicos 19
8. Comandos 19
8.1. Estruturas de Controles (Decisão e Repetição) 19
8.2. Comandos básicos e funções pré-definidas. 20
9. Estruturas de Decisão 22
9.1. If-Then/If-Then-Else/extensão Else-if /If-Then aninhadas 22
9.2. Case (Desvio Condicional) 23
10. Estruturas de Repetição 25
10.1. While-Do 25
10.2. Repeat-Until 25
10.3. For-Do 26
10.4. Desvio Incondicional(Goto, Continue, Break, Halt) 27
Por Josiane Alves de Sousa (3/2001-2003) 3
1. Linguagens de Programação:
1.1. Conceito
1.2. Objetivo.
Tem como objetivo a formalização de algoritmos para ter como resultado final um
programa fonte, que após se envolver em um processo de interpretação ou compilação se
transforma em um programa em que os computadores entendam, ou seja, programa puro de
linguagem de máquina.
2. Introdução a Programação:
a) ALGORITMO X PROGRAMA
Algoritmo: é uma seqüência lógica de ações executadas para se resolver uma determinada
tarefa.
Programa: é a formalização de um algoritmo em uma determinada linguagem de
programação, segundo suas regras de sintaxe e semântica, de forma a permitir que o
computador possa entender a seqüência de ações.
b) LINGUAGEM DE PROGRAMAÇÃO
Uma linguagem de programação é uma notação formal para descrição de algoritmos que
serão executados por um computador. Como todas as notações formais, uma linguagem de
programação tem dois componentes: Sintaxe e Semântica. A sintaxe consiste em um conjunto
de regras formais, que especificam a composição de programas a partir de letras, dígitos, e
outros símbolos. Por exemplo, regras de sintaxe podem especificar que cada parêntese aberto
em uma expressão aritmética deve corresponder a um parêntese fechado, e que dois comandos
quaisquer devem ser separados por um ponto-e-vírgula. As regras de semântica especificam o
“significado” de qualquer programa, sintaticamente válido, escrito na linguagem.
b) MONTADOR
b) INTERPRETADOR
c) COMPILADOR
Podemos dizer, dessa forma, que o processo de programação consiste nos seguintes
passos :
PROGRAMADOR TRADUTOR
ALGORITMO ⇒ LINGUAGEM DE PROGRAMAÇÃO ⇒ LINGUAGEM DE MÁQUINA
3.1. Histórico
• Origem: Desenvolvida nos anos 1970 por Nicklaus Wirth na Universidade Técnica de
Zurique, Suíça.
• Objetivo: Desenvolver uma linguagem de programação disciplinada de alto nível para
ensinar programação estruturada.
• Padronização: ANSI (American National Standars Institute) e IEEE (Institute of Eletrical
and Eletronics Engineers)
• Padrão de Fato: Borland International cria em 1983 o Turbo Pascal (IDE)
b) Seção de Declarações
c) Corpo do Programa
d) O Turbo Pascal
• Editor de Código-Fonte
• Compilador
• Link-Editor
• Depurador
• Ajuda On-Line da Linguagem e do próprio IDE
f) Programa exemplo:
program Exemplo;
begin
writeln(‘Programa Teste’);
repeat until keypressed;
end.
a) Identificadores
• PAGAMENTO
• Soma_Total
• MaiorValor
• Media1
• _Media
b) Palavras Reservadas
Pascal reconhece certo grupo de palavras como sendo reservadas. Essas palavras
têm significado especial e não podem ser usadas como identificadores em um programa. A
seguir listamos todas as palavras reservadas do Pascal Padrão:
Comentários são textos escritos dentro do código-fonte para explicar ou descrever alguns
aspectos relativos ao mesmo. Os comentários podem ser colocados em qualquer lugar do
programa onde um espaço em branco possa existir.
Você pode colocar comentários de duas formas: ou envolvendo o texto entre chaves “{..}”
ou entre “ (* .. *)”.
Quando o compilador encontra o símbolo “{“, este salta todos os caracteres até encontrar
um “}”. Da mesma forma, todos os caracteres que seguem “(* são pulados até ser detectado o
símbolo ”*)”. Como resultado disso, qualquer uma das formas pode ficar dentro da outra; por
exemplo {...(*...*)...} é um comentário.
Uma utilidade de se usar comentários dentro de comentários é quando queremos escrever
alguns comandos temporários dentro do programa (talvez para depuração), como ilustramos
abaixo:
(*
if A = 10 then { este comando é somente para depuração}
write( ´ A e igual a 10 ´ );
*)
a) Categorias
Representa uma única peça de dados, podendo ser ordenados, isto é, seus valores
mantêm uma certa ordem.
• TIPO ESTRUTURADO:
• TIPO APONTADOR:
Representa uma peça de dados que referencia ou aponta para outra peça de dados
O programador também pode criar seus próprios tipos, como será visto
posteriormente. No entanto o Pascal já oferece um conjunto de tipos predefinidos.
4.1. Inteiros
O tipo INTEGER representa os números inteiros. O Turbo Pascal permite cinco tipos
predefinidos de números inteiros, cada um abrange um subconjunto dos números inteiros.
Todos os tipos inteiros são ordinais (ordenados).
Ex.:
var
NumAlunos : integer;
Cont : integer;
O tipo REAL representa os reais. O Turbo Pascal permite cinco tipos predefinidos de
números reais, cada um com um faixa de valores e precisões específicas. Todos os tipos reais
não são ordinais.
var
Nota : real;
Salario : real;
4.3. Caracteres
var
Sexo: char;
4.4. Lógicos
O tipo escalar enumerado é um escalar ordenado onde os valores que as variáveis deste
tipo podem assumir são descritos através de uma lista de valores. Cada valor é um identificador
o qual é tratado como uma constante. Isto permite que nomes significativos sejam associados a
cada valor usado para as variáveis.
A definição de um tipo enumerado é feita colocando-se entre parênteses os
identificadores que as variáveis podem assumir, separados por vírgulas, como mostrado a
seguir:
var
Dias : ( Domingo, Segunda, Terca, Quarta, Quinta, Sexta, Sabado );
Domingo < Segunda < Terca < Quarta < Quinta < Sexta < Sabado
4.6. Subintervalo
Armazena uma cadeia de caracteres (String) com o tamanho máximo de até 255
caracteres, mas podemos ser especificar um tamanho menor que 255. A posição [0] da string
armazena o seu comprimento. Esse tipo permite a concatenação utilizando-se o operador +.
var
Frase : string;
Nome : string[45];
5. Variáveis
Uma variável é um valor que pode ser alterado dentro de um programa. Todas as variáveis
usadas num programa devem ser declaradas usando a cláusula VAR, dentro da seção de
declarações. Nesse comando, além de indicar o nome que deseja para as variáveis, indica-se
também qual o tipo que as mesmas estão associadas.
Sintaxe:
var
identif [ , identif ]... : tipo-do-dado;
[ identif [ , identif ]. : tipo-do-dado; ] ...
var
Soma, Total, Salario : real;
É aconselhável que sé inicie todas às variáveis antes de serem usadas, para que o
programa não tenha nenhum efeito colateral, por isso, é aconselhável para o bom programador
iniciar todas as variáveis que usar no sistema.
6. Constantes:
Uma constante é um valor que não pode ser alterado durante a execução do programa.
As constantes podem ser divididas nas seguintes categorias de acordo com o tipo
predefinido a que elas pertencem:
Ex:
const
NumDias = 7; { tipo integer }
NumAulas = 14; { tipo integer }
PI = 3.141519265; { tipo real }
Esporte = ´Futebol de Campo´; { tipo literal }
FatorCalculo = ( PI * 13.5 ) + 9; { tipo real }
AulasDia = NumAulas / NumDias; { tipo real }
A definição de uma constante com tipo definido contém a declaração do tipo (por
exemplo, integer, real, string) e pode ser usada em instruções de atribuição. As constantes sem
tipo definido não podem ser utilizadas em instruções de atribuição, como é mostrado a seguir:
Ex:
const
NumDias: integer = 7; {tipo integer}
NumAulas: integer = 14; {tipo integer}
PI: real = 3.141519265; {tipo real}
Esporte: string[20] = ´Futebol de Campo´; {tipo literal}
Correto
Const
S: string[4]=’Text’;
Begin
S:=’AAAA’;
End.
Incorreto
Const
S=’Text’;
Begin
S:=’AAAA’;
End.
O Pascal Padrão possui três identificadores que representam constantes, são eles:
Ex:
7. Expressões e Operadores
Ex: var1+var2, então as variáveis “var1” e “var2” são operandos e o sinal de “+” é um
operador.
Exemplo:
A := 10;
Nome := ´Josias´;
Subtração -
Adição +
Multiplicação *
Divisão Real /
Divisão Inteira (truncada ) div
Resto da Divisão Inteira mod
Inverte Sinal -
Mantém Sinal +
Exemplo:
var
A, B : integer;
C, D : real;
begin
A := 1;
B := 3;
C := 5;
D := 10;
A := 1 + B;
A := B + D; {errado,D é real} A:=B+trunc(D) ou A:=B+round(D)
B := 10 div 3;
A := 10 mod 3;
C := D / C;
D := 10 div C; { errado, o operado div é só para inteiros }
A := -1;
B := 5 + A;
B := -A;
C := D * A;
B := C * B; {errado, C é real} B:=trunc(C) * B
end.
E binário and
Deslocamento de bits ( Shift Left ) shl
Deslocamento de bits ( Shift Right ) shr
OU binário or
XOR binário xor
NOT binário not
7.5. Concatenação (+)
Exemplo:
var
PreNome, SobreNome, NomeCompleto : string[ 30 ];
BEGIN
{ Suponhamos o nome Josias Lima Santos }
PreNome := ´Josias´;
SobreNome := ´Santos´;
NomeCompleto := PreNome + SobreNome;
writeln( NomeCompleto );
NomeCompleto := ´Jose´ + ´Maria´;
writeln( NomeCompleto );
END.
Exemplo:
E And
OU Or
NÃO Not
Exemplo:
var
Nota1, Nota2 : real;
NomeAluno1, NomeAluno2 : string[ 30 ];
A, B, C : integer;
BEGIN
A := 2;
B := 3;
C := 1;
NomeAluno1 := ´Maria Jose´;
NomeAluno2 := ´MariaJose´;
if ( B = A + C ) and ( NomeAluno1 <> NomeAluno2 ) then
writeln( NomeAluno1, B );
if ( A = C ) or ( NomeAluno1 = NomeAluno2 ) then
writeln( NomeAluno1 );
if not( A = C ) then
writeln( NomeAluno1 );
END.
TABELAS VERDADE
OPERADOR AND
OPERANDO 1 OPERANDO 1 RESULTADO
TRUE TRUE TRUE
TRUE FALSE FALSE
FALSE TRUE FALSE
FALSE FALSE FALSE
OPERADOR NOT
OPERANDO RESULTADO
TRUE FALSE
FALSE TRUE
Endereço @
Referência ^
7.9. Operadores de Conjuntos
União +
Complemento -
Intersecção *
Igualdade =
Desigualdade <>
Subconjunto <= , >=
Pertinência in
Acesso a campos .
7.10. Operadores de Tipe-Cast
Exemplo:
type
TDias = ( Dom, Seg, Ter, Qua, Qui, Sex, Sab );
var
Dia : TDias;
NumDia : 0..6;
TudoOk : boolean;
Opcao : char;
NumOp : byte;
BEGIN
readln( NumDia );
Dia := TDias( NumDia );
TudoOk := boolean( 1 );
NumOp := byte( opcao );
END.
Ex:
Resultado:=2+2;
• Literais: Uma expressão é literal quando os seus operandos são literais do tipo
string (não pode ser char) e o resultado também é um valor literal. Só existe um
único operador para se usar em expressões literais, o operador Concatenação(+).
Ex:
Resultado:=’Antonio’+’Carlos’;
Ex:
Resultado:=2>3;
Operadores Categoria
( ) Parêntesis
@, not, sinal de adição e Operadores Unários
subtração unários
*, /, div, mod Operadores Multiplicativos
And, shl, shr, +, -, or, xor Operadores Aditivos
=, <>, <, >, <=, >=, in Operadores Relacionais
8. Comandos:
São comandos de saída do Pascal. A diferença é que o comando writeln após exibir o
conteúdo dos seus parâmetros efetua uma quebra de linha.
write(Variável);
writeln(Variável);
• Funções pré-definidas
Funções Matemáticas
Funções Literais
• Comando Composto
begin
comando [ ; comando ]...
end;
Exemplo:
if A > B then
begin
Temp := A;
A := B;
B := Temp;
end;
9. Estruturas de Decisão:
Sintaxe:
Exemplo:
if A <= B then
A := ( A + 1 ) / 2
if odd( I ) then
J := J + 1
else
J := J div 2 + 1;
Sintaxe :
case expressão of
rotulo-case : comando;
Exemplo:
program Figuras;
type
TFigura = ( Triangulo, Retangulo, Quadrado, Circulo );
var
Figura : TFigura;
Tipo : integer;
begin
writeln( ‘Qual o tipo da figura ? ‘);
writeln( ‘0-Triangulo’ );
writeln( ‘1-Retangulo’ );
writeln( ‘2-Quadrado’ );
writeln( ‘3-Circulo’ );
readln( Tipo );
program TestaTecla;
{ Programa para testar a tecla pressionada }
var
Tecla : char;
begin
writeln( ‘Pressione uma Tecla : ‘ );
readln( Tecla );
case Tecla of
‘A’..’Z’, ‘a’..’z’: writeln(‘Você pressionou uma Letra’);
‘0’..’9’: writeln(‘Você pressionou um Numero’);
‘+’, ‘-‘, ‘*’, ‘/’: writeln(‘Você pressionou um Sinal Aritm.’);
else
writeln( ‘Você pressionou uma outra tecla qualquer’ );
end;
end.
program TestaIdade;
{ Programa para testar a idade de serviço militar }
var
Idade: integer;
begin
writeln( ‘Qual a sua Idade ? ‘ );
readln( Idade );
Comandos de repetição são aqueles comandos que fazem com que um ou vários outros sejam
executados repetidas vezes.
10.1. While-Do
O comando WHILE faz com que um comando seja executado enquanto a expressão de
controle permanecer verdadeira ( TRUE ).
Sintaxe :
while expressao do
comando;
A expressão que controla a repetição deverá ser do tipo boolean, sendo a mesma avaliada
antes que o comando do laço seja executado. Isto quer dizer que, se logo no início o resultado da
expressão for FALSE, o laço não será executado nenhuma vez.
Exemplo:
program TesteWhile;
var
I,J: integer;
begin
I := 0;
while I < 5 do
I := I + 1;
writeln( I );
J := 0;
while J < 5 do
begin
J := J + 1;
writeln( J );
end;
end.
10.2. Repeat-Until
O comando REPEAT faz com que um comando seja executado enquanto a expressão de
controle permanecer falsa ( FALSE ). O teste da condição é feito ao final do laço, dessa forma o
laço sempre é executado pelo menos uma vez.
Sintaxe :
repeat
comando [;comando]
until expressao;
Exemplo:
program TesteRepeat;
var
I,J: integer;
begin
I := 0;
repeat
I := I + 1;
until I >= 5;
writeln( I );
J := 0;
repeat { Não é necessário o BEGIN e END }
J := J + 1;
writeln( J );
until J >= 5;
END.
10.3. For-Do
Sintaxe :
for variavel := expressao1 to/downto expressao2 do
comando;
Onde :
variavel = É uma variável de controle cujo valor será incrementado (se usado o to) ou
decrementado (se usado o downto) de uma unidade.
Expressao1 = É o valor inicial da variável de controle
Expressao2 = É o valor final da variável de controle
for I := 1 to 100 do
begin
readln( x );
Soma := Soma + x;
end;
Program Exemplo;
Uses crt;
type
TDias = ( Dom, Seg, Ter, Qua, Qui, Sex, Sab );
var
Dia: Tdias
Vendas, VendasToal : real;
begin
for Dia := Seg to Sex do
begin
readln( Vendas );
VendasTotal := VendasTotal + Vendas;
end;
end.
• Desvio GOTO
O comando goto desvia o processamento do ponto em que for encontrado, para outra
Iinha do programa que está marcada com um Iabel (rótulo). Este Iabel necessita ser declarado no
início do programa.
Este recurso (goto / Iabel) nos permite abandonar de forma "radical" um Ioop, antes que
seja executado até o final por vias normais. O goto é um comando "forte" que pode abandonar não
só o loop controlado pelo while como também os Ioops gerados pelos outros dois comando de
repetição que estudaremos mais adiante (for e repeat).
Exemplo:
O programa abaixo permite a entrada de no máximo dez números para serem somados
dentro da variável SOMA, ou até ser digitado zero:
Program Prog10;
var
I,SOMA: integer;
NUM: real;
label
FIM;
begin
NUM:= 0;
SOMA:= 0;
while I<=10 do
begin
write('DIGITE VALOR: ');
readln(NUM);
if NUM<>0 then
• Comando CONTINUE
O comando CONTINUE causa o desvio para o final do laço mais interno de um comando
de repetição.
Exemplo:
while expressao do
begin
...
continue;
...
{ o comando continue desvia para aqui }
end;
repeat
...
continue;
...
{o comando continue desvia para aqui}
until expressao;
• Comando BREAK
Exemplo:
while expressao do
begin
...
break;
...
end;
{o comando break desvia para aqui }
repeat
...
break;
...
until expressao;
{o comando break desvia para aqui }
• Comando HALT
BIBLIOGRAFIA
O’BRIEN, Stephen: Turbo Pascal 6 – Completo e Total, São Paulo, Ed. Makron Books, 1994.
MANZANO, José Augusto N. G. e YAMATUMI, Wilson Y.: Programando em Turbo Pascal 7.0,
São Paulo, Ed. Érica, 1996.
RINALDI, Roberto: Turbo Pascal. São Paulo, Ed. Érica, 1990.
WIRTH, Niklaus: Algoritmos e Estruturas de Dados. Rio de Janeiro, Ed. Prentice/Hall do Brasil –
PHB, 1986.
FERNANDES, Luiz Antônio B.: Linguagem de Programação: Ambiente Integrado Pascal, Rio de
Janeiro, Ed. Senac Nacional, 1998.