Escolar Documentos
Profissional Documentos
Cultura Documentos
Algoritmos
● Livro texto
– Algoritmos e Programação
Teoria e Prática
● Marco Medina e Cristina Fertig
● Segunda Edição
● Editora Novatec
Algoritmos - Introdução
● Definição geral
– Conjunto de instruções para se resolver um
problema
● Definição em informática
– Conjunto de regras e procedimentos lógicos,
perfeitamente definidos, que levam à solução de
um problema em um número finito de etapas.
Algoritmos - Introdução
● Propriedades
– Finitude: um algoritmo deve sempre terminar após um
número finito de etapas
– Definição: cada passo de um algoritmo deve ser
definido com precisão e sem ambiguidades
– Entrada: valores dados antes do seu início
– Saída: valores resultantes
– Eficácia: operações suficientemente básicas, que
podem ser feitas manualmente, com precisão e em um
período de tempo finito
Algoritmos - Introdução
● Programa de computador
– Conjunto de instruções que será executado pelo
processador em uma determinada sequência.
Esse programa leva o computador a executar
alguma tarefa.
– Assim, um programa é um algoritmo cujas
operações são específicas para o computador e
restritas ao conjunto de instruções que o
processador pode executar.
Algoritmos - Introdução
● Linguagem de programação
– É todo o conjunto de regras e operações que
podem ser executadas por um computador.
● Linguagem de máquina
– Linguagem numérica
● Linguagem de montagem (assembly)
– Linguagem mnemônica
● Programa assembler
Algoritmos - Introdução
● Linguagens de baixo nível x alto nível
– Compilação
– Interpretação
Algoritmos - Introdução
● Estruturação de Algoritmos
– Linguagem natural
● Não é ideal para representar algoritmos por não possuir
rigidez sintática e semântica
● Pessoas diferentes podem descrever/resolver o mesmo
problema de formas diferentes
– Linguagem de programação
● Possui rigidez semântica e sintática
● Não utiliza o idioma nativo
Algoritmos - Introdução
● Estruturação de Algoritmos
– Fluxograma
● Representa o algoritmo de forma gráfica
Início
escreva maior
Fim
Algoritmos - Introdução
● Estruturação de Algoritmos
– Pseudocódigo
● Tem um grau de rigidez sintática intermediária entre as
linguagens natural e de programação
● Pode ser escrito no idioma nativo
● O pseudocódigo mais conhecido é o Portugol
Algoritmos - Introdução
● Estruturação de Algoritmos
– Pseudocódigo
● Exemplo:
Algoritmo Maior
var num1, num2, maior: inteiro;
início
leia(num1, num2)
se (num1 > num2) então
maior ← num1;
senão
maior ← num2;
escreva(maior);
fim
Algoritmos - Fundamentos
● Objetivos
– Estruturas básicas de dados
– Definição de tipos de dados
– Sequências de ações
– Operação de atribuição de valores
– Comandos de entrada e de saída
Algoritmos - Fundamentos
● Manipulação de dados
– Internamente o computador só manipula números
– Linguagens de programação permitem a
manipulação de outros tipos de dados
– Tipos de dado
● Conjunto de objetos que têm o mesmo comportamento
diante de um conjunto definido de operações
● Tipos de dados da maioria das linguagens
– Números inteiros
– Números reais
– Letras
– Valores lógicos
Algoritmos - Fundamentos
● Manipulação de dados
– Tipos de dado
● Operadores lógicos
– e, ou e não
– Precedência
● Parênteses
● não
● e, ou
Algoritmos - Fundamentos
● Manipulação de dados
– Tipos de dado
● Operadores numéricos
– pot: potência entre dois números
● 10 pot 2 = 100
● 2 pot 10 = 1.024
● 20 div 5 = 4
● pot, raiz
● *, / , div, resto
● + , -
Algoritmos - Fundamentos
● Manipulação de dados
– Transformação das expressões matemáticas na
forma algorítmica
– Exemplos:
a+b
● - (a + b) / c
c
● √x+ y - (x + y) raiz 2
b c
● a+ - a pot b + c / d
d
Algoritmos - Fundamentos
● Manipulação de dados
– Constantes e variáveis
● São informações que ficam armazenadas
temporariamente, em memória, durante a execução de
um programa
● São elementos percententes aos tipos de dados
● São repositórios de elementos pertencentes aos tipos
de dados
● Para serem utilizados, devem ser declarados
identificadores informando em qual local da memória
esses elementos se encontram
Algoritmos - Fundamentos
● Manipulação de dados
– Constantes e variáveis
● Constantes: são valores definidos no início do
programa e que não alteram seu valor
● Variáveis: são valores que podem ser alterados durante
a execução de um programa
– Constantes – sintaxe
● constante <identificador1> = <valor1>;
<identificador2> = <valor2>;
…
<identificadorN> = <valorN>;
Algoritmos - Fundamentos
● Manipulação de dados
– Variáveis – sintaxe
● var <identificador1>[,<identificador2>,...] : <tipo1>;
<identificador3>[,<identificador4>,...] : <tipo2>;
– Identificadores
● Devem começar com letras
● Devem conter letras, números e o caracter '_'
● Não podem ser palavras reservadas
Algoritmos - Fundamentos
● Notações
– Palavras em negrito são palavras reservadas
– Palavras entre <> são elementos do algoritmo a
serem substituídos por nomes/valores a serem
definidos pelo programador
– Elementos entre [ ] são opcionais
– { } utilizados como comentário, para
documentação, não sendo considerados no
processo de execução
Algoritmos - Fundamentos
● Manipulação de dados
– Exemplo
● constante MÁXIMO = 100;
● var quantidade, filhos, netos: inteiro;
aberto: booleano;
altura: real;
resposta: caractere;
Algoritmos - Fundamentos
● Atribuição
– É o ato de colocar ou atribuir um valor a uma
variável
– É representada pelo símbolo ←
– Sintaxe
● <identificador> ← <valor do mesmo tipo da variável>;
● <identificador> ← <operação cujo resultado é do
mesmo tipo da variável>;
Algoritmos - Fundamentos
● Atribuição
– Exemplos
● letra ← “a”
● tamanho ← 2.2 {separação de casa decimal
representada com ponto}
● valor ← 5 * 4
● total ← valor + 7
● aberto ← F
● aberto ← aberto e V
● maior ← valor > 30 {V – se valor maior que 30
F – caso contrário}
Algoritmos - Fundamentos
● Blocos de instruções
– Instruções sempre executadas em sequência
– Os blocos visam identificar, claramente, onde a
sequência de instruções inicia e termina
– Eles apresentam o início e o término do conjunto
de instruções que serão executados em
sequência
– Todo algoritmo tem, pelo menos, um bloco de
intruções, indicando o início e o término do
mesmo.
Algoritmos - Fundamentos
● Blocos de instruções
– Sintaxe
● <declaração de variáveis>
início
<primeira instrução do bloco>
<segunda instrução do bloco>
…
<última instrução do bloco>
fim
Algoritmos - Fundamentos
● Exemplo 1
– Sabendo que a relação entre vértices, arestas e
faces de um objeto geométrico é dada pela
fórmula: vértices + faces = arestas + 2, calcule o
número de vértices de um cubo (6 faces e 12
arestas)
Algoritmos - Fundamentos
● Exemplo 2
– Elaborar um algoritmo para calcular as raízes da
equação: 2x 2 +4x−3
Algoritmos - Fundamentos
● Entrada e saída
– Dispositivos de entrada
● Teclado, mouse, scanner, ...
– Dispositivos de saída
● Vídeo, impressora, …
– Exemplos anteriores são ditos não adaptativos.
– Para que um programa possa atender às
diferentes necessidades do usuário, esse deve
poder informar quais os valores a processar
– O programa, no final, deve fornecer os resultados
do processamento
Algoritmos - Fundamentos
● Entrada de dados
– É o meio pelo qual o usuário pode informar dados
ao programa
– Sintaxe
● leia(<variável>);
– Deve ser fornecido um valor compatível com o
tipo de dados definido
Algoritmos - Fundamentos
● Saída
– É o meio pelo qual o usuário tem acesso aos
resultados do programa
– Sintaxe
● escreva(<valor>);
– O campo valor pode ser:
● Um texto entre aspas
● Um identificador (variável ou constante)
● Uma expressão
● Uma combinação das possibilidades acima
Algoritmos - Fundamentos
● Saída
– Exemplos
● escreva(letra);
● escreva(5+2);
● escreva(“5+2”);
● escreva(“5 + 2 = “, 5+2);
Algoritmos - Fundamentos
● Entrada e Saída
– Exemplo 1
● Sabendo que a relação entre vértices, arestas e faces
de um objeto geométrico é dada pela fórmula: vértices
+ faces = arestas + 2, calcule o número de vértices de
um cubo, sendo que o usuário deve fornecer os valores
para faces e arestas. Informe o resultado no final.
– Exemplo 2
● Elaborar um algoritmo para calcular as raízes de uma
equação do segundo grau.
Algoritmos - Fundamentos
● Teste de mesa
– É um meio pelo qual se pode acompanhar a
execução de um algoritmo, passo a passo, ou
instrução a instrução
– Tem por objetivo verificar e o algoritmo realiza
realmente a tarefa para a qual foi projetado
– Verifica se o mesmo produz o resultado esperado
para qualquer entrada possível
Algoritmos - Fundamentos
● Teste de mesa
– Exemplo
● Algoritmo
algoritmo obtem_vertices;
var vertices, faces, arestas: inteiro;
início
1> escreva(“Forneça a quantidade de faces: “);
2> leia(faces);
3> escreva(“Forneça a quantidade de arestas: “);
4> leia(arestas);
5> vertices ← arestas + 2 – faces;
6> escreva(“Quantidade de vertices: “, vertices);
fim
Algoritmos - Fundamentos
● Teste de mesa
– Exemplo
início
suba um andar
se chegou ao andar então
início
pare;
abra a porta;
feche a porta;
fim
fim
Algoritmos – Repetição
● Comando enquanto
– Exemplo
● Funcionamento de um elevador
– Na descida
● enquanto não chegar ao andar baixo selecionado faça
início
desca um andar
se chegou ao andar então
início
pare;
abra a porta;
feche a porta;
fim
fim
Algoritmos – Repetição
● Comando enquanto
– Sintaxe
enquanto <valor booleano> faça
<bloco de instruções>
<continuação do algoritmo>
Algoritmos – Repetição
● Comando repita
– Sintaxe
repita
<bloco de instruções>
até <valor booleano>;
<continuação do algoritmo>
Algoritmos – Repetição
● Comando para
– Sintaxe
para (<instrução de preparação>; <condição de
controle>; <passo para alcance da condição>) faça
<bloco de instruções>
<continuação do algoritmo>
Algoritmos – Repetição
● Comando enquanto
– Exemplo 1
● Faça um algoritmo que escreva 100 vezes o texto: “Não
vou mais fazer bagunça.”, utilizando um comando de
repetição.
– Exemplo 2
● Faça um algoritmo que leia 100 números e retorne a
soma e a média desses valores
Algoritmos – Repetição
● Comando enquanto
– Exemplo 3
● Faça um algoritmo que calcule a multiplicação de dois
números inteiros sem utilizar o operador “*”. Um vez
disso, utilize apenas o operador de adição.
– Exemplo 4
● Faça um algoritmo que calcule a soma de todos os
números ímpares dentro de uma faixa de valores
determinada pelo usuário.
Algoritmos - Vetores
● Variáveis Compostas Homogêneas
● Motivação
– Exemplo
● Elabore um algoritmo que leia 50 números e calcule a
média aritmética entre esses números. No final mostre
a média.
Algoritmos - Vetores
Algoritmo exemplo;
var n1, n2, n2, n4, … , n50 : inteiro;
media: real;
início
media ← 0;
escreva(“Informe o primeiro número: “);
leia(n1);
media ← media + n1;
…
escreva(“Informe o quinquagésimo número: “);
leia(n50);
media ← media + n50;
media ← media / 50;
escreva(“Media: “, media);
fim.
Algoritmos - Vetores
● Vetores unidimensionais
– Sintaxe
<identificador>: vetor [<número de elementos>] de <tipo>;
Algoritmos - Vetores
Algoritmo versao_1;
var n: vetor [50] de inteiro;
media: real;
início
media ← 0;
escreva(“Informe o primeiro número: “);
leia(n[1]);
media ← media + n[1];
…
escreva(“Informe o cinquagésimo número: “);
leia(n[50]);
media ← media + n[50];
media ← media / 50;
escreva(“Media: “, media);
fim.
Algoritmos - Vetores
Algoritmo versao_2;
var n: vetor [50] de inteiro;
media: real;
i : inteiro;
início
media ← 0;
para (i ← 1; i <= 50; i ← i + 1) faça
início
escreva(“Informe o valor “, i, “: “);
leia(n[i]);
media ← media + n[i];
fim
media ← media / 50;
escreva(“Media: “, media);
fim.
Algoritmos - Vetores
● Exemplo 1
– Faça um algoritmo que, dado um vetor numérico de
100 elementos já preenchido, verifique se há
ocorrências de um determinado valor informado pelo
usuário. Se houver, informar a(s) posição(ções) em
que esse valor se encontra dentro do vetor.
● Exemplo 2
– Elabore um algoritmo que leia dois vetores de 50
números e gere um terceiro vetor como a soma dos
outros dois.
Algoritmos - Vetores
● Exemplo 3
– Elabore um algoritmo que leia um vetor de 60
números e inverta os seus valores.
Algoritmos - Vetores
● Vetores bidimensionais
– Sintaxe
<identificador>: vetor [<número de linhas>,
<número de colunas>] de <tipo>;
Algoritmos - Vetores
● Elabore um algoritmo que leia os números de
uma matriz de ordem 3x4
Algoritmos - Vetores
Algoritmo le_matriz;
var matriz: vetor [3,4] de inteiro;
i, j : inteiro;
início
para (i ← 1; i <= 3; i ← i + 1) faça
para (j ← 1; j <= 4; j ← j + 1) faça
início
escreva(“Informe o elemento [“, i, ”,” ,j ,”]:”);
leia(matriz[i,j]);
fim
fim.
Algoritmos - Módulos
● Objetivo
– Divisão de tarefas complexas e longas em
atividades mais simples e curtas
– Abordagem top-down
● Parte-se do todo, dividindo-o em componentes
menores, repetindo-se esse processo até o menor
componente
– Abordagem bottom-up
● É o processo inverso, onde se inicia a resolução de um
problema pela parte menor, menos complexa, e vai
agregando novas partes até chegar so problema maior.
Algoritmos - Módulos
● Vantagens
– Reaproveitamento das atividades em outros
problemas
– Diminuição do tempo de resolução do problema.
Algoritmos - Módulos
● Modularizando algoritmos
– É a forma de didivir as tarefas em subalgoritmos,
onde cada módulo cuida de uma parte do
problema.
– Cada módulo funciona como um programa, com
entrada, processamento e saída bem definidos.
– As entradas e saídas dos módulos são a forma de
interação entre si.
– Para que um módulo seja executado é preciso
que o mesmo seja chamado por outro módulo.
Algoritmos - Módulos
● Modularizando algoritmos
– Todos os algoritmos devem ter pelo menos um
módulo principal.
– É sempre por esse módulo que o algoritmo inicia
sua execução.
– Cada módulo chamado é executado do início até
o fim e o mesmo pode chamar outro módulos.
– Após o fim de cada módulo, o algoritmo continua
do ponto em que o módulo foi chamado. Ponto
esse conhecido como ponto de ativação.
Algoritmos - Módulos
● Modularizando algoritmos
– Na maioria das linguagens de programação os
subprogramas devem ser definidos/escritos antes
de sua utilização.
Algoritmos - Módulos
● Modularizando algoritmos: exemplo
Algoritmo modulo;
var a1, a2, a3: inteiro;
Teste {Módulo Teste}
início
a1 ← a2;
a3 ← a1 + a2;
a2 ← a2 + 6
fim
● ∑i = n+ ∑ i para n > 1
i=1 i=1
fim
Algoritmos - Recursividade
● Recursividade expressa por módulos
– O problema da estrutura anterior é que a mesma
nunca se encerra
– Para que o processo chegue ao final é necessário
haver um ponto de parada
– Esse ponto explicita a saída do módulo e equivale
à base da equação nas funções de recorrência
Algoritmos - Recursividade
● Fatorial
Fatorial_recursivo (n: inteiro): inteiro
var fat: inteiro;
inicio
se (n = 0) então {base}
fat ← 1;
senão
fat ← n * Fatorial_recursivo(n – 1); {função recorrente}
retorne(fat)
fim
Algoritmos - Recursividade
● Fatorial
Principal ( ): neutro
var fatorial, num : inteiro;
inicio
escreva(“Entre com o valor a ser calculado o fatorial: “)
leia(num);
fatorial ← Fatorial_Recursivo(num);
escreva(“O fatorial é: “, fatorial)
fim
Algoritmos - Registros
● Registros
– São a forma de representar estruturas de dados
compostas heterogêneas
– Quando se deseja trabalhar com um objeto mais
complexo, que necessite de mais de um valor
para identificá-lo
– Agrega informações que são naturalmente
atreladas ao objeto
– Exemplo
● Cadastro de pessoas
Algoritmos - Registros
● Sintaxe
<identificador>: Registro
início
<campo 1>:<tipo do campo>;
<campo 2>:<tipo do campo>;
…
<campo n>:<tipo do campo>;
fim
– Cada campo funciona como uma variável primitiva, mas
todos os campos estão agrupados no mesmo registro.
Algoritmos - Registros
● Exemplo
var
Ficha_Academia: Registro
início
matricula : inteiro;
nome : vetor [50] de caracter;
peso : real;
altura : real;
instrutor : vetor [50] de caracter;
mês_matricula : inteiro;
ano_matricula : inteiro;
fim
Algoritmos - Registros
● Exemplos de uso
leia(Ficha_Academia.matricula);
escreva(Ficha_Academia.nome);
Ficha_Academia.peso ← 80;
● Formas incorretas
leia(Ficha_Academia);
escreva(Ficha_Academia);
Algoritmos - Registros
● Definindo tipos de dados
– Exemplo 1
tipo
Ficha_Academia: Registro
início
matricula : inteiro;
nome : vetor [50] de caracter;
...
fim
var
Aluno1, Aluno2 : Ficha_Academia;
Algoritmos - Registros
● Definindo tipos de dados
– Exemplo 2
tipo
data: Registro
início
dia : inteiro;
mes : inteiro;
ano : inteiro;
fim
var
data_nascimento, data_admissao : data;
início
data_nascimento.dia ← 16;
data_nascimento.mes ← 09;
data_nascimento.ano ← 2003;
Algoritmos - Registros
● Definindo tipos de dados
– Exemplo 3
tipo
data: Registro
início
dia : inteiro;
mes : inteiro;
ano : inteiro;
fim
tipo
Cliente : Registro
início
nome : vetor [50] de caracter;
data_nascimento :data;
fim
var
pessoa : cliente
início
pessoa.nome ← “Antonio Jose”;
pessoa.data_nascimento.dia ← 22; pessoa.data_nascimento.mes ← 10;
pessoa.data_nascimento.ano ← 2000;
Algoritmos - Registros
● Vetores de registros
– Sintaxe
tipo <tipo de registro>: Registro
inicio
<campo 1> : <tipo de campo>;
<campo 2> : <tipo de campo>;
…
<campo n> : <tipo de campo>;
fim
tipo <tipo vetor>: vetor [<tamanho>] de <tipo registro>;
Algoritmos - Registros
● Vetores de registros
– Exemplo
tipo aluno: Registro
inicio
nome : vetor [50] de caracter;
matricula : inteiro;
telefone : vetor [10] de caracter;
fim
tipo turma : vetor [50] de aluno;
var turma_algoritmo : turma;
inicio
turma_algoritmo[1].nome ← “adfaf sfsklj”;
turma_algoritmo[2].nome ← “dpfdfjasfja”;
...
Algoritmos - Registros
● Registro com vetores
– Sintaxe
tipo <tipo de registro>: Registro
inicio
<campo 1> : <tipo de campo>;
<campo 2> : <tipo de campo>;
…
<campo n> : vetor [<tam1, tam2>] de <tipo do campo>;
fim
Algoritmos - Registros
● Registro com vetores
– Exemplo
tipo vendas : Registro
inicio
cod_produto : inteiro;
quantidade : vetor [10, 12] de inteiro;
{venda mensal dos últimos 10 anos}
fim
var
balanco : vendas;
inicio
balanco.cod_produto ← 1;
balanco.quantidade[1,1] ← 20; {qtde vendas ano 1 mes 1}
balanco.quantidade[1,2] ← 45; {qtde vendas ano 1 mes 2}
balanco.quantidade[1,3] ← 18; {qtde vendas ano 1 mes 3}
balanco.quantidade[1,4] ← 34; {qtde vendas ano 1 mes 4}
Algoritmos - Registros
● Vetores de registros com vetores
– Exemplo
tipo vendas_bimestre : Registro
inicio
cod_produto : inteiro;
quantidade : vetor [6, 2] de inteiro;
{venda mensal de cada bimestre}
fim
var
balanco : vetor [10] de vendas_bimestre;
inicio
balanco[1].cod_produto ← 1;
balanco[1].quantidade[1,1] ← 20; {vendas ano 1, bimestre 1, mes 1}
balanco[1].quantidade[1,2] ← 45; {vendas ano 1, bimestre 1, mes 2}
balanco[2].quantidade[2,1] ← 18; {vendas ano 2, bimestre 2, mes 1}
balanco[2].quantidade[2,2] ← 34; {vendas ano 2, bimestre 2, mes 2}
Algoritmos - Registros
● Exercícios
– 8.3 Exercícios do capítulo
Algoritmos - Arquivos
● Arquivos
– São estruturas de dados persistentes.
– Armazenam os dados de forma permanente em
dispositivo de armazenamento secundário.
– São usados para armazenar e acessar
dados/informações dentro de um computador
– O sistema operacional tem rotinas para criar,
remover, ler, atualizar, abrir e fechar arquivos.
– Os programas fazem chama a essas rotinas do
sistema operacional.
Algoritmos - Arquivos
● Arquivos de registros sequenciais
– Os arquivos são formados apenas de registros do
mesmo tipo
– Sintaxe
<identificador>: Registro
início
<campo 1>:<tipo do campo>;
<campo 2>:<tipo do campo>;
…
<campo n>:<tipo do campo>;
fim
<identificador>: Arquivo de <tipo de registro base>
Algoritmos - Arquivos
● Arquivos de registros sequenciais
– Exemplo 1
tipo Registro_Aluno_Disciplina: registro
início
matricula : inteiro;
disciplina: vetor [50] de caractere;
ano: inteiro;
aluno: vetor [50] de caractere;
média: real;
fim
var
reg_aluno: Registro_Aluno_Disciplina; {1 registro}
arquivo_notas: arquivo de Registro_Aluno_Disciplina;
{1 arquivo de registros}
Algoritmos - Arquivos
● Arquivos de registros sequenciais
– Exemplo 2
tipo arquivo_notas_bimestre: arquivo de
Registro_Aluno_Disciplina;
var
notas_bim1, notas_bim2, notas_bim3, notas_bim4 :
arquivo_notas_bimestre;
Algoritmos - Arquivos
● Funções de manipulação
– Abra_Arquivo
– Feche_Arquivo
– Grave_Arquivo
– Leia_Arquivo
– Posicione_Arquivo
– FDA (Fim De Arquivo)
Algoritmos - Arquivos
● Funções de manipulação
– Abra_Arquivo
● Sintaxe
Abra_Arquivo(<Nome do arquivo>, {Nome real}
<Identificador do arquivo>,
<Modo>); {inicial ou final}
● Exemplo
Abra_Arquivo(“Arquivos/Notas/Algoritmo/TurmaB”,
notas_bim1,
inicial);
● Caso não exista o arquivo, será criado um arquivo
vazio.
Algoritmos - Arquivos
● Funções de manipulação
– Feche_Arquivo
● Sintaxe
Feche_Arquivo(<identificador do arquivo>)
● Exemplo
Feche_Arquivo(notas_bim1);
● Em muitas linguagens o não fechamento do arquivo
implica na perda das alterações realizadas.
Algoritmos - Arquivos
● Funções de manipulação
– Grave_Arquivo
● Sintaxe
Grave_Arquivo(<identificador do arquivo>,
<Registro>);
● Exemplo
Grave_Arquivo(notas_bim1, reg_aluno);
● O registro será gravado na posição em que o ponteiro
do arquivo se encontrar, sobrepondo a informação
existente.
● Após essa operação o ponteiro será movido para a
próxima posição do arquivo.
Algoritmos - Arquivos
● Funções de manipulação
– Leia_Arquivo
● Sintaxe
Leia_Arquivo(<identificador do arquivo>,
<Registro>);
● Exemplo
Leia_Arquivo(notas_bim1, reg_aluno);
● O comando recupera os dados de um registro do
arquivo e os atribui a um registtro do programa.
● O registro a ser lido será o apontado pelo ponteiro.
● Após a leitura o ponteiro será movido para a próxima
posição do arquivo.
Algoritmos - Arquivos
● Funções de manipulação
– Posicione_Arquivo
● Sintaxe
Posicione_Arquivo(<identificador do arquivo>,
<Posição>);
● Exemplo
Posicione_Arquivo(notas_bim1, 10);
Algoritmos - Arquivos
● Funções de manipulação
– FDA
● Sintaxe
FDA(<identificador do arquivo>);
● Exemplo
FDA(notas_bim1);
● Retorna V caso o ponteiro aponte para o final do
arquivo e F caso contrário.
Algoritmos - Arquivos
● Funções de manipulação
– Todas as funções retornam um valor booleano.
– Com exceção da função FDA, o retorno V indica
que a operação foi executada com sucesso.
– A função Abra_Arquivo retorna F se o arquivo não
existir
– A função Feche_Arquivo retorna F se o arquivo
não for aberto previamente
– A função Grave_Arquivo retorna F se não houver
permissão de escrita ou se o tipo do registro for
diferente dos registros do arquivo.
Algoritmos - Arquivos
● Funções de manipulação
– A função Leia_Arquivo retorna F se ponteiro
estiver apontando para o fim de arquivo ou se o
tipo do registro for diferente dos registros do
arquivo.
– A função Posicione_Arquivo retorna F se a
posição indicada for maior que o número de
registros do arquivo.
Algoritmos - Arquivos
● Arquivos texto
– São compostos de caracteres e não de registros.
– Sintaxe
<Nome do arquivo>: Arquivo de caractere;
– Exemplo
Arquivo_historia : Arquivo de caractere;
– Os acessos a esses arquivos são sequenciais.
– Não é implementada a função posicione_arquivo.
Algoritmos - Arquivos
● Arquivos texto
– Funções de manipulação
● Abra_Arquivo
– Sintaxe
Abra_Arquivo(<Nome do arquivo>,<Identificador do arquivo>,
<modo>);
● Feche_Arquivo
– Sintaxe
Feche_Arquivo(<Identificador do arquivo>);
Algoritmos - Arquivos
● Arquivos texto
– Funções de manipulação
● Grave_Arquivo
– Sintaxe
Grave_Arquivo(<Identificador do
arquivo>,<Caractere/sequência de caracteres>);
– Exemplos
Grave_Arquivo(nomes,”A”);
Grave_Arquivo(nomes, “Jose da Silva”);
nome1: vetor [50] de caractere;
nome1 ← “Pedro”
Grave_Arquivo(nomes,nome1);
Algoritmos - Arquivos
● Arquivos texto
– Funções de manipulação
● Leia_Arquivo
– Sintaxe
Leia_Arquivo(<Identificador do arquivo>, <variável caractere
ou vetor de caracteres,<tamanho>);
Algoritmos - Arquivos
● Arquivos texto
– Funções de manipulação
● FDA (Fim de arquivo)
– Sintaxe
FDA(<Identificador do arquivo>)
Algoritmos - Arquivos
● Arquivos de registros indexados/diretos
– Podem ser acessador diretamente por uma chave.
– A chave identifica unicamente um registro.
– São usadas estruturas chamadas de índices para
facilitar o acesso pela chave.
Algoritmos - Arquivos
● Arquivos de registros indexados/diretos
– Sintaxe
tipo <Tipo registro base>: Registro
início
<campo 1>: <tipo de campo>;
<campo 2>: <tipo de campo>;
…
<campo n>: <tipo de campo>;
fim
<Identificador> : Arquivo Indexado de <Tipo registro
base>, Chave <campo-chave>
Algoritmos - Arquivos
● Arquivos de registros indexados/diretos
– Exemplo
tipo registro_aluno_disciplina : Registro
início
matricula: inteiro;
disciplina: vetor [50] de caractere;
media: real;
fim
var
reg_aluno: registro_aluno_disciplina;
arquivo_notas_bimetre1: Arquivo indexado de
registro_aluno_disciplina, Chave matricula
Algoritmos - Arquivos
● Arquivos de registros indexados/diretos
– Funções de manipulação
● Abra_Arquivo
– Sintaxe
Abra_Arquivo(<Nome do arquivo>,<Identificador do arquivo>)
● Feche_Arquivo
– Sintaxe
Feche_Arquivo(<Identificador do arquivo>)
Algoritmos - Arquivos
● Arquivos de registros indexados/diretos
– Funções de manipulação
● Grave_Arquivo
– Sintaxe
Grave_Arquivo(<Identificador do arquivo>,<Registro>,<chave>);
● Leia_Arquivo
– Sintaxe
Leia_Arquivo(<Identificador do arquivo>,<Registro>,<chave>);
● Não são implementadas as funções Posicione_Arquivo e
FDA.