FORTRAN 95 - TEXTO LENZI, Orlando ARQUIVO EXTERNO

Documentos relacionados
Aula 5 - Mais C e repetição

QUADRADO MÁGICO - ORDEM 3

Vetores. e o programa deverá ler os valores separadamente:

MCG126 Programação de Computadores II

Introdução ao Fortran 90-7

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

CONCEITOS DE ALGORITMOS

Exercícios Repetição

Disciplina de Algoritmos e Programação

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

Aula 4 Introdução ao C

Introdução ao Fortran 90. Aula 3

Capítulo 10. MATRIZES

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Linguagem C Princípios Básicos (parte 1)

Ambiente de Programação, rastreamento e entrada de dados. MCG114 Programação de Computadores I. Interpretador de Comandos. Interpretador de Comandos

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

Working 03 : Conceitos Básicos II

LINGUAGEM C: ARQUIVOS

Lógica de Programação e Algoritmos

SISTEMASDE. SW, APP e SO - 2º trimestre Patrícia Lucas

LINGUAGEM C: COMANDOS DE REPETIÇÃO

Programação de Computadores III

Atualização Técnica e Pedagógica de Professores no componente de Lógica de Programação com C# (console) Semana 4 Vetor e Matriz

Programação: Vetores

Programação de Computadores:

Linguagem de Programação II. Introdução à programação em VB Professor: Armando Hage

Aula 15 Variáveis Indexadas (vetores)

PROGRAMAÇÃO DE COMPUTADORES

Sistemas Operacionais. Sistema de Arquivos. Edeyson Andrade Gomes.

Programação de Computadores:

69) Acrescentar uma mensagem de VALOR INVÁLIDO no exercício [68], caso o segundo valor informado seja ZERO.

Conceitos básicos de programação

Ambiente de desenvolvimento

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For

Apostila - Desenvolvimento web com PHP

Arquivos em C. Notas de Aula. Prof. Francisco Rapchan

JavaScript (ou JScript)

LINGUAGEM C: ARRAY: VETORES E MATRIZES

Aprender a utilizar o aplicativo Gnuplot para fazer gráficos

Barramento. Prof. Leonardo Barreto Campos 1

Para iniciarmos o trabalho se faz necessária a implantação da GUIA DESENVOLVEDOR. Botão Direito do Mouse; Personalizar Faixa de Opções

Vetores são estruturas indexadas utilizadas para armazenar dados de um mesmo tipo: int, char, float ou double. Oexemploaseguirédeumvetordeinteiros:

IV.2 Aspectos Léxicos Convencionais

Mini apostila de Python - Oficina de Vestibulandos. PET Computação - UFPR September 2016

Sistemas Operacionais. Interrupção e Exceção

Exercícios: Vetores e Matrizes

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

CURSO BÁSICO DE PROGRAMAÇÃO AULA 16. Manipulação de arquivos.

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

ESTRUTURAS DE CONTROLE ESTRUTURAS DE REPETIÇÃO

CADERNO DE EXERCÍCIOS ALGORITMOS

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

<identificador>[<tamanho>]: <tipo>;

ESTRUTURAS DE REPETIÇÃO - PARTE 1

Unidade 5: Introdução à Programação com C/C++

A resposta apresentada em aula, no quadro, (em Chapin e/ou Português Estruturado) está correta?

Capítulo 6: Arquivos

Capítulo 11. GRÁFICOS COM WGNUPLOT

Working 03 : Conceitos Básicos II

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

Vetores Unimensionais

9. Comando de repetição com variável de controle (para.. de.. até.. faça)

Capítulo 19. DERIVADAS E INTEGRAIS NUMÉRICAS

Laboratório de Programação I

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

Programação estruturada no Fortran 90-1

Organização e Arquitetura de Computadores I

ESTRUTURAS DE CONTROLE ESTRUTURAS DE REPETIÇÃO

Lógica de Programação Módulo I Prof.: Ricardo Lokchin. Fazer os exercícios abaixo na Linguagem C ou em ALGORITMOS.

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ACESSO, ATRIBUTOS E OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ

