Sie sind auf Seite 1von 37

LGICA DE PROGRAMAO

Material baseado nos seguintes trabalhos

Lgica de Programao Autor: Paulo Srgio de Moraes Ultima Atualizao: 04 de Abril de 2000

Faculdade Vitoriana - Associao Vitoriana de Ensino Superior Algoritmos e Programao FAVI 2004

Universidade Federal da Bahia Departamento de Cincia da Computao Introduo Lgica de Programao MAT 146 Revisada em Janeiro de 2004 por Claudia Gama

Asper Associao Paraibana de Ensino Renovado Introduo Programao Prof. Cndido Egypto

Notas de Aula de Algoritmos e Programao de Computadores Flvio Keidi Miyazawa com a colaborao de Tomasz Kowaltowski Instituto de Computao UNICAMP

Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computao e Automao Algoritmo e Lgica de Programao - 1 Parte Natal-RN / 2004

Por que estudar Lgicas de Programao?

Dentre as respostas para esta pergunta, podemos citar:

Aumento da abstrao e expresso de idias Maior habilidade em resolver problemas. Simular algum recurso de uma linguagem em outra que no o possui.

Maior conhecimento para escolha de Linguagens Melhor uso. Saber extrair o mximo de sua funcionalidade e eficincia. Escolher uma linguagem no por estar familiarizado com ela, mas se ela atende os requisitos do sistema.

Maior facilidade em aprender novas Linguagens essencial que se conhea o vocabulrio e os conceitos fundamentais das linguagens de programao, para que possam ler e entender os manuais das linguagens. Isso serve tanto para a linguagem que se conhece quanto para a que se no conhece.

Avano cientfico na rea computacional

Aumento da capacidade de discusso de projetos A discusso de projetos algo natural para o profissional atual, cabe a ele discutir um projeto de sistema, de automao entre outros.

Critrios de Avaliao da Linguagem

Objetivo: avaliar os recursos das linguagens, pensando em seu impacto sobre o processo de desenvolvimento e a manuteno do sistema. Veja alguns critrios:

Legibilidade Este o critrio mais importante, pois trata da facilidade com que os programas podem ser lidos e entendidos. Na dcada de 70, o desenvolvimento do software era baseado na escrita do cdigo. Com a evoluo do desenvolvimento de softwares, a codificao foi relegada a um papel menos importante, e a manuteno foi reconhecida como parte importante do ciclo, especialmente relacionado ao custo. A facilidade de manuteno de um sistema est fortemente ligada legibilidade dos cdigos. Por isso, ela se tornou uma medida importante da qualidade dos programas e das linguagens.

Capacidade de Escrita uma medida de quo facilmente uma linguagem pode ser usada para criar programas para um domnio de problemas escolhido. A capacidade de escrita afetada diretamente pela legibilidade, pelo fato de que escrever um programa exige uma releitura constante da parte que j foi escrita pelo programador.

Confiabilidade Um programa dito confivel, se ele se comportar de acordo com suas especificaes em qualquer condio. Recursos de linguagem que exercem efeito sobre a confiabilidade dos programas: Verificao de Tipos, Manipulao de Excees, Aliasing, Legibilidade e Capacidade de Escrita.

Custo O custo final de utilizao de uma linguagem de programao uma funo de muitos parmetros, entre eles: Treinamento de Programadores para usar a linguagem, Desenvolvimento do programa na linguagem, Compilar programas na linguagem, Executar programas, Confiabilidade, Manuteno de Programas.

Portabilidade Facilidade de o programa rodar em vrias ambientes diferentes.

Introduo a Computao

Organizao do Computador Um computador e uma coleo de componentes que realizam operaes lgicas e aritmticas sobre um grande volume de dados.

Organizao Bsica de um Computador Seqencial.

A seguir descreveremos cada uma destas partes. Unidade de Entrada: So os componentes que permitem a entrada de informaes exteriores para serem processadas pelo computador. Exemplo: teclado, mouse, cmera de vdeo, etc. Unidade de Sada: So os componentes que permitem as apresentaes de informaes processadas para o meio externo. Exemplo: monitor, impressora, etc. Unidade Central de Processamento: Tambm conhecida como CPU (Central Processing Unit). responsvel pela execuo dos programas e pelo comportamento das outras unidades no sistema. capaz de fazer contas matemticas e fazer decises simples. As principais partes da CPU so: a Unidade Lgica e Aritmtica, Unidade de Controle e Memrias (Registradores, Memria Principal ou Memria RAM, Memria ROM e Cache). Unidade Lgica e Aritmtica: Parte da CPU que realiza operaes aritmticas (soma, subtrao, multiplicao, diviso, resto, troca de sinal, etc) e operaes lgicas (and, or, not, xor). Memria Principal: usado na CPU para manter instrues e dados. Tambm conhecido como Memria RAM (Random Access Memory). A recuperao dos dados feita atravs de circuitos lgicos e por isso rpida. No to grande, j que depende muito da tecnologia de integrao destes circuitos. E uma memria voltil, i.e., quando o computador desligado, todos os dados nesta memria se perdem. Memria ROM: (Read Only Memory) uma memria que contem dados e cdigos de execuo que no podem ser alterados. Uma das aplicaes desta memria manter cdigo de execuo para a leitura e execuo de um sistema operacional.

Memria Cache: Memria rpida projetada para guardar dados que foram recentemente acessados. Para buscar um certo dado na memria RAM, considerado se este pode estar na memria cache, e em caso positivo a busca na memria RAM e interrompida e este recuperado diretamente da memria cache. Tem tempo de acesso mais rpido que a memria RAM. Registradores: Memrias de alta velocidade ligada a operaes de clculos lgicos e aritmticos. Em geral em quantidade e tamanhos pequenos. Unidade de Controle: Parte da CPU que busca na memria a prxima instruo e a decodica para ser executada. Dependendo da instruo, pode-se ter uma transferncia do controle para a unidade lgica e aritmtica ou o envio de dados para os componentes externos a CPU. Memria Secundria: Memria para armazenamento a longo prazo. Os dados armazenados nesta memria no so perdidos quando se desliga o computador. Em geral de dimenses maiores que a Memria RAM, mas de acesso mais lento, j que envolvem o uso de dispositivos mecnicos. Ex. Discos rgidos, disquetes, tas magnticas, etc. Podemos ver que h diversos tipos de memrias em um computador. Cada uma destas memrias usa tecnologia que reete no custo, na velocidade de acesso e na quantidade de armazenamento. A seguinte ordem apresenta algumas memrias ordenadas, de maneira crescente, pela quantidade de armazenamento: Registrador Memria Cache Memria RAM Discos Rgidos. Esta mesma ordem apresenta o custo relativo e a velocidade de maneira decrescente.

