146 pág.

Pré-visualização | Página 11 de 50
integer ou real fornecendo resultado do tipo real se pelo menos um dos operandos é do tipo real e resultado do tipo integer se ambos os operandos são deste tipo. O operador / sempre fornece resultados do tipo real. Isto significa que o resultado de uma expressão como 6/2 não pode ser armazenado numa variável do tipo integer. Além destes, o sistema oferece dois outros operadores aritméticos que operam apenas com valores do tipo integer resultando valores também deste tipo. São os operadores div e mod que fornecem, respectivamente, o quociente e o resto da divisão inteira do primeiro operando pelo segundo. Por exemplo, 30 div 7 = 4 e 30 mod 7 = 2, enquanto que 5 div 7 = 0 e 5 mod 7 = 5. Como os operandos devem ser do tipo integer, uma expressão do tipo 30.0 div 7 gerará um erro de compilação. Na avaliação de expressões, o sistema efetua primeiro as operações envolvendo div, mod, *, /, para depois efetuar as operações envolvendo (+) e (-). Isto é chamado de prioridade dos operadores. Observe que div, mod, (*) e (/) têm a mesma prioridade e que esta é maior do que a prioridade de (+) e (-). Como em matemática, a prioridade pode ser alterada com a utilização de parênteses. Se uma expressão envolvendo operadores de igual prioridade não for parentetizada, o sistema a avalia da esquerda para direita. Por exemplo, 60/4*3 = 15*3 = 45 enquanto que 60/(4*3) = 60/12 = 5. Um detalhe mais ou menos evidente é que operandos podem ser conteúdos de variáveis. Neste caso, o operando é indicado pelo identificador da variável (é para isto que serve o identificador, para se fazer referência aos valores que na variável estão armazenados). 2.4 Relações Os compiladores da linguagem Pascal realizam comparações entre valores numéricos, realizadas no sentido usual da matemática, e entre cadeias de caracteres, realizadas de acordo com a ordenação do código ASCII. Estas comparações são chamadas relações e são obtidas através dos operadores relacionais: Tabela 5 Operadores relacionais Operador Operação > maior do que >= maior do que ou igual a < menor do que <= menor do que ou igual a = igual <> diferente O resultado da avaliação de uma relação é true, se a relação for verdadeira, ou false se a relação for falsa. Assim, 3 > 5 resulta no valor false, enquanto que 7 <= 7 resulta no valor true. Sendo um valor true ou false, o resultado da avaliação de uma relação pode ser armazenado numa variável do tipo boolean. Os operandos de uma relação podem ser expressões aritméticas. Nestes casos, as expressões aritméticas são avaliadas em primeiro lugar para, em seguida, ser avaliada a relação. Por exemplo, a relação 3*4 - 5 < 2*3 - 4 resulta no valor false, pois 3*4 - 5 = 7 e 2*3 - 4 = 2. Isto significa que os operadores relacionais têm prioridade mais baixa que os aritméticos. 2.5 Expressões lógicas Os compiladores da linguagem Pascal também avaliam expressões lógicas obtidas através da aplicação dos operadores lógicos binários and e or a duas relações ou da aplicação do operador lógico unário not a uma relação. Se r1 e r2 são duas relações, a avaliação da aplicação dos operadores lógicos binários, de acordo com os valores de r1 e r2, são dados na tabela abaixo. Tabela 6 Avaliação de expressões lógicas com os operadores and e or r1 r2 (r1) and (r2) (r1) or (r2) true true true true true false false true false true false true false false false false Uma expressão lógica do tipo (r1) and (r2) só recebe o valor true se os valores de r1 e de r2 forem iguais a true; uma expressão lógica do tipo (r1) or (r2) só recebe o valor false se os valores de r1 e de r2 forem iguais a false. A aplicação do operador unário not simplesmente inverte o valor original da relação: Tabela 7 Operador unário not r1 not r1 true false false true Considerando que os operadores and e or possuem o mesmo grau de prioridade, se uma expressão não parentetizada possuir mais de uma relação, ela será avaliada da esquerda para direita. O operador unário not tem prioridade em relação aos operadores binários. Assim, not (5 > 3) or (5 < 3) tem valor false, pois not (5 > 3) é uma relação falsa e 5 < 3 também é. Como os operadores relacionais têm prioridade mais baixa que os operadores lógicos, os parênteses nas expressões acima são necessários. 2.6 Estrutura de um programa em Pascal Estamos aprendendo a escrever programas na linguagem Pascal. Já vimos que se o programa necessitar manipular variáveis, estas devem ser declaradas. Vimos também que se pode definir constantes. Aprenderemos agora que um programa em Pascal contém áreas de programa distintas, cada uma delas com finalidade específica. A última das áreas de programa é a única que é obrigatória, é chamada programa principal e contém as instruções do programa propriamente dito e as ativações ou chamadas de procedimentos e de funções. O programa principal deve ser iniciado com a palavra begin (início, em inglês) e concluído com a palavra end (fim, em inglês), seguida de um ponto final. Desta forma, o "conjunto de instruções" begin end. é um programa em Pascal (o menor programa em Pascal possível) que nada realiza, pois não contém nenhuma instrução propriamente dita. Os termos begin e end são chamados delimitadores e como veremos adiante são utilizados em muitas outras partes de um programa. De um modo geral, as áreas de um programa em Pascal são: identificação do programa, relação das unidades utilizadas, definições de tipos de dados, declaração de constantes, declaração de variáveis, definições dos procedimentos e funções e programa principal. Em seguida discutiremos apenas a identificação do programa, a relação das unidades utilizadas, as definições de tipos de dados e as definições de procedimentos e funções já que as declarações de constantes e de variáveis e o programa principal já foram matéria de comentários. A identificação do programa começa pela palavra obrigatória program seguida de um identificador, devendo o identificador seguir as mesmas regras de identificação de variáveis. Complementando o que já foi dito na seção 2.1, dois identificadores situados numa mesma área do programa devem ser distintos, distinção esta que deve ocorrer até 63º (sexagésimo terceiro) caractere. A identificação do programa é concluída com a aposição de um ; (ponto e vírgula) após o identificador. Uma unidade é um programa dos compiladores Pascal que contém vários procedimentos e funções pré- definidos, cujas utilizações facilitam muitas tarefas de programação. Por exemplo, o sistema possui a unidade Crt que contém o procedimento ClrScr cuja execução faz com que a tela do usuário seja limpa. Usualmente os compiladores Pascal oferecem uma tela para edição, chamada tela de edição, e uma tela pela qual são fornecidos os dados de entrada e os resultados do processamento são exibidos. Esta é a tela do usuário ou tela de trabalho (para se abrir a tela do usuário a partir da tela de edição deve se digitar <alt> + F5; para se retornar para a tela de edição, basta se digitar qualquer tecla). Para que um programa possa utilizar um procedimento que pertence a uma determinada unidade, é necessário que a tal unidade seja relacionada no programa, isto sendo feito através da seguinte sintaxe: uses lista das unidades; Por exemplo, program LimpaTela; uses Crt; begin ClrScr; end. é um programa que limpa a tela do usuário eventualmente utilizada por uma anterior execução de um outro programa. Além da unidade Crt, os compiladores Pascal, de um modo geral, possuem as unidades Dos, Graph, Printer e System. A unidade System contém procedimentos e funções básicas de programação e não há necessidade de ser incluída na lista de unidades,