Capítulo 3 CARACTERÍSTICAS GERAIS DA LINGUAGEM PASCAL 1. INTRODUÇÃO

Documentos relacionados
= = = = = = = = = = = = = = = =

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

Programação Introdução

ALGORITMOS VARIÁVEIS E OPERADORES. Prof. Angelo Augusto Frozza, M.Sc.

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa;

I1, I2 e In são instruções simples ou estruturadas da linguagem Pascal.

Introdução à Ciência da Computação

Linguagem de programação: Pascal

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

Lógica de Programação I. Gilson de Souza Carvalho

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 3ª Parte Prof. Sandra Pais Soares

Algoritmo e Programação Matemática

Programação de Computadores III

Programação de Computadores III

ALGORITMOS 3ª Aula. 3. Introdução Tipos de dados, variáveis e operadores Tipos de dados

INTRODUÇÃO À LINGUAGEM PASCAL PREFÁCIO

Introdução à Ciência da Computação

Linguagem Computacional

Introdução à programação em PASCAL. Aula de 22/10/2001. Nota: Conjunto de slides baseados nas transparências utilizadas em PEDA em anos anteriores

Programação de Computadores:

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO

6) ESTRUTURA DE UM PROGRAMA

Métodos de Programação I Ana Maria de Almeida

Computação Eletrônica

Ciência da Computação. Prof. Dr. Leandro Alves Neves Prof. Dr. Adriano M. Cansian

VARIÁVEIS NUMÉRICAS : integer - Números inteiros entre e real - Números reais de 11 algarismos significativos.

Conceitos Introdutórios sobre a Linguagem FORTRAN

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

2.2.5 EXPRESSÕES - Regras para o cálculo de valores

Introdução à Computação

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa

Linguagem Pascal. Definição e Tipos de Dados. Professora Lara Popov Zambiasi Bazzi Oberderder. Linguagem PASCAL 1

Conhecendo a Linguagem de Programação C

Roteiro para Aula 1 de laboratório. 1) Mostrar estrutura básica de um código em Fortran. algoritmo. program nome_da_codificacao.

Linguagem de Programação Pascal - Introdução

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior

O AMBIENTE DE PROGRAMAÇÃO VISUAL -PLANO DE ENSINO. Prof. Angelo Augusto Frozza, M.Sc.

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

ENGENHARIA DE PRODUÇÃO ICC 1 TÉCNICAS DE PROGRAMAÇÃO

APÊNDICE A - FUNDAMENTOS DA LINGUAGEM DE PROGRAMAÇÃO PASCAL.

Introdução à Computação

Apêndice A. Pseudo-Linguagem

Introdução. Lógica e Algoritmo. Lógica e Algoritmo. Lógica e Algoritmo. Lógica e Algoritmo

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Fábio Rodrigues / Israel Lucania

1 TECNOLOGIA ELEMENTAR CAPÍTULO 3 E-books PCNA. Vol. 1 TECNOLOGIA ELEMENTAR CAPÍTULO 3 APRESENTANDO A LINGUAGEM C. Página 1

Programação de Computadores II

FACCAT Sistemas de Informação. Estruturas de Dados

Fundamentos de Programação

Computação Eletrônica

Java e sua Sintaxe. Estrutura mínima de um programa em Java: public class Exemplo { }

Faculdade de Estudos Avançados do Pará Disciplina: Algoritmos Professor: Armando Hage. Introdução à Programação

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

LÓGICA DIGITAL - CONCEITOS. * Constantes. * Expressões: Aritméticas; Lógicas; Tabela Verdade; Relacionais; Booleanas. * Portas Lógicas.

Aula Anterior. Decomposição algorítmica (continuação)

Compiladores. Análise Léxica

Introdução à Computação

Algoritmos: Conceitos Fundamentais. Slides de autoria de Rosely Sanches e Simone Senger de Souza

Puca Huachi Vaz Penna

Lógica de Programação e Algoritmos. Prof. André Y. Kusumoto

Introdução ao Fortran 90-1

Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I - BCC701

Apostila de Fortran. É uma pseudo-linguagem a qual oferece recursos para que o programador possa codificar e testar os seus algoritmos.

Curso básico de JavaScript Aula 2

Lógica de Programação Teoria. rogerioaraujo.wordpress.com - 1

Variáveis, Expressões Aritméticas e Entrada e Saída de Dados

Programação de Computadores

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

LÓGICA DE PROGRAMAÇÃO. Algoritmos Computacionais. Sérgio Carlos Portari Júnior

Material Didático Unificado.

Computação I (MAB120) DCC/UFRJ

4. Constantes. Constantes pré-definidas

CONCEITOS DE ALGORITMOS

Variáveis primitivas e Controle de fluxo

Introdução ao SciLab. SciLab O que é? Onde obter o programa:

Linguagem Pascal. Prof. Jonatas Bastos Site:

Introdução à Computação

08/05/2012. Tipos de dados. Tipos de dados. Elementos Básicos. Tipos de dados. Elementos Básicos Tipos de dados. Dados e seus tipos:

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