Semana 2 Estruturas de Condição, Seleção e Repetição. Prof. Tiago Jesus de Souza

ESTRUTURA CONDICIONAL E SELEÇÃO

4ª Lista de Exercícios de Programação I

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Aula 10: Introdução a Vetores e Matrizes

Tipos de Dados, Variáveis e Entrada e Saída em C. DCC 120 Laboratório de Programação

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Introdução ao fortran 90 - Aula 1

Programação de Computadores:

Curso de PHP. FATEC - Jundiaí. A diferença a entre as matrizes e as arrays é que acrescentamos mais

Fábio Rodrigues / Israel Lucania

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

Algoritmos e Programação

Métodos Computacionais. Strings (Vetor de Caracteres)

CAPÍTULO VIII. Variáveis Indexadas: Vetores e Matrizes CAPÍTULO VIII VARIÁVEIS INDEXADAS VARIÁVEIS INDEXADAS HOMOGÊNEAS UNIDIMENSIONAIS (VETORES)

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

Material Didático Proposto

Programação Estruturada Comandos Condicionais (Decisão) Operadores Relacionais

Organização e Arquitetura de Computadores I

Arquivos. Introdução à Programação SI1

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Algoritmos e Programação

Programação de Computadores I Arquivos na Linguagem C PROFESSORA CINTIA CAETANO

Organização de Arquivos. SCE-183 Algoritmos e Estruturas de Dados II

Linguagem de Programação

Transcrição:

PROBLEMA A APRIMORAR Calcular a soma e a média das cinco dezenas do resultado de um jogo da QUINA e mostrar os resultados, acrescentando os seguintes APRIMORAMENTOS: h) obter os dados a partir de um arquivo, tratando os erros previstos e registrando no arquivo de saída (dados), i) acumular os totais por quantidade de números pares em cada jogo (mínimo=0 e máximo=5), j) gerar um arquivo de saída (resultados), indicando: totais de conjuntos, totais por quantidade de pares e porcentagem. k) mostrar o arquivo de saída antes de encerrar o processamento. CONCEITO ARQUIVO ou ARQUIVO DE DADOS ou é um conjunto de informações que pode ser utilizado (operação de leitura ou entrada) ou gerado (operação de gravação ou saída) em um dispositivo (teclado, disco, vídeo, fita, etc) de entrada ou saída. Estas informações são organizadas e tratadas (lidas ou gravadas) em uma unidade denominada REGISTRO. O registro pode ser homogêneo (dados com mesmo tipo e espécie) ou heterogêneo (dados com diferentes tipos e espécies). Exemplo: Arquivo de clientes Informações no registro: nome completo, endereço completo (nome da rua/avenida/praça/travessa, número, complemento (bloco/andar/apartamento/casa), cep, cidade, estado,cpf,rg,renda, filhos, etc. O arquivo deverá ter um nome para ser tratado pelo sistema operacional. Este nome deve indicar o conteúdo do arquivo. Para o arquivo de clientes, por exemplo, poderia ser: CAD_CLI ou CLIENTES ou DADOS_CLIENTES, etc. Para o programa FORTRAN ele será referenciado por um número inteiro, preferencialmente acima de 20, pois os valores iniciais são utilizados para indicar unidades padrão. Então, por exemplo, podemos utilizar: 21, 32, 43, 51. Trabalharemos apenas, por enquanto, com arquivos sequenciais, ou seja, com arquivos em que os registros são lidos ou gravados por ordem: primeiro, segundo, terceiro, etc..., ante-penúltimo, penúltimo e último. Nenhum registro é acessado antes que todos os seus anteriores tenham sido processados. ABERTURA Como o sistema operacional usa um nome "CAD_CLI" e o programa usa um número "32" para identificar um arquivo é necessário que criemos no programa uma correspondência entre elas, antes de usarmos as informações do arquivo. Esta correspondência é feita no comando OPEN que realiza a abertura do arquivo, relacionando o nome com o número e criando uma área em memória onde serão tratados as informações do arquivo, tanto para a leitura como para escrita. A sintaxe mais simples do comando é: OPEN (<número do arquivo>,file=<nome do arquivo>) Exemplos: OPEN (41,file="cad_cli.txt") OPEN (32,file=nome_arq) associa o número 41 (unidade do programa) com o nome externo "cad_cli.txt" associa o número 32 como um nome externo igual ao valor da variável nome_arq. Observação: Quando usamos variável para definir o nome de um arquivo, ela deve ser do tipo CHARACTER. LEITURA DO ARQUIVO A leitura de um arquivo é feita por meio do comando READ. Nele também podemos controlar o final do arquivo quando utilizamos a leitura sequencial dos registros. As sintaxes mais simples do comando são: a) quando não controlamos o final do arquivo: READ (<número do arquivo>,*) [<lista de variáveis> ] b) quando controlamos o final do arquivo: READ (<número do arquivo>,*,end=<label>) [<lista de variáveis>] Observação: Os colchetes indicam que a lista de variáveis é opcional. Omitindo-se a lista de variáveis, faremos com que o comando READ não leia o registro (ignore), passando para o próximo quando for executado um outro comando READ. ATUALIZADO: ago/2013 1 olenzi @ orlandolenzi. eng. br

