Apontamentos TLP 10 Ano

ESCOLA SECUNDÁRIA DE EMÍDIO NAVARRO

TÉCNICAS DE LINGUAGENS
DE PROGRAMAÇÃO
10º ANO

© 2000 - Prof. Carlos Almeida 1ª Versão

ANO LECTIVO 2000/2001

_______________________________________________________________ Notas do Professor

Nota Introdutória
O objectivo destes apontamentos não é substituir as aulas, como tal, a exposição de qualquer matéria não é realizada de modo detalhado. Será necessário consultar entre outra bibliografia a bibliografia geral da disciplina e alguns manuais de aplicação. O aluno também deve procurar uma actualização permanente, criando o hábito de consultar publicações técnicas, investigar novos conceitos e discutir sobre eles.

A disciplina Técnicas de Linguagens de Programação insere-se no curriculum do Curso Tecnológico de Informática no 10º e 11º anos, com a carga horária de 4 tempos lectivos, distribuídos, por duas aulas de 2 tempos cada. A disciplina Técnicas de Linguagens de Programação do 10º Ano pretende desenvolver no aluno um raciocínio lógico, que lhe possibilite a escrita de programas informáticos estruturados, documentados, modulares e eficientes. O aluno não deve ficar limitado pelas características ou potencialidades de uma linguagem de programação. Facto pelo qual se enfatiza, numa primeira fase, a resolução de problemas baseado na escrita de algoritmos com passos rigorosos e sistemáticos. A aprendizagem da linguagem de programação Pascal, vem completar esta formação, pelo que se deve executar programas de processamento variado, dando assim a possibilidade a que os alunos, nos anos posteriores, estejam aptos a resolver situações complexas que exigem maior abstracção e para as quais se estabelecem exigências de qualidade total. É fundamental, a aprendizagem correcta da construção de algoritmos e o domínio da técnica TOP-DOWN, em detrimento dos fluxogramas, como ferramenta de análise de um enunciado e sua conversão em forma de algoritmos. Pretende-se que o fluxograma não seja usado como forma de raciocínio, mas como documentação do programa ou algoritmo, sendo, portanto, uma explicação complementar da solução encontrada.

Prof. Carlos Almeida

ii

_______________________________________________________________ Notas do Professor

Sistema de Avaliação
A avaliação da disciplina é contínua. Para cada Unidade Temática indicam-se critérios e técnicas de avaliação concretas, e que variam entre a realização de testes escritos, trabalhos de grupo e provas práticas individuais realizadas no computador.

O professor da disciplina de Técnicas de Linguagens de Programação do 10º Ano, Carlos Almeida, estabeleceu os seguintes critérios de avaliação para o ano lectivo de 2000/2001:
COMPONENTE PRÁTICA 30% • Trabalhos de grupo • Provas práticas Individuais realizadas no computador COMPONENTE TEÓRICA 40% • Testes escritos • Fichas de trabalho ATITUDES DO ALUNO 30% • Destreza com o equipamento • Capacidade de organização e metodologia de trabalho • Concentração e qualidade no trabalho • Relacionamento em grupo • Assiduidade e pontualidade 5% 5% 5% 10% 5% 30% 10% 20% 10%

Prof. Carlos Almeida

iii

_______________________________________________________________ Notas do Professor

Elenco Temático
Nesta disciplina deve ser dada uma grande ênfase à construção de algoritmos, usando as metodologias top-down, pseudocódigo e fluxogramas. A linguagem de programação Pascal é, a indicada para se usar na iniciação à programação. O Pascal deve manter-se como ponto de partida no estudo de algoritmia. Pretende-se desenvolver no aluno um raciocínio lógico, que lhe possibilite a escrita de programas estruturados.
UNIDADE 1 Lógica de Programação 1.1. Análise e desenho de um algoritmo. 1.2. Tipos de dados. 1.3. Operações elementares. 1.4. Prioridade de operadores. 1.5. Variáveis e expressões. 1.6. Traçagem de algoritmos. 1.7. Fluxogramas. 1.8. Pseudocódigo. UNIDADE 2 Estrutura de decisão 1.1. Estrutura Sequencial. 1.2. Estrutura Condicional. 1.3. Estrutura de Repetição. 1.4. Algoritmos de aplicação. UNIDADE 3. Estrutura de Dados 1.1. Vectores. 1.2. Matrizes. 1.3. Cadeia de caracteres. 1.4. Ficheiros. 1.5. Algoritmos de aplicação. UNIDADE 4. Subalgoritmos 1.1. Estruturação de programas. 1.2. Funções. 1.3. Procedimentos.

Prof. Carlos Almeida

iv

15. Estrutura do programa e comentários. Uso de ficheiros em Pascal. Características da linguagem Pascal. 1. Programação em Pascal 1.14. 1.11. Ambiente de trabalho. Estruturas de dados._______________________________________________________________ Notas do Professor UNIDADE 5. Programas de aplicação. Compilação para a memória e disco. Programas em memória residente. 1. 1. 1. Carlos Almeida v .12. Funções e Procedimentos. 1. 1.4.5. Estruturas de controlo.6.13. 1. 1. Características gráficas. 1. 1. Debugger.9.10.8. Prof.7.

Osborne/McGraw-Hill. Borland. LIMA.______________________________________________________________________ Bibliografia Bibliografia Apontamentos do professor.Técnicas e Linguagens de Programação – 10º Ano.Turbo Pascal 6: The Complete Reference. Stephen K. Richard B. Jean-Paul.Programação de Computadores. Artur Augusto (1998) . Lidel. Editorial O Livro Manual fornecido com o software (PASCAL). . Lidel. Prof. Turbo Pascal 5. McGraw-Hill. Pascal. O'BRIEN. Porto Editora (Livro adoptado pela disciplina).Ciência dos computadores uma abordagem algorítmica.0/5. BUNT. (1981) . LOPES.5. TREMBLAY. Jorge (1989) . Técnicas de Programação.Técnicas da Programação. AZUL. Carlos Almeida vi . Jorge Reis (1991) . Porto Editora.

Carlos Almeida vii .__________________________________________________________________ Agradecimentos Apoios e agradecimentos • • • Paulo Sérgio de Moraes (2000) Osmar de Oliveira Braz Júnior (1998) Alexandre Alcobia (1998) Prof.

PROGRAMAS EXERCÍCIOS 6. Carlos Almeida viii . INSTRUÇÕES 4. ALGORITMO REGRAS PARA CONSTRUÇÃO DO ALGORITMO FASES DE UM ALGORITMO TESTE DO ALGORITMO 5. SEQUÊNCIA LÓGICA 3. FLUXOGRAMAS SIMBOLOGIA II III IV VI VII VIII 1 1 1 1 2 3 4 5 5 7 8 8 8 8 10 10 11 11 11 11 12 12 Prof. LÓGICA 2.___________________________________________________________________________Índice Índice NOTA INTRODUTÓRIA SISTEMA DE AVALIAÇÃO ELENCO TEMÁTICO BIBLIOGRAFIA APOIOS E AGRADECIMENTOS ÍNDICE LÓGICA DE PROGRAMAÇÃO 1. PSEUDOCÓDIGO ATRIBUIÇÃO LEITURA E ESCRITA DE DADOS CABEÇALHO DECLARAÇÕES CORPO DO ALGORITMO COMENTÁRIOS 8. ABORDAGEM ESTRUTURADA E CONCEPÇÃO TOP-DOWN ABORDAGEM ESTRUTURADA CONCEPÇÃO TOP-DOWN 7.

OPERADORES OPERADORES ARITMÉTICOS HIERARQUIA DAS OPERAÇÕES ARITMÉTICAS OPERADORES DE COMPARAÇÃO OU RELACIONAIS OPERADORES LÓGICOS 11."REPETIR . ESTRUTURA DE DECISÃO CONDICIONAL .._______________________________________________________________ Notas do Professor 9."ENQUANTO. ESTRUTURAS FUNDAMENTAIS DE PROGRAMAÇÃO 2. ATÉ" 8. INSTRUÇÕES SIMPLES INSTRUÇÕES DE ESCRITA INSTRUÇÕES DE LEITURA INSTRUÇÕES DE ATRIBUIÇÃO EXERCÍCIOS ESTRUTURAS DE DECISÃO 1.. VARIÁVEIS E TIPOS DE DADOS IDENTIFICADORES CONSTANTES VARIÁVEIS TIPOS DE DADOS EXERCÍCIOS 10... ESTRUTURA DE REPETIÇÃO . ESTRUTURAS DE REPETIÇÃO OU CICLOS 5. FAZER" EXERCÍCIOS 7. CONSTANTES.. Carlos Almeida ix . ESTRUTURA DE REPETIÇÃO ."SE" EXEMPLO PRÁTICO EXERCÍCIOS 3. ESTRUTURA DE REPETIÇÃO .. FAZER" 6. ESTRUTURA DE DECISÃO DE ESCOLHA MÚLTIPLA ."PARA."CASO" EXEMPLO PRÁTICO EXERCÍCIOS 4. EXEMPLO PRÁTICO – NÚMERO PRIMO ANÁLISE DO ALGORITMO 14 15 16 16 17 19 21 21 22 22 23 24 24 25 25 26 28 28 28 31 32 33 34 36 36 37 38 39 39 41 42 Prof.

VECTORES EXERCÍCIOS SOBRE VECTORES 3. EXERCÍCIOS ESTRUTURA DE DADOS 1. FICHEIROS FICHEIROS DO TIPO TEXTO FICHEIROS DO TIPO BINÁRIO SUPORTES FÍSICOS DE FICHEIROS OPERAÇÕES COM FICHEIROS 7. MANIPULAÇÃO DE FICHEIROS EM PASCAL FICHEIROS FILE TRATAMENTO DE FICHEIROS FILE FICHEIROS TEXT TRATAMENTO DE FICHEIROS TEXT EXERCÍCIOS SOBRE FICHEIROS 45 48 49 49 51 52 53 55 56 57 59 60 61 61 62 63 63 64 65 72 72 77 Prof. MATRIZES EXERCÍCIOS SOBRE MATRIZES 5. Carlos Almeida x ._______________________________________________________________ Notas do Professor MELHORIA DO ALGORITMO 9. ORDENAÇÃO DE UM VECTOR 4. ESTRUTURA DE DADOS 2. REGISTOS EXERCÍCIOS SOBRES REGISTOS 6.

Prof. Lógica A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas. podem ser descritos como uma sequência de instruções. 1. Realizar algoritmos simples. Carlos Almeida 1 . 2. entende-se por instruções “um conjunto de regras ou normas definidas para a realização ou emprego de algo”. Verificar a eficiência dos algoritmos através da técnica de traçagem. porém. Traduzir expressões matemáticas para computação e vice-versa. ela permite definir a sequência lógica para o desenvolvimento.1 LÓGICA DE PROGRAMAÇÃO 1. Instruções Na linguagem comum. Sequência Lógica Estes pensamentos. que devem ser seguidas para se cumprir uma determinada tarefa. Objectivos Iniciar o aluno nos conceitos da programação estruturada. 3. Em informática. Sequência Lógica são passos executados até atingir um objectivo ou solução de um problema. instrução é a informação que indica a um computador uma acção elementar a executar. Lógica de programação é a técnica de encadear pensamentos para atingir determinado objectivo. Decompor um problema nas suas partes elementares através da técnica TOP-DOWN.16.

sem nos atermos as regras rígidas da sintaxe de uma linguagem. precisaremos colocar em prática uma série de instruções: descascar as batatas. é necessário organizar as acções a serem tomadas pela máquina de forma organizada e lógica. Instruções são um conjunto de regras ou normas definidas para a realização ou emprego de algo. Podemos pensar em algoritmo como uma receita. é o que indica a um computador uma acção elementar a executar.____________________________________________________________Lógica de Programação Convém ressaltar que uma ordem isolada não permite realizar o processo completo. fritar as batatas. precisamos colocar em prática o conjunto de todas as instruções. Estas tarefas não podem ser redundantes nem subjectivas na sua definição. Algoritmo Antes de utilizarmos uma linguagem de computador. Carlos Almeida 2 . Por exemplo. uma instrução tomada em separado não tem muito sentido. conhecida como algoritmo. Prof. devem ser claras e precisas. Algoritmo consiste em um conjunto lógico e finito de acções (instruções) que resolvem um determinado problema. Em informática. etc. Um algoritmo é formalmente uma sequência finita de instruções que levam a execução de uma tarefa. para isso é necessário um conjunto de instruções colocadas em ordem sequencial lógica. divisão e subtracção) de números reais decimais. multiplicação. Para isto utilizaremos uma forma de escrever tais acções. Como exemplos de algoritmos podemos citar os algoritmos das operações básicas (adição. na ordem correcta. Algoritmo é uma sequência lógica de instruções que podem ser executadas. se quisermos fazer uma omelete de batatas. para obtermos o resultado. 4. bater os ovos. Dessa maneira. uma sequência de instruções que dão cabo de uma meta específica. É evidente que essas instruções tem que ser executadas em uma ordem adequada – não se pode descascar as batatas depois de fritá-las.

____________________________________________________________Lógica de Programação Outros exemplos seriam os manuais de aparelhos electrónicos. gravar um filme. Chupar o rebuçado 4. como um vídeo. pois. Para isso utilizaremos algumas técnicas: • usar somente um verbo por frase. Prof. tem um número finito de passos. os caminhos que levam a uma solução são muitas. se assim fosse. Algoritmo não é a solução de um problema. São elas: • • descrição sequencial (ordenada). Retirar o papel 3. Aprender algoritmos não se consegue a não ser através de muitos exercícios. Deitar o papel no lixo “Somar dois números”: 1. não devendo ocasionar ambiguidade na sua interpretação. cada problema teria um único algoritmo. Carlos Almeida 3 . Escrever o primeiro número 2. Escrever o segundo número 3. Até mesmo as coisas mais simples. Algoritmos não se aprende: • • Copiando Algoritmos Estudando Algoritmos Algoritmos só se aprendem: • • Construindo Algoritmos Testando Algoritmos Regras para construção do Algoritmo Para escrever um algoritmo precisamos descrever a sequência de instruções. cada passo corresponde a uma acção elementar clara. Por exemplo: “Chupar um rebuçado”: 1. por exemplo. verificamos que contêm características comuns. Devolver o resultado Se analisarmos os diversos algoritmos. Algoritmo é um caminho para a solução de um problema. podem ser descritas por sequências lógicas. e em geral. Somar o primeiro número com o segundo número 4. de maneira simples e objectiva. que explicam passo-a-passo como. Pegar no rebuçado 2.

____________________________________________________________Lógica de Programação • • • • imaginar que se está a desenvolver um algoritmo para pessoas que não trabalham com informática. Carlos Almeida 4 . precisamos primeiro dividir o problema apresentado em três fases fundamentais: • • • ENTRADA: São os dados de entrada do algoritmo. ENTRADA PROCESSAMENTO SAÍDA Imagine o seguinte problema: Calcular a média final dos alunos. ser objectivo. faremos três perguntas: a) Quais são os dados de entrada? R: Os dados de entrada são P1. procurar usar palavras que não tenham sentido duvidoso. usar frases curtas e simples. como por exemplo “como fazer arroz doce” ou então “calcular o saldo financeiro de um stock”. P2 e P3 b) Qual será o processamento a ser utilizado? R: O procedimento será somar todos os dados de entrada e dividi-los por 3: (P1+P2+P3)/3 c) Quais serão os dados de saída? R: O dado de saída será a média final Prof. P2 e P3. PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final. Entretanto ao construir um algoritmo. Onde: MédiaFinal = P1 + P 2 + P3 3 Para montar o algoritmo proposto. Fases de um Algoritmo É importante ressaltar que qualquer tarefa que siga determinado padrão pode ser descrita por um algoritmo. SAÍDA: São os dados já processados. Os alunos realizarão 3 provas: P1.