Alguns Termos Tcnicos Hardware: Componentes mecnicos e eletroeletrnicos que compem o computador. Parte dura do computador. Software: Seqncia de instrues e comandos que fazem o computador realizar determinada tarefa, tambm chamados de programas de computador. Devem estar armazenados em algum tipo de memria. Perifrico: qualquer componente do computador (hardware) que no seja a CPU. Exemplos: leitoras de disquete, monitores, teclados, vdeo, impressoras, etc. Sistema Operacional: Coleo de programas que gerencia e aloca recursos de hardware e software. Exemplos de tarefas que um sistema operacional realiza so: leitura de dados pelo teclado, impresso de informaes no vdeo, gerenciamento da execuo de vrios programas pela CPU, gerenciamento da memria principal e da memria secundria para uso dos programas em execuo, etc. Exemplos: Linux, Unix, Windows98, OS2, MS-DOS, Windows 2003, etc. Linguagem de Mquina: Conjunto de instrues que podem ser interpretados e executados diretamente pela CPU de um dado computador. especca para cada computador. Linguagem Assembler: (Linguagem de Baixo Nvel) Representao da linguagem de mquina atravs de cdigos mnemnicos. Tambm especca de cada mquina. Linguagem de alto nvel: Linguagem que independe do conjunto de instrues da linguagem de mquina do computador. Cada instruo de alto nvel equivale a vrias instrues da linguagem de mquina, sendo assim mais produtiva. Ex.: Pascal, C, Algol, BASIC, Lisp, Prolog, etc.

Compilador: Tradutor de programas escritos em uma linguagem de programao para programas em linguagem de mquina. Uma vez que o programa foi convertido para cdigo de mquina, este pode ser executado independente do compilador e do programa original.

(a) Gerao do Programa Executvel

(b) Execuo do Programa

Interpretador: E um programa que executa outros programas escritos em alguma linguagem de programao. A execuo de um programa interpretado em geral mais lenta que o programa compilado. Por outro lado, o uso de programas interpretados permite que trechos de cdigos possam ser trocados por novos facilmente, fazendo com que o programa fonte possa mudar durante sua execuo. Este um dos grandes motivos de se usar programas interpretados em sistemas especialistas. Duas linguagens para as quais podemos encontrar interpretadores so Lisp e Prolog.

Execuo de um programa interpretado.

Algoritmo: a descrio de uma seqncia de aes para realizar alguma tarefa. Em geral, estaremos interessados em algoritmos computacionais, que descrevem uma seqncia de aes que podem ser traduzidos para alguma linguagem de programao. Uma maneira para calcular o MDC (Maximo Divisor Comum) de dois nmeros inteiros positivos atravs do Algoritmo de Euclides apresentado no quadro seguinte.

O seguinte programa apresenta uma verso mais estilizada:

Conceito de Algoritmo A automao o processo em que uma tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por mquinas, sejam estes dispositivos mecnicos, eletrnicos (como os computadores) ou de natureza mista. Para que a automao de uma tarefa seja bem sucedida necessrio que a mquina que passar a realiz-la seja capaz de desempenhar cada uma das etapas constituintes do processo a ser automatizado com eficincia, de modo a garantir a repetibilidade do mesmo. Assim, necessrio que seja especificado com clareza e exatido o que deve ser realizado em cada uma das fases do processo a ser automatizado, bem como a seqncia em que estas fases devem ser realizadas. especificao da seqncia ordenada de passos que deve ser seguida para a realizao de uma tarefa, garantindo a sua repetibilidade, d-se o nome de algoritmo. Ao contrrio do que se pode pensar, o conceito de algoritmo no foi criado para satisfazer s necessidades da computao. Pelo contrrio, a programao de computadores apenas um dos campos de aplicao dos algoritmos. Na verdade, h inmeros casos que podem exemplificar o uso (involuntrio ou no) de algoritmos para a padronizao do exerccio de tarefas rotineiras. No entanto, vamos trabalhar voltados automao de tarefas utilizando computadores. Para que um computador possa desempenhar uma tarefa necessrio que esta seja detalhada passo-a-passo, numa forma compreensvel pela mquina, utilizando aquilo que se chama de programa. Neste sentido, um programa de computador nada mais que um algoritmo escrito numa forma compreensvel pelo computador (linguagem de programao). Formas de Representao de Algoritmos Existem diversas formas de representao de algoritmos, mas no h um consenso com relao melhor delas. Algumas formas de representao de algoritmos tratam os problemas apenas em nvel lgico, abstraindo-se de detalhes de implementao muitas vezes relacionados com alguma linguagem de programao especfica. Por outro lado existem formas de representao de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer as idias principais do algoritmo, dificultando seu entendimento. Dentre as formas de representao de algoritmos mais conhecidas podemos citar: Descrio Narrativa; Fluxograma Convencional; Pseudocdigo, tambm conhecido como Linguagem Estruturada ou Portugol.

Descrio Narrativa Nesta forma de representao os algoritmos so expressos diretamente em linguagem natural. Como exemplo, tem-se os algoritmos seguintes: Receita para assar bolo: Acenda o forno para aquecer Unte a forma com manteiga Despeje a mistura na forma Se houver coco ralado ento despeje sobre a mistura Leve a forma ao forno Enquanto no corar deixe a forma no forno Retire do forno Deixe esfriar Clculo da mdia de um aluno Alunos fazem as provas Obter as suas notas Calcular a mdia aritmtica Se a mdia for maior que 60% ento o aluno foi aprovado, seno ele foi reprovado

Esta representao pouco usada na prtica porque o uso da linguagem natural muitas vezes d oportunidade a ms interpretaes, ambigidades e imprecises.

Fluxograma Convencional uma representao grfica de algoritmos onde formas geomtricas diferentes implicam aes (instrues, comandos) distintas. Tal propriedade facilita o entendimento das idias contidas nos algoritmos e justifica sua popularidade. Esta forma aproximadamente intermediria descrio narrativa e ao pseudocdigo (subitem seguinte), pois menos imprecisa que a primeira e, no entanto, no se preocupa com detalhes de implementao do programa, como o tipo das variveis usadas.