LEITURA NÃO FORMATADA O caractere asterisco (*) está indicando que a leitura será não formatada, ou seja, usaremos o modo padrão do FORTRAN para separar as informações. Lembrando, por padrão o FORTRAN utiliza o caracter espaço ou o caracter tabulador (TAB) para separar as informações. Temos que ter aqui um cuidado com as informações do tipo CHARACTER, por exemplo o nome de pessoas, de cargos, de cidades, de bairros, etc. Por exemplo: para lermos Laudêncio Cruzador do Espaço como nome de um cliente será necessário escrevê-lo entre aspas ou escrevermos um caractere, por exemplo "_" no lugar dos espaços. Se deixarmos os espaços sem as aspas, somente Laudêncio será atribuído ao nome e dos demais serão considerados como valores de outra informação. Então, codificando o nome corretamente: "Laudêncio Cruzador do Espaço" ou Laudêncio_Cruzador_do_Espaço. Deve-se preferir a primeira forma, uma vez que nos relatórios não será necessário retirar os caracteres "_". Exemplos: READ (41,*) nome_func,setor,salario_mes lê, sem formatação, o registro do arquivo externo referenciado pelo número 43 com três informações: nome do funcionário, setor em que trabalha e o salário mensal. TRATAMENTO DO FINAL DE ARQUIVO Sempre devemos controlar o final de um arquivo externo. Isto pode ser feito pela contagem do número de registros lidos, pela verificação de uma informação contida no registro ou pelo registro de fim de arquivo (gerado pelo programa que criou o arquivo). O <label> é um número que indica qual comando deverá ser executado quando o final de um arquivo externo for encontrado. No programa este número precede o comando que será executado. Por exemplo: READ (41,*,END=999) nome_func,setor,salario_mes controla o final de arquivo pelo registro de final de arquivo e........................ quando encontrado passa a executar o comando indicado 999 WRITE (*,*) "ARQ=41 Leitura concluída" ou precedido pelo número 999. GRAVAÇÃO DO ARQUIVO A gravação de um arquivo é feita pelo comando WRITE. A sintaxe mais simples do comando é: WRITE (<número do arquivo>,*) [<lista de variáveis e/ou literais>] Observação: Os colchetes indicam que a lista de variáveis é opcional. Omitindo-se a lista de variáveis, faremos com que o comando WRITE gere uma linha vazia, que pode ser utilizada como separador do conjunto de informações, de tabelas, etc. Por exemplo: WRITE (43,*) "ERRO 17: Produto não cadastrado" grava no arquivo 43 a literal: ERRO 17: Produto não cadastrado WRITE (51,*) "RESUMO DAS VENDAS DE",mes,"/",ano grava no arquivo 51 na sequência: literal (RESUMO...DE), valor da variável "mes" (fevereiro), literal (/) e valor da variável ano (2013). Resultado: RESUMO DAS VENDAS DE fevereiro / 2013 WRITE (51,*) WRITE (51,*) dia,qtd_vd,tot_vd,med_vd não grava nada, resultando em uma linha de separação grava os valores das 4 variáveis definidas como REAL*4 Exemplo: 15 1590 1951955. 1227.6447 O 1º valor indica o DIA, o 2º a quantidade vendida no dia, o 3º o total da venda diária e o 4º a média (2º valor/3º valor) do dia. ATUALIZADO: ago/2013 2 olenzi @ orlandolenzi. eng. br