Visual Basic entre outras) e que são interpretados e executados por uma máquina. como uma linguagem tipo português ou inglês. Programas Programar consiste em elaborar um conjunto finito de instruções. de forma que o computador execute estas instruções. Fortran. Somar todas as notas e dividir o resultado por 3 5. Cobol. Carlos Almeida 5 . sendo isto chamadas de linguagem de programação. Cobol. Visual Basic. 5. Deve-se seguir as instruções do algoritmo de maneira precisa para verificar se o procedimento utilizado está correcto ou não. C++. no caso um computador. No mundo computacional existe uma grande variedade de linguagens: Pascal. C. Nós iremos enfocar uma delas. Estas instruções possuem regras e uma sintaxe própria. Fortran.____________________________________________________________Lógica de Programação O algoritmo seria: Algoritmo Calcular Média do aluno 1. Os programas de computadores nada mais são do que algoritmos escritos numa linguagem de programação (Pascal. Receber a nota de prova3 4. podia-se utilizar a seguinte tabela para o teste: P1 P2 P3 MédiaFinal Explique o que entende por algoritmo. Prof. Receber a nota de prova2 3. C. o Pascal. um programa é por natureza muito específico e rígido em relação aos algoritmos da vida real. No exemplo do algoritmo anterior. reconhecidas pela máquina. Mostrar o resultado da divisão Teste do Algoritmo Após desenvolver um algoritmo ele deverá sempre ser testado. etc. para calcular a média final do aluno. Notem que dada esta interpretação rigorosa. Receber a nota da prova1 2.

Enquanto o múltiplo for menor que o limite indicado fazer: 4. uses Crt.consiste na tradução do algoritmo para a linguagem de programação escolhida. Anotar o número do qual se quer saber os múltiplos (número) 3. Prof. Anotar o limite dos múltiplos (limite) 2. {Este programa está escrito na linguagem PASCAL}. Algoritmo do cálculo dos múltiplos de um número: 1. passar para a sua implementação numa linguagem de programação e assim testar o programa no computador. fase de implementação . Portanto. readln (Numero).2. O primeiro múltiplo é o próprio número (múltiplo = número) 4. Numero : integer.1. O novo múltiplo será igual ao múltiplo anterior mais o número (múltiplo = múltiplo + número) 5. writeln (‘Os múltiplos de ‘. Carlos Almeida 6 .Numero. var Limite : integer. write (‘Qual o valor de que se quer achar os múltiplos? ‘). program Multiplos (input. Multiplo := Numero. primeiro há que estudar o problema e elaborar o seu algoritmo. readln (Limite). é apresentado o algoritmo e sua tradução em linguagem Pascal. Anotar o múltiplo 4. write (‘Qual é o limite da sequência? ‘). Fim do algoritmo.____________________________________________________________Lógica de Programação Para fazer um programa devemos ter claro o algoritmo do nosso problema. do cálculo do múltiplo de um número.consiste na formulação do algoritmo eficaz para a resolução do problema posto. então. ’ são: ‘). begin clrscr. Multiplo : integer. Concluindo. a construção de um programa comporta duas fases fundamentais: • • fase de resolução do problema . Uma vez estabelecido o seu algoritmo podemos. output). Como exemplo.

end. Construa um algoritmo que transforme os valores da temperatura em graus Fahrenheit para graus Célsius. Multiplo := Multiplo + Numero. temos que dar ao computador os valores dos catetos do triângulo. Entrar pelo teclado o valor do lado2 3. end. Carlos Almeida 7 . Tente resolver este problema. Algoritmo do calculo da hipotenusa de um triângulo rectângulo. Faça um algoritmo detalhado para trocar uma lâmpada. Crie uma sequência lógica para tomar banho.____________________________________________________________Lógica de Programação while Multiplo < Limite do begin writeln (Multiplo). Temos que saber a fórmula: hipot = cateto12 + cateto2 2 Além da fórmula. Exercícios Construa o algoritmo para calcular a área de um rectângulo. Descreva com detalhes a sequência lógica para trocar um pneu de um carro. sabendo que a fórmula a aplicar será: celsius = 5 × ( fahr − 32) 9 Prof. Algoritmo área do rectângulo 1. Entrar pelo teclado o valor do lado1 2. Apresentar no ecrã o valor da área Faça um algoritmo para somar dois números e multiplicar o resultado pelo primeiro número. Calcular a área A = lado1 x lado2 4.

Abordagem Estruturada e Concepção Top-Down Abordagem Estruturada Numa linguagem estruturada como por ex. Calcular o valor total da peça (Quantidade * Valor da peça) 5. Abordagem estruturada é uma abordagem sistemática da construção de software que usa princípios como a separação das definições de dados e de programa. processamento e saída no algoritmo seguinte: 1.____________________________________________________________Lógica de Programação Identifique os dados de entrada. Concepção Top-Down A abordagem top-down procura identificar os pontos essenciais da questão. parte-se dos pontos mais gerais para os seus componentes mais particulares. Mostrar o código da peça e seu valor total Faça um algoritmo para “Calcular o stock médio de uma peça”. 6. Pseudocódigo Por pseudocódigo entende-se um código de escrita em que se utilizam representações simbólicas para indicar as instruções do algoritmo. Essas Prof. Receber código da peça 2. até ao nível de pormenor desejado. Receber Quantidade de peças 4. sabendo que STOCK_MÉDIO = (QUANTIDADE_MÍNIMA + QUANTIDADE_MÁXIMA) /2 Teste o algoritmo anterior com dados à sua escolha. o Pascal distingue-se a parte onde são declarados os dados e o corpo com as instruções do programa – parte declarativa e parte operativa. em níveis sucessivos mais concretos. Carlos Almeida 8 . 7. Receber valor da peça 3. concepção descendente (designado por abordagem top-down) e refinamento progressivo.

deve-se verificar se está escrito sem falhas do ponto de vista dos objectivos que se pretendiam alcançar. etc. Não é demais relembrar que. pode-se ir progredindo por fases. um misto de palavras da nossa linguagem natural com termos e notações típicas de uma linguagem de programação. por imprecisões. <Definições/Declarações de Variáveis e Constantes>. Prof. aparecem as instruções Início e Fim. em Pascal ficaria da seguinte forma: PROGRAM <Nome do programa>. BEGIN <Instruções>. O pseudocódigo permite a descrição do algoritmo de uma forma linear. deve estar enquadrado entre dois indicadores que possibilitem determinar onde o algoritmo começa e acaba. usualmente. O algoritmo. Assim. O uso da escrita em pseudocódigo presta-se a uma aproximação sucessiva à versão do algoritmo na linguagem utilizada. deficiente formulação algorítmica. fácil de ler e fácil de compreender. END. depois de efectuar o algoritmo. vícios de raciocínio. Os algoritmos terão a seguinte estrutura: Algoritmo <Nome do algoritmo> <Definições/Declarações de Variáveis e Constantes> Início <Instruções> Fim Por curiosidade. revendo o pseudocódigo e substituindo-o progressivamente por terminologia própria da linguagem de programação. Carlos Almeida 9 . ou seja. em pseudocódigo. O pseudocódigo pode ser visto como a tentativa de fundir a expressividade da linguagem natural e o rigor lógico de esquemas como o fluxograma.____________________________________________________________Lógica de Programação representações simbólicas são.

PERÍMETRO) Fim Num algoritmo. Exemplo: Escrever(‘O valor da área é: ’. A variável funciona como um recipiente em que vão ser colocados dados. PERÍMETRO: Reais PI Início Ler (RAIO) ÁREA PI x RAIO2 2 x PI x RAIO 3. Estes dados são afectados a variáveis.____________________________________________________________Lógica de Programação Atribuição Esta operação tem por objectivo atribuir um valor a uma variável. área) A instrução Ler é utilizada para introduzir dados no computador através do operador.14159 PERÍMETRO Escrever (ÁREA. podemos definir três secções: • • • Cabeçalho Declarações Corpo do algoritmo Prof. A operação de atribuição coloca o dado na variável. Exemplo: Ler(A. B) Vejamos um exemplo em pseudocódigo do algoritmo da circunferência e vamos descrever a sua apresentação: Algoritmo circunferência [Este algoritmo dá as características de uma circunferência] Dados RAIO: Inteiro ÁREA. Exemplo: X B/A (na variável X é colocado o valor de B/A) Leitura e Escrita de Dados A instrução Escrever é utilizada para apresentar os dados ao utilizador. Carlos Almeida 10 . Temos de criar tantas variáveis (recipientes) quantas as forem necessárias para o correcto funcionamento do algoritmo.

mais fácil e clara. Os comentários são uma parte importante do algoritmo. Corpo do algoritmo Esta secção contém a sequência das instruções (acções) do algoritmo. Carlos Almeida 11 . Declarações Nesta. Estes comentários dão uma breve descrição da instrução ou de um conjunto de instruções seguintes.____________________________________________________________Lógica de Programação Cabeçalho O cabeçalho é a secção onde é dado o nome ao algoritmo. Eles servem para tornar a leitura. Começa com a palavra “Algoritmo”. Prof. Inicia-se com a palavra “Início” e termina com a palavra “Fim”. Cada passo do algoritmo pode iniciar com um comentário entre dois parênteses rectos. Comentários Existe um tipo de objecto de grande importância na clarificação de um algoritmo. é apresentada a descrição das variáveis e constantes usadas. do algoritmo. São os comentários que ajudam muito à sua compreensão.

Com o fluxograma podemos definir uma sequência de símbolos. a sua utilização restringe-se a um apoio complementar na documentação do algoritmo.____________________________________________________________Lógica de Programação 8. na linguagem pseudocódigo e respectivo fluxograma. Ligação entre partes do fluxograma) Decisão condicional Escolha múltipla Subprograma Linha de fluxo Dentro de cada símbolo terá sempre algo escrito. soma de dois números) Leitura/Escrita de dados (ex. escrever a nota da prova escrita) Início/Fim de processamento (ex. Vejamos o seguinte exemplo. portanto. inicio do algoritmo) Conector de fluxos (ex. Carlos Almeida 12 . pois caso contrário não nos dizem nada. com significado bem definido. Actualmente. valendo pela vantagem gráfica da apresentação das interligações. Fluxogramas O fluxograma é uma forma padronizada e eficaz para representar as instruções lógicas de um determinado processamento. que faz a comparação de dois números: Prof. Vamos apresentar os mais utilizados. sua principal função é a de facilitar a visualização dos passos de um processamento. Vejamos de seguida alguns dos símbolos que iremos utilizar: Processamento em geral (ex. Simbologia Existem diversos símbolos num fluxograma.

VALOR2: Inteiros FRASE: Caracteres Início Ler (VALOR1. Carlos Almeida 13 .____________________________________________________________Lógica de Programação Pseudocódigo Algoritmo Comparar Dados VALOR1. VALOR2) Se VALOR1 > VALOR2 então FRASE Senão Se VALOR1 < VALOR2 então FRASE Senão FRASE ‘Valores iguais’ ‘Valor2 é maior’ ‘Valor1 é maior’ Fluxograma Fim se Fim se Escrever (FRASE) Chamar Rotina Adeus Inicio Fim Ler valor1 Ler valor2 Valor1>Valor2 Não Valor2>Valor2 Não Sim Escrever "Valor1 é maior" Sim Escrever "Valor2 é maior" Escrever "Valores iguais" Rotina Adeus Fim Prof.

CD-ROM etc. tendo o tamanho de quatro.). ou na memória secundária (disco duro. possível de ser aplicada para resolver uma certa classe de problemas e não apenas um problema específico. b. na memória. no caso dos valores 4. que recebem o nome de variáveis e tornam a fórmula genérica. usualmente é feita através de letras. Carlos Almeida 14 . O computador. que indica onde cada informação está localizada. Todas as informações existentes no computador estão ou na memória primária (memória RAM).____________________________________________________________Lógica de Programação 9. valores a serem substituídos na fórmula. Uma variável é um espaço reservado na memória do computador para armazenar um tipo de dado determinado. ou seja. Variáveis e Tipos de Dados Considere a fórmula simples de matemática do calculo do volume de uma 4 esfera: V = πR 2 . Prof. para poder trabalhar como alguma destas informações. uma letra. cada caixa. Muitos dos dados com que se opera num algoritmo são variáveis. a informação está localizada. uma palavra. ou mais bytes. um número. Variáveis e constantes são os elementos básicos que um programa manipula. Fisicamente. ou cada posição de memória. em cada aplicação. uma frase etc. valores constantes. A memória do computador pode ser entendida como uma sequência finita de caixas ou gavetas de um armário. guardam algum tipo de informação.. invariantes em todas as aplicações da fórmula. este número é representado através da notação hexadecimal. Nesta formula pode-se encontrar: 3 1. Constantes. disquete. precisa saber onde. para a obtenção da solução do problema. que num dado momento. possui um endereço. 3 e π. Operações a serem feitas sobre determinados operandos (valores). Valores que podem ser classificados como: a. 2. a representação destes valores. O computador possui uma área de armazenamento conhecida como memória. como número.

um identificador é um endereço simbólico. um candidato a endereço de memória. num endereço de memória. o qual corresponde a um determinado espaço nessa mesma memória. Um identificador é um nome normalmente atribuído pelo algoritmo ou utilizador a um elemento com que se pretende trabalhar dentro de um algoritmo. em programação. Prof. vamos escrever o nome dos identificadores em letras maiúsculas. um identificador vai traduzir-se em termos de compilação. para maior legibilidade do algoritmo. Carlos Almeida 15 . Não é permitido o uso de espaços em branco ou de qualquer outro caracter. Um identificador é um nome normalmente atribuído a um elemento com que se pretende trabalhar dentro de um algoritmo.o valor que a dita variável assume em cada momento.____________________________________________________________Lógica de Programação Identificadores As variáveis e constantes num algoritmo são designadas por meio de identificadores. para que se possa ter ideia do seu conteúdo. pois que se preferimos. Um identificador é formado por uma letra ou então por uma letra seguida de letras ou dígitos. Por convenção. um candidato a endereço de memória. Em programação. Isto leva-nos a considerar. A formação do identificador deve ser um nome significativo. apresentados numa tabela com possíveis entidades e os correspondentes identificadores das variáveis: ENTIDADES Nome do cliente Morada dos clientes Data em que foi feita a encomenda IDENTIFICADORES NOME_CLIENTE MORADA DATA Quando se trata de variáveis. que um identificador é um endereço simbólico. onde se vai armazenar um dado . que não seja letra ou dígito. Exemplos. Se utilizar mais do que uma palavra para compor o nome da variável utilize o “_” underline para separar as palavras.

Carlos Almeida 16 . Exemplos de declarações de variáveis em pseudocódigo: Prof. quando são declaradas apenas para uso dentro do subalgoritmo.14 30 ‘Sem nome’ MAXIMO POR_DEFEITO Variáveis Variável é a representação simbólica dos elementos de um certo conjunto. Cada variável corresponde a uma posição de memória. a qual contém. cujo conteúdo pode se alterado ao longo do tempo durante a execução de um programa.____________________________________________________________Lógica de Programação Constantes Constante é um determinado valor fixo que não se modifica ao longo do tempo. As variáveis podem assumir: • • um carácter global. durante a execução de um programa. Embora uma variável possa assumir diferentes valores. As variáveis só podem armazenar valores de um mesmo tipo. durante a execução de um programa. Conforme o seu tipo. a constante é classificada como sendo numérica. quando são declaradas para uso em todo o algoritmo. representada por um Identificador. lógicas e alfanuméricas. Uma variável é uma posição de memória. Exemplo de declarações de constantes. uma informação. de maneira que também são classificadas como sendo numéricas. ela só pode armazenar um valor a cada instante. em pseudocódigo: Constantes PI 3. num dado instante. Constante é um determinado valor fixo que não se modifica ao longo do tempo. um carácter local. lógica e alfanuméricas.

sinais de pontuação. 1. usado na transferência de informação entre um computador e os seus dispositivos periféricos. ... sinais das operações aritméticas e de igualdade. É exemplo o código ASCII ("American Standard Code for Information Interchange" leia-se "ásqui"). que posteriormente poderão ser utilizados para cálculos. b.. Numéricas: Específicas para armazenamento de números... NUM: Inteiro NOME: Caracteres SAIR: Lógico Outros exemplos: Variáveis TOTAL PRODUTO * QUANTIDADE Variável Conteúdo da Variável NOME TOTAL ‘Carlos Almeida’ 30 Tipos de Dados As variáveis e as constantes podem ser basicamente de três tipos: Numéricas (Inteiro ou real). alfanuméricas (caracter ou cadeia de caracteres) ou lógicas.. Prof. As variáveis do tipo inteiro são para armazenamento de números inteiros e as Reais são para o armazenamento de números que podem ter partes decimais. Podem ser ainda classificadas como Inteiras ou Reais. parêntesis. os caracteres do alfabeto (a.____________________________________________________________Lógica de Programação Variáveis MAXIMO. num total de 256 símbolos. não apenas grandezas numéricas. Z). . z. Alguns desses códigos permitem representar.. . mas também caracteres literais e sinais de pontuação. B.. 2. 9). Carlos Almeida 17 . entre outros símbolos. Trata-se de um código que utiliza combinações de oito bits (28 = 256) para representar os dez algarismos decimais (0. e mais uma série de caracteres de controlo. Alfanuméricas: Existem actualmente vários códigos susceptíveis de ser utilizados pelos computadores digitais. A..

Este tipo de dado pode assumir qualquer caracter da referida Tabela ASCII. Por exemplo. existe rotinas que dá o ordinal de um dado caracter. O código ASCII. Carlos Almeida 18 . mas apenas um de cada vez. Os dados do tipo caracter correspondem a caracteres individuais. Este tipo de dados é representado pelo tipo de variável: Caracteres.____________________________________________________________Lógica de Programação Os códigos que se destinam a traduzir. Os caracteres disponíveis são geralmente os caracteres da Tabela ASCII. mas também caracteres do alfabeto e sinais convencionais são denominados códigos alfanuméricos. Por curiosidade. Os caracteres disponíveis são geralmente os caracteres da Tabela ASCII. por exemplo a função ORD em Pascal. Existe tipos de dados mais adequados ao manuseamento de texto. não só informação numérica. a função CHR. representa o código alfanumérico universalmente aceite. ao nível do seu emprego em estruturas de controlo. Numa atribuição de um valor a uma variável do tipo CHAR (Caracter) ou STRING (Cadeia de caracteres). existe outro tipo de dados: Cadeia de caracteres (também deignado por: Cadeia Alfanumérica. nas instruções de leitura. Estes tipos de dados são mais adequados ao manuseamento de texto. pois esta é a forma de informar que a informação é caracter ou cadeia de caracteres. temos que ter o cuidado de colocar o valor (dado) entre aspas (‘). escrita e atribuição. são dados que podem assumir apenas dois valores possíveis: verdadeiro e falso. são dados que podem assumir apenas dois valores possíveis: verdadeiro e falso. Por sua vez. referido acima. Prof. Para facilitar a manipulação de palavras ou mensagens. As variáveis do tipo inteiro são para armazenamento de números inteiros e as Reais são para o armazenamento de números que podem ter partes decimais. nas instruções de leitura. texto. escrita e atribuição. Lógicas: Os dados do tipo lógico. em Pascal. existe rotinas para converter um dado número inteiro para o correspondente caracter na Tabela ASCII. fundamentalmente. Em Pascal este tipo de dados é representado pelo tipo de variável: String. Os dados do tipo lógico. ou simplesmente caracteres). dentro de um programa. Os dados do tipo caracter (Char em Pascal) correspondem a caracteres individuais. A sua utilidade reside.

Ocupa 2 bytes na memória.7 x 10308. Ocupa 1 bytes na memória. Descreva resumidamente o que se passa ao nível dos identificadores de variáveis. Representa os números entre -128 até 128. ocupa 2 bytes na memória. Prof.7 x 1038. Explicite a diferença entre uma constante e uma variável. Conjunto de caracteres (Char). Números de 0 até 65535.____________________________________________________________Lógica de Programação O que é uma constante? Dê dois exemplos. da tabela ASCII. Números de 0 até 255. Ocupa 8 bytes na memória.9 x 10-39 até 1. O que é uma variável? Dê dois exemplos. Exercícios 1. Ocupa 4 bytes na memória. ocupa 1 byte na memória. Representa os números entre 2. Valor lógico. Representa os números entre -2147483648 até 2147483648. Representa um dos caracteres. Ocupa 1 byte na memória. Representa os números entre 5 x 10-324 até 1. Ocupa 6 bytes na memória. Representa os números entre 1. Ocupa 1 byte na memória. Ocupa de 1 a 255 bytes na memória.5 x 10-45 até 3. no contexto de um programa. isto é. Ocupa 4 bytes na memória. a linguagem Pascal possui definido alguns tipos de dados para a declaração de variáveis.4 x 1038. se uma dada posição de memória armazenará um número ou uma letra etc. Carlos Almeida 19 . Alguns destes tipos de dados 0são representados na seguinte tabela: Pseudocódigo Inteiro Real Caracter Caracteres Lógico Pascal Integer Real Char String Bolean Word Byte Shor Int LongInt Single Double Descrição Representa números entre -32768 até +32767. O Pascal exige que no momento da declaração das variáveis. se define o tipo de informação que uma variável pode conter. Para isto. quando um programa entra em execução e esses identificadores são tratados internamente pelo computador. Assuma somente dois valores: TRUE (Verdade) ou FALSE (Falso).

Carlos Almeida 20 .3 * 10-23 k) ‘Fim de Questão’ Elabore um Algoritmo para atribuir a variáveis as seguintes informações: l) 12345 m) ‘123456’ n) -1122 o) 10.____________________________________________________________Lógica de Programação Identifica o tipo de cada uma das constantes a) 613 b) ‘R’ c) 1 d) 613.012 * 1015 h) Falso i) 17 * 1012 j) -28.45 p) VERDADE q) ‘c’ r) ‘Amor’ Qual a diferença existente nas seguintes atribuições? s) Letra Nome t) Letra Nome ‘A’ ‘João’ A João É correcto definir uma variável como sendo Carácter e atribuirmos a ela o valor: “PEDRO”? E se a variável fosse definida como Caracteres (cadeia de caracteres).0 e) -613 f) ‘613’ g) -3. a mesma poderia receber um valor do tipo Caracter? Prof.