Tabela com os smbolos mais comuns nos fluxogramas convencionais.

De modo geral, um fluxograma se resume a um nico smbolo inicial por onde a execuo do algoritmo comea, e um ou mais smbolos finais, que so pontos onde a execuo do algoritmo se encerra. Partindo do smbolo inicial, h sempre um nico caminho orientado a ser seguido, representando a existncia de uma nica seqncia de execuo das instrues. Isto pode ser mais bem visualizado pelo fato de que, apesar de vrios caminhos poderem convergir para uma mesma figura do diagrama, h sempre um nico caminho saindo desta. Excees a esta regra so os smbolos finais, dos quais no h nenhum fluxo saindo, e os smbolos de deciso, de onde pode haver mais de um caminho de sada (usualmente dois caminhos), representando uma bifurcao no fluxo. Representao do algoritmo de clculo da mdia de um aluno sob a forma de um fluxograma.

Pseudocdigo Esta forma de representao de algoritmos rica em detalhes, como a definio dos tipos das variveis usadas no algoritmo. Por assemelhar-se bastante forma em que os programas so escritos, encontra muita aceitao. Na verdade, esta representao suficientemente geral para permitir a traduo de um algoritmo nela representado para uma linguagem de programao especfica seja praticamente direta. A forma geral da representao de um algoritmo na forma de pseudocdigo a seguinte:

Algoritmo <nome_do_algoritmo> <declarao_de_variveis> <subalgoritmos> Incio <corpo do algoritmo> Fim

10

Algoritmo uma palavra que indica o incio da definio de um algoritmo em forma de pseudocdigo. <nome_do_algoritmo> um nome simblico dado ao algoritmo com a finalidade de distingui-los dos demais. <declarao_de_variveis> consiste em uma poro opcional onde so declaradas as variveis globais usadas no algoritmo principal e, eventualmente, nos subalgoritmos. <subalgoritmos> consiste de uma poro opcional do pseudocdigo onde so definidos os subalgoritmos. Incio e Fim so respectivamente as palavras que delimitam o incio e o trmino do conjunto de instrues do corpo do algoritmo.

Representao do algoritmo do clculo da mdia de um aluno, na forma de um pseudocdigo. Algoritmo Calculo_Media Var N1, N2, MEDIA: real Incio Leia N1, N2 MEDIA = (N1 + N2) / 2 Se MEDIA >= 7 ento Escreva Aprovado Seno Escreva Reprovado Fim_se Fim

Primeiros Programas em Pascal(ZIM) As linguagens estruturadas fornecem um nmero limitado de estruturas de controle. Tais estruturas de controle foram desenvolvidas de tal forma que o uxo de execuo no possa ser de qualquer maneira, mas sim de forma bem organizada. Uma representao de um programa que usa estas estruturas de controle permite uma traduo para uxogramas sem que haja linhas se cruzando. Desta forma a manuteno de um programa ca menos difcil, mesmo que isso seja feito por outra pessoa que no aquela que o implementou inicialmente. A linguagem Pascal uma linguagem de alto nvel onde as tcnicas de programao estruturadas so estimuladas atravs de seus comandos. Um programa em Pascal tem o seguinte formato: program <nome>; var <declaraes de variveis> Begin <Comandos - Corpo de Execuo do Programa Principal> end.

11

As palavras program, begin e end so palavras-chave da linguagem Pascal. So palavras reservadas que fazem parte da sintaxe da linguagem e no podem ser usadas para declarar os objetos denidos pelo programador. As palavras begin e end servem para denir um bloco de instrues, no caso, denem o corpo de execuo do programa principal. Na rea de declaraes, so denidos os objetos que iremos usar no programa, que inclui objetos que representam outros trechos de cdigo. program BomDia; begin writeln(Bom Dia!); end. O Comando writeln escreve o texto Bom Dia! no dispositivo de sada. Depois de escrever o texto, o programa ainda pula uma linha. Existe tambm um outro comando, write, para imprimir um texto sem pular linha. Assim, um programa equivalente ao programa BomDia pode ser dado: program BomDia2; begin write(Bom ); writeln(Dia!) end. Note que h um espao em branco depois de Bom, pois caso no tivesse, as palavras Bom e Dia seriam impressas juntas (BomDia). Observaes 1. O ; (ponto e vrgula) serve para separar comandos. Obs.: Dois ponto e vrgula seguidos separam um comando vazio. 2. A execuo do programa esta denida pelos comandos entre begin e end. Note que logo aps a palavra end segue um . (ponto nal). 3. Comandos que so separados por espaos em branco no fazem diferena, mas fica mais legvel. Comentrios Dentro de um programa, descrito em Pascal podemos ter textos que no so considerados para a gerao do cdigo de mquina e servem para ajudar a compreenso do programa ou apenas como comentrios. Comentrios em Pascal podem ser inseridos colocando-os entre (* e *) ou colocando-os entre { e }. Assim, o programa BomDia2 abaixo equivalente ao visto acima. { { { { { Programa: BomDia.Pas Aluno: Fulano de Tal Nmero: 999999 } Curso: MC102 Data: 01/01/01 Descrio: Programa para Imprimir Bom Dia! } } } }

program BomDia2; { Programa para Imprimir Bom Dia! } begin write(Bom ); { Eu sou um comentrio } writeln(Dia!); (* Eu tambm sou um comentrio *) end.

12

A seguir apresentamos o uxograma do programa BomDia2.

Identicadores e Constantes No programa BomDia imprimimos textos usando os comandos write e writeln. Alem disso, estes comandos tambm podem ser usados para imprimir expresses com tipos bsicos do pascal. program idade1; begin writeln(Paulo tem ,5, anos); writeln(Pedro tem ,8, anos); writeln(A soma das idades de Paulo e Pedro :,5+8); writeln(A media das idades de Paulo e Pedro :,(5+8)/2); end. O programa acima deve imprimir as linhas: Paulo tem 5 anos. Pedro tem 8 anos A soma das idades de Paulo e Pedro e: 13 A media das idades de Paulo e Pedro e: 6.5 Observe que o comando writeln pode manipular tanto nmeros inteiros como nmeros reais. Note tambm que se a idade de Pedro passar de 8 para 9 anos, ento todos os lugares onde aparece o nmero 8, correspondente idade de Pedro, devemos alter-lo para 9. Para facilitar este tipo de mudana podemos fazer uso de um identicador associado idade de Pedro, igual a 8 anos. Assim, sempre que precisamos refernciar sua idade refernciamos este identicador em vez do valor 8. Isto facilita a atualizao da idade de Pedro, que se for mudar de 8 anos para 9 anos, atualizamos apenas na denio do valor do identicador associado idade de Pedro. Desta maneira, no precisaremos nos preocupar em procurar todas as ocorrncias do nmero 8, alem de vericar se tal 8 e correspondente idade de Pedro. Identicadores so nomes simblicos para os objetos refernciados nos programas em Pascal. Identicadores podem ser formados por uma letra ou caracter sublinhado seguido por qualquer combinao de letras, dgitos ou sublinhados. Na tabela a seguir, damos alguns exemplos de identicadores validos e invlidos.