PROGRAMAS BÁSICOS EM C++ Disciplina: Introdução à Ciência da Computação Prof. Modesto Antonio Chaves Universidade estadual do Sudoeste da Bahia

Introdução à Computação

PCI- Operadores, Expressões e Funções. Profa. Mercedes Gonzales Márquez

Algoritmos e Programação

Linguagens de Programação

Introdução à Linguagem de Programação C: Variáveis, Constantes, Expressões, Atribuição, Tipos de dados, Entrada e Saída de Dados

Métodos de Programação I Ana Maria de Almeida

PHP INTRODUÇÃO DELIMITADORES DE CÓDIGO EXTENSÃO DE ARQUIVOS

6 Alguns conceitos e comandos em programação

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

UNIDADE 2 ALGORITMOS E PSEUDOCÓDIGO

Algoritmos: Conceitos Fundamentais. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza

01/08/2011. Tipos de dados Numéricos Alfanuméricos Lógicos. Numéricos. Tipos de dados. Dados Numéricos Inteiros. Dados Numéricos Reais.

Programação de Computadores I. Professor Ilaim Costa Junior

Engenharia Civil e Engenharia Básica Programação de Computadores Wedson Quintanilha da Silva

INTRODUÇÃO À COMPUTAÇÃO - EPET006 -

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Transcrição:

Capítulo 3 CARACTERÍSTICAS GERAIS DA LINGUAGEM PASCAL 1. INTRODUÇÃO A linguagem Pascal foi concebida por Niklaus Wirth no início da década de 70, tendo por principal objetivo eliminar os péssimos hábitos de programação reinantes na época, que eram conseqüência da utilização das linguagens de programação existentes como Fortran, Cobol e Basic. O aparecimento de Pascal, linguagem cujo nome é uma homenagem ao filósofo Blaise Pascal, foi motivado pela visão de que a maior parte dos erros de programação poderiam ser evitados a partir da utilização de uma linguagem estruturada em blocos e dotada de um severo controle de tipos. O controle de tipos garante que variáveis e constantes de um tipo não podem ser mescladas a variáveis e constantes de um outro tipo (com pequenas exceções). Com o passar dos anos, a linguagem Pascal foi ganhando espaço como ferramenta para o desenvolvimento de programas e servindo de inspiração para a concepção de outras linguagens de programação (como Modula-2, proposta pelo mesmo Wirth). Atualmente, Pascal volta à evidência com o recente aparecimento da linguagem Delphi. Neste capítulo, serão apresentados os conceitos básicos da linguagem Pascal, particularmente a estrutura de um programa Pascal, as palavras-chave, tipos, variáveis, constantes e alguns exemplos de aplicação. 2. PROGRAMAS EM PASCAL 2.1. Elementos constituintes de um programa Pascal Como toda linguagem de programação, Pascal define uma série de elementos de representação, os quais atuam como os átomos que vão permitir a construção de um programa. Os parágrafos a seguir vão apresentar alguns destes elementos. Palavras-chave. As palavras-chave constituem o vocabulário da linguagem, sendo que a maior parte dela são reservadas a uma utilização bem definida, o seu uso sendo proibido ao programador para outras finalidades. Elas são utilizadas normalmente para delimitar diferentes partes de um programa, indicar o papel de uma ou mais instruções, características dos dados, etc... O quadro a seguir apresenta algumas das palavras-chave definidas para a linguagem Pascal. PROGRAM CONST TYPE BEGIN DO output if then else CASE END real integer boolean writeln read FUNCTION PROCEDURE false ARRAY SET FOR AND OR 3.1