Os operadores aritméticos utilizam-se normalmente com dois operandos.____________________________________________________________Lógica de Programação No seguinte Algoritmo existe algum erro? Onde? Algoritmo Teste Variáveis MARIA: Caracteres IDADE: Inteiro LETRA: Caracter MARIA: Real Inicio IDADE IDADE IDADE LETRA LETRA LETRA LETRA IDADE Fim 23 678 LETRA 300 ‘abc’ ‘A’ 22 IDADE_ALUNO 10. os operadores + e . Operadores Os operadores são meios pelo qual incrementamos. Carlos Almeida 21 . caso em que significam: o sinal positivo ou o sinal negativo atribuído ao operando.também podem ser usados com um só operando. subtracção. decrementamos. podem utilizar também o operador para exponenciação. comparamos e avaliamos dados dentro do computador. multiplicação e divisão. Prof. Além da adição. Temos três tipos de operadores: • • • Operadores Aritméticos Operadores Relacionais Operadores Lógicos Operadores Aritméticos Os operadores aritméticos são os utilizados para obter resultados numéricos. No entanto.

Estes operadores podem ser usados com quaisquer tipos de ordinais. Para estabelecer prioridades no que diz respeito a qual operação executar primeiro. Os operadores relacionais são: Operadores de Comparação Designação Operador = igual a diferente de ≠ ou <> > maior que < menor que maior ou igual a ≥ ou >= menor ou igual a ≤ ou <= Prof. ou seja. Os resultados que devolvem são sempre do tipo valor lógico. ^ – exponenciação 3. + ou – soma ou subtracção (o que aparecer primeiro) Exemplo: 1 + 7 * 2 ^ 2 –1 = 28 3 * (1 – 2) + 4 * 2 = 5 Operadores de Comparação ou Relacionais Os operandos empregues com os operadores de comparação devem ser de tipos compatíveis entre si. verdadeiro ou falso. ( ) – parênteses 2. Carlos Almeida 22 . * ou / – multiplicação ou divisão (o que aparecer primeiro) 4. com reais e alfanuméricos.____________________________________________________________Lógica de Programação Os símbolos para os operadores aritméticos são: OPERADORES ARITMÉTICOS DESIGNAÇÃO OPERADOR + Adição Subtracção * Multiplicação / Divisão MOD Resto da divisão (Resto) DIV Divisão inteira (Quociente) ^ potenciação Hierarquia das Operações Aritméticas A hierarquia das operações aritméticas são: 1. utiliza-se os parênteses.

se verdadeira inverte para falsa e vice-versa. O resultado da expressão OU é falsa se todas as condições forem falsas. Também são utilizados com muita frequência. tal como os operadores relacionais. Uma expressão OU (OR) é verdadeira se pelo menos uma condição for verdadeira. Os operadores lógicos servem para combinar resultados de expressões. em estruturas de decisão e no controlo de ciclos de repetição. Um expressão NÃO (NOT) inverte o valor da expressão ou condição. A tabela abaixo mostra todos os valores possíveis criados pelos quatro operadores lógicos: Prof. ou seja. retornando se o resultado final é verdadeiro ou falso. Carlos Almeida 23 .____________________________________________________________Lógica de Programação Exemplo: Tendo duas variáveis A = 5 e B = 3 Os resultados das expressões seriam: Expressão A = B A <> B A > B A < B A >= B A <= B Resultado Falso Verdadeiro Verdadeiro Falso Verdadeiro Falso Operadores Lógicos Os operadores de valores lógicos operam normalmente com operandos do tipo valor lógico e devolvem resultados desse mesmo tipo. O resultado da expressão E é falsa se pelo menos uma condição for falsa. o resultado final é verdadeiro ou falso. Os operadores lógicos são: Operadores de Valore Lógico Designação Operador NÃO Negação E Conjunção OU Disjunção XOR Disjunção Inversa Uma expressão E (AND) é verdadeira se todas as condições forem verdadeiras.

