Aulas anteriores...
• Formulação adequada do problema
• Identificação das variáveis de entrada; resultados/variáveis de saída e método ou
solução
• Definição do algoritmo
°
Método de decomposição hierárquica utilizando níveis crescentes de detalhe
• (abordagem top-down)
°
Noção de encapsulamento de operações
• (procedimentos e funções)
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Esta Aula ...
• Detalhes da linguagem de programação
°
Elementos básicos
• (identificadores, constantes, símbolos gráficos)
°
Estrutura básica de um programa
• (cabeçalho, parte declarativa, parte de execução)
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Qual é o objectivo central de uma linguagem?
• promover a comunicação entre duas ou mais entidades.
Linguagem Natural
• descreve ideias, acções, sentimentos,
emoções, … ;
• apresenta:
um vocabulário rico;
regras gramaticais complexas;
• é muitas vezes ambígua.
Linguagem de Programação
• descreve operações a serem executadas por
um computador;
• apresenta:
um vocabulário limitado;
regras gramaticais simples;
• é sempre clara e concisa.
Pascal é uma linguagem de programação, criada pelo Prof. Niklaus Wirth em 1971 e
que apresenta características próprias que a tornam extremamente adequada ao
ensino das regras básicas da programação.
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Turbo Pascal
Turbo Pascal é uma implementação da linguagem Pascal, desenvolvida por uma
empresa chamada Borland International Inc. e destinada a ser usada em PC’s, que
fornece um ambiente integrado, para desenvolvimento de programas, muito eficiente e
fácil de utilizar.
Editor de Texto
Programa em
Pascal
Sim
Erros ?
Compilador
Não
Programa em
Código Objecto
Linker
Bibliotecas
Programa em
Código Executável
Janela de
Aplicação
Loader
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Elementos básicos da linguagem
• identificadores
descritos;
são palavras que servem para nomear os diferentes objectos
• constantes são valores concretos assumidos por alguns objectos;
• símbolos gráficos representam diferentes tipos de operadores e de separadores;
possibilitam a construção de frases, ou a separação das frases uma das outras.
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Regras de formação dos identificadores
Regra 1 - Os identificadores são formados por uma sequência de caracteres
alfanuméricos, em que o primeiro é obrigatoriamente uma letra do alfabeto.
identificador ::= <letra do alfabeto> |
identificador <letra do alfabeto> |
identificador <algarismo decimal>
Embora o número de caracteres possa ser qualquer, os compiladores restringem esse
número a um limite bem definido (em Turbo Pascal, só os primeiros 63 caracteres
contam). Além disso, para melhorar a legibilidade e a compreensão dos identificadores,
praticamente todos os compiladores permitem o recurso ao caracter (‘_’).
conv_dist
em vez de
convdist, por exemplo.
Regra 2 - O alfabeto maiúsculo é indistinguível do alfabeto minúsculo.
conv_dist
é o mesmo que
CONV_DIST .
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Tipos de identificadores
• palavras reservadas são identificadores que têm um significado bem definido dentro
da especificação da linguagem; correspondem, no fundo, a uma extensão da noção
de símbolo gráfico.
program, begin, end, mod, and, for, string, record, ...
• identificadores pré-definidos são os nomes de objectos, cuja definição é da responsabilidade do compilador que implementa a linguagem.
integer, real, char, MAXINT, FALSE, write, input, sin, ...
• identificadores definidos pelo utilizador são os nomes dos objectos definidos ou
referenciados no programa.
<nome de programa>, <nome de biblioteca externa>, <nome de constante>
<nome de tipo de dados>, <nome de variável>, <nome de procedimento>
<nome de função>
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Tipos de identificadores
OBSERVAÇÕES
Para o compilador, é indiferente o tipo de alfabeto (maiúsculo, minúsculo, ou uma
mistura dos dois) usado na escrita do programa. Contudo, por questões de clareza,
algumas regras devem ser seguidas:
°
•
palavras reservadas e identificadores pré-definidos (que não representem constantes) usar o alfabeto minúsculo;
identificadores definidos pelo utilizador e identificadores pré-definidos (que representem
constantes) - usar o alfabeto maiúsculo.
Também, para melhorar a legibilidade do programa, devem ser introduzidos comentários
relevantes, que expliquem o significado dos diferentes objectos, ou que operação é
efectuada por grupos bem definidos de instruções.
comentário ::= {<qualquer sequência de símbolos>} |
(*<qualquer sequência de símbolos>*)
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Representação da informação
• toda a informação, usada e produzida durante a execução de um programa, está
armazenada em binário na memória principal do computador, sob a forma de
constantes (valores invariantes), ou de variáveis (valores lidos do dispositivo de
entrada, valores temporários calculados a partir destes e valores finais a enviar para o
dispositivo de saída);
• a forma como a informação está organizada, ou seja, o significado que é atribuído a
estas sequências binárias de valores, depende da linguagem de programação;
• as regras que definem cada organização concreta, designada por tipo de dados,
constituem o que se chama o seu formato próprio, e indicam
°
°
o tamanho, em n.º de bytes, necessário ao armazenamento de uma constante desse tipo;
a maneira como deve ser lida (interpretada) a sequência de bits da sua representação
binária.
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Tipos de dados válidos em Pascal
• tipos pré-definidos são os tipos de dados básicos, referenciados na especificação
da linguagem e definidos pelo compilador
°
°
°
°
°
integer e real - representação de quantidades numéricas;
boolean - representação de quantidades lógicas;
char - representação de símbolos gráficos;
string - representação de sequências de símbolos gráficos (em Pascal Standard, só
existem constantes deste tipo, mas está presente em Turbo Pascal e na grande
maioria dos compiladores actuais).
tipos definidos pelo utilizador são tipos de dados particulares, definidos pelo
programador, para adequar a representação da informação às condições concretas do
problema; são construídos a partir de tipos de dados já existentes (pré ou previamente
definidos) e de dispositivos especiais especificados na linguagem, os construtores.
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Tipo integer
• representação exacta de quantidades inteiras, positivas e negativas, até a um limite
que, em valor absoluto, é expresso pela constante MAXINT;
• caso particular da representação em vírgula fixa (neste caso, a vírgula está à direita
do bit menos significativo);
• o valor da quantidade é expresso num sistema binário pesado, conhecido pelo nome
de complemento para 2, em que o bit mais significativo representa o sinal
(0 -> +, 1 -> -);
• para uma representação em N bits, o valor da quantidade A é calculado por
N-1
A = < aN-1  a1a 0 > = - aN-1  2
N-2
+
a
n
 2n