Identificadores. Correspondem aos nomes próprios escolhidos pelo programador para representar os diversos elementos do programa como tipos de dados, dados, procedimentos, etc... Um identificador deve ser composto de uma seqüência de caracteres alfanuméricos (letras e números), sendo que o primeiro deve ser uma letra. O tamanho dos identificadores, em princípio não é limitado, mas alguns compiladores podem impor um limite. Por outro lado, apenas os primeiros 8 caracteres do identificador são considerados significativos para efeito de execução dos programas (isto significa que os identificadores Floripa95 e Floripa96 seriam considerados idênticos). Separadores. Os separadores correspondem à pontuação da linguagem, permitindo delimitar os diferentes elementos como instruções, variáveis, blocos de programa, etc... A tabela abaixo apresenta alguns dos separadores definidos na linguagem. Símbolo Nome Função, vírgula separa elementos de uma lista := dois pontos/igual símbolo de atribuição () parênteses delimitam listas de palavras-chave da linguagem. ponto separa a parte inteira da parte fracionária de um real ; ponto e vírgula separa instruções pertencentes a um mesmo bloco : dois pontos associa um tipo de dado na declaração de uma variável = igual precede o valor associado na declaração de uma variável (* parênteses/asterisco marca o início de um comentário *) asterisco/parênteses marca o final de um comentário Operadores. Permitem ao programador descrever os cálculos que o computador deverá realizar sobre os dados considerados. Existem diversos tipos de operadores definidos em Pascal: operadores aritméticos, operadores de comparação e ordenamento, operadores de pertinência a um conjunto, operadores lógicos, etc... Constantes. Uma constante corresponde a uma seqüência de caracteres que representa, perante o compilador, um valor preciso dentro de um conjunto bem determinado de valores. Na maior parte dos programas, o programador pode associar um identificador a uma constante ou ainda utilizar palavras reservadas (como por exemplo, TRUE e FALSE) da linguagem. Instruções Pascal. As instruções da linguagem Pascal podem ser escritas a partir dos elementos descritos anteriormente, podendo ser associadas a uma frase da linguagem natural. Num programa Pascal, pode-se encontrar basicamente dois tipos de instruções: as instruções de declaração, que permitem definir a natureza dos dados a serem utilizados nos programas (reservando espaço em memória para eles) e as instruções executáveis, as quais descrevem as ações a serem realizadas sobre os dados pelo computador. Como veremos pelos diversos exemplos a serem analisados, o texto de um programa Pascal corresponde a uma seqüência lógica de instruções, sendo traduzido, interpretado e executado pelo computador, independente das características de hardware da máquina considerada. Em programas Pascal, cada instrução é escrita numa linha de texto, mas nada impede que o programador escreva diversas instruções numa mesma linha, ou utilizar diversas linhas para uma mesma instrução. Comentários. Correspondem a seqüências de caracteres delimitados pelos símbolos (* e *) e que são introduzidos no texto com a finalidade de melhorar a documentação do programa (explicando a razão da existência de determinados dados ou blocos de instruções). Os comentários não são executados pelo computador. Alguns compiladores aceitam também as chaves { e } como delimitadores de comentários. 3.2

2.2. Estrutura de um programa Pascal Um programa Pascal é composto basicamente dos seguintes elementos: Cabeçalho do Programa. Corresponde normalmente à primeira linha do programa Pascal, iniciada pela palavra-chave PROGRAM. Seção de declarações. Corresponde à parte do programa onde são declaradas as constantes, tipos de dados e variáveis do programa Pascal. Seção de procedimentos e funções. É a parte do programa onde são declarados os procedimentos e funções (subprogramas) a serem utilizados no programa. Seção de instruções executáveis. É a parte, delimitada pelas palavras-chave BEGIN e END, onde são introduzidas as instruções Pascal. A listagem abaixo apresenta a forma geral de um programa Pascal. PROGRAM <nome_programa>; CONST (* aqui são declaradas as constantes *) TYPE (* aqui são declarados os tipos de dados *) (* aqui são declaradas as variaveis do programa *) PROCEDURE <nome_procedimento> (...);... END; FUNCTION <nome_função> (...);... END; BEGIN... END. 2.3. Um exemplo de programa Pascal Apenas a título ilustrativo, será apresentado um exemplo de programa Pascal, o que vai permitir fixar o formato utilizado para a construção de tais programas. O exemplo considerado corresponde a um dos exercícios relativos ao capítulo 2 (Algoritmos), onde pede-se para imprimir o maior número entre 3 introduzidos no computador. 3. A DECLARAÇÃO DE CONSTANTES, TIPOS DE DADOS E IÁVEIS Os dados manipulados no contexto dos programas fazem parte, normalmente de um conjunto predeterminado, como as letras do alfabeto, os números inteiros, os números inteiros, os números reais, etc. Na maior parte dos programas de computador existe a necessidade de que os dados a serem manipulados sejam armazenados na memória para que possam ser acessados pelas instruções definidas no programa. 3.3

PROGRAM Maior_Num (input,output); Num1,Num2,Num3,Maior : integer; BEGIN (* Leitura dos numeros *) write( Entre com o primeiro numero -> ); readln(num1); write( Entre com o segundo numero -> ); readln(num2); write( Entre com o terceiro numero -> ); readln(num3); (* Determinacao do maior numero *) Maior := Num1; IF Maior < Num2 THEN Maior := Num2; IF Maior < Num3 THEN Maior := Num3; (* Impressao do maior numero *) writeln( Programa de Determinacao do Maior Numero ); writeln; writeln( >> O maior numero eh o ->,Maior); END. A reserva de espaço em memória para os dados de um programa é feita pela sua declaração, seja como constante ou como variável. 3.1. As constantes ou valores imediatos As constantes são dados cujo valor permanece fixo ao longo de toda a execução de um programa, o que significa que o espaço de memória ocupado por uma constante não sofre nenhuma alteração enquanto o computador executa o programa. As constantes num programa Pascal podem representar diferentes tipos de dados. O que define que tipo de dado está sendo representado é a forma como a constante é escrita no texto Pascal. Desta forma, 100 corresponde a uma constante inteira, enquanto INE 5201 e APROVADO representam dados do tipo seqüência de caracteres. Num programa Pascal, as constantes podem ser declaradas basicamente de duas formas: no contexto de uma expressão Pascal, como no exemplo mostrado a seguir, onde a constante 2 é introduzida como parte da expressão de cálculo de um dado denominado V_MAX a partir de um outro denominado V_MED; VMAX := 2*V_MED na forma de uma constante simbólica, como será explicado a seguir. Uma constante simbólica corresponde à associação de um valor fixo a um nome (ou identificador). A declaração de uma constante simbólica é realizada na seção CONST, cujo formato geral é: 3.4