Instruções Simples Instruções de Escrita As instruções de escrita são aquelas que servem para enviar dados (mensagens. etc.) para um dispositivo de saída ou periférico de "output". o dispositivo de saída mais comum no trabalho com um computador é o monitor de vídeo ou ecrã. mesmo imprescindíveis. em pseudocódigo: [Imprimir a mensagem] Escrever(‘Não existe quarto vago do tipo escolhido. por vezes. Os resultados das expressões seriam: Expressões A=B AND B>C A<>B OR B<C NOT A>B A<B AND B>C A>=B OR B=C NOT A<=B Resultado FALSO VERDADEIRO VERDADEIRO VERDADEIRO FALSO FALSO 11. o envio de dados para a impressora ou para um ficheiro em disco ou disquete também são tarefas normais e. no entanto. B=8 e C=1.') Prof. Como se sabe. mais usuais.____________________________________________________________Lógica de Programação Operador AND TRUE TRUE FALSE FALSE AND TRUE AND FALSE AND TRUE AND FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE FALSE Operador OR OR TRUE OR FALSE OR TRUE OR FALSE TRUE TRUE TRUE TRUE Operador NOT NOT TRUE NOT FALSE FALSE TRUE TRUE TRUE FALSE FALSE Operador XOR XOR TRUE XOR FALSE XOR TRUE XOR FALSE FALSE TRUE TRUE FALSE Exemplos: Suponha que temos três variáveis A=5. Carlos Almeida 24 . valores de variáveis. Exemplos das instruções de escrita.

por meio de identificadores. Os principais dispositivos que permitem a leitura. em primeiro lugar. em segundo. de memória que uma variável representa. Carlos Almeida 25 . Para isto utilizaremos o símbolo “:=” em Pascal.____________________________________________________________Lógica de Programação [Imprimir a percentagem] Escrever(‘A percentagem de alunos com nota superior à media é ‘. etc. Uma outra forma é através de uma instrução de atribuição. a posição. como se sabe. Quando declaramos uma variável é natural atribuirmos a ela um valor ou uma informação. é através da instrução de leitura como acabámos de ver no ponto anterior. entrada ou "input" de dados num sistema informático são. também a entrada de dados o é. ou seja. e “ ” em pseudocódigo. Exemplo de uma instrução de escrita em pseudocódigo: [Ler a remuneração mensal] Ler(REMUNERAÇÃO) [Ler as variáveis X e Y ] Ler(X. a qual será atribuído à variável. que significa “recebe o valor”. Uma das formas de atribuir ou alterar um valor a uma variável. como foi dito anteriormente. o teclado. e ainda mais alguns outros. Numa instrução de atribuição. ‘%’) Instruções de Leitura Tal como a saída de dados do computador para um periférico é essencial. PERC. receberá um valor. os dispositivos de armazenamento secundário. ou seja os discos e disquetes. como o rato. As variáveis e constantes num algoritmo são designadas. o valor que se atribui à variável em causa pode ser: Prof. Y) Instruções de Atribuição Muitos dos dados com que se opera num algoritmo são variáveis.

0 +1 g) 1/4+2 h) 29. Carlos Almeida 26 .12 + [ { ( 123 / 34 ) + 10 } / 2 . por exemplo: NUM 10 TOTAL (A + B) / 2 um valor contido noutra variável.____________________________________________________________Lógica de Programação • • • um valor directo.0* 5. por exemplo: NUM Exemplos de instruções de atribuição. por exemplo: NUM um valor resultante de uma expressão.1 * ( 45 .0/7+4 i) ‘Carlos ‘ + ‘Almeida’ Indique o resultado das seguintes expressões: j) 2 > 3 k) (6 < 8) OR (3 > 7) l) (((10 DIV 2) MOD 6) > 5) XOR (3 < (2 MOD 2)) m) NOT (2 < 3) Construa o algoritmo que calcule a seguinte expressão: 2 + 3 * { 23 .12 ) ] / 3 } Prof. em pseudocódigo: [Inicializar variáveis] SOMA 0 [Calcular a Média e incrementar Valor] MÉDIA VALOR SOMA / 15 VALOR + 1 Exercícios 1. Indique qual o resultado será obtido das seguintes expressões: a) 1/2 b) 1 DIV 2 c) 1 MOD 2 d) (200 DIV 10) MOD 4 e) 6 +19-23 f) 3.

____________________________________________________________Lógica de Programação

Escreva os comandos de atribuição para a seguintes fórmulas matemáticas:
B C n) X = E D− F A+

o) X =

2 B − 4 A + 2 F −3 3− 2A

Construa uma algoritmo e respectivo fluxograma que lê o raio de uma circunferência e calcula sua área.

Prof. Carlos Almeida

27

2
ESTRUTURAS DE DECISÃO

1.17. Objectivos Prosseguir com o estudo de algoritmos, introduzindo agora as estruturas clássicas de decisão, o que vem completar a unidade anterior.

1.
• • •

Estruturas Fundamentais de Programação

Nas estruturas de um algoritmo é, frequentemente, necessário: jogar com determinadas condições, para decidir se se deve executar uma ou outra instrução; repetir uma série de instruções, um determinado número de vezes ou enquanto se verificar uma certa condição; noutros casos ainda, temos um conjunto de instruções que se repete em diversos pontos do programa, tornando-se então útil passar a tratá-lo como um subalgoritmo.

2.

Estrutura de Decisão Condicional - "Se"

Até agora temos estado a lidar com algoritmos puramente sequenciais, isto é, as instruções são cumpridas uma após outra até chegar ao fim do algoritmo. No entanto existem estruturas que permitem a tomada de decisões em função de condições estabelecidas e assim, o algoritmo apresenta instruções alternativas. Estas condições podem ser verdadeiras ou falsas; conforme esse valor o algoritmo segue uma instrução ou segue outra em alternativa. Estas estruturas não são mais que instruções complexas, geralmente, compostas por várias palavras, mas formando um todo. A estrutura de decisão condicional mais difundida e utilizada é a que se baseia na instrução “Se”. As estruturas “Se” podem ser “encaixadas” umas dentro das outras (Estruturas “Se” encadeadas).

Prof. Carlos Almeida

28

_____________________________________________________________ Estruturas de Decisão

A sintaxe desta estrutura, em pseudocódigo, é a seguinte:
Se <Condição> Então <Instrução se condição verdadeira> [Senão <Instrução se condição falsa>] Fim Se

<Condição> - a condição de controlo é normalmente uma expressão do tipo lógico, isto é, que pode assumir apenas um entre dois valores possíveis: verdadeiro ou falso;

<Instrução...> - obviamente, será uma determinada instrução que se pretende efectuar. Esta instrução tanto pode ser uma instrução simples, como uma instrução composta, ou seja, um conjunto de instruções;

o significado dos parêntesis rectos [...] indica que se trata de uma parte opcional. Assim, o comando “Senão” e a sua respectiva instrução é opcional, ou seja, só é utilizável quando se desejar ou for necessário.

Se tivermos um conjunto de instruções (instruções compostas) para considerar dentro da estrutura podemos inseri-la entre delimitadores “Início ... Fim”.

Resumindo a sintaxe:
Se <Condição> Então <Instrução se VERDADEIRO> Senão <Instrução se FALSO>
<Condição> NÃO

Fim Se

SIM

<Instrução se VERDADEIRO>

<Instrução se FALSO>

Prof. Carlos Almeida

29

_____________________________________________________________ Estruturas de Decisão

Se <Condição> Então <Acção se VERDADEIRO> Fim Se
<Condição> SIM

<Instrução se VERDADEIRO>

Num fluxograma, toda decisão terá sempre como resposta o resultado VERDADEIRO ou FALSO. Essas decisões interferem directamente no andamento do algoritmo.

Como no exemplo do algoritmo “Chupar um Rebuçado”. Imaginemos que algumas pessoas não gostem de chupar rebuçados de morango, neste caso teremos que modificar o algoritmo para:
Algoritmo “Chupar um rebuçado” Pegar no rebuçado O rebuçado é de morango? Se sim, não chupar o rebuçado Se não, continuar com o algoritmo Retirar o papel Chupar o rebuçado Deitar o papel no lixo
SIM Retirar o papel É de morango? NÃO Pegar no rebuçado

Inicio

Não chupar o rebuçado

Chupar o rebuça

Deitar o papel no lixo

Fim

Prof. Carlos Almeida

30