FECHAMENTO Quando terminamos a gravação de um arquivo externo é necessário que o fechemos. Esta operação transfere as informações finais para a unidade do arquivo (meio físico: disco, fita, etc) e grava o registro de final de arquivo. Observação: Para os arquivos que foram somente lidos a operação de fechamento pode ser executada ou não, ficando a critério do programador. Sempre que fechamos um arquivo, o seu número fica disponível e poderá ser atribuído a um novo arquivo no mesmo programa. A sintaxe mais simples do comando é: CLOSE (<número do arquivo>) Exemplo: CLOSE (41) fecha o arquivo identificado pelo número 41 APRIMORANDO O PROBLEMA IMPLEMENTANDO OS APRIMORAMENTOS H), I), J) e K) Para implementar o aprimoramento H) usaremos um arquivo com os resultados da quina baixados a partir do domínio das loterias da Caixa, adaptando ao nosso problema. Cada registro conterá, em formato livre, os 5 números de cada concurso e um número de ordem do concurso. Estamos atualizando o arquivo semanalmente e neste momento ele contém os concursos de 1 a 3260. O nome dele será "quina_resultado.txt" e o formato será: nn nn nn nn nn nnnn, onde cada n representa um algarismo. Os "n" minúsculos são opcionais. A entrada sendo de um arquivo modifica não conterá mais o controle de digitação de valores, mas terá a rotina de de verificação dos erros (intervalo [1-80], sem repetição de valor). Quando houver erro gravaremos, no arquivo de saída, o registro errado e o desconsideraremos nos cálculos. As variáveis "cj_lido" e "cj_val", conterá o total de registros lidos e o total de registro que foram processados (exclui os que contiverem erros). O aprimoramento I) que é a totalização de concursos por quantidade de números pares. Observar que temos dois níveis de contagem. O primeiro é contar quantos números pares tem um determinado concurso. Os valores possíveis são: 0, 1, 2, 3, 4 ou 5. O segundo é contar no vetor "TOT_PAR" com 6 elementos, quantos concursos existem com um mesmos total de números pares. A soma dos valores do vetor "TOT_PAR" será sempre igual ao número de registros do arquivo lido. O aprimoramento J) gerará o arquivo "quina_dados_conjunto", que conterá as informações individuais e também gerará o arquivo que chamaremos "quina_estatistica_par.txt" que conterá as informações resumidas pedidas. O cálculo da porcentagem foi feito no próprio comando de saída e para obter casas decimais precisamos de pelo menos um dos números com o do tipo REAL. Mostraremos o arquivo gerado usando a função SYSTEM com o comando "notepad quina_estatistica_par.txt", que é o aprimoramento K). Para encerrar o programa devemos fechar a janela aberta no windows. Lembramos que esta função é dependente do ambiente computacional. O controle da saída de resultados, usando o formato livre não apresenta boa estética e agora já temos um elemento motivador para vermos as saídas formatadas ou usando o formato ou o comando FORMAT. CODIFICAÇÃO DO PROGRAMA - APRIMORAMENTOS H), I), J) e K)! Este programa calcula a soma e a média das dezenas de um resultado da quina, com os seguintes aprimoramentos! A: verifica validade dos valores no intervalo: [1,80] B: armazenar os valores em um vetor de 5 elementos! C: verifica repetição dos valores: não permitida D: valor digitado errado: permitir a correção! E: totalizar números pares (função MOD) F: classificar os 5 números em ordem crescente (sub-rotina CLASS)! G: limpar a tela antes da execução (função SYSTEM) H: ler um arquivo com vários conjuntos de 5 dezenas! I: contar a quantidade de números pares por total em cada conjunto! J: gravar arquivo de saída de resultados e erros (elimina D)! K: mostrar os arquivo de resultados antes de encerrar o programa PROGRAM somar_5_dez_quina!******* ESPECIFICAÇÃO DAS VARIÁVEIS E INICIALIZAÇÃO DOS CONTADORES GERAIS ******* IMPLICIT NONE ATUALIZADO: ago/2013 3 olenzi @ orlandolenzi. eng. br