n=0
em que an = 0 ou 1, para 0  n < N .
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Tipo integer
• em Turbo Pascal, a constante MAXINT é igual a 215-1, o que implica um tamanho de 2
bytes (ou 16 bits);
15
14
8
7
0
+/-
• o Turbo Pascal contempla ainda os seguintes tipos de vírgula fixa, todos eles
compatíveis entre si e com integer
Nome
Gama
Tamanho em bytes
byte
shortint
word
longint
0 … 255
-128 … 127
0 … 216-1
-231 … 231-1
1
1
2
4
Exemplos
149
0
-345
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Tipo real
• representação aproximada de quantidades numéricas positivas e negativas, com
parte inteira e/ou parte fraccionária, numa gama de valores muito alargada;
• caso particular da representação em vírgula flutuante (aquilo que comummente se
designa por notação científica: m x Bexp, em que m é a mantissa, B é a base (hoje em
dia, quase sempre binária) e exp é o expoente);
• a representação da quantidade é formada por três partes: sinal da mantissa (0->+,
1->-), valor absoluto da mantissa (fraccionária, entre 0.5 e 1.0, ou, alternativamente,
entre 1.0 e 2.0), expressa no sistema binário de numeração, e expoente, expresso
num sistema binário pesado.
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Tipo real
• em Turbo Pascal, a gama de representação em valor absoluto vai aproximadamente
de 2.9x10-39 a 1.7x1038, com uma mantissa de 11 a 12 algarismos significativos, o que
implica um tamanho de 6 bytes (ou 48 bits);
47
0
+/-
valor absoluto da mantissa
expoente
• o Turbo Pascal contempla ainda os seguintes tipos de vírgula flutuante, todos eles
compatíveis entre si e com real
Nome
Gama
Algarismos significativos
single
double
extended
1.5x10-45 … 3.4x1038
5.0x10-324 … 1.7x10308
3.4x10-4932 … 1.1x104932
Tamanho em bytes
7-8
15-16
19-20
4
8
10
Exemplos
22.0
0.0
-0.0345
-2.2e1
0e0
-3.45e-2
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Tipo boolean
• representação dos valores lógicos verdadeiro e falso;
• normalmente, fixa-se um valor binário (0, por exemplo) para um dos níveis lógicos e
o outro pode assumir qualquer valor;
• em Turbo Pascal, o tamanho usado para armazenamento é um byte (ou 8 bits), que
constitui uma palavra de memória;
7
0
Exemplos
FALSE
TRUE
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Tipo char
• representação de símbolos gráficos ou de sinais de controlo;
• cada símbolo ou sinal é representado numericamente através de um valor binário
que lhe é atribuído por um código, o mais comum é o código ASCII (American
Standard Code for Information Interchange);
• qualquer que seja, porém, o código usado, as regras seguintes são impostas pela
especificação da linguagem Pascal:
°
°
os valores binários associados com os algarismos decimais devem ser seguidos e
respeitar a ordem natural;
os valores binários associados com as letras do alfabeto (maiúsculas e minúsculas)
devem respeitar a ordem natural, mas não têm que ser necessariamente seguidos (sãono, contudo, no código ASCII).
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Tipo char
• em Turbo Pascal, o tamanho usado para armazenamento é um byte (ou 8 bits), que
constitui uma palavra de memória;
7
0
Exemplos
‘4’
‘T’
‘?’
‘j’
• ainda, em Turbo Pascal, existe um meio alternativo para representar constantes de
tipo char; a sua sintaxe é
#<valor numérico em decimal do código atribuído ao caracter>
este método é particularmente útil para representar os sinais de controlo, porque,
sendo estes invisíveis, não podem ser representados pelo processo geral.
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Tipo string
• representação de sequências de símbolos gráficos ou de sinais de controlo;
• em Turbo Pascal, o formato usado por defeito é de 256 bytes e permite um armazenamento de sequências de caracteres, cujo comprimento pode ir até 255;
• o tamanho do formato por defeito pode ser reduzido, se o programador assim o
desejar, através da indicação explícita do comprimento máximo das sequências de
caracteres que aí podem ser armazenadas
string [N_MAX_CAR]
Exemplos
‘era uma vez um gato maltes’
‘’ (string nulo)
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Tipos de dados ordinais ou ordenados
• são formas de organização da informação em que existe uma possibilidade de
enumeração ordenada das constantes que as constituem; isto é, dada uma constante
qualquer, é sempre possível determinar qual é a constante que a precede, ou qual é a
constante que lhe sucede;
• tipos de dados ordinais pré-definidos
°
°
°
integer (e seus tipos compatíveis) - a ordenação é trivial, neste caso;
boolean - admite-se que FALSE vem antes de TRUE;
char - a ordenação baseia-se nos valores numéricos do código usado;
• tipos de dados não ordinais pré-definidos
°
°
real (e seus tipos compatíveis) - como representam valores numéricos de uma forma
aproximada, não é possível saber que constantes estão na vizinhança imediata de
qualquer delas;
string - tendo as constantes tamanho distinto, o mecanismo de ordenação teria
necessariamente que ser multidimensional e a definição anterior não se aplica.
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Estrutura básica de um programa em Pascal
Cabeçalho
• caracterização do programa e definição dos dispositivos de comunicação
°
nome do programa
°
nomes dos dispositivos de entrada e de saída utilizados
Parte Declarativa
• referência a, ou definição dos diferentes objectos usados na parte de execução
°
referência a bibliotecas externas (units)
°
definição de constantes, de tipos de dados e de variáveis
°
definição de procedimentos e de funções
Parte de Execução
• listagem ordenada da sequência de instruções executadas pelo computador quando o
programa é ‘corrido’
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Cabeçalho
program identificador do programa (lista de nomes dos dispositivos de entrada e saída);
identificador do programa ::= identificador válido em Pascal
lista de nomes dos dispositivos de entrada e saída ::=
identificador do dispositivo |
lista de nomes dos dispositivos de entrada e saída , identificador do dispositivo
identificador do dispositivo ::= input | output | identificador lógico de ficheiro
identificador lógico de ficheiro ::= identificador válido em Pascal
Notas - Os identificadores input e output são os nomes dos dispositivos standard de
entrada e saída, normalmente, o teclado e o écran do monitor vídeo.
Em Turbo Pascal, a lista de nomes dos dispositivos de entrada e saída é
opcional. Assim, o cabeçalho típico de Pascal Standard
program CONVDIST(input, output);
pode ser reduzido a
program CONVDIST;
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Referência a bibliotecas externas
uses lista de nomes de bibliotecas;
lista de nomes de bibliotecas ::= identificador de biblioteca |
lista de nomes de bibliotecas , identificador de biblioteca
identificador de biblioteca ::= identificador válido em Pascal
Nota - A única biblioteca para já relevante é aquela que, dentro do ambiente Windows,
cria uma janela de aplicação. Por conseguinte, todos os programas em Turbo
Pascal que corram no ambiente Windows, têm que referenciar a biblioteca
“WinCrt” e, por isso, a referência abaixo tem que surgir em todos eles
uses WinCrt;
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Definição de constantes
const
lista de constantes;
lista de constantes ::= identificador de constante = valor |
lista de constantes ;
identificador de constante = valor
identificador de constante ::= identificador válido em Pascal
valor ::= valor literal | expressão simples
valor literal ::= valor constante de um dos tipos pré-definidos
Nota - Quando o valor atribuído a uma constante é calculado a partir de uma expressão
simples, todos os seus operandos são necessariamente valores literais, ou
constantes que foram previamente definidas. Este tipo de definição é
característico de Turbo Pascal, não existindo em Pascal Standard.
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Definição de constantes
const
NMAX = 100;
(* constante inteira
PI = 3.1415926536;
(* constante real
SINAL = FALSE;
(* constante booleana
LETRA = ‘S’;
(* constante de tipo caracter
NOME = ‘INES’;
(* constante de tipo string
VEL_LUZ = 3e8*1000;
PER_CIRC_UNIT = 2*PI;
-
v.
v.
v.
v.
v.
literal
literal
literal
literal
literal
*)
*)
*)
*)
*)
(* constante real - expressão *)
(* constante real - expressão *)
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Definição de variáveis
var
lista de variáveis;
lista de variáveis ::= lista de nomes: tipo de dados |
lista de variáveis ;
lista de nomes: tipo de dados
lista de nomes ::= identificador de variável |
lista de nomes, identificador de variável
identificador de variável ::= identificador válido em Pascal
tipo de dados ::= tipo pré-definido | tipo definido pelo utilizador
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Definição de variáveis
var
A1,
A4:
B1,
C1,
D1:
E1,
A2, A3: integer;
(* variáveis inteiras
integer;
(* variável inteira
B2: real;
(* variáveis reais
C2, C3, C4: boolean;
(* variáveis booleanas
char;
(* variável de tipo caracter
E2: string;
(* variáveis de tipo string
(* com uma capacidade de armazenamento
(* máxima de 255 caracteres
F1: string[10];
(* variável de tipo string
(* com uma capacidade de armazenamento
(* máxima de 10 caracteres
*)
*)
*)
*)
*)
*)
*)
*)
*)
*)
*)
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Constantes vs. Variáveis
• uma constante é um objecto, cujo valor se mantém invariante durante a execução do
programa;
• definir uma constante significa associar um nome a esse valor;
• o uso de constantes num programa serve para se conseguir a sua parametrização,
melhorando a legibilidade (os valores são substituidos por nomes com significado
explícito) e a robustez (a alteração do valor é realizada de um modo centralizado).
• uma variável é um objecto, cujo valor se altera em princípio durante a execução do
programa;
• definir uma variável significa reservar espaço em memória principal para o seu
armazenamento;
• o uso de variáveis num programa serve para armazenamento, durante a sua
execução, dos valores lidos do dispositivo de entrada, dos valores temporários e dos
valores a enviar para o dispositivo de saída;
• o recurso imoderado a variáveis conduz a uma perda da legibilidade do programa.
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Download

identificador do programa - Universidade de Aveiro › SWEET