CONST identificador_1 = valor_1; identificador_2 = valor_2;... identificador_n = valor_n; Um exemplo ilustrativo da seção CONST num programa Pascal é mostrado abaixo: CONST PI = 3.14159205; TAXA = 0.35; DISC = INE 5201 - Introd. a Ciencia da Computacao O uso de constantes simbólicas apresentam basicamente duas vantagens, as quais estão associadas à possibilidade de uso da mesma constante por diversas vezes num mesmo programa: a primeira é que em caso da necessidade de alteração de valor, basta realizar a mudança apenas na seção de declaração da constante; por exemplo, no caso de um programa possuindo a seção de declaração mostrada acima, se o valor da taxa fosse alterado para 0,325; olhando para o exemplo dado anteriormente (particularmente no caso das constantes PI e DISC), torna-se evidente a segunda vantagem, que é a economia na escrita de longos valores. 3.2. As variáveis e sua declaração Como já foi introduzido no capítulo 2, as variáveis de um programa correspondem aos dados cujos valores são modificados durante a execução de um programa. As variáveis de um programa Pascal são declaradas a partir da seção, onde associa-se um identificador a um determinado tipo de dado que define o conjunto ao qual os valores que serão assumidos pela variável pertencem. O identificador permite designar o conteúdo do dado representado pela variável numa dada posição de memória, sendo que o seu valor a cada instante será o conteúdo daquela posição. Os identificadores de variáveis deverão ser compostos segundo o que foi estabelecido na seção 2.1. A seção, de declaração de variáveis apresenta o seguinte formato geral: identificador_1 : atributo_1; identificador_2 : atributo_2;... identificador_n : atributo_n; É importante observar que cada conjunto identificador : atributo é terminado com um ponto e vírgula. O atributo permite definir o conjunto de dados a partir do qual a variável declarada vai assumir os valores. O atributo pode ser uma palavra-chave da linguagem ou então um identificador introduzido na seção TYPE, que será apresentada a seguir. No caso em que diversas variáveis sejam caracterizadas por um mesmo atributo, é possível associar diversos identificadores a um mesmo atributo. Um exemplo desta facilidades é a declaração de variáveis do programa Maior_Num, apresentado na seção 2.3. Num1,Num2,Num3,Maior : INTEGER; 3.5

Neste exemplo, Num1, Num2, Num3 e Maior são os identificadores de quatro variáveis cujos valores correspondem a números inteiros (designado aqui pelo atributo INTEGER, que é uma palavra-chave da linguagem Pascal, como apresentado em 2.1). 3.3. Os tipos de dados Um tipo de dado permite indicar um conjunto de valores que pode ser assumido por uma dada variável, definindo um certo número de propriedades e de operações próprias ao conjunto. A figura 3.1 mostra como os tipos de dados suportados pela linguagem Pascal estão relacionados. 3.3.1. Tipos de Dados Escalares Tipos de Dados Inteiros (INTEGER). Pode-se representar dados inteiros através de constantes ou variáveis. No caso das constantes inteiras, elas são representadas através de seqüências de dígitos decimais, precedidas do sinal -, se o valor representado for negativo. Alguns exemplos de constantes válidas são: 100, 13450, -123, 0. No caso das variáveis, estas são declaradas na seção, com o atributo INTEGER. Alguns exemplos de variáveis inteiras são: Num1,Num2,Num3,Maior : INTEGER; Sobre dados inteiros, podem ser realizadas as seguintes operações, onde a operação a MOD b corresponde ao resto da divisão de a por b, sendo b > 0 e a 0. Tipos de Dados Tipos Escalares Tipos Estruturados Reais (REAL) Tipos Discretos Vetores (ARRAY) Registros (RECORD) Arquivos (FILE) Conjuntos (SET) Inteiros (INTEGER) Enumerados Prédefinidos Definidos pelo programador Caracteres (CHAR) Lógicos (BOOLEAN) Figura 3.1 - Tipos de dados suportados pela linguagem Pascal. Símbolo Operação Exemplo + Adição X := X+1; - Subtração DIF := A - B; * Multiplicação V_MAX := 2*V_MED; DIV Divisão K := I DIV J; MOD Módulo A := X MOD Y 3.6