INTEGER*1 :: rep,ord,ind,par INTEGER*2 :: num(5), total_geral, cj, cj_lido=0, cj_val=0, tot_par(0:5)=0 REAL*4 media! "rep" - indica repetição do número ; 0-->sem ; 1-->com "ord" - controla ordem do valor em um conjunto! "ind" - controla verificação da repetição - valores anteriores "num(5)" - vetor com 5 elementos que armazena os valores! "total_geral" - acumula a soma dos valores "media" - armazena a média dos valores! "par" - armazena o total de números pares digitados "cj" - armazena a ordem do conjunto (lido do arquivo)! "cj_lido" - conta os registros lidos "cj_val" - conta os registros válidos (sem erros)! "tot_par" - conta os concursos uma mesma quantidade de dezenas pares!******* TRATAMENTO DA TELA - ENTRADA DOS VALORES E VERIFICAÇÃO DE ERROS ******* ind=system("cls")! Limpa a janela de comandos (ambiente windows)! Abertura dos arquivos OPEN (41,file="quina_resultado.txt") ; OPEN (42,file="quina_estatistica_par.txt") OPEN (43,file="quina_dados_conjunto.txt") WRITE (*,*) "INICIANDO O PROCESSAMENTO" WRITE (43,*) "------ RESULTADOS POR CONJUNTO PROCESSADO ----*" ; WRITE (43,*) DO! Controla a leitura dos registros do arquivo READ (41,*,END=999) num,cj CALL CLASS (num) cj_lido=cj_lido+1! Verificando a repetição de valores e limites ord=1 ; rep=0 ; par=0 ; total_geral=0 DO WHILE (rep == 0.and. ord <= 5)! Lendo o arquivo de conjuntos (5 dezenas e ordem)! Classificando os numeros - ordem crescente! Contando o registro lido! Inicializando contadores do conjunto! Controla as dezenas do conjunto IF (num(ord) < 0.or. num(ord) > 80 ) then rep=1! ERRO: Dezena fora do intervalo [1,80] else total_geral=total_geral + num(ord)! Acumula os valores do conjunto IF ( MOD(num(ord),2_2) == 0 ) par=par+1! Conta números pares do conjunto DO ind = 1,ord-1 IF (num(ord) == num(ind)) then rep=1 EXIT ord=ord+1 IF (rep == 1) then! ERRO: Existe repetição! Fim do controle da verificação de repetições! Posiciona a próxima dezena a verificar! Fim do controle das dezenas do registro! Verifica existência de erro! Controla a verificação da repetição! Se verdadeiro --> repetição! Gravando erro do conjunto WRITE (43,*) "CONJUNTO=",cj,"DEZENAS=",num," VALORES INVALIDOS (FORA LIMITE [1,80] OU REPETIDOS" WRITE (*,*) "CONJUNTO=",cj,"DEZENAS=",num," VALORES INVALIDOS (FORA LIMITE [1-80] OU REPETIDOS" else!******* CÁLCULOS E SAÍDA DE RESULTADOS POR CONJUNTO ******* cj_val=cj_val+1 media = total_geral / 5. tot_par(par)=tot_par(par)+1! Gravando dados de um conjunto! Conta conjunto válido (sem erros)! Cálculo da média! Conta o conjunto em função seu total de pares WRITE (43,*) "CONJUNTO=",cj,"DEZENAS=",num,"SOMA=",total_geral,"MEDIA=",media,"TOTAL PARES=", par! Fim do controle da leitura dos registros do arquivo!******* CÁLCULOS E SAÍDA DE RESULTADOS DE TODOS OS CONJUNTOS ACUMULADOS *******! Gravando no arquivo 999 WRITE (42,*) "TOTAIS DE REGISTROS" WRITE (42,*) "LIDOS...=",cj_lido WRITE (42,*) "VALIDOS.=",cj_val WRITE (42,*) "COM ERRO=",cj_lido-cj_val ; WRITE (42,*) ; WRITE (42,*) WRITE (42,*) "QUANTIDADE E PORCENTAGEM DE CONJUNTOS POR TOTAL DE DEZENAS PARES" WRITE (42,*) ATUALIZADO: ago/2013 4 olenzi @ orlandolenzi. eng. br