13

Na linguagem Pascal, no h diferenas com as letras maisculas e minsculas usadas no identicador. Assim, as seguintes seqncias de caracteres representam o mesmo identicador:

Obs.: Em algumas linguagens, como a linguagem C, h distino entre maisculas e minsculas usadas em identicadores.

Constantes so objetos cujos valores no mudam durante a execuo do programa. A denio das constantes deve ser feita na rea de declaraes, usando a palavra reservada CONST seguida das denies de cada constante.

Apresentamos o programa idade1declarando s idades de Paulo e Pedro por constantes.

Outros exemplos de constantes:

14

Variveis e tipos bsicos O uso de constantes permite que possamos trabalhar com valores previamente xados e seu uso e feito atravs de um identicador que est associado quela constante. Agora se quisermos que um determinado identicador esteja associado a diferentes valores durante a execuo do programa, devemos usar o conceito de variveis. Variveis so objetos que podem ter diferentes valores durante a execuo do programa. Cada varivel corresponde a uma posio de memria. Embora uma varivel possa assumir diferentes valores, ela s pode armazenar apenas um valor a cada instante. Cada varivel identicada por um identicador e contem valores de apenas um tipo. Os tipos bsicos em Pascal so: char, integer, boolean, real, string. A tabela a seguir apresenta exemplos de cada um destes tipos.

integer: Representa um subconjunto dos nmeros inteiros. real: Este tipo representa os nmeros reais. char: Representa um caracter. Ex.: A,B,$, (espao em branco),... string: E uma seqncia de caracteres. Uma string pode ser dada por uma seqncia de caracteres entre apstrofos. Ex: Joo Paulo. A maioria dos compiladores tem a restrio que uma string pode ter ate 255 caracteres. boolean: Uma varivel do tipo boolean pode ter dois valores. True (verdadeiro) ou False (falso).

A declarao de variveis feita usando se a seguinte sintaxe:

15

A palavra var uma palavra reservada da linguagem Pascal que indica que vai comear uma declarao de variveis. Outros exemplos:

Comando de Atribuio O comando de atribuio := atribui um valor que est direita de := (que pode ser uma expresso), para uma varivel (nica) que est na parte esquerda do comando, representada pelo seu identicador. Sempre que houver um comando de atribuio devemos observar os seguintes itens: Primeiro avaliada a parte direita, obtendo-se um valor nico. A parte da direita do comando de atribuio pode ser uma expresso bem complicada. O valor obtido da expresso da parte direita atribudo varivel (nica) que est na parte esquerda. O tipo do valor avaliado da expresso na parte direita deve ser compatvel com o tipo da varivel que est na parte esquerda. Obs.: um nmero inteiro tambm pode ser visto como um nmero real. Se um valor armazenado em uma varivel, o valor anterior que estava nesta varivel perdido. Considere a declarao das variveis a seguir:

Atribuies vlidas e invlidas para estas variveis:

Para esclarecer melhor estes conceitos, suponha que voc tenha uma varivel, chamada idade, denida como sendo inteira: var idade: integer; No momento da execuo, o programa deve denir certa poro da memria, em bytes, para esta varivel. A maioria das linguagens no inicializa as variveis logo aps a denio de sua memria em bytes. Assim, vamos considerar que o valor inicial em uma varivel sempre um valor desconhecido e, portanto iremos consider-lo como um lixo.

16

Apos o comando Idade:=10; a congurao da memria deve car da seguinte forma

Se depois deste comando for dado o comando:

Idade:= 20;

Ento a programa toma o valor 20 e o armazena na varivel idade, e a varivel idade perde o valor anterior. Neste momento a memria ca com a seguinte congurao:

Se depois deste comando for dado o seguinte comando: Idade:=Idade + 15; O programa deve avaliar primeiro o valor da parte direita, depois atribui para a varivel (que esta na parte esquerda). Assim, analisando a parte direita, temos 20+15=35; ento o valor 35 atribudo para a varivel Idade (parte esquerda). Assim, a congurao da memria deve car da seguinte forma:

Considere o seguinte programa:

1. No primeiro comando de atribuio, a varivel Soma deve receber o valor 3. 2. Para executar o segundo comando de atribuio, primeiro avaliado o lado direito do comando: (Soma+20). Note que neste exato momento, a varivel soma tem o valor 3. Este somado a 20, resultando em um valor nico do lado direito igual a 23. Em seguida, este valor armazenado na varivel no lado esquerdo. Assim o valor 23 armazenado na varivel soma. 3. No terceiro comando de atribuio, primeiro avaliado o valor da expresso do lado direito do comando, (23 + 100) resultando em 123 e este atribudo em Soma. 4. No quarto comando, de impresso, deve ser impresso o seguinte texto: O valor contido em Soma : 123

17

Considere o seguinte programa: program Produtos; var Produto : integer; begin Produto:=2; Produto:=Produto*Produto; Produto:=Produto*Produto; Produto:=Produto*Produto; writeln(O valor contido em Produto e: ,Produto); end. O que o programa imprime ? Obs.: Muitas das linguagens de programao no inicializa automaticamente as variveis. Assim, importante inicializar as variveis em algum momento, antes de refernciar seus valores em expresses.

Operadores Operadores Aritmticos A seguir, apresentamos alguns operadores aritmticos presentes na linguagem Pascal.

** utilizado para exponenciao Operandos dos tipos integer e real podem ser combinados. O tipo do valor resultante de uma operao aritmtica depender da operao e dos tipos de seus operadores. A tabela a seguir apresenta as operaes validas para tipos de operandos e seus respectivos resultados.

Exemplos de operaes aritmticas:

18

Operadores Lgicos Os operadores lgicos permitem comparar expresses e retornam valor verdadeiro ou falso. A linguagem Pascal oferece os seguintes operadores lgicos:

Exemplos de operaes lgicas:

Operadores Relacionais Os operadores relacionais podem ser usados para os tipos: real, integer, string, char e byte. Naturalmente os dois operandos devem ser de tipos compatveis. O resultado de uma operao relacional sempre lgico (boolean), retornando ou true ou false. No caso do operador = (igual), tambm possvel se comparar valores booleanos. Na comparao de strings, os caracteres so comparados dois a dois caracteres nas mesmas posies, at que um caracter seja menor que outro ou at que uma string termine antes que outra. Assim, Ave Maria maior que Ave Csar pois o primeiro caracter a diferir nas duas strings o quinto caracter. Na codicao ASCII, M maior que C. Portanto o resultado da relao Ave Maria > Ave Csar true (verdadeiro). Como a codicao de A em ASCII menor que a, ento o resultado da relao AAA > aaa false (falso). Exemplos de operaes relacionais:

Operadores em Strings O nico operador para seqncia de caracteres o operador de concatenao de strings, +, que concatena duas strings.

19

Exemplo da operao de concatenao de strings:

Precedncia Ao se avaliar uma expresso, os operadores seguem uma ordem de precedncia. Estas regras de precedncia so familiares s usadas em operadores algbricos. Se dois operadores possuem o mesmo nvel de precedncia, ento a expresso avaliada da esquerda para a direita. Parte de expresses que esto contidas entre parnteses so avaliadas antes da expresso que a engloba. A seguinte tabela apresenta a ordem de prioridade dos operadores (primeiro os de maior precedncia) na linguagem Pascal.

Algumas Funes Pre-Denidas A maioria das linguagens de programao j nos oferece um subconjunto de funes bsicas que podemos usar para construir expresses mais complexas. A tabela a seguir apresenta algumas destas funes:

20

Comandos de Escrita Como vimos, podemos escrever os dados na tela atravs do comando writeln. Este comando tem como parmetros uma lista de objetos, no necessariamente do mesmo tipo. Os parmetros devem ser separados por vrgulas. Cada parmetro impresso logo aps a impresso do parmetro anterior. A linguagem Pascal tem dois comandos bsicos para escrita: o comando write e o comando writeln (de write+line). Ambos imprimem os valores de seus respectivos argumentos, com a diferena que o comando write mantm a posio da prxima impresso/leitura logo aps a impresso de seu ultimo parmetro e o comando writeln atualiza a posio da prxima impresso/leitura para o incio da prxima linha. O comando writeln sem argumentos apenas atualiza a posio da prxima impresso/leitura para o incio da prxima linha.

O que ser impresso no programa acima? Muitas vezes queremos formatar melhor a forma de impresso dos dados no comando write e writeln. Uma maneira simples de denir a quantidade de caracteres, que uma expresso ser impressa, colocar a expresso a ser impressa seguida de : (dois pontos) e a quantidade de caracteres desejado. Isto far com que a expresso seja impressa com a quantidade de caracteres especicada. Quando o dado a ser impresso for um nmero real, podemos complementar esta formatao adicionando : (dois pontos) e a quantidade de casas decimais depois do ponto decimal. No exemplo a seguir apresentamos um programa com algumas formataes de impresses e sua respectiva tela de execuo.

21

Resultado:

Comandos de Leitura H dois comandos bsicos de leitura: o comando read e o comando readln. Ambos os comandos tem como parmetros variveis, de tipos bsicos diferentes de boolean, e permitem ler do teclado os novos valores a serem atribudos as variveis. O comando read, aps sua execuo, mantm a posio da prxima impresso/leitura logo aps a leitura das variveis. O comando readln (de read line) atualiza a posio da prxima impresso/leitura para o incio da prxima linha. Considere o programa a seguir:

Exerccios: Faa um programa que leia 7 nmeros e imprima a mdia destes nmeros. Obs.: Use no mximo duas variveis numricas. Sabendo que o valor numrico de uma letra na codicao ASCII dada pela funo ord, faa um programa que leia uma letra e escreva a codicao em binrio desta letra. Faa uma programa que leia dois pontos p1 = (x , y) e p2 = (x , y) e devolva a distncia entre estes dois pontos, cujo valor dever ser impresso no programa principal.

Faa um programa que leia uma temperatura em graus Fahrenheit e retorne a temperatura em graus Centgrados.

22

Estrutura Condicional A estrutura condicional permite a execuo de instrues quando uma condio representada por uma expresso lgica satisfeita.

Estrutura Condicional Simples if (condio) then Comando; A seguir, exemplicamos o uso da estrutura condicional simples.

Estrutura Condicional Composta Note que no exemplo do algoritmo maximo1, exatamente um dos dois comandos ifs executado, i.e., ou A > B ou A <= B . Podemos considerar ambos os casos atravs de uma nica condio:

Note que aps a execuo do comando 1 no h ; (ponto e vrgula). Caso tivesse um ponto e vrgula, este estaria separando o comando if de outro comando e, portanto a palavra else no seria continuao deste comando if.

23

Bloco de Comandos Um bloco de comandos um conjunto de instrues que vai ser considerado como sendo um comando nico. Desta forma, possvel compor estruturas, como no caso do comando if, envolvendo mais comandos. Um bloco de comandos denido pelas palavras begin e end.
begin Comando1; Comando2; . .

end;

Aqui parece ser o momento para apresentar mais uma prticade programao estruturada. Sempre que um comando atuar sobre um bloco de comandos, dispomos este bloco de comandos deslocados mais a direita. Os comandos dentro de um bloco, entre begin e end estaro alinhados e tambm estaro deslocados mais a direita. Isto facilita muito a visualizao da atuao de cada comando. No programa a seguir, exemplicamos o uso dos blocos de comandos.

No exemplo seguinte apresentamos um programa que l e imprime as razes de uma equao de segundo grau (se existir).

24

Comando Case O comando case um comando que permite selecionar um conjunto de operaes conforme uma expresso com resultado escalar. Neste comando o valor escalar comparado com vrios outros valores que dividem as opes de execuo em casos (vamos chamar estes de valores de caso). No mximo um caso pode ser verdadeiro. Os valores de caso podem ser tanto valores escalares como faixas de valores de escalares. Alem disso, todos os valores de caso devem ser disjuntos (sem intersees). Se o valor escalar igual ao valor (ou esta dentro de uma faixa) de um caso ento os comandos associados a este caso so executados. H duas formas para a sintaxe do comando case. A seguir apresentamos a sintaxe do caso onde no denimos comandos para o caso de no haver correspondncia com os valores escalares de cada caso.