Tipos de Dados Reais (REAL). As constantes reais podem ser expressas basicamente em dois formatos: o formato fracionário, onde o valor será composto de uma parte inteira e uma parte fracionária separadas por um ponto decimal (Ex: 123.5, -23.456, 0.375); o formato científico, da forma m E e, onde m é mantissa, correspondendo a um valor inteiro ou real no formato anterior e e é o expoente, correspondendo a uma constante inteira. Por exemplo, as constantes 12E4, 64.2E-3 e -1.43E0 correspondem, respectivamente aos valores 120000, 0.0642 e -1.43. As variáveis reais são declaradas na seção, assumindo o atributo REAL, como é mostrado no exemplo abaixo: X1,X2 : REAL; As operações internas que podem ser realizadas sobre os dados reais são: Símbolo Operação Exemplo + Adição X1 := A + X2; - Subtração VAL := X1 - X2; * Multiplicação XA := 3.5*R; / Divisão TAXA := N/M; É possível realizar as operações acima envolvendo operandos inteiros e reais. Neste caso, o resultado será sempre um valor real. Ainda, o operador de divisão aplicado sobre dois operandos inteiros resultará num valor real (Ex.: 13/4 resultará no valor 3.25). Tipos de Dados Caracteres (CHAR). Este tipo de dados consiste do conjunto dos caracteres, contendo particularmente caracteres alfabéticos (letras), numéricos (dígitos decimais), o caractere de espaço e caracteres especiais. As constantes de tipo caractere correspondem a um elemento deste conjunto, sendo expressa, nos programas, pelo caractere designado delimitado por apóstrofes, como mostram os exemplos abaixo: * A 9 As variáveis de tipo caractere devem ser declaradas, na seção, associadas ao atributo CHAR. No exemplo mostrado a seguir, as variáveis A e B são declaradas como do tipo caractere. No caso da atribuição de valores às variáveis do tipo CHAR, estes devem ser igualmente delimitados por apóstrofes, como é ilustrado a seguir. A,B : CHAR;... BEGIN A := E ; Os elementos de dados pertencentes ao conjunto CHAR seguem uma política de ordenamento que é o seguinte: no caso dos caracteres alfabéticos, o caractere A é o primeiro da ordem e o Z é o último, de modo que A < B < C <... < Y < Z ; no caso dos caracteres numéricos, a política é mais óbvia... 0 < 1 <... < 8 < 9. Tipos de Dados Booleanos (BOOLEAN). São os tipos de dados enumerados cujos valores são denotados pelos identificadores predefinidos FALSE (falso) e TRUE (verdadeiro). As variáveis booleanas são declaradas nas seções utilizando a palavra-chave BOOLEAN, como mostra a o exemplo que segue: 3.7

APROVADO : BOOLEAN; Algumas expressões em Pascal podem resultar em valores booleanos (FALSE ou TRUE), sendo chamadas expressões booleanas. Exemplos destas expressões são aquelas que envolvem operadores de comparação entre dois valores escalares (inteiros, reais ou caracteres). Os operadores de comparação são os seguintes: Símbolo Operação Exemplo > Maior que X := A > B; >= Maior ou igual X := X1 >= X2; = Igual X := LETRA = A ; <> Diferente X := VEL <> 0.0; <= Menor ou igual X := Y <= Z; < Menor X := N < M; Nos exemplos citados, a variável X deve ter sido declarada como BOOLEAN na seção. Em expressões booleanas, resultados de avaliações cujo valor seja booleano podem ser operados resultando em valores também booleanos. São as chamadas operações lógicas, que são: Operador Operação Exemplo NOT Não (negação) X := NOT Y; AND E X := Z AND Y; OR OU X := X1 OR X2; XOR OU exclusivo X := X1 XOR X2; Na tabela anterior, X, Y, Z, X1 e X2 devem ter sido declaradas como uma variáveis de tipo booleano. Os operadores lógicos podem ser aplicados também a expressões cujo resultado seja booleano. Abaixo são apresentadas as tabelas verdade dos operadores apresentados acima: Dados Operações a b NOT b a AND b a OR b a XOR b F F T F F F F T F F T T T F T F T T T T F T T F Tipos de Dados Intervalos de Valores. Estes tipos de dados permitem definir uma faixa de valores de um tipo de dados específicos (denominado tipo hospedeiro). Na declaração de um tipo de dados Intervalo de Valores, são declarados o menor valor e o maior valor separados por dois pontos, sendo que os dois valores declarados devem pertencer ao mesmo tipo de dados. Na sua forma geral, a declaração de um tipo Intervalo de Valores apresenta-se da seguinte forma: TYPE <identificador> = <menor_valor>..<maior_valor>; Na declaração, menor_valor deve ser menor que maior_valor, como mostram os exemplos que seguem. TYPE 3.8

