Title: Aulas anteriores...
1Aulas 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)
2Esta 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)
3Qual é 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.
4Turbo Pascal
- Turbo Pascal é uma implementação da linguagem
Pascal, desenvolvida por uma empresa chamada
Borland International Inc. e destinada a ser
usada em PCs, que fornece um ambiente integrado,
para desenvolvimento de programas, muito
eficiente e fácil de utilizar.
5Elementos básicos da linguagem
- identificadores são palavras que servem para
nomear os diferentes objectos descritos - 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.
6Regras 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 ltletra do alfabetogt
- identificador ltletra do alfabetogt
- identificador ltalgarismo decimalgt
- 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 .
7Tipos 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 respon-sabilidade
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. - ltnome de programagt, ltnome de biblioteca externagt,
ltnome de constantegt - ltnome de tipo de dadosgt, ltnome de variávelgt,
ltnome de procedimentogt - ltnome de funçãogt
8Tipos 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 ltqualquer sequência de
símbolosgt - (ltqualquer sequência de símbolosgt)
9Representaçã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.
10Tipos 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.
11Tipo 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 -gt , 1 -gt -)
- para uma representação em N bits, o valor da
quantidade A é calculado por
12Tipo integer
- em Turbo Pascal, a constante MAXINT é igual a
215-1, o que implica um tamanho de 2 bytes (ou 16
bits) - 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 0 255 1
- shortint -128 127 1
- word 0 216-1 2
- longint -231 231-1 4
- Exemplos
- 149 0 -345
13Tipo 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-gt, 1-gt-), 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.
14Tipo 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) - 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 Tamanho em
bytes - single 1.5x10-45 3.4x1038 7-8 4
- double 5.0x10-324 1.7x10308 15-16 8
- extended 3.4x10-4932 1.1x104932 19-20 10
- Exemplos
- 22.0 0.0 -0.0345
-2.2e1 0e0 -3.45e-2
15Tipo 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 - Exemplos
- FALSE
TRUE
16Tipo 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ão-no, contudo, no
código ASCII).
17Tipo char
- em Turbo Pascal, o tamanho usado para
armazenamento é um byte (ou 8 bits), que
constitui uma palavra de memória - Exemplos
- 4 T
? j - ainda, em Turbo Pascal, existe um meio
alternativo para representar constantes de tipo
char a sua sintaxe é - ltvalor numérico em decimal do código atribuído
ao caractergt - este método é particularmente útil para
representar os sinais de controlo, porque, sendo
estes invisíveis, não podem ser representados
pelo processo geral.
18Tipo 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 arma-zenamento 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)
19Tipos 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.
20Estrutura 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
21Cabeç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
22Referê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
23Definiçã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.
24Definição de constantes
- const
- NMAX 100 ( constante inteira - v. literal )
- PI 3.1415926536 ( constante real - v.
literal ) - SINAL FALSE ( constante booleana - v.
literal ) - LETRA S ( constante de tipo caracter - v.
literal ) - NOME INES ( constante de tipo string - v.
literal ) - VEL_LUZ 3e81000 ( constante real -
expressão ) - PER_CIRC_UNIT 2PI ( constante real -
expressão )
25Definiçã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
26Definição de variáveis
- var
- A1, A2, A3 integer ( variáveis inteiras )
- A4 integer ( variável inteira )
- B1, B2 real ( variáveis reais )
- C1, C2, C3, C4 boolean ( variáveis booleanas
) - D1 char ( variável de tipo caracter )
- E1, E2 string ( variáveis de tipo string )
- ( com uma capacidade de armazenamento )
- ( máxima de 255 caracteres )
- F1 string10 ( variável de tipo string )
- ( com uma capacidade de armazenamento )
- ( máxima de 10 caracteres )
27Constantes 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.