B: Inteiro Inicio Escrever(‘Digite os valores A e B’) Ler(A.’) Fim Se 0 0 [Exemplo 2b] Se ANDAR = 0 Então Início QUARTO_VAGO K Fim Senão Escrever(‘Nenhum quarto vago._____________________________________________________________ Estruturas de Decisão Exemplos de estruturas de decisão condicional.’) Fim Se 0 0 Exemplo Prático Vejamos o seguinte exemplo: Dado dois valores A e B quaisquer. Carlos Almeida 31 . B) Prof. ou A = B Algoritmo Maior Variáveis A. em pseudocódigo: [Exemplo 1] Se X = 1 E K > VALOR Então Se K < MENOR Então M Fim Se Fim Se VALOR [Exemplo 2a] Se ANDAR = 0 Então QUARTO_VAGO K Senão Escrever(‘Nenhum quarto vago. faça um algoritmo que imprima se A > B. ou A < B .

VAR A. B. na linguagem pascal seria: PROGRAM Maior. caso contrário multiplique A por B. Prof. Exercícios 1. IF A > B THEN WRITE(‘A é maior que B’) ELSE IF A < B THEN WRITE(‘A é menor que B’) ELSE WRITE(‘A é igual a B’). em B. Se os valores forem iguais soma A com B. Faça um algoritmo que leia os valores A. B: BYTE. se for negativo. Se positivo armazene-o em A. 3. Faça um algoritmo que leia dois valores inteiros A e B._____________________________________________________________ Estruturas de Decisão Se A > B Então Escrever(‘A é maior que B’) Senão Se A < B Então Escrever(‘A é menor que B’) Senão Escrever(‘A é igual a B’) Fim Se Fim Se Fim Com curiosidade. C e diga se a soma de A + B é menor que C. END. No final do calculo atribuir o valor para uma variável C. Elabore um fluxograma que leia um número. 2. No final mostrar o resultado. BEGIN WRITE(‘Digite os valores A e B’). Carlos Almeida 32 .

44. cujos valores que possa assumir vão ser utilizados no controlo das alternativas ou instruções a escolher . Numa estrutura "Caso" há uma variável. A Sintaxe desta estrutura. é a seguinte: Caso <Variável> <Valor 1> : <Instrução 1> <Valor 2> : <Instrução 2> (. 5."Caso" Há casos em que se tem de optar entre várias opções que uma variável pode dispor. Construa uma algoritmo e respectivo fluxograma que lê o nome e as 4 notas bimestrais de um aluno. Neste caso. Essa estrutura é conhecida pela estrutura “Caso”. em pseudocódigo. 3. caso contrário imprimi-la com o valor zero.) <Valor n> : <Instrução n> [Senão : <Instrução>] Fim Caso.. utilizando as seguintes fórmulas: • • Para homens: (72. Prof. Exibir P e I no final do algoritmo. Quando for par armazenar esse valor em P e quando for ímpar armazená-lo em I. Em seguida o Algoritmo calcula e escreve a média obtida pelo aluno escrevendo também se o aluno foi aprovado ou reprovado._____________________________________________________________ Estruturas de Decisão 4. Construa um algoritmo em pseudocódigo para ler um número e verificar se ele é par ou ímpar. construa um algoritmo que calcule seu peso ideal. 6. Tendo como dados de entrada a altura e o sexo de uma pessoa.7*h) .58 Para mulheres: (62.1*h) .7 (h = altura) 7. Construa um fluxograma para ler uma variável numérica N e imprimi-la somente se a mesma for maior que 100. pelo que se terá de recorrer a várias estruturas “Se” encadeadas. Carlos Almeida 33 . temos uma estrutura de decisão composta ou decisão de escolha múltipla que vai tornar a leitura do algoritmo mais fácil.. O encadeamento das estruturas de decisão condicional “Se” traz dificuldade na interpretação do algoritmo.a esta variável é costume chamar-se selector. Estrutura de Decisão de Escolha Múltipla .

‘y’ Última letra: ‘z’ Outras letras do alfabeto: restantes letras Prof. • Em algumas implementações existe também uma cláusula "Senão" que se destina a complementar o leque de alternativas. portanto um conjunto de instruções a realizar. • Quando de indica <Instrução 1>.. com a seguinte caracterização: • • • • Primeiras letras: ‘a’. ‘b’ Alfabeto inglês: ‘k’. no caso de haver ainda mais hipóteses não explicitadas.. etc. Carlos Almeida 34 .) Instrução n-1 Instrução n Exemplo Prático Construa um algoritmo que caracteriza algumas letras do alfabeto usando a estrutura condicional “Se” e a estrutura “Caso”. pode tratar-se de uma só instrução ou de uma instrução composta.) Valor n-1 Instrução 1 Instrução 2 (. <Valor 2>.... O fluxograma seria da forma: Valor 1 Variável Valor n Valor 2 (. ‘w’. <Instrução 2>.._____________________________________________________________ Estruturas de Decisão • Quando se indica <Valor 1>. e em que pode haver ainda uma outra instrução ou conjunto de instruções a indicar. estamos a referir aos valores possíveis que a variável de controlo poderá assumir. Pode ser apenas um valor ou um conjunto de valores. etc.

'Última letra' FRASE <-.'Outras letras do alfabeto' Escrever FRASE Fim Prof. ‘y’: FRASE ‘z’: FRASE Senão: FRASE Fim Caso Escrever(FRASE) Fim ‘Última letra’ ‘Outras letras do alfabeto’ Início Ler LETRA 'a'.'Alfabeto inglês' FRASE <-._____________________________________________________________ Estruturas de Decisão Algoritmo Selecção [Este algoritmo caracteriza algumas letras do alfabeto] Variáveis LETRA: Caracter FRASE: Caracteres Início Ler(LETRA) Caso LETRA ‘a’. Carlos Almeida 35 . 'b' LETRA outros valores 'k'.'Primeiras letras' FRASE <-. 'y' 'z' FRASE <-. ‘b’: FRASE ‘Primeiras letras’ ‘Alfabeto inglês’ ‘k’. 'w'. ‘w’.

Carlos Almeida 36 .. Assim. o utilizador escolherá a pretendida. temos três situações: • • • − b ± b 2 − 4ac binómio discriminante > 0: tem solução dada por 2a binómio discriminante < 0: não tem solução nos reais binómio discriminante = 0: tem solução dada por − b 2a 2. Estruturas de Repetição ou Ciclos Frequentemente é necessários repetir. uma certa instrução ou conjunto de instruções._____________________________________________________________ Estruturas de Decisão Exercícios 1. O utilizador escolherá uma das três figuras disponíveis a tratar e o algoritmo produzirá o valor da área. na maior parte das vezes. Essa repetição. um ciclo ("Loop") de repetições. um número indeterminado de vezes. 4. um determinado número de vezes. enquanto se verificar certa condição.. A resolução desta equação é baseada na utilização do binómio discriminante b 2 − 4ac .. Sugestão: A partir de um menu em que são apresentadas as figuras geométricas disponíveis. fazer Enquanto. Construa um algoritmo que disponha do cálculo do valor da área de três figuras geométricas. fazer Repetir . A equação do segundo grau apresenta-se na forma ax 2 + bx + c = 0 . De seguida.. Exemplo de estruturas de repetição: • • • Para. não tem que ser uma repetição exacta das mesmas operações. até Prof... ser-lhe-ão pedidos os dados referentes à figura e produzir-se-á o cálculo do valor da área que será apresentado no ecrã. Construa um algoritmo da discussão da equação do segundo grau. Frequentemente é necessários manter. pois pode haver pelo meio certos dados (variáveis) ou parâmetros que se vão alterando à medida que o ciclo vai decorrendo.

"Para.Variável de controlo que parte de um determinado valor e incrementa ou decrementa até um outro determinado valor. A Sintaxe.. fazer" e "Repetir. dependendo da verificação ou não da condição de controlo . fazer" o número de vezes que vai ocorrer a repetição do ciclo é determinada à partida por uma variável de controlo que é incrementada ou decrementada à medida que o ciclo decorre. na medida em que vai assumindo valores sucessivos. em pseudocódigo. Fazer" Esta estrutura de repetição é controlada por uma variável . também é costume chamar "contador" ou variável de iteração. O fluxograma seria da forma: Variável Valor_Inicial até Valor_Final Instrução Prof...o que depende dos acontecimentos no decurso do próprio ciclo. valores de outras variáveis ou expressões._____________________________________________________________ Estruturas de Decisão Enquanto numa estrutura do tipo "Para.. é a seguinte: Para <variável> de <valor inicial> até <valor final> fazer <Instrução> Fim Para As expressões <valor inicial> e <valor final> podem ser valores numéricos directos... À variável que controla o ciclo. Os valores da variável de controlo podem variar num sentido crescente ou decrescente. Estrutura de Repetição .até" o ciclo decorrerá um número indeterminado de vezes. 5. Carlos Almeida 37 . Na estrutura "Enquanto. desde que esses valores sejam números inteiros..

_____________________________________________________________ Estruturas de Decisão A variável toma um valor inicial que vai incrementando (ou decrementando) até um valor final.. em pseudocódigo. A Sintaxe.. Carlos Almeida 38 . Algoritmo Ler_escrever Variáveis NOME: Caracteres CONTADOR: Inteiro Início Para CONTADOR de 1 até 20 fazer Ler(NOME) Escrever(NOME) Fim para Fim 6. Se a condição for verdadeira. dependendo de a condição de controlo se manter verdadeira ou passar a falsa. Estrutura de Repetição . digamos. À partida já sei quantas vezes vou repetir a instrução ou conjunto de instruções. Fazer" O ciclo ou estrutura de repetição começa com a verificação de uma expressão ou condição. a instrução ou conjunto de instruções. é a seguinte: Enquanto <Condição> fazer <Instrução> Fim enquanto O fluxograma seria da forma: Condição Não Instrução Sim Prof. a "condição de controlo". Exemplo: Faça um algoritmo para ler e escrever o nome de 20 pessoas. será executado um número vezes indeterminado à partida."Enquanto.

NOME) TOTAL ← TOTAL + 1 Fim enquanto Fim Exercícios O algoritmo seguinte produz um ciclo infinito. A instrução será executada sempre pelo menos uma vez.. Estrutura de Repetição . se for falsa já não se executa a instrução. Prof. Se a condição for verdadeira executa-se a instrução. Carlos Almeida 39 . Corrija-o. até" Como a condição de controlo de repetição só é avaliada no final do ciclo."Repetir . Algoritmo Ler_escrever Variáveis NOME: Caracteres TOTAL: Inteiro Início TOTAL ← 0 Enquanto TOTAL < 20 fazer Ler(NOME) Escrever(‘Nome = ‘._____________________________________________________________ Estruturas de Decisão • • • Neste caso. A condição é testada antes de se iniciar a Instrução.. a Instrução repete-se enquanto a condição for verdadeira. a instrução ou instruções será(ão) executada(s) sempre pelo menos uma vez. O ciclo será interrompido quando a condição de controlo for verdadeira. Exemplo: Faça um algoritmo para ler e escrever o Nome de 20 pessoas. CONTAGEM 1 Enquanto CONTAGEM <= 10 fazer Escrever(‘Não acabou’) Fim enquanto 7.

a acção realizar-se-á pelo menos uma vez. Exemplo: Faça um algoritmo para ler e escrever o Nome de 20 pessoas. Carlos Almeida 40 . A condição será testada depois de realizada a instrução. Se a condição for falsa executa-se a instrução. NOME) TOTAL ← TOTAL + 1 até TOTAL >= 20 Fim Prof. se for verdadeira já não se executa a instrução._____________________________________________________________ Estruturas de Decisão A Sintaxe em pseudocódigo: Repetir <Instrução> até <Condição> Na forma de fluxograma: Não Instrução Condição Sim • • • • A instrução será repetida até que a condição seja verdadeira. Portanto. Algoritmo Ler_escrever Variáveis NOME: Caracteres TOTAL: Inteiro Início TOTAL ← 0 Repetir Ler(NOME) Escrever(‘Nome = ‘.

CONTAGEM: Inteiro FRASE: Caracteres PRIMO: Lógico Início Ler(NUMERO) PRIMO ← verdadeiro Prof. para “Enquanto Não <Condição>.... Exemplo Prático – Número Primo vamos ver um algoritmo para verificar se um número é ou não primo... LIMITE.. Algoritmo Números_Primos [Vamos verificar se é primo] NUMERO. fazer”. temos: Algoritmo múltiplos NUMERO. LIMITE) MULTIPLO Repetir Escrever (MULTIPLO) MULTIPLO MULTIPLO + NUMERO NUMERO Algoritmo múltiplos NUMERO. Apresentamos um exemplo. MULTIPLO: Inteiro Início Ler(NUMERO. Assim. fazer”.. LIMITE) MULTIPLO NUMERO Enquanto (MÚLTIPLO < LIMITE) Escrever (MULTIPLO) MULTIPLO Fim enquanto Fim MULTIPLO + NUMERO até (MÚLTIPLO >= LIMITE) Fim Nota: Não (MÚLTIPLO >= LIMITE) = (MÚLTIPLO < LIMITE) 8. LIMITE.._____________________________________________________________ Estruturas de Decisão A estrutura “Repetir. até” pode ser realizada utilizando a estrutura “Enquanto.. até” pode ser realizada utilizando a estrutura “Enquanto. fazer”. Trata-se de um algoritmo para o cálculo dos múltiplos de um número até um determinado valor definido por LIMITE. até <condição>”. MULTIPLO: Inteiro Início Ler(NUMERO.. Carlos Almeida 41 . A estrutura “Repetir. Basta mudar de “Repetir...

pela unidade e por ele próprio. Daí que surge: Para contagem de 2 até NUMERO-1 fazer Se (NUMERO mod CONTAGEM = 0) então PRIMO ← falso Fim se Fim para Prof. Se for divisível por qualquer outro._____________________________________________________________ Estruturas de Decisão Para contagem de 2 até NUMERO-1 fazer [Se for divisível não é primo] Se (NUMERO mod CONTAGEM = 0) então PRIMO ← falso Fim se Fim para Se PRIMO então FRASE ← ‘É número primo’ senão FRASE ← ‘Não é primo’ Fim se Escrever(FRASE) Fim Análise do Algoritmo Um número primo é aquele que é divisível. só e somente. Se um número ‘a’ for divisível por outro ‘b’ então o resto da divisão será zero. Como todos os números são divisíveis por um e por si próprios não necessitamos de verificar a divisibilidade. Neste caso temos que se (NUMERO mod CONTAGEM = 0) então o número não será primo. Assim. Por isso aparece a estrutura: Para CONTAGEM de 2 até NUMERO-1 fazer Instrução Fim para A instrução é a verificação da divisibilidade. não é número primo. É o mod. Temos uma operação que nos dá o resto da divisão de inteiros. temos de verificar todos os outros números desde 2 até ao número anterior ao que queremos verificar (NUMERO .1). Carlos Almeida 42 .

Se PRIMO então FRASE ← ‘É número primo’ senão FRASE ← ‘Não é primo’ Fim se Escrever(FRASE) Pode-se considerar uma variante da estrutura “Enquanto.. Carlos Almeida 43 . Para indicar se o número é ou não primo usamos uma variável lógica que toma um de dois valores: ou verdadeiro ou falso. fazer” Vejamos: Algoritmo Números_Primos [Vamos verificar se é primo] NUMERO._____________________________________________________________ Estruturas de Decisão Na realidade estamos a verificar se o número não é primo. Se for primo (primo terá o valor verdadeiro) é apresentado no ecrã “É número primo”. se não for será apresentada a frase “Não é primo”. usamos o valor da variável lógica para fazer a diferenciação.. CONTAGEM: Inteiro FRASE: Caracteres PRIMO: Lógico Início Ler(NUMERO) PRIMO ← verdadeiro [Para não ser primo deve ser divisível por qualquer número entre 1 e ele próprio. Por isso usamos: Se (NUMERO mod CONTAGEM = 0) então PRIMO ← falso Fim se Para mandar a indicação para o ecrã. de 2 até número-1] CONTAGEM 2 [Para iniciar a contagem] Enquanto (CONTAGEM <= NUMERO-1) fazer [Se for divisível não é primo] Se (NUMERO mod CONTAGEM = 0) então PRIMO ← falso Fim se CONTAGEM Fim enquanto CONTAGEM + 1 [Incremento de uma unidade] Prof. isto é. A variável está identificada com o nome PRIMO.

fazer”: Prof.. fazer”. Dentro do ciclo. Vejamos o fluxograma do algoritmo número primo usando a estrutura “Enquanto.. é necessário proceder ao incremento da variável contador (CONTAGEM) para que alcance o valor final pretendido._____________________________________________________________ Estruturas de Decisão Se PRIMO então FRASE ← ‘É número primo’ senão FRASE ← ‘Não é primo’ Fim se Escrever(FRASE) Fim Neste caso é necessária a inicialização da variável contador (CONTAGEM) antes da estrutura “Enquanto. Carlos Almeida 44 ...

_____________________________________________________________ Estruturas de Decisão Início Ler NUMERO PRIMO <-.falso Não CONTAGEM <-.'Não é primo' NUMERO mod CONTAGEM = 0 Sim FRASE <-. Carlos Almeida 45 . Não tem interesse a verificação de números negativos. Prof. nem o zero nem o número um.CONTAGEM + 1 Escrever FRASE Fim Melhoria do Algoritmo O algoritmo pode ser melhorado em dois aspectos: 1.2 CONTAGEM <= NUMERO-1 Não Sim PRIMO FRASE <-.verdadeiro CONTAGEM <-. Solução: impedir ao utilizador a introdução dos referidos valores.'É número primo' PRIMO <-.

Para o segundo aspecto referido.. Existe a inicialização da variável NUMERO (NUMERO 0) para obrigar ao pedido da introdução do número a verificar. obrigando o utilizador a repetir novo valor caso tenha introduzido um valor não apropriado. não sabemos o que poderá acontecer uma vez que não sabemos que valor a variável número contém no momento do teste da condição da estrutura “Enquanto.. fazer”. fazer” para verificar o valor que o utilizador introduz na variável NUMERO..) NUMERO 0 Enquanto NUMERO < 2 fazer Ler(NUMERO) Fim enquanto (. Solução: quando se encontra o valor que divide o número termina-se a estrutura ”Enquanto”. pois o número não é primo._____________________________________________________________ Estruturas de Decisão 2. fazer”. Quando se encontra um valor em que o número é divisível não há vantagem em continuar a verificação. Caso não se faça a inicialização referida.. Carlos Almeida 46 . Vamos começar pelo primeiro aspecto: (.) Acrescentamos a estrutura “Enquanto.. temos: PRIMO ← Verdadeiro CONTAGEM 2 [Para iniciar a contagem] Enquanto (CONTAGEM <= NUMERO-1) E (PRIMO) fazer [Se for divisível não é primo] Se (NUMERO mod CONTAGEM = 0) então PRIMO ← Falso Fim se CONTAGEM Fim enquanto CONTAGEM + 1 [Incremento de uma unidade] Vimos nos operadores lógicos que na conjunção (E) basta uma proposição ser falsa para que a condição seja falsa.... Quando a condição é falsa termina a estrutura de repetição “Enquanto... Prof.

_____________________________________________________________ Estruturas de Decisão Assim. também acaba se a contagem chegar ao fim. Vejamos a tabela de teste para as condições postas.. Prof. CONTAGEM <= NUMERO-1 V V F F PRIMO V F V F (CONTAGEM <= NUMERO-1) E (PRIMO) V (continua o ciclo) F (termina o ciclo) F (termina o ciclo) F (termina o ciclo) O algoritmo final seria: PRIMO: Lógico Início NUMERO 0 Enquanto NUMERO < 2 fazer Ler(NUMERO) Fim enquanto PRIMO ← verdadeiro [Para não ser primo deve ser divisível por qualquer número entre 1 e ele próprio. basta encontrar um valor que divida o número (quando PRIMO passa a ter o valor Falso) para acabar a estrutura “Enquanto. Carlos Almeida 47 . isto é. de 2 até número-1] CONTAGEM 2 [Para iniciar a contagem] Enquanto (CONTAGEM <= NUMERO-1) E (PRIMO) fazer [Se for divisível não é primo] Se (NUMERO mod CONTAGEM = 0) então PRIMO ← falso Fim se CONTAGEM Fim enquanto Se PRIMO então FRASE ← ‘É número primo’ senão FRASE ← ‘Não é primo’ Fim se Escrever(FRASE) Fim CONTAGEM + 1 [Incremento de uma unidade] Para melhor compreensão do algoritmo faz a tabela de teste com valores a tua escolha. fazer”. Esta..

A condição de termo é a entrada de um valor 0. ∑N N =1 30 1 2. ∑ 2N N =1 50 b. 4. o algoritmo deve continuar a calcular o maior número até que a entrada seja igual a 0 (ZERO). Faça um algoritmo para calcular o factorial de um número N!. Exercícios 1. Carlos Almeida 48 . Faça um algoritmo que determine o maior entre N números. Prof. ou seja. Faça um algoritmo para ler base e altura de 50 triângulos e imprimir a sua área. Faça um algoritmo que conte de 1 a 100 e a cada múltiplo de 10 emita uma mensagem: “Múltiplo de 10”._____________________________________________________________ Estruturas de Decisão 9. 5. Faça um algoritmo para calcular: a. 3.

estas têm de ser associadas a um determinado tipo de dados. Para além de uma categoria de dados a que podemos chamar de simples (Inteiro. Para além das estruturas de dados que mantenha em memória primária. Mesmo que soubesse-mos o número de pessoas. como estrutura de dados em memória..18. um algoritmo para ler o nome de N pessoas e que imprimisse esses mesmos nomes ordenados alfabeticamente. 1. O conceito de ficheiro deverá ser mais explorado na unidade relativa à Programação em Pascal. isto é. que são compostos por outros dados. Não seria uma tarefa simples. sempre que se declaram variáveis.3 ESTRUTURA DE DADO S 1. visto não ser possível determinar quantos nomes seriam lidos.. digamos 1000 pessoas.. Distinguir estruturas de dados em memória volátil e memória magnética Realizar algoritmos com a utilização de vectores e matrizes Aplicar no mesmo algoritmo várias estruturas de decisão.). para que o compilador saiba com que tipo de valores vai operar e que espaço deve ser reservado em memória para cada variável. Real. ⎧ Simples ⎪ Estrutura de Dados ⎨ ⎪ Complexas ou Estruturadas ⎩ Imaginemos por exemplo. caracteres. teríamos que definir 1000 variáveis do tipo Caracteres como é indicado abaixo: Prof. Estrutura de Dados Na programação de alto nível. existem estruturas de dados que conserve em memória secundária. Objectivos O objectivo fundamental é conseguir que os alunos percebam em profundidade o conceito de vector e matriz. Carlos Almeida 49 . temos ainda os dados que são estruturadas. Lógico. que é o caso dos ficheiros.

foi criado um novo conceito de estrutura de dados e uma nova forma de definir as variáveis. e outros._____________________________________________________________ Estruturas de Decisão Algoritmo Loucura Variáveis NOME1. NOME2. O índice corresponde a um valor numérico Inteiro. (. Uma variável do tipo Array corresponde a uma sequência de posições de memória. encerra muito mais potencialidades de manipulação em termos de programação. Cada uma das posições de memória de uma variável Array pode receber valores no decorrer do algoritmo como se fosse uma variável comum. as quais foi denominada de variáveis do tipo Array. e o trabalho de escrita necessário para o construir. identificada com um único nome.. NOME3. A única diferença reside na sintaxe de utilização desta variável. Na prática. Um índice corresponde a um valor numérico Inteiro e representa cada uma das posições de um array. Prof. Cada uma destas posições pode ser acedida através de um índice. identificada com um único nome. Imaginemos agora o algoritmo com 1000000 pessoas. NOME1000: Caracteres Início <Instruções> Fim Vamos considerar o tamanho do algoritmo. mas. Uma variável do tipo Array corresponde a uma sequência de posições de memória.) NOME999.. Para resolver problemas como este. a construção deste algoritmo começaria a ficar inviável. Carlos Almeida 50 . sobretudo. Um array revela-se uma estrutura de dados muito mais económica em termos de escrita.

temos de utilizar índices. [1. um vector. Um vector é um conjunto de elementos representados por um identificador e um único índice. encerra muito mais potencialidades de manipulação em termos de programação. Os vectores são colocados na memória em posições ordenadas e adjacentes.. Evidentemente. Carlos Almeida 51 . Em pseudocódigo. para que esse identificador possa representar os 12 elementos correspondentes aos 12 meses do ano. MAR. O índice varia entre um limite inferior e um limite superior. Suponhamos que pretendemos representar. mas. neste caso entre 1 e 12. Um vector agrupa numa mesma variável um conjunto finito de valores todos do mesmo tipo. poderíamos definir um vector mediante um único identificador. sobretudo. Todavia. Cada elemento tem uma única dimensão. em correspondência com o número de elementos do conjunto. por exemplo: JAN.12] define o número de elementos da variável (12-1+1=12 elementos) e ao mesmo tempo o intervalo dos seus índices. designadas por 12 identificadores diferentes. FEV. o uso de uma variável estruturada. com um único identificador agrupando os 12 elementos em causa. Mas. DE REAL indica qual o tipo de dados dos elementos do vector. poderíamos escrever assim: Variaveis GASTOS_MES: Vector[1. neste caso. num programa.. poderíamos definir 12 variáveis. por exemplo: GASTOS_MÊS. etc. revela-se uma técnica muito mais económica em termos de escrita. os gastos de um determinado departamento em cada um dos 12 meses do ano.12] de Real em que: • • • • GASTOS_MES é o identificador ou nome atribuído à variável. Neste caso. VECTOR indica que a variável é do tipo Vector. Vectores Um vector (Array unidimensional) é um tipo estruturado que pode agrupar numa mesma variável um conjunto finito de valores todos do mesmo tipo. Prof._____________________________________________________________ Estruturas de Decisão 2.

cada elemento desta variável de tipo Vector designa-se por: GASTOS_MES[K] em que [K] representa a posição do elemento no conjunto que compõem o vector. Construa um algoritmo que permita verificar qual o maior valor inteiro introduzido pelo utilizador num vector de 20 elementos.” é muito útil no trabalho de vectores. imprimir a soma de todos os elementos par.. Exercícios Sobre Vectores 1. Carlos Almeida 52 . em Pascal: Var GASTOS_MES: Array[1. neste caso. o número do mês que se pretende designar.. Por exemplo o gasto do mês de Fevereiro seria designados por: GASTOS_MES[2] Segue-se alguns exemplos de operações com vectores: [Definir um vector A de 40 elementos do tipo inteiro] A: Vector[1. ou seja.40] de Inteiro [Instrução de leitura com acesso sequencial] Para K de 1 até 40 Fazer Ler(A[K]) [Instrução de atribuição: armazenar na 4ª posição do vector A o valor 13] A[4] 13 [Instrução de escrita do 4ª elemento do vector A] Escrever(A[4]) De um modo geral a estrutura “Para. 2. Prof.._____________________________________________________________ Estruturas de Decisão e. Dado um vector com 12 elementos..12] of Real De um modo geral.

Seria legítimo pretender-se que as IDADES estivessem ordenadas por ordem crescente. Esquematizando. teremos de percorrer o vector comparando os valores sucessivos e. estes ficam arrumados em função da ordem de entrada que o utilizador usou. os dados ficam sem uma ordem convencional.. caso necessário. Para tal. Todo este procedimento corre o vector até ao fim. Vejamos. no quadro seguinte.IDADES[COLUNA+1]) Fim se Fim Para Este algoritmo tem uma operação especial a que chamámos “Troca” que vai realizar a troca pretendida.. o que se passa a cada incremento da variável COLUNA na estrutura “Para. mostra-nos que este algoritmo não chega. vamos estudar um algoritmo simples que permitirá proceder à ordenação dos dados de um vector.”. Vejamos. pode haver interesse em que os dados estejam ordenados. Prof. Assim. logo terão de ser trocados os valores de modo que a posição IDADES[1] fosse 27 e IDADES[2] fosse 45. a posição IDADES[1] é 45 e a posição IDADES[2] é 27. Depois verificamos IDADES[2] e IDADES[3] e têm de ser trocados.5] de Inteiro que contém as idades de cinco pessoas: 45 27 33 40 35 Os dados do vector Idades não se encontra ordenado. Por questão de lógica de procura ou de leitura. temos: Para COLUNA de 1 até 4 fazer Se IDADES[COLUNA] > IDADES [COLUNA+1] então Troca (IDADES[COLUNA]. Uma análise mais atenta. Carlos Almeida 53 . Ordenação de um Vector Quando se preenche um vector com dados.. Por esta razão._____________________________________________________________ Estruturas de Decisão 3. fazer a troca conveniente. Seja o vector definido por: IDADES: Vector[1.

IDADES[COLUNA+1]) TROCAS Fim se Fim Para Até NÃO TROCAS [Até não haver trocas] VERDADEIRO Falta criar o algoritmo da operação “Troca”: TEMPORARIO IDADES[COLUNA] IDADE[COLUNA+1] TEMPORARIO IDADES[COLUNA] IDADES[COLUNA+1] Agora podemos construir o algoritmo completo: Algoritmo Ordena_Vector [Este algoritmo ordena por ordem crescente] COLUNA..”.. o algoritmo só deve acabar quando a estrutura “Para.. a estrutura “Para.” percorrer o vector e não efectuar nenhuma troca de valores: Repetir TROCAS FALSO Para COLUNA de 1 até 4 fazer Se IDADES[COLUNA] > IDADES [COLUNA+1] então Troca (IDADES[COLUNA].. É necessário fazer correr.5] de Inteiro TROCAS: Lógico Início Repetir TROCAS FALSO Para COLUNA de 1 até 4 Para COLUNA de 1 até 4 fazer Se IDADES[COLUNA] > IDADES [COLUNA+1] então TEMPORARIO IDADES[COLUNA] IDADE[COLUNA+1] TEMPORARIO IDADES[COLUNA] IDADES[COLUNA+1] Prof. Portanto.. Carlos Almeida 54 . TEMPORARIO: Inteiro IDADES: Vector[1. mais uma vez._____________________________________________________________ Estruturas de Decisão 1 2 3 4 45 27 27 27 27 27 45 33 33 33 33 33 45 40 40 40 40 40 45 35 35 35 35 35 40 Vector Original O vector mostra-nos que a ordenação não ficou completa.

10. Matrizes Uma matriz (Array multidimensional) é um tipo estruturado que pode agrupar numa mesma variável um conjunto finito de valores todos do mesmo tipo. No caso dos vectores.5] de Inteiro [Instrução de leitura com acesso sequencial] Para K de 1 até 10 Fazer Para L de 1 até 5 Fazer Ler(M[K. Uma matriz bidimensional é um conjunto de elementos representados por um identificador e dois índices. nas matrizes temos dois (ou mais) elementos._____________________________________________________________ Estruturas de Decisão TROCAS Fim se Fim Para VERDADEIRO Até NÃO TROCAS [Até não haver trocas] Fim 4. Da mesma forma do que os vectores. cujos índices estão compreendidos entre dois limites. 3] 20 Prof.. temos apenas um agrupamento de elementos. cada qual com o seu par de limites próprio. Uma matriz é um conjunto de elementos representados por um identificador e dois índices. com elementos do tipo inteiro] M: Matriz[1. os dois índices variam entre um limite inferior e um limite superior. 1.. Carlos Almeida 55 . Segue-se alguns exemplos de operações com matrizes: [Definir uma matriz M. L]) [Instrução de atribuição] M[4. de 10 linhas e 5 colunas. em correspondência com o número de elementos do conjunto.

COLUNA]) Fim Para Fim Para Como vemos no exemplo acima apresentado. o utilizador introduz um inteiro na matriz na posição referenciada no momento pelos contadores linha e coluna (os dois índices da matriz). em cada linha.. existe a matriz QUADBID de 5 linhas por 10 colunas que é referenciado com a ajuda de duas estruturas “Para. Crie um algoritmo que introduza num array bidimensional os modelos e respectivo preço para posterior consulta. COLUNA: Inteiro . vende sete modelos dessa marca. Prof. A primeira estrutura corre as linhas da matriz e a segunda corre.5. Será de sete linhas e duas colunas como se pode ver na tabela acima apresentada. concessionário de uma marca. 1. as colunas. Exercícios Sobre Matrizes 1. Para LINHA de 1 até 5 fazer Para COLUNA de 1 até 10 fazer Ler(QUADBID[LINHA.. Cada vez que realiza a instrução Ler.10] de Inteiro LINHA. Se usarmos uma matriz bidimensional usam-se duas estruturas “Para. Um stand de venda de automóveis.” para correr a matriz porque passam a existir dois indicadores de posição para cada célula da matriz._____________________________________________________________ Estruturas de Decisão Seja o exemplo seguinte: QUADBID: matriz[1. pois terá que conter a designação do modelo.. Modelos ModA ModB ModC ModD ModE ModF ModG Preço (contos) 2500 3000 2500 3500 2500 3000 4000 A matriz terá de ser do tipo caracteres.”.. Carlos Almeida 56 .....

_____________________________________________________________ Estruturas de Decisão 2. Todavia. sobretudo no modo de acesso aos elementos de um e de outro tipo de estrutura. Exemplo: Campo Nome. a primeira coluna só será ordenada em função da ordenação da segunda. Prof. isto é. Exemplo: Registro de Clientes. Carlos Almeida 57 . A principal diferença que costuma apontar-se entre um array (vector ou matriz) é que. 5. sob a forma de campos. Neste caso. o quadro é bidimensional havendo necessidade de ordenar as duas colunas. De qualquer modo. De facto. quando um array agrupa um conjunto de dados do mesmo tipo. quando houver uma alteração da ordem de preços ter-se-á de fazer a alteração na ordem dos modelos respectivos. Ao contrário de um array um registo pode conjugar diferentes tipos de dados na mesma estrutura. CAMPO é um espaço reservado em memória para receber informações (dados). por ordem crescente do preço. o que interessa sobretudo é a maneira como se vai aceder a essa informação estruturada. Faça um algoritmo para mostrar os dados contidos na matriz preenchida no exercício anterior. Campo Endereço. 3. um registo pode conjugar diferentes tipos de dados na mesma estrutura. REGISTRO é um conjunto de campos. Partindo do algoritmo do exercício anterior será fácil construir este. Construa um algoritmo para ordenação dos dados da matriz do exercício 1. existem outras diferenças importantes. Registos Os registos (Record’s) são um outro tipo de dados estruturados que permitem agrupar elementos de vários tipos diferentes.

Prof. Carlos Almeida 58 ._____________________________________________________________ Estruturas de Decisão • • se o problema exige que o acesso seja por “indexação”. então o que faz falta é um array. Em pseudocódigo seria: [Registo que inclui os campos: Nome. o que queremos é um acesso por “nomeação” – “passa para cá a informação com este nome” – então o melhor é ir pelos registos. CLIENTE_B: DADOS_PESSOA. Morada. IDADE: Integer. ou como parte de um ARRAY. uma variável RECORD pode ter campos de qualquer tipo válido do Pascal. Os seguintes dados poderiam ser os campos de um registo: nome. Idade e Telefone] [Tipo de dado DADOS_PESSOA definido pelo programador] Tipo de Dados DADOS_PESSOA de Registo NOME: Caracteres MORADA: Caracteres IDADE: Inteiro TELEFONE: Caracteres Fim Variáveis [Definir as variável CLIENTE_A e CLIENTE_B do tipo DADOS_PESSOA] CLIENTE_A. do género. por qualquer motivo. sendo permitido inclusive que um RECORD seja definido dentro do outro. morada. isto é. Na Linguagem Pascal. TELEFONE: String[12]. definido pelo programador] Type DADOS_PESSOA = Record NOME: String[30]. etc. dá cá um valor”. se. “toma lá um índice. idade. Var CLIENTE_A. End. Um exemplo típico de dados organizáveis sob a forma de registos é o que se relaciona com informação sobre pessoas. telefone. MORADA: String[50]. CLIENTE_B: DADOS_PESSOA Em Pascal: [O mesmo registo em Pascal.

Carlos Almeida 59 .. a única diferença que é devemos indicar o nome da variável. o qual terá os seguintes campos: Rua. É importante lembrar que as operações realizadas sobre uma variável RECORD.) e seguido do nome do campo (CLIENTE_A. Faça um programa para ler as informações. Semestre. Notas (total de 6 notas). acrescentando a definição de um outro campo (Endereço) que será também um Registo. Sala. caso desejarmos atribuir um valor à variável CLIENTE. Cidade. devemos fazê-lo da seguinte forma: Em pseudocódigo: [Atribuir 45 ao campo IDADE da variável CLIENTE_A] CLIENTE_A.” indica que esta variável possui campos. e que IDADE é um deles. Prof. 3.). Ampliar a definição anterior.IDADE := 45. seguido de um ponto (. O uso do “. Código Postal. descritas no exercício 1._____________________________________________________________ Estruturas de Decisão Continuando o exemplo. Bairro.IDADE 45 [Os valores existentes de todos os campos da variável CLIENTA_A para a variável CLIENTA_B] CLIENTA_B CLIENTA_A Em Pascal: CLIENTE_A. de mesmo tipo. CLIENTA_B := CLIENTA_A. Exercícios Sobres Registos 1. Curso. É possível atribuir o conteúdo de uma variável RECORD para outra variável. são as mesmas de uma variável “comum”.IDADE := 45. da mesma forma que é feito como as outras variáveis do Pascal (CLIENTA_B := CLIENTA_A. Define um registo tendo os seguintes campos: Nome. 2.).

Carlos Almeida 60 . armazenada fisicamente num suporte de memória secundária. armazenar a informação em suportes de memória secundária ou externas. ⎧ ficheiros do tipo texto Tipo de ficheiro ⎨ ⎩ ficheiros do tipo binário (definidos pelo programador) Prof. nesse ou em outro programa. reutilizada. eventualmente. armazenada fisicamente num suporte de memória secundária. os ficheiros têm como função. Ficheiros Os ficheiros têm como função. Ao contrário das estruturas de dados estudadas anteriormente. Ordene crescentemente pelo Nome. 6. Defina um vector de alunos.). os alunos. armazenar a informação em suportes de memória secundária ou externas (discos ou disquetes. a unidade básica de armazenamento de informação em sistemas informáticos é o ficheiro (file). quando estes estão a funcionar com o programa. junto com o endereço descrito no exercício 3. e. Um ficheiro é uma unidade de informação. Faça um programa para ler as informações de um aluno. Um ficheiro é uma unidade de informação. armazenadas em suporte de memória primária. Assim. toda a informação desaparece. são dados voláteis. Faça um programa para ler as informações de n alunos. 7. As restantes estruturas de dados._____________________________________________________________ Estruturas de Decisão 4. os campos serão os mesmos descritos no exercício 3. etc. onde essa informação possa ser guardada para além do tempo em que o programa está a correr no computador. Quando se sai do programa em que os dados foram introduzidos ou obtidos. porque são armazenados apenas temporariamente na RAM (memória primária) do computador. 5. 6.

na respectiva declaração do tipo ou da variável. podendo ser criados ou modificados por um editor de texto. Um ficheiro pode ser acrescentado com mais dados. . um ficheiro não tem essa limitação. desde que estes sejam compatíveis com o tipo-base dos dados que o constituem. ter ficheiros de números inteiros ou reais. O acesso aos dados destes ficheiros pode ser feito de forma aleatória. Ficheiros do Tipo Binário Os ficheiros definidos pelo programador são ficheiros que agrupam dados simples (como por exemplo.o que permite uma grande flexibilidade de trabalho com sequências de dados armazenadas em suportes de memória secundária. como nos ficheiros de texto. por exemplo. os ficheiros de registos permitem manipular dados num formato bem estruturado para trabalho com informação externa (em disco ou disquete). em formato binário._____________________________________________________________ Estruturas de Decisão Ficheiros do Tipo Texto Os ficheiros do tipo texto. ou pode ser totalmente reescrito com um número completamente diferente de elementos. para além de permitir o armazenamento da informação num suporte de armazenamento externo à memória primária. Prof. O acesso aos dados neste tipo de ficheiros é do tipo sequencial. de vectores ou de registos. pois pode conter um número maior ou menor de dados. um registo). ou seja. que a leitura dos dados tem de partir sempre do início e percorrer todos os elementos até ao ponto pretendido. Em particular. etc. sem que esse número tenha que ser determinado à partida. Carlos Almeida 61 . Em qualquer dos casos. assumindo formas muito variáveis. querendo isto dizer. um ficheiro de dados (Ficheiro de texto ou binário). matrizes ou registos) tem um tamanho – em termos de número de elementos – que é determinado à partida. um inteiro) ou estruturados (como por exemplo. são ficheiros em que a informação é totalmente armazenada em formato de caracteres (ASCII). por escolha da posição pretendida. Com este tipo de ficheiros (ficheiros de registos) pode trabalhar-se com informação um pouco à maneira de bases de dados. também permite reunir uma colecção de dados sem tamanho fixo à partida. e não forçosamente de forma sequencial. Em princípio. Qualquer um dos outros tipos de dados estruturados (vectores. fora do programa que os utiliza. Podemos.

etc. Existem grande variedade de memórias auxiliares. Prof. capacidade – sendo as bandas magnéticas. discos ópticos. tipo de tratamento a dar ao ficheiro. acesso directo – nunca se poderia utilizar a banda magnética._____________________________________________________________ Estruturas de Decisão • • • O acesso de um ficheiro do tipo texto é feito de forma sequencial. de maior capacidade. O acesso de um ficheiro do tipo binário é feito de forma aleatória. Assim o acesso pode ser de dois tipos: • • acesso sequencial. disquetes. velocidade de tratamento – em que os discos duros e ópticos são os mais rápidos. e funcionam como armazéns de informação que a memória central requisita sempre que necessário. A escolha dos suportes relaciona-se com três características: 1. embora sendo exteriores ao computador. Suportes físicos mais utilizados para armazenar informação: • • • • • • banda magnética. 3. O acesso aos ficheiros nestes suportes é também de grande importância pois condiciona algumas das características atrás referidas. 2. como suporte físico de ficheiros. sendo mais frequentes as unidades de discos magnéticos e as unidades de fita magnética. Um ficheiro que agrupa dados do tipo registo pode ser considerado uma base de dados. Suportes Físicos de Ficheiros As memórias auxiliares. discos duro e óptico e as tapes. tapes. disco magnético duro. operam como extensões da sua memória central. Carlos Almeida 62 . São meios de memorização capazes de armazenar quantidades de informação muito superiores às que a memória central pode guardar.

ou são fornecidos através de um ficheiro. procura de dados num ficheiro. As principais operações a ter em conta no trabalho com ficheiros são: • • • • • • • • • declaração de tipos e variáveis de ficheiros. consulta de uma registo dada a sua posição no ficheiro 7. o mesmo precisa ser alimentado com informações: estas. Manipulação de Ficheiros em Pascal Um ficheiro é de grande importância nos programas em computador. ao nível interno do programa. 2. ao nível externo ou de interacção entre o programa e os dispositivos físicos onde são armazenados os ditos ficheiros. ou são fornecidas pelo teclado. fusão de ficheiros. com variáveis que identificam os ficheiros e os dados a ler ou escrever nessas unidade de informação. listar todos os registos de um ficheiro. desde o tempo em que o primeiro computador surgiu. para que um programa faça algum tipo de operação._____________________________________________________________ Estruturas de Decisão Operações com Ficheiros Os ficheiros são estruturas de dados que implicam a sua manipulação a dois níveis: 1. associação de uma variável de ficheiro com um nome externo de ficheiro. criação de novos ficheiros ou reescrita total de um ficheiro já existente. fecho de um ficheiro aberto. acrescentar mais registos. Prof. escrita de informação num ficheiro. pois. etc. alterar os dados de um determinado registo. Carlos Almeida 63 . abertura de um ficheiro para leitura. Exemplos de operações no trabalho com ficheiros de registo: • • • • • consultar registo por registo.

STRING. Var MINHA_VARIAVEL: File of String._____________________________________________________________ Estruturas de Decisão O PASCAL. sendo desta forma também o mais utilizado. Prof. Quando um Ficheiro FILE é criado. corresponde ao “Endereço” da informação no ficheiro. o mesmo possui a seguinte estrutura interna: Posição Física 0 1 2 … N Informação A posição física corresponde a um número gerado automaticamente no instante em que uma dada informação é inserida no ficheiro. O programa seguinte define uma variável como sendo um ficheiro FILE de STRING’s: Program Exemplo. Ficheiros FILE 2. os quais são: 1. possui dois tipos de ficheiros. sem haver a necessidade de se percorrer todo o ficheiro até se alcançar a informação desejada. Ficheiros TEXT Ficheiros FILE Um ficheiro do tipo FILE. Carlos Almeida 64 . é o ficheiro mais importante do Pascal. etc. REAL. Sintaxe: <Nome da variável>: FILE OF <tipo> Um ficheiro FILE deve ser apenas um tipo de dado. Um ficheiro aleatório é caracterizado pelo fato de ser possível buscar uma determinada informação em qualquer posição que a mesma se encontre. O acesso a informação é directo. também conhecido por ficheiro aleatório. ou de acesso aleatório. RECORD. ou seja: INTEGER. Este número. Begin End. BYTE.

STRING_Com_Nome_Ficheiro_DOS). Vamos passar a chamar as informações armazenadas num ficheiro por “Registros”. sem ter que percorrer todo o ficheiro em busca da mesma. Type REGISTRO = Record NOME: String. ‘Dados. IDADE: Byte. Vamos conhecer as principais: Rotina: ASSIGN() Função: Serve para associar um determinado nome de ficheiro. Sintaxe: ASSIGN(Meu_Ficheiro. Rotina: REWRITE() Função: Cria e abre para Entrada\Saída um Ficheiro. End. Tratamento de Ficheiros FILE Existem uma grande quantidade de subrotinas construídas especialmente para manipular ficheiros FILE. o mesmo será criado. Exemplo: Program Teste. Sintaxe: REWRITE(Meu_Ficheiro). End. Caso o ficheiro já exista. Prof. Begin Assign(FICHEIRO. no disco ou disquete com o ficheiro definido pelo programador. fornecer o número da sua posição física. Var FICHEIRO: File of REGISTRO. Caso o ficheiro não exista. bastando para isto._____________________________________________________________ Estruturas de Decisão É através deste endereço que é possível recuperar qualquer informação. todos os dados existentes nele serão apagados. Carlos Almeida 65 .Dat’).

IDADE: Byte.Dat’). End. End. Sintaxe: RESET(Meu_Ficheiro). Exemplo: Program Teste. Type REGISTRO = Record NOME: String. Reset(FICHEIRO). Carlos Almeida 66 .Dat’). Type REGISTRO = Record NOME: String. ‘Dados. Begin Assign(FICHEIRO. Sintaxe: CLOSE(Meu_Ficheiro)._____________________________________________________________ Estruturas de Decisão Exemplo: Program Teste. End. Rotina: CLOSE() Função: Fecha um ficheiro que tenha sido aberto com RESET ou REWRITE. Begin Assign(FICHEIRO. Var FICHEIRO: File of REGISTRO. IDADE: Byte. ‘Dados. End. Rewrite(FICHEIRO). Rotina: RESET() Função: Abre para E/S um ficheiro que já exista. Prof. Caso o ficheiro não exista ocorrerá um erro de execução e o programa será abortado. Var FICHEIRO: File of REGISTRO.

Write(‘Digite a Idade: ’). Write(FICHEIRO. Sintaxe: WRITE(Meu_Ficheiro. End. Readln(REG. End. End. Close(FICHEIRO). Carlos Almeida 67 .IDADE).Dat’). Prof. IDADE: Byte. Registro). ‘Dados.NOME)._____________________________________________________________ Estruturas de Decisão Exemplo: Program Teste. Rotina: WRITE() Função: A rotina WRITE tem a mesma função de saída de informações até agora estudado. Rewrite(FICHEIRO). REG). invés da informação ser apresentada no ecrã. Begin Assign(FICHEIRO. ‘Dados. Begin Assign(FICHEIRO. IDADE: Byte. Write(‘Digite o Nome: ’). Type REGISTRO = Record NOME: String. REG: REGISTRO. Var FICHEIRO: File of REGISTRO. Close(FICHEIRO). Readln(REG. Exemplo: Program Teste. a mesma será armazenada num ficheiro.Dat’). Type REGISTRO = Record NOME: String. Rewrite(FICHEIRO). End. Var FICHEIRO: File of REGISTRO.

Exemplo: Program Teste. Var FICHEIRO: File of REGISTRO. Read(FICHEIRO. Registro). invés da leitura ser feita pelo teclado. REG). Sintaxe: Registro_Corrente := FILEPOS(Meu_Ficheiro). REG. Prof.NOME). IDADE: Byte.IDADE). a mesma será feita de um ficheiro. Sintaxe: READ(Meu_Ficheiro. Após cada operação READ/WRITE no Ficheiro. REG: REGISTRO. End. se o endereço do registro corrente é igual a 10. Reset(FICHEIRO). Rotina: ILEPOS() Função: etorna um número inteiro indicando qual o registro corrente do ficheiro. Close(FICHEIRO). Assim por exemplo. após uma operação de READ/WRITE. REG. End.Dat’). Writeln(‘Nome: ’. ‘Dados. Writeln(‘Idade: ’. Type REGISTRO = Record NOME: String._____________________________________________________________ Estruturas de Decisão Rotina: READ() Função: A rotina READ tem a mesma função de entrada de informações até agora estudado. Carlos Almeida 68 . Begin Assign(FICHEIRO. o endereço do registro corrente no ficheiro é incrementado em uma unidade. o registro corrente passará a ser o número 11.

Writeln(‘Total de registos no ficheiro: ’.Dat’).º ’. IDADE: Byte. Carlos Almeida 69 . Var FICHEIRO: File of REGISTRO. ‘Dados. CORRENTE).Dat’). End. Reset(FICHEIRO). End. IDADE: Byte. Sintaxe: Tamanho_Ficheiro : = FILESIZE(Meu_Ficheiro). TOTAL: Integer. Begin Assign(FICHEIRO. Var FICHEIRO: File of REGISTRO. TOTAL := FileSize(FICHEIRO). Close(FICHEIRO). Begin Assign(FICHEIRO. Writeln(‘Registo actual n. End. Type REGISTRO = Record NOME: String. Reset(FICHEIRO)._____________________________________________________________ Estruturas de Decisão Exemplo: Program Teste. Exemplo: Program Teste. Close(FICHEIRO). CORRENTE: Integer. End. CORRENTE := Filepos(FICHEIRO). Prof. ‘Dados. Type REGISTRO = Record NOME: String. TOTAL). Rotina: FILESIZE() Função: Retorna quantos registro existem armazenados no ficheiro.

REG: REGISTRO. Endereço_Registro). Writeln(‘Nome: ’. Type REGISTRO = Record NOME: String. Carlos Almeida 70 . REG). End.NOME).IDADE). Writeln(‘Idade: ’. REG. 10). Begin Assign(FICHEIRO. Sintaxe: Chegou_Final := EOF(Meu_Ficheiro). Close(FICHEIRO).Dat’). Seek(FICHEIRO. End. FALSE caso contrário. Read(FICHEIRO. Rotina: EOF() Função: Retorna TRUE caso se alcance o final do ficheiro. para que o mesmo possa ser processado. Exemplo: Program Teste. Var FICHEIRO: File of REGISTRO. Reset(FICHEIRO). Prof. IDADE: Byte. Sintaxe: SEEK(Meu_Ficheiro._____________________________________________________________ Estruturas de Decisão Rotina: SEEK() Função: Posiciona o ponteiro do ficheiro num registro determinado. ‘Dados. REG.

REG. Begin Assign(FICHEIRO. Sintaxe: ERASE(Meu_Ficheiro). ‘Dados. Rotina: ERASE() Função: Elimina o ficheiro do disco. ‘Dados. IDADE: Byte.NOME). REG). Writeln(‘Idade: ’. É importante notar que o ficheiro a ser eliminado não pode estar aberto. Type REGISTRO = Record NOME: String. REG: REGISTRO. Type REGISTRO = Record NOME: String. IDADE: Byte. End.Dat’).Dat’). Var FICHEIRO: File of REGISTRO. Carlos Almeida 71 . Erase(FICHEIRO). Reset(FICHEIRO). End._____________________________________________________________ Estruturas de Decisão Exemplo: Program Teste. REG. Begin Assign(FICHEIRO. While not eof(FICHEIRO) do Begin Read(FICHEIRO. Exemplo: Program Teste. End. Prof. Writeln(‘Nome: ’.IDADE). Close(FICHEIRO). End. End. Var FICHEIRO: File of REGISTRO.

do tipo STRING para o tipo da variável receptora da informação lida. posicionar de forma directa. Carlos Almeida 72 . quando é lida uma informação num ficheiro TEXT. Var MINHA_VARIAVEL: Text. serão automaticamente convertidas do seu tipo original para o tipo STRING. é possível escrever no arquivo informações de qualquer tipo de dado simples (INTEGER. REAL. o ponteiro de ficheiro em um registro em particular. ou seja. Begin End. também conhecido por arquivo sequencial. Tratamento de Ficheiros TEXT Existem uma grande quantidade de subrotinas construídas especialmente para manipular ficheiros TEXT. é um tipo especial de ficheiro que. Nos ficheiros do tipo TEXT (STRING). Sintaxe: <Nome da variável>: TEXT O programa seguinte define uma variável como sendo um ficheiro do tipo TEXT: Program Exemplo. algumas das quais já foram vistas. ao serem fisicamente armazenadas no ficheiro. a mesma será automaticamente convertida para o tipo da variável que irá armazenar a informação._____________________________________________________________ Estruturas de Decisão Ficheiros TEXT Um ficheiro do tipo TEXT. as informações nele armazenadas são todas texto. A leitura se processa de forma inversa.) as quais. como é feito no arquivo FILE através do comando SEEK. BYTE. Vamos mostrar as principais. não podendo desta forma. Ele é dito sequencial porque a leitura tem que ser feita sequencialmente do início ao fim do ficheiro. mesmo assim. etc. ao contrário do ficheiro FILE. isto é. pode ser editado normalmente através de um editor de textos qualquer. Prof.

mas no formato Read-Only (somente para leitura). Var FICHEIRO: Text. Rotina: RESET() Função: Abre um ficheiro que já existe. End.txt’). End. Caso o ficheiro não exista. todos os dados existentes nele serão apagados.txt’). Begin Assign(FICHEIRO. este será criado. Caso já exista. ‘Dados. Sintaxe: ASSIGN(Meu_Ficheiro. Sintaxe: RESET(Meu_Ficheiro). Begin Assign(FICHEIRO. STRING_Com_Nome_Ficheiro_DOS)._____________________________________________________________ Estruturas de Decisão Rotina: ASSIGN() Função: Serve para associar um determinado nome de ficheiro. Sintaxe: REWRITE(Meu_Ficheiro). Rewrite(FICHEIRO). ‘Dados. Rotina: REWRITE() Função: Crie e abre um ficheiro no formato Write-Only (somente para escrita). Var FICHEIRO: Text. Exemplo: Program Teste. Carlos Almeida 73 . Prof. Caso o ficheiro não exista ocorrerá um erro de execução e o programa será abortado. no disco ou disquete com o ficheiro definido pelo programador. Exemplo: Program Teste.

Var FICHEIRO: Text. ‘Dados. Append(FICHEIRO). Var FICHEIRO: Text. End. Prof. Begin Assign(FICHEIRO. End. Rewrite(FICHEIRO). Caso o ficheiro não exista ocorrerá um erro de execução e o programa será abortado._____________________________________________________________ Estruturas de Decisão Exemplo: Program Teste. Var FICHEIRO: Text. Reset(FICHEIRO). Rotina: CLOSE() Função: Fecha um ficheiro que tenha sido aberto com Reset. Rewrite ou Append. Sintaxe: APPEND(Meu_Ficheiro). End. ‘Dados. É importante notar que as inclusões se processam sempre no final do ficheiro. Begin Assign(FICHEIRO. Begin Assign(FICHEIRO. ‘Dados.txt’).txt’). Close(FICHEIRO).txt’). Exemplo: Program Teste. Exemplo: Program Teste. Rotina: APPEND() Função: Abre um ficheiro para inclusão de novas informações do tipo Write-Only (somente para escrita). Sintaxe: CLOSE(Meu_Ficheiro). Carlos Almeida 74 .

como acontece quando se usa este comando para escrever informações no ecrã. Sintaxe: WRITE(Meu_Ficheiro. invés da informação ser apresentada no ecrã. Ao ser usado o comando WRITE. a mesma será armazenada no ficheiro. Carlos Almeida 75 . Writeln(FICHEIRO. Por outro lado. Sintaxe: READ(Meu_Ficheiro. Begin Assign(FICHEIRO. Prof. a leitura será feita sempre na mesma linha. ao ser usado o comando READLN. Registro). Writeln(FICHEIRO. ‘Nome do aluno:’)._____________________________________________________________ Estruturas de Decisão Rotina: WRITE() ou WRITELN() Função: A rotina WRITE ou WRITELN têm a mesma função de saída de informações até agora estudado. NOME). Ao ser usado o comando READ. ao ser usado o comando WRITELN. Write(‘Digite o Nome: ’). ou WRITELN(Meu_Ficheiro. todas as informações serão colocadas uma em cada linha. Close(FICHEIRO).txt’). ou READLN(Meu_Ficheiro. invés da leitura ser feita pelo teclado. como acontece quando se usa este comando para escrever no ecrã. Exemplo: Program Teste. Readln(NOME). End. Var FICHEIRO: File of REGISTRO. a mesma será feita de um ficheiro. como acontece quando se usa este comando para leitura pelo teclado. todas as informações serão escritas no ficheiro na mesma linha. as leituras serão feitas linha a linha. Rewrite(FICHEIRO). Registro). Registro). ‘Dados. Registro). como acontece quando se usa este comando para ler informações pelo teclado. NOME: String[30]. Por outro lado. Rotina: READ() ou READLN() Função: A rotina READ ou EADLN têm a mesma função de entrada de informações até agora estudado.

Write(CH). While not eof(FICHEIRO) do Begin Read(FICHEIRO. Rotina: EOF() Função: Retorna TRUE caso se alcance o final do ficheiro. Reset(FICHEIRO). Var FICHEIRO: Text. CH). IDADE). IDADE: Byte. End. CH: Char. Sintaxe: ERASE(Meu_Ficheiro). Begin Assign(FICHEIRO. Reset(FICHEIRO). Exemplo: Program Teste. Sintaxe: Chegou_Final := EOF(Meu_Ficheiro). Carlos Almeida 76 . Rotina: ERASE() Função: Elimina o ficheiro do disco. ‘Dados. Writeln(‘Idade: ’. End.txt’). Begin Assign(FICHEIRO.txt’). ‘Dados. End. FALSE caso contrário. Prof. Close(FICHEIRO). Var FICHEIRO: Text. Readln(FICHEIRO. IDADE). É importante notar que o ficheiro a ser eliminado não pode estar aberto._____________________________________________________________ Estruturas de Decisão Exemplo: Program Teste. Close(FICHEIRO).

Exercícios Sobre Ficheiros 1. Crie um ficheiro com Nome e salário de n funcionários e armazene estas informações num ficheiro FILE. ou seja.txt’). 2. Ordene crescentemente pelo nome do funcionário o ficheiro anterior. do último registro até o primeiro. Carlos Almeida 77 . Utilize os comandos SEEK. Abra o ficheiro anterior e escreva o seu conteúdo de trás para frente. Var FICHEIRO: Text. 4. ‘Dados. FILEPOS e FILESIZE. End. Crie um ficheiro com nome e salário de n funcionários e armazene estas informações num ficheiro TEXT. 3. Faça a leitura do ficheiro e escreva no ecrã o nome e salário dos funcionários que ganham mais que 100 000$00. 5. Faça a leitura do ficheiro e escreva no ecrã somente os números ímpares. Abra o ficheiro anterior e aumente em 15% o salário de todos os funcionários que ganham menos de 100 000$00. Crie um ficheiro FILE formado por números inteiro de 1 a 10000. Erase(FICHEIRO). Begin Assign(FICHEIRO. Faça a leitura do ficheiro anterior e escreva no ecrã o nome e o salário dos funcionários que ganham mais de 100 000$00._____________________________________________________________ Estruturas de Decisão Exemplo: Program Teste. 6. 7. Prof.

TEXTO) ou WRITELN(LST. use USES PRINTER e o comando WRITE(LST. Prof._____________________________________________________________ Estruturas de Decisão 8. Carlos Almeida 78 . onde TEXTO é o texto a enviar para a impressora. Para isso. Envie os dados do ficheiro anterior para a impressora. TEXTO).

Sign up to vote on this title
UsefulNot useful