dezena = 0..99; byte = 0..255; tensao = -5..5; Tipos de Dados Enumerados Definidos pelo Usuário. Correspondem a dados cujos valores são definidos na forma de um conjunto ordenado de identificadores. A ordenação é estabelecida segundo a ordem de declaração dos identificadores. A seguir, são apresentados alguns exemplos de tipos de dados enumerados. TYPE Cores Resultado = (Amarelo,Azul,Verde,Branco,Vermelho); = (Aprovado,Reprovado,Recuperacao,Conceito_I); 3.3.2. Tipos de Dados Estruturados Tipos de Dados Vetores (ARRAY). Correspondem aos dados caracterizados por um número fixo de componentes de um mesmo tipo. A declaração de um tipo vetor apresentase, de modo geral, da seguinte forma: <identificador> : ARRAY[ind_1,ind_2,...ind_N] OF tipo; Na declaração acima, pode-se verificar que o vetor pode apresentar diversos índices, sendo que cada índice indica uma dimensão de componentes. A linguagem Pascal admite, como tipos válidos de índices para vetores, os tipos Inteiro, Booleano, Caracteres, Enumerados e Intervalos de Valores. A seguir, são apresentados alguns exemplos de declaração de tipos de dados vetores: MATRIZ : ARRAY[1..5,1..8] OF REAL; VETOR : ARRAY[1..10] OF ARRAY[1..100] OF INTEGER; O acesso ao valor de um componente de uma variável vetor é feito indicando-se o identificador da variável mais o índice do componente no vetor. Por exemplo, para acessar o valor do terceiro componente da terceira linha e da quarta coluna da variável MATRIZ, basta fazer: X := MATRIZ[3,4]; Para que não ocorram problemas de compatibilidade de tipos Pascal, a variável X deve ter sido declarada como REAL. Tipos de Dados Registros (RECORD). São os dados caracterizados por um dado número de componentes, denominados campos, que podem ser de diferentes tipos. A declaração de um RECORD deve apresentar os identificadores e os atributos (tipos de dados) associados a cada campo: <ident> : RECORD <id_1> : <atributo_1>; <id_2> : <atributo_2>;... <id_n> : <atributo_n>; 3.9

END; Um exemplo de declaração de uma variável registro é apresentada a seguir: Pessoa : RECORD Peso : REAL; Altura : REAL; Olhos : (Pretos,Castanhos, Azuis,Verdes); Idade : 0..120; Est_Civil : (Solteiro,Casado,Viuvo,Divorciado); Sexo : (Masculino,Feminino); END; O acesso a um valor de uma variável registro é feito referenciando-se o identificador seguido de um ponto e do nome do campo desejado: Estado := Pessoa.Est_Civil; Da mesma forma, a variável Estado deve ter sido declarada como tipo enumerado (Solteiro,Casado,Viuvo,Divorciado). Tipos de Dados Conjunto (SET). São os tipos de dados declarados na forma de um subconjunto de algum tipo de dados já definido. Cada possível valor num tipo SET sempre faz parte do conjunto definido pelo tipo base. Na sua forma geral, um tipo SET é declarado da seguinte forma: <identificador> : SET OF tipo_base; Abaixo são mostrados alguns exemplos de declaração de tipos conjuntos: Alfa : SET OF `A`..`Z`; W : ARRAY[0..20] OF SET OF 0..31; Tipos de Dados Arquivo (FILE). Estes tipos de dados correspondem a uma seqüência linear de componentes de um tipo de dado escalar qualquer. O número de componentes não é definido na declaração. A declaração geral dos tipos arquivo é feita como segue: <identificador> : FILE OF tipo_base; Um exemplo de declaração de um arquivo é mostrado abaixo: Arq_1 : FILE OF CHAR; Tipos de Dados Seqüência de Caracteres (STRING). São os dados que consistem de cadeias de caracteres, com um comprimento de características dinâmicas. O ordenamento entre dois dados do tipo STRING está relacionado ao ordenamento considerando os primeiros caracteres de cada cadeia. A exemplo das constantes do tipo CHAR, as do tipo Seqüência de Caracteres são representadas, nos programas Pascal delimitadas por apóstrofes como mostra o exemplo que segue: 3.10

CONST DISC = INE 5201 ; As variáveis Pascal do tipo STRING são declaradas como segue: <identificador> : STRING[tam_max]; Onde, tam_max corresponde ao número máximo de caracteres compondo a seqüência. No exemplo abaixo, é declarada uma seqüência de caracteres de tamanho máximo igual a 20: Cidade : STRING[20]; 3.3.3. Um exemplo de uso de tipos de dados estruturados Na primeira lista de exercícios proposta, era solicitado desenvolver um algoritmo que permitisse entrar com 8 números e imprimir a quantidade de números maiores que 4. Vamos ver como poderíamos implementar este problema em Pascal utilizando os tipos ARRAY suportados nesta linguagem. É claro que o uso de variáveis de tipo escalar (no caso, INTEGER) seria possível, mas, poderemos ver que o uso de vetores permite simplificar significativamente o programa. Vamos considerar, então, que os 8 números a serem introduzidos pelo usuário do programa serão, na realidade, componentes de um vetor, ao qual daremos o nome NUM. O algoritmo a ser desenvolvido é simples... em primeiro lugar, o programa deverá ler os 8 números, ou seja, os 8 componentes do vetor... em seguida, basta que este compare, um a um, os componentes com o valor 4 e imprima apenas aqueles que forem superiores a 4. Uma forma de implementar esta solução em Pascal é mostrada a seguir. 4. AÇÕES BÁSICAS NUM PROGRAMA PASCAL 4.1. A atribuição de valor A maior parte dos programas de computador nada mais são que a formalização de um algoritmo, sendo que boa parte das ações definidas em algoritmos (principalmente na área de Engenharia) podem ser expressos por expressões matemáticas. Quando uma expressão matemática é traduzida para uma linguagem de programação, o programador faz uso de variáveis as quais serão modificadas pela expressão matemática ou vão fazer o papel de agente modificador do valor de uma dada variável. PROGRAM Maior_Num; i : INTEGER; Num : ARRAY[1..8] OF INTEGER; BEGIN (* Leitura dos numeros *) FOR i := 1 TO 8 DO BEGIN write( Entre com o numero `,i,` -> ); readln(num[i]); END; 3.11