DO ind = 0,5 WRITE (42,*) "DEZENAS PARES=",ind," TOTAL CONJUNTOS=",tot_par(ind)," PORCENTAGEM=",tot_par(ind)*100./cj_val! Fechando e mostrando arquivos gravados CLOSE (42) ; ind=system ("notepad quina_estatistica_par.txt") CLOSE (43) ; ind=system ("notepad quina_dados_conjunto.txt")! Mostrando no vídeo WRITE (*,*) ; WRITE (*,*) "TOTAIS DE REGISTROS" WRITE (*,*) "LIDOS...=",cj_lido WRITE (*,*) "VALIDOS.=",cj_val WRITE (*,*) "COM ERRO=",cj_lido-cj_val ; WRITE (*,*) WRITE (*,*) "FIM DO PROCESSAMENTO" CONTAINS! Especificação do bloco onde são codificados sub-programas! SUB-ROTINA "CLASS" classifica um vetor de 5 elementos em ordem crescente SUBROUTINE CLASS (conj)! Especificação das variáveis locais da sub-rotina IMPLICIT NONE INTEGER*1 ind1,ind2 INTEGER*2 conj(5),temp! Classificação do vetor - localização do menor elemento DO ind1 = 1,4 DO ind2 = ind1+1,5! Define o conjunto de busca do menor valor IF (num(ind1) > num(ind2)) THEN! Define o elemento que conterá o menor valor! Troca menor valor (ind2) para a posição de menor (ind1)! Salva valor não menor Troca valores Recupera valor salvo temp=conj(ind1) ; conj(ind1)=conj(ind2) ; conj(ind2)=temp END SUBROUTINE CLASS END PROGRAM somar_5_dez_quina! Fim do controle da posição do menor valor! Fim do controle do conjunto de busca! Fim da unidade PROGRAM COMENTÁRIOS Com fundo amarelo estão os textos e comandos alterados ou acrescentados. Os textos em VERMELHO são padrões do FORTRAN: comandos, separadores, delimitadores, operadores, etc. Os textos em AZUL são os codificados pelo usuário para resolver o problema: variáveis, literais, índices, etc. Os textos em VERDE são os comentários. ESPECIFICAÇÃO DE ARQUIVOS (ESTUDOS COMPLEMENTARES) Veremos como especificar atributos para controlar a existência, acesso, ação, formatação, etc. de arquivos (N2-001) e durante a leitura como controlar operações de controle de registros, acesso, erros (N2-001), em arquivos sequenciais ou randômicos. Ainda veremos como tratar diferentes arquivos (nomes diferentes e mesmo formato), permitindo especificar o nome durante a execução do programa (N2-001). Também trataremos os arquivos internos, para controle de formatos e criação de variáveis texto (nomes, mensagens, etc). ATUALIZADO: ago/2013 5 olenzi @ orlandolenzi. eng. br