A sintaxe para a situao onde denimos comandos para o caso onde no h correspondncia com os valores escalares de cada caso e apresentada a seguir: .

Existe diferena com a algumas sintaxes do padro Pascal onde em vez da palavra else na sintaxe anterior, e usada a palavra otherwise.

25

O seguinte programa mostra um exemplo de menu implementado com o comando case.

Exerccios Escreva um programa que determina a data cronologicamente maior de duas datas fornecidas pelo usurio. Cada data deve ser fornecida por trs valores inteiros onde o primeiro representa um dia, o segundo um ms e o terceiro um ano. Faa um programa que l uma medida em metros e escreve esta medida em polegadas, ps, jardas e milhas. 1 polegada 1 p 1 jarda 1 milha _ _ _ _ 25,3995 milmetros 12 polegadas 3 ps 1760 jardas

26

Estruturas de Repetio A estrutura de repetio permite que um comando (ou bloco de comandos) seja executado repetidamente at que uma determinada condio de interrupo seja satisfeita.

Comando For O comando For permite que um comando ou bloco de comandos seja repetido um nmero especco de vezes. Neste comando uma varivel de controle incrementada ou decrementada de um valor inicial em cada interao at um valor nal. A sintaxe do comando for que incrementa a varivel de controle e dada como:

Para a forma que decrementa a varivel de controle, temos a seguinte sintaxe:

Programa para calcular o fatorial de um determinado nmero lido.

Faa um programa que leia um valor inteiro positivo n e em seguida leia uma seqncia de n valores reais. O programa deve imprimir o maior valor real da seqncia.

27

Comando While O comando while uma estrutura de repetio onde a condio de interrupo testada antes de se executar os comandos a serem repetidos.
While <condio1> do begin <comandos> end;

(Validao de entrada) Em determinado momento, um programa deve ler a partir do teclado um nmero que deve estar necessariamente no intervalo [10,50]. Faa um programa que fique lendo nmeros do teclado e pare quando o usurio entrar com o primeiro nmero entre [10,50].

(Seqncia de nmeros positivos) Faa um programa que leia uma seqncia de nmeros positivos O programa deve parar de ler quando o usurio entrar com nmero negativo. O programa deve imprimir a soma, mdia e quantidade dos no negativos.

Comando Repeat uma estrutura de repetio onde a condio de interrupo da estrutura de repetio testada no fim do bloco de repetio. Note que neste comando no preciso usar begin e end para especicar os vrios comandos a serem repetidos.
Repeat <comando1> <comando2> until <condio>

28

(Validao de entrada) Em determinado momento, um programa deve ler a partir do teclado um nmero que deve estar necessariamente no intervalo [10,50]. Faa um programa que que lendo nmeros do teclado e pare quando o usurio entrar com o primeiro nmero entre [10,50].

A seguir apresentamos a implementao do Algoritmo de Euclides usando o comando repeat.

Faa um programa que escreve individualmente os dgitos de um nmero inteiro positivo da esquerda para a direita.

Variveis Compostas Homogneas

Vetores Unidimensionais Ate agora, vimos que uma varivel esta associada a uma posio de memria e qualquer referncia a ela signica um acesso ao contedo de um pedao de memria cujo tamanho depende de seu tipo. Nesta seo, iremos ver um dos tipos mais simples de estrutura de dados que nos possibilitar associar um identicador a um conjunto de elementos de um mesmo tipo. Naturalmente precisaremos de uma sintaxe apropriada para acessar cada elemento deste conjunto de forma precisa.

29

Antes de apresentar este tipo de estrutura de dados, considere o seguinte exemplo: Ler 10 notas de alunos e calcular a media destas notas. Ao final imprimir as notas acima da mdia. Note que neste exemplo as notas devem ser lidas primeiro para depois se calcular a media das notas. Logo em seguida, cada nota deve ser comparada com a media, sendo que as maiores que a media so impressas. Portanto, um programa para isso deveria conter pelo menos 10 variveis apenas para guardar cada nota.

Note que o programa esta cheio de duplicaes e clculos idnticos para cada nota. Agora imagine este programa feito para uma turma de 100 alunos. Certamente no seria nada agradvel ler, escrever ou programar desta maneira. Variveis compostas homogneas correspondem a posies de memria, identicadas por um mesmo nome, individualizadas por ndices e cujo contedo de mesmo tipo. Assim, o conjunto de 10 notas pode ser associado a apenas um identicador, digamos NOTA, que passar a identicar no apenas uma nica posio de memria, mas 10. A referncia ao contedo do n-simo elemento do conjunto ser indicada pela notao NOTA[n], onde n um valor inteiro (tambm podendo ser uma expresso cujo resultado inteiro).

Vetor de 10 notas representado pelo identicador NOTA.

30

Na gura anterior a nota de valor 70, que est na quinta posio da seqncia de notas obtida como NOTA[5]. A declarao de um vetor feita usando a seguinte sintaxe:

Naturalmente, se desejamos trabalhar com n elementos, ento o vetor deve ser declarado com pelo menos n posies na faixa. Os elementos do vetor devem ser refernciados com valores de ndice que pertencem faixa de valores escalares usada na declarao do vetor. Exemplo de declarao de vetores:

A declaracao do vetor NOTA, no exemplo acima, feita da seguinte forma.

Apresentamos o programa anterior agora usando vetor.

Note que agora fcil fazer uma mudana no programa para que o programa faa o mesmo processamento para 100 alunos em vez de 10. Basta mudar a quantidade de alunos denida na constante quant de 10 para 100 (alterar o tamanho do vetor). Faa um programa para imprimir uma seqncia de nmeros lidos em ordem inversa.

31

Vetores Multidimensionais A linguagem Pascal tambm permite a declarao de vetores de vetores, i.e., um vetor onde cada elemento tambm um vetor. Alm disso, voc pode declarar vetores de vetores de vetores. Vetores de vetores so comumente chamadas de matrizes, e correspondem a forma de matrizes que costumamos aprender no ensino bsico. Matrizes podem ser declaradas como nas seguintes formas equivalentes:

O seguinte programa faz a leitura e a impresso de uma matriz de forma tabular. Para cada uma destas operaes, o programa percorre todos os elementos a serem lidos/impressos com dois comandos for encadeados.