(* Determinacao do maior numero *) FOR i := 1 TO 8 DO IF Num[i] > 4 THEN WRITELN(`>> O numero `,Num[i],`eh maior que 4!!!`); END. As expressões matemáticas em Pascal são expressas indicando-se o identificador de uma variável (a variável cujo valor vai ser modificado), seguida do símbolo de atribuição de valor := e da expressão que irá definir a forma de modificação do valor da variável. De uma forma geral, tais expressões são assim escritas: <identificador_variável> := <expressão>; Um cuidado que o programador deve ter quando escreve expressões em Pascal é o respeito às declarações de tipos de dados realizadas no início do programa. O valor resultante da expressão deve ser do mesmo tipo que o da variável presente no lado esquerdo da expressão, seja ele escalar ou estruturado. É importante lembrar que num programa de computador, quando um valor é atribuído a uma dada variável, o seu valor anterior à instrução de atribuição é apagado definitivamente. Por esta razão, é bastante comum encontrarmos instruções de atribuição do tipo: x := x - 1; ou soma := soma + a; Nestes casos, nota-se a presença do identificador da variável nos dois lados da instrução de atribuição. Isto significa que o valor anterior da variável é utilizado para definir o seu novo valor. No primeiro exemplo, observamos uma operação de decremento da variável x, ou seja, o seu novo valor é igual ao valor anterior diminuído de uma unidade. No segundo exemplo, o valor anterior da variável soma é adicionado ao valor de outra variável (a) para definir o novo valor de soma, caracterizando uma operação de acúmulo. 4.2. A avaliação de expressões Uma expressão num programa Pascal pode ser caracterizada por uma seqüência de operações elementares, como aquelas apresentadas quando da apresentação dos tipos de dados de Pascal (adições, subtrações, etc...). Quando caracterizadas desta forma num programa, algumas regras de avaliação da expressão devem ser observadas para que se obtenha o resultado esperado: a avaliação de um constante corresponde ao valor representado por ela; a avaliação de uma variável corresponde ao seu valor corrente; a avaliação de uma operação corresponde ao valor resultante da aplicação do seu operador sobre seus operandos; a avaliação de uma chamada de função corresponde ao valor resultante da aplicação desta função ao conjunto de seus argumentos. A avaliação de expressões mais complexas é resultante da política de avaliação do compilador da linguagem, esta política sendo baseada num esquema de prioridades 3.12

relativas dos operadores existentes na expressão. Na tabela abaixo são apresentados os operadores suportados por Pascal, numa escala decrescente de prioridades: Operadores Operação unários NOT e - (mudança de sinal) multiplicativos DIV, MOD, *, /, AND aditivos +, -, OR relação <, <=, =, <>, >=, > Por exemplo, a expressão A + B / C + D corresponde à expressão matemática: b a + + d c Se quisermos, numa expressão, quebrar o esquema de prioridades do compilador, então deve-se fazer uso de parênteses. Por exemplo, se quisermos construir a expressão: Deve-se escrever (A+B)/(C+D). 4.3. Funções prédefinidas do Pascal a + b c + d Além dos operadores, a linguagem Pascal suporta um extenso conjunto de funções que podem ser utilizadas nas expressões de nossos programas. A chamada a estas funções é feita através do uso das palavras-chave definidas na linguagem. A tabela a seguir apresenta as funções suportadas pela linguagem Pascal. 4.4. Leitura e escrita de dados em Pascal A característica de interatividade de programas Pascal é concretizada a partir de instruções de leitura e escrita de dados (constantes ou variáveis). No caso da leitura de dados, as instruções disponíveis são READ e READLN, cuja diferença básica é a introdução de um salto de linha após a leitura (no caso de READLN). Função Descrição Operandos Resultado ABS(x) valor absoluto Inteiro, Real Inteiro, Real SQR(x) quadrado de um valor (x 2 ) Inteiro, Real Inteiro, Real TRUNC(x) truncamento (parte inteira) Real Inteiro ROUND(x) arredondamento Real Inteiro COS(x) coseno Inteiro, Real Real SIN(x) seno Inteiro, Real Real ARCTAN(x) arco tangente Inteiro, Real Real SQRT(x) raiz quadrada Inteiro, Real Real EXP(x) eleva e x Inteiro, Real Real LN(x) retorna o logaritmo Log x Inteiro, Real Real ODD(x) retorna TRUE se x é ímpar Inteiro Booleano ORD(x) retorna 0 se x = FALSE, 1 se x = TRUE Booleano Inteiro PRED(x) predecessor de x num conjunto Caractere Caractere SUCC(x) sucessor de x num conjunto Caractere Caractere 3.13

Nas operações de leitura, o programador deve introduzir entre parênteses e após a palavra-chave READ (ou READLN), a lista de variáveis que deverão ser introduzidas pelo usuário do programa. Por exemplo, a instrução a seguir permite que sejam introduzidos pelo usuário os valores de quatro variáveis V1, V2, V3 e V4, todas na mesma linha de digitação. Neste caso, os valores de cada variável deverão estar separados por pelo menos um caractere de espaço. READLN(V1,V2,V3,V4); Caso o programador quisesse que o usuário introduzisse os valores um em cada linha, ele teria de fazer: READLN(V1); READLN(V2); READLN(V3); READLN(V4); No caso de operações de escrita, as instruções disponíveis são WRITE e WRITELN, a diferença básica entre as duas sendo a mesma que no caso das instruções de escrita (o salto de linha após a operação de escrita no caso de WRITELN). O comando WRITE (ou WRITELN) pode incluir qualquer informação entre os seus argumentos, incluindo expressões, constantes, variáveis e texto. Abaixo são apresentados alguns exemplos do uso destas instruções: WRITE(V1); WRITELN(2*3); WRITE( INE 5201 ); WRITELN( -> O valor da taxa eh:, Taxa); Um ponto interessante a comentar sobre a instrução de escrita é a possibilidade de formatação da saída, principalmente no caso de valores de tipo REAL. Em princípio, a notação utilizada para a saída de valores reais é a científica. Observe o exemplo de programa dado pela listagem a seguir, cujo objetivo é imprimir o resultado de uma multiplicação entre dois números reais. PROGRAM multi; n1,n2,resultado : REAL; BEGIN WRITE( Entre com o primeiro operando >> ); READLN(n1); WRITE( Entre com o segundo operando >> ); READLN(n1); Resultado := n1 * n2; WRITELN( O resultado da operacao eh:,resultado); READLN; END. Se o programa acima for executado e o usuário entrar com os operandos 2.7 e 5.9, por exemplo, o resultado da operação (que é 15.93) aparecerá impresso na forma científica, como mostra a listagem da execução do programa a seguir: Entre com o primeiro operando >> 2.7 Entre com o segundo operando >> 5.9 3.14

O resultado da operacao eh: 1.5930000000E+01 A notação científica, na maior parte das vezes, não é muito adequada como forma de apresentar resultado. Por esta razão, é interessante poder especificar a forma de apresentação de um resultado, explicitando o espaço que o valor deve apresentar e o número de casas decimais que deve ser apresentado. No caso do exemplo acima, se o programador modificar a última instrução de impressão de modo a explicitar o formato no qual o dado deve ser apresentado, a saída será mais confortável para o usuário. Observe como fica a nova versão desta instrução: WRITELN( O resultado da operacao eh:,resultado:6:3); O primeiro valor colocado após o identificador da variável indica a quantidade total de dígitos que será utilizada para representar o valor; o segundo valor indica o número de casas decimais que deverão ser impressas. Para o exemplo utilizado, considerando a modificação de formatação da saída, o programa executará da seguinte maneira: Entre com o primeiro operando >> 2.7 Entre com o segundo operando >> 5.9 O resultado da operacao eh: 15.930 Outro aspecto importante é onde a saída ocorre quando um comando de impressão é executado. Em princípio, a saída de dados realiza-se no monitor de vídeo onde da máquina onde o programa está sendo executado. No caso de programas onde se queira registrar saídas de dados em impressoras, o programador (no ambiente Turbo Pascal) deverá tomar o cuidado de indicar onde ele quer que seja realizada a saída. Se for no monitor de vídeo, ele poderá escrever normalmente o comando de impressão. Se a saída for na impressora, ele deverá adicionar o identificador da impressora no próprio comando. Este identificador é designado por LST (LiSTer) 1. A listagem de programa abaixo mostra a diferença entre os dois comandos de escrita para saída de informações no monitor de vídeo e na impressora. Observe que, no programa, foi declarada a utilização da unidade Printer, do Turbo Pascal, para evitar que o compilador indicasse erro de compilação por não reconhecer o identificador LST. PROGRAM impressao; USES Printer; BEGIN (* Impressao de texto no monitor de video *) WRITELN( Oi, tudo bem? ); (* Impressao de texto na impressora *) WRITELN(LST, Oi, tudo bem? ); END. 1 No caso do Turbo Pascal, o programador deverá, ainda, tomar o cuidado de declarar, em seu programa, o uso da unidade Printer, para que o compilador reconheça o identificador LST... isto é feito após a linha de cabeçalho do programa, através do comando USES Printer. 3.15