Arquivos

Quando um programa trabalha com dados que esto na memria RAM, estes so apagados sempre que o computador desligado ou mesmo quando o programa terminado. Mas muitas vezes queremos que os dados se mantenham em memria para que possam ser processados posteriormente. Neste caso, necessrio que estes dados estejam gravados em uma memria no voltil. Este e o caso de se usar arquivos, que permite gravar os dados e recuper-los sem necessidade de reentrada dos dados. Outra razo para se usar arquivos que estes so armazenados em memria secundria, discos e tas magnticas, que tm em geral uma capacidade muito maior de armazenamento. Podemos distinguir os arquivos suportados pela linguagem Pascal como sendo de dois tipos: arquivos de texto e arquivos binrios.

32

Arquivos Texto Quando trabalhamos com arquivos de texto, supomos que no iremos trabalhar com qualquer tipo de dado, mas com dados que nos representem um texto. Neste caso, vamos supor que os dados de um texto esto organizados por linhas, onde cada linha contm uma seqncia de caracteres ASCII que podem ser impressos. Exemplo destes caracteres so as letras (maisculas/minsculas/com acento), dgitos e os caracteres especiais (como: $, %, #, , ?, ...). Alm disso, um arquivo texto contm alguns caracteres de controle, como por exemplo, os caracteres que indicam o m de uma linha. A unidade bsica em arquivos texto o caracter. Um programa em Pascal considera o vdeo e o teclado como arquivos texto especiais. O vdeo como um arquivo onde podemos apenas escrever e o teclado como um arquivo que podemos apenas ler. Um arquivo texto no ambiente MS-DOS usa dois caracteres para especicar que comear a prxima linha, o caracter Carriage Return seguido do caracter Line Feed, que tem os cdigos internos 13 e 10, respectivamente. Quando trabalhamos com arquivos, importante considerar que todo arquivo tem um indicador da posio corrente de leitura e escrita (gravao). Inicialmente este indicador est posicionado no primeiro byte do arquivo. Se for realizada uma operao de leitura ou gravao de n bytes, ento o indicador da posio corrente no arquivo se deslocar destes n bytes para frente. Alm disso, existe uma posio que ser a seguinte do ltimo byte do arquivo (posio de m de arquivo) e no poderemos ler nenhum byte seguinte, mas poderemos escrever outros bytes a partir desta posio. A sintaxe para declarar uma varivel para trabalhar com arquivos texto a seguinte:
Var Lista_de_identificadores_de_arquivos: text;

O identicador declarado desta forma ser usado para trabalhar com um arquivo que est gravado em disco. O arquivo que est em disco (ou outro meio de armazenamento secundrio) tem um nome e a primeira operao para trabalhar com ele associar este nome (nome externo) com a varivel de arquivo. O comando para fazer esta associao a seguinte:
Assign(varivel_de_arquivo, Nome_arquivo_externo);

Esta operao apenas diz para o programa qual o arquivo (que est em disco) que iremos trabalhar pela varivel de arquivo. Mas isto no faz com que os dados que esto no arquivo (em disco) j estejam disponveis para serem manipulados. Para isso, precisamos dar outro comando que de fato ir possibilitar esta manipulao. Informalmente, este comando ir abrir o arquivo para ser manipulado. Podemos ter trs tipos de comandos para abrir um arquivo texto, um que somente para leitura dos dados, outro que para escrita em um arquivo novo e outro que para escrita a partir do m do arquivo texto. Para abrir um arquivo somente para leitura (a partir do incio do arquivo), usamos o seguinte comando:
Reset(varivel_de_arquivo)

Note que no precisamos dar o nome externo do arquivo, uma vez que isto j foi feito pelo comando assign. Neste caso, o indicador de posio corrente ca apontando para o incio do arquivo.

33

Para abrir um arquivo somente para escrita comeando com um arquivo vazio, usamos o seguinte comando:
rewrite(Varivel de arquivo);

Se j existir um arquivo com o mesmo nome, o arquivo que existia antes reinicializado como arquivo vazio. Como neste caso sempre comeamos com um arquivo vazio, o indicador da posio corrente comea no incio do arquivo. Por m, para abrir um arquivo somente para escrita a partir do m do arquivo (i.e., o contedo inicial do arquivo preservado) usamos o seguinte comando:
append(Varivel de arquivo);

Neste caso, o indicador da posio corrente no arquivo ca inicializado como o m de arquivo. O comando de abertura de arquivo, em um programa Pascal, usa uma memria auxiliar (em memria RAM) para colocar parte dos dados que so lidos/escritos do/para o arquivo. Isto porque em geral, qualquer mecanismo de armazenamento secundrio (disco rgido, tas magnticas, disquetes,...) funcionam atravs de meios eletro-mecnicos, o que fora com que a leitura e escrita de dados usando estes dispositivos seja muito lenta. Assim, sempre que uma operao de leitura ou escrita feita, ela no feita diretamente no arquivo, mas sim nesta memria auxiliar (que extremamente rpida). Caso algum comando faa uso de um dado do arquivo que no est nesta memria auxiliar, o programa usa servios do sistema operacional para atualizar o arquivo com a memria auxiliar e colocar na memria auxiliar os novos dados que o programa precisa manipular. Se um programa for nalizado sem nenhum comando especial, os arquivos que ele estiver manipulando podero no estar atualizados corretamente, j que parte dos dados pode estar na memria auxiliar. Assim, quando no precisarmos mais trabalhar com o arquivo, necessrio usar de um comando que descarrega todos os dados desta memria auxiliar para o arquivo propriamente dito (alm de liberar esta memria auxiliar para futuro uso do sistema operacional). Isto feito com o comando close da seguinte maneira:
close(Varivel de arquivo);

Uma vez que o arquivo foi aberto, poderemos ler e gravar dados (dependendo do modo como o arquivo foi aberto) no arquivo. Lembrando que para ler do teclado, usamos o comando read/readln, e para escrever no vdeo, usamos o comando write/writeln. Do mesmo jeito, para ler e escrever (gravar) em um arquivo texto, usamos os comandos read, readln, write e writeln. A nica diferena que colocamos um parmetro a mais nestes comandos, especicando em qual arquivo ser feita a operao de leitura ou escrita. Assim, vamos supor que em determinado momento os dados do arquivo e a posio corrente no arquivo esto como apresentados no quadro seguinte, onde apresentamos as trs primeiras linhas do arquivo e a posio corrente est indicado por uma seta.

34

Se dermos o comando: read(Varivel de arquivo,a,b,c); onde a , b e c so variveis reais, teremos o mesmo resultado se dssemos o comando read(a,b,c); e entrssemos pelo teclado com os dados 456 3.14 999, i.e., as variveis a , b e c caro com os valores 456 3.14 e 999, respectivamente, e o indicador da posio corrente atualizado de maneira a car com a seguinte congurao:

Outra rotina importante a funo para vericar se estamos no m de arquivo, pois neste caso no poderemos ler mais nenhum dado a partir do arquivo texto. A funo para fazer esta vericao a funo booleana eof, cuja sintaxe e:
eof(Varivel de arquivo)

A funo eof retorna verdadeiro (true) caso o indicador da posio corrente esteja no m do arquivo e falso (false) caso contrrio. Alm do comando read, tambm podemos usar o comando readln. Neste caso, os dados so lidos como no comando read, mas se ainda existir alguns dados na mesma linha corrente do arquivo texto, estes so ignorados e o indicador da posio corrente ca situado no primeiro caracter da prxima linha. Se a varivel a ser lida uma cadeia de caracteres (string), a quantidade de caracteres denida pelo nmero de caracteres que ela foi denida. Alm disso, se a rotina read for aplicada para ler uma cadeia de caracteres e a quantidade de caracteres a ler ultrapassa a linha do arquivo, o indicador da posio corrente ca posicionado no m desta linha, i.e., se uma prxima leitura com o comando read for usado para ler uma string, o indicador de posio corrente se manter naquele mesmo m de linha. Neste caso, para comear a ler a prxima linha como string, o comando de leitura anterior deve ser o readln. Caso a leitura seja de algum outro tipo (integer, real, ...), mesmo que se use o comando read, e o dado no estiver na linha corrente, o comando busca o dado a ser lido nas prximas linhas. Os comandos de impresso (gravao), write e writeln tm resultado semelhante aos correspondentes comandos para imprimir na tela. A diferena que o resultado da impresso ser feita no arquivo. Alm disso, um arquvo texto no tem a limitao de nmero de colunas, como temos em um vdeo. Lembrando que para ir para a prxima linha, em um arquivo texto MS-DOS so usados os caracteres Carriage Return e Line Feed. Em um arquivo texto, como em um arquivo binrio, podemos obter a quantidade de elementos bsicos do arquivo atravs da funo lesize que retorna a quantidade de elementos bsicos do arquivo, cuja sintaxe :
lesize(Varivel de arquivo)

Arquivos Binrios Um arquivo binrio um arquivo que no tem necessariamente a restrio de ter apenas texto. A linguagem Pascal trata os arquivos binrios como sendo uma seqncia de elementos de arquivo. Os elementos de um mesmo arquivo tm o mesmo tipo, que pode ser um tipo bsico da linguagem Pascal, ou outro denido pelo programador.

35

Os comandos read e write tambm podem ser usadas em arquivos binrios (as funes readln e writeln no so vlidas para arquivos binrios), mas neste caso, usamos exatamente dois parmetros para estas funes, o arquivo a ler/escrever e a varivel (de mesmo tipo que o elemento bsico) que iremos ler/escrever. Um arquivo binrio declarado da forma:
FILE of tipo elemento bsico;

A seguir apresentamos alguns exemplos de declarao de arquivos:


ArqDados: File of TipoAluno; ArqNums: File of Integer; ArqVetCars: File of array [1..100] of char; ArqCars: File of char;

Arquivos texto (text) so muito semelhantes com arquivos do tipo le of char, mas arquivos do tipo text tm operaes como EOLN (End of Line), o que no ocorre com arquivos do tipo le of char. Para associar o nome externo (nome do arquivo em disco) tambm usamos o comando assign, da mesma forma que usada para arquivos texto. Os comandos de abertura de um arquivo binrio so o reset e o rewrite. Para abrir um arquivo para leitura e gravao de um arquivo j existente, usamos o comando:
reset(Varivel de arquivo);

Note a diferena deste comando para arquivos texto e arquivos binrios. Usando este comando para arquivos texto, s podemos ler do arquivo, enquanto para arquivos binrios, podemos ler e escrever. Inicialmente os dados j existentes no arquivo so mantidos, podendo ser atualizados por comandos de escrita. Caso o arquivo j esteja aberto, este comando reposiciona o indicador de posio corrente do arquivo para o incio do arquivo. Para abrir um arquivo novo (vazio) para leitura e gravao comeando com um arquivo vazio, usamos o comando:
rewrite: rewrite(Varivel de arquivo);

Se j existir um arquivo com o mesmo nome, o arquivo que existia antes reinicializado como arquivo vazio. Com este comando tambm podemos ler, escrever/atualizar no arquivo binrio. Tanto usando o comando reset como rewrite, o indicador de posio corrente inicializado no incio do arquivo. Para ler um elemento do arquivo (denido pela posio do indicador corrente do arquivo) podemos usar o comando:
read(Varivel de arquivo,Varivel Elemento Bsico);

onde Varivel Elemento Bsico a varivel que ir receber o valor do elemento que est indicado no arquivo. Aps a leitura deste elemento o indicador de posio corrente passa para o prximo elemento (ca em m de arquivo, caso no exista o prximo elemento).

36

Para escrever um elemento no arquivo (na posio indicada pelo indicador de posio corrente do arquivo) usamos o comando write:
write(Varivel de arquivo,Varivel Elemento Bsico);

onde Varivel Elemento Bsico a varivel que ir receber o valor do elemento que est indicado no arquivo. Aps a escrita deste elemento o indicador de posio corrente passa para o prximo elemento (ca em m de arquivo, caso no exista o prximo elemento). Quando usamos arquivos binrios, podemos usar a funo eof, que retorna true caso estejamos no m de arquivo e false caso contrrio e tambm podemos redenir a posio do indicador corrente de arquivo, tanto para frente como para trs. O comando que nos permite mudar este indicador o comando seek cuja sintaxe a seguinte.
seek(Varivel de arquivo,NovaPosio);

onde NovaPosio um inteiro entre 0 e (lesize(Varivel de arquivo)-1). Com este comando, o indicador ir car posicionado no elemento de arquivo de nmero NovaPosio. Lembrando que o primeiro elemento est na posio 0 (zero) e lesize(Varivel de arquivo) retorna o nmero de elementos de arquivo.

37

Das könnte Ihnen auch gefallen