Você está na página 1de 42

Algoritmos

Enviado por:
Jedean Carlos Bendlin

Apostila de Lgica de Programao

PLANO DE ENSINO 1 SEMESTRE

EMENTA Introduo a Algoritmos, Portugus Estruturado, Variveis e Operadores Matemticos e Lgicos, Estrutura de um programa de computador, Procedimentos e Funes, Tipos de dados. OBJETIVO GERAL Instruir os conceitos bsicos de algoritmos de programao, familiarizando os acadmicos com os recursos computacionais na resoluo de problemas reais. Com a utilizao de pseudocdigos ou portugus estruturado, aplicar tanto prtica como teoricamente, as estruturas bsicas de programao de computadores. A aplicao da ementa servir como manual introdutrio para as demais disciplinas que trataro de anlise e desenvolvimento de sistemas computacionais. OBJETIVOS ESPECFICOS Incentivar os acadmicos a raciocinarem logicamente na resoluo dos problemas propostos, utilizando, de forma adequada, os recursos da linguagem de programao. Propor aos acadmicos a tomada de iniciativa prpria, a criatividade e a pesquisa, itens indispensveis para o desenvolvimento e capacitao profissional na rea de sistemas de informao. CONTEDO PROGRAMTICO
Contedo 1.INTRODUO Conceito Tipos de algoritmos Descrio geral dos algoritmos 2. LGICA DE PROGRAMAO Formas de representao grfica Princpios de resoluo de problemas Tipos de variveis Uso de Constantes Frmulas matemticas Instrues bsicas 3. TOMADAS DE DECISO Desvio condicional simples Desvio condicional composto Desvio condicional encadeados Prtica com Linguagem Pascal 4.LAOS DE REPETIO Looping com teste lgico no incio Looping com teste lgico no fim Looping com varivel de controle Prtica com Linguagem Pascal 5. MATRIZES Matrizes de uma dimenso ou vetores Buscas e ordenao Matrizes com mais de uma dimenso Prtica com Linguagem Pascal C.H. 8

10

18

20

16

METODOLOGIA DE ENSINO

O mtodo de ensino prope problemas com a finalidade de desafiar o estudante a utilizar conhecimentos j adquiridos em busca de uma adaptao a uma situao nova. A interveno do professor no sentido de pequenas ajudas, devoluo de questes, evidenciar falhas e preparar para novas estratgias. As situaes didticas devem favorecer o compartilhamento do conhecimento, a discusso e a ao por parte dos estudantes. Tambm sero utilizados exemplos prticos e concretos em problemas diversos. ATIVIDADES DISCENTES Os alunos devem desenvolver atividades relacionadas ao contedo que simulam situaes reais no desenvolvimento de sistemas orientados a objetos. Fazer a anlise de softwares utilizados em empresas com intuito de criar idias e as por em prtica. Desenvolver pesquisas bibliogrficas e on-line. Desenvolver solues para problemas apresentados em aula, utilizando conhecimentos adquiridos. PROCEDIMENTOS DE AVALIAO Avaliaes Bimestrais - As avaliaes sero de forma contnua pela participao dos alunos nas atividades de classe, com peso de 30% da nota integral. Trabalhos feitos no laboratrio e atividades extra classe, individualmente ou em grupo de estudos, com peso de 10% da nota integral. Uma prova bimestral para reconhecimento da fixao do contedo, com valor de 60% da nota integral. BIBLIOGRAFIA BSICA FORBELLONE, A. L. V. ; EBERSPACHER, H. F. Lgica de programao. 2.ed. So Paulo: Makron Books, 2000. 3ex. MANZANO, J.A.N.G. ; YAMATUMI, W. Y. Estudo dirigido de algoritmos. So Paulo:rica, 1997. 3ex. LOPES, Anita; GARCIA, Guto. Introduo a Programao 500 algoritmos resolvidos. Rio de Janeiro: Campus, 2002. 3ex WOOD, S. Turbo pascal: guia do usurio. So Paulo: Mcgraw-Hill do Brasil, 1987. 1ex. BIBLIOGRAFIA COMPLEMENTAR GOODRICH, M. ; TAMASSIA R. Estruturas de Dados e Algoritmos em Java. So Paulo: Bookman, 2002. 6ex. BEZERRA, Eduardo. Princpios de Anlise e Projeto de Sistemas Com UML. Rio de Janeiro: Campus, 2003. 6ex. WORTMAN, L. A. Programando em turbo pascal:com aplicaes. Rio de Janeiro: Campus, 1988. 1ex. LAURA, Lemay. Aprenda em 21 dias Java 2. So Paulo: Campus, 2003. 3 ex. SANTOS, Rafael. Introduo Programao Orientada a Objetos Usando Java. So Paulo: Campus, 2003. 3ex. NIEMEYER, Patrick. Aprendento Java. So Paulo: Campus, 2000. 3ex

PLANO DE ENSINO 2 SEMESTRE

EMENTA Lgica de programao avanada incluindo sub-rotinas, registros, eficincia e correo. Anlise de algoritmos de programao estruturados. Aplicao em uma linguagem de programao. OBJETIVO GERAL Desenvolver ao aluno habilidades tcnicas necessrias ao conhecimento de teorias para composio de programas. CONTEDO PROGRAMTICO
Contedo 1. Estruturas de dados Matrizes unidimensionais e multidimensionais Registros Matrizes de registros e registros de matrizes Armazenamento permanente de dados utilizando arquivos 2. Modularizao de programas Procedimentos e funes Passagem de parmetros Units Exerccios de programao 3. Anlise de Algoritmos Busca Mtodos de Ordenao 4. Utilizao de Arquivos e Noes de ndices C.H. 30

26

12

METODOLOGIA DE ENSINO O mtodo de ensino baseado na Teoria das Situaes de Guy Brousseau (1996. Recherches en Didactique des Mathmatiques, vol.9, n.3) em que problemas so propostos com a finalidade de desafiar o estudante a utilizar conhecimentos j adquiridos em busca de uma adaptao a uma situao nova. A interveno do professor no sentido de pequenas ajudas, devoluo de questes, evidenciar falhas e preparar para novas estratgias. As situaes didticas devem favorecer o compartilhamento do conhecimento, a discusso e a ao por parte dos estudantes. Tambm sero utilizados materiais concretos em problemas diversos, proporcionando uma mudana de contrato didtico. ATIVIDADES DISCENTES Os alunos devem desenvolver atividades relacionadas ao contedo que simulam situaes reais no desenvolvimento de sistemas orientados a objetos. Fazer a anlise de softwares utilizados em empresas com intuito de criar idias e as por em prtica. Desenvolver pesquisas bibliogrficas e on-line. Desenvolver solues para problemas apresentados em aula, utilizando conhecimentos adquiridos. PROCEDIMENTOS DE AVALIAO Avaliaes Bimestrais - As avaliaes sero de forma contnua pela participao dos alunos nas atividades de classe, com peso de 30% da nota integral. Trabalhos feitos

no laboratrio e atividades extra classe, individualmente ou em grupo de estudos, com peso de 10% da nota integral. Uma prova bimestral para reconhecimento da fixao do contedo, com valor de 60% da nota integral. BIBLIOGRAFIA BSICA DEITEL, H. M. Java Como Programar 4 ed, Porto Alegre: Bookman, 2003. 6ex. LOPES, Anita GARCIA Guto. Introduo a Programao- 500 algoritmos resolvidos. Rio de Janeiro: Campus, 2002. BIBLIOGRAFIA COMPLEMENTAR LAURA, Lemay. Aprenda em 21 dias Java 2. So Paulo: Campus, 2003. 3 ex. SANTOS, Rafael. Introduo Programao Orientada a Objetos Usando Java. So Paulo: Campus, 2003. 3ex. NIEMEYER, Patrick. Aprendento Java. So Paulo: Campus, 2000. 3ex

1 Introduo

Conceito de algoritmo um processo de clculo matemtico ou de resoluo de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restries. Podemos dizer tambm, que so regras formais para obteno de um resultado ou da soluo de um problema, englobando frmulas de expresses aritmticas. A tcnica mais importante no projeto da lgica de programas chamada programao estruturada, a qual consiste em uma metodologia de projeto, objetivando: Agilizar a codificao da escrita da programao; Permitir a verificao de possveis falhas apresentadas pelos programas; Facilitar as alteraes e atualizaes dos programas.

2 Lgica de Programao

Formas de representao grfica So vrios os smbolos utilizados na programao estruturadas, a seguir, uma relao das simbologias mais utilizadas:

Terminal: indica o incio ou o fim de um programa Conector: serve para a unio dos fluxos de informaes

Entrada: indica a entrada de informaes passadas pelo usurio, seja por scaner, teclado, mouse ou qualquer dispositivo de entrada

Processamento: utilizado para fazer clculos e atribuio de valores

Sada: indica a sada de informaes processadas para o usurio por qualquer dispositivo de sada como monitor, impressora, etc.

Condio: indica a diviso do fluxo por uma determinada condio. Seta de fluxo de informaes: indica o caminho que o processamento pode tomar.

Princpios de resoluo de problemas Para desenvolver um diagrama correto, devemos levar como procedimentos prioritrios, os itens a seguir: 1 Os diagramas de blocos devem ser feitos e quebrados em vrios nveis. Os primeiros devem conter apenas as idias gerais, deixando para as etapas posteriores os detalhamentos necessrios; 2 Para o desenvolvimento correto de um diagrama de bloco, sempre que possvel deve ser feito de cima para baixo e da esquerda para a direita; 3 incorreto ocorrer cruzamento das linhas de fluxo de dados de um diagrama de bloco. 4 Transcrever o diagrama de bloco em pseudolinguagem Tomemos como exemplo uma escola qualquer, onde o clculo da mdia 7

realizado por quatro notas bimestrais que determinam a aprovao ou reprovao dos seus alunos. Considere ainda, que o valor da mdia deve ser maior ou igual a 7 para que haja aprovao. A primeira etapa se inicia e termina com um terminador e existe apenas um processamento que indica a idia geral do problema:

inc io

Calcular a mdia e determinar a aprovao

fim

O segundo detalhamento est no que se refere a entrada e sada dos dados do problema:

incio

Ent rada com 4 notas

Calcular a mdia e determinar a apro vao

Apresentar se houver ou no apro vao

fim

A terceira etapa consiste em trabalhar o termo determinar a aprovao. Para ser possvel determinar algo necessrio estabalecer uma condio. Esta condio decide sobre o resultado da aprovao:

incio

Ent rada com 4 notas

Calcular a mdia

S Mdia>=7

"apr ovado"

" rep rovado"

fim

Esta terceira etapa deve ser aperfeioada para trabalhar com variveis.

incio

ler N1,N2,N3,N4 Calc ular M=N1+N2+N3+N4 4

S M>=7

"aprovado"

"rep rovado"

fim

A Quarta fase consiste em escrever o diagrama de bloco de forma narrativa denominada pseudocdigo.

Programa mdia Var Resultado : caractere N1,n2,n3,n4,soma,media : real Inicio Leia(n1,n2,n3,n4) Soma<-n1+n2+n3+n4 Media <-soma/4 Se (media >=7) ento Resultado <-APROVADO Seno Resultado<- REPROVADO Fim_se Escreva(Resultado) fim

Tipos de variveis Tipos Inteiros: So tipos inteiros, os dados numricos positivos ou negativos, excluindo-se, destes qualquer fracionrio. Como exemplo deste tipo de dado, tm-se os valores : 35,0,-56; Tipos Reais: So tipos reais, os dados numricos positivos, negativos e nmeros fracionrios. Ex. : 35,0,-56,1.2,-45.897 Tipos Caracteres: So caracteres, as sequncias contendo letras, nmeros e smbolos especiais. Uma sequncia de caractere deve ser indicada entre aspas(). Ex.: PROGRAMAO,Rua Alfa, ,98. Tipos Lgicos: So tipos lgicos ou boleanos, os dados com valores verdadeiro ou falso, e deve ser escrito entre pontos. Ex.: .Falso.,.Verdadeiro.. O nome de uma varivel utilizado para sua identificao e posterior uso dentro de um programa, sendo assim, necessrio estabelecer algumas regras de utilizao das mesmas: Nomes de variveis podero ser atribudos com um ou mais caracterres; O primeiro caractere do nome de uma varivel no poder ser em hiptese alguma, um nmero, sempre dever ser uma letra; O nome de uma varivel no poder possuir espaos em branco; No poder ser nome de uma varivel, uma instruo de programa; No podero ser utilizados outros caracteres a no ser letras e nmeros. Obs.: o caracter _ Under-line ou sub-linha considerado uma letra.

Uso de Constantes Tem-se como definio de constante tudo aquilo que fixo ou estvel. E existiro vrios momentos em que este conceito dever estar um uso. Por exemplo, o valor 1.23 da frmula a seguir uma constante: RESULTADO=ENTRADA*1.23. Operadores aritmticos Operador + Operao Manuteno de sinal (nmeros positivos Prioridade Matemtica 1

10

Seta cima / * + -

Inverso de sinal (nmeros negativos) para Exponenciao Diviso Multiplicao Adio Subtrao

1 2 3 3 4 4

Frmulas matemticas Na programao comum usar frmulas matemticas, mas para facilitar a escrita da programao as frmulas so escritas de uma forma diferenciada, como mostrados nos exemplos a seguir: (Exemplificar a frmula do raio e da rea)

Instrues bsicas Cada linguagem de programao usa um conjunto de palavras onde cada uma desenvolve uma ao. Estas palavras reservadas de cada linguagem so conhecidas como comandos ou instrues. Daqui para frente vamos utilizar instrues em portugus estruturado, tais como : inicio, fim, var , programa, enquanto, se, ento, seno, para, escreva, leia, faa, repita e at que, entre outras que sero estudadas. Exemplo de algoritmo Ler dois valores Efetuar a soma destes valores Apresentar o resultado

Exerccios 1 Indique o tipo de varivel que podero armazenar os valores abaixo. I : inteiro; R : real; S : String ou Literal ou Caractere; L : Lgico ou Booleano. ( )1000 ( )-456 ( )-1.56 ( ) 0 ( )34 ( ).falso. ( ) -900 ( )Casa 8 ( )1.87 ( ).Verdadeiro. ( )0 ( ).F.

2 Assinale com X os nomes vlidos de uma varivel ( )Endereco ( )NomeUsuario ( )21brasil ( )Nome_usuario ( )Fone$com ( )Nome*usuario 11

( )End-A ( )23

( )Cidade3 ( )N23

( )#Cabec

3 Desenvolva a lgica de um programa que efetue o clculo da rea de uma circunferncia, apresentando a medida da rea calculada. Frmula : Area=Pi*Raio**2 4 Elaborar um algoritmo que calcule o salrio de um professor onde o usurio dever entrar com o nmero de aulas dadas, o valor da hora aula e o percentual de desconto do INSS. 5 Ler dois valores A e B, efetuar a troca dos valores de forma que a varivel A passe a possuir o valor da varivel B e que a varivel B passe a possuir o valor da varivel A. Apresentar os valores trocados 6 Ler dois valores A e B, efetuar as operaes de adio, subtrao, multiplicao e diviso de A por B, apresentando no final os quatro resultados obtidos. 7 Efetuar o clculo do valor de uma prestao em atraso, utilizando a frmula: PRESTAO:=VALOR+(VALOR*(TAXA/100)*TEMPO). 8 Indique o tipo de varivel que podero armazenar os valores abaixo. I : inteiro; R : real; S : String ou Literal ou Caractere; L : Lgico ou Booleano. ( )-900 ( )4.54 ( )0 ( )34 ( ) -900 ( ).falso. ( ).Verdadeiro. ( )Real

9 Assinale com X os nomes vlidos de uma varivel ( ) Dia 21 ( )x*y ( )7quedas ( )C/C ( )Senha_conta2 ( )Nome Cliente

10 Desenvolva um fluxograma com os 3 nveis de detalhamento e o portugues estruturado de um programa que permita ao usurio digitar um nmero e que apresente como resultado este nmero elevado ao quadrado.

12

3 Tomadas de Decises

Voc j aprendeu como trabalhar com entrada, processamento e sada. Apesar de j conseguir solucionar problemas e transform-los em programas, os recusrsos aqui estudados so limitados, pois haver momentos em que um determinado valor dentro de um programa necessitar ser tratado para se efetuar um processamento mais adequado. Desvio condicional simples Para aprender-mos devio condicional devemos conhecer os operadores utilizados para se estabelecer uma condio. So eles: Operadores Relacionais Simbolo = <> > < >= <= Operador Lgico .e. Condio1 F V F V Operador Lgico .ou. Condio1 F V F V Operador Lgico .no. Condio V F Resultado F V Condio 2 F F V V Resultado F V V V Condio 2 F F V V Resultado F F F V Significado Igual a Diferente de Maior que Menor que Maior ou igual a Menor ou igual a

Imagine a seguinte situao: um programa que apresente a mdia escolar de um aluno. Baseado em sua mdia, se o aluno tiver nota maior ou igual a 7 devera apresentar uma mensagem parabenizando o aluno.

13

Para solucionar o problema proposto ser necessrio trabalhar uma nova instruo: SE...ENTO...FIM_SE. Esta instruo tem por finalidade tomar uma deciso. Sendo a condio verdadeira, sero executadas todas as instrues que estejam entre a instruo se...ento e a instruo fim_se. Sintaxe : SE <condio> ENTO <instrues para condio verdadeira> FIM_SE <instrues executadas se a condio for falsa ou aps condio ser verdadeira> Exemplo : elaborar um programa que pessa dois valores para as variveis A e B. Efetuar a soma dos dois valores. Apresentar o resultado se a soma for maior que 10.

Desvio condicional composto O desvio condicional composto utiliza a estrutura SE...ENTO...SENAO...FIM_SE, como mostra a sintaxe : SE <condio> ENTO <instrues para condio verdadeira> SENAO <instrues para condio falsa> FIM_SE Exemplo : Ler dois valores A e B. Efetuar a soma dos dois valores e implicar em X. Verificar se X maior ou igual a 10, caso sim, mostre X+5, seno, mostre X-7.

Exerccios : 1 Determine o resultado lgico das expresses abaixo baseado nos seguintes valores: X=1, A=3,B=5,C=8 e D=7. .no.(x>3) (X<1).e..no.(b>d) .no.(d<0).e.(c>5) .no(x>3).ou.(c<7) (a>b).ou.(c<=5) (x>=2) (x<1).e.(b>=d) (d<0).ou.(c>5) .no.(d>3).ou..no.(b<7) (a>b).ou..no.(c>b) 2 Efetuar a leitura de dois valores e apresent-los em ordem crescente.

14

Desvio condicional encadeados Sintaxe : SE <condio> ENTO SE <condio> ENTO <instrues para condio verdadeira> SENAO <instrues para condio falsa> FIM_SE SENAO SE <condio> ENTO <instrues para condio verdadeira> SENAO <instrues para condio falsa> FIM_SE FIM_SE Exemplo : Ler 4 notas escolares de um aluno. Se o a mdia do aluno for maior ou igual a 7 apresentar a mdia e uma mensagem dizendo que foi aprovado, senao, efetuar a leitura da nota do exame, somar mdia e dividir por dois, se a mdia for maior ou igual a 5 apresentar a mdia e uma mensagem dizendo que est aprovado, senao apresentar uma mensagem que est reprovado. Exerccios: 1 Elaborar um programa que efetue o clculo do reajuste de salrio de um funcionrio. Considere que o funcionrio dever receber um reajuste de 15% caso seu salario seja menor que 500. Se o salario for maior ou igual a 500 mas n\menor ou igual a 1000, seu reajuste ser de 10%, e caso seja ainda maior que 1000, o reajuste dever ser de 5%. ler um valor para o salario verificar se o valor de salario < 500; se sim, reajustar em 15% verificar se o valor de salario <=1000; se sim, reajustar em 10% verificar se o valor de salario > 1000; se sim, reajustar em 5% apresentar o valor reajustado. 2 Efetuar a leitura de trs valores (a,b,c) apresent-los em ordem crescente. 3 Efetuar a leitura de trs valores (a,b,c) e efetuar o clculo da equao de segundo grau, apresentando as duas razes, se para os valores informados for possvel efetuar o referido clculo. 4 Ler dois valores numricos e apresentar a diferena do maior para o menor. 5 Efetuar a leitura de um nmero inteiro positivo ou negativo e apresent-lo como sendo positivo. 6 Efetuar a leitura de 4 numeros inteiros e apresentar os que so divisiveis por 2 ou 3.

15

4 Laos de Repetio

Looping com teste lgico no incio Este tipo de estrutura efetua um teste lgico no incio do looping, verificando se permitido executar o trecho de intrues subordinado a este looping. Esta estrutura conhecida como: enquanto, atravs do conjunto de instrues ENQUANTO...FAA...FIM_ENQUANTO. Esta estrutura, tem o seu funcionamento controlado por deciso, podendo executar um determinado conjunto de instrues enquanto a condio verificada for verdadeira. No momento em que esta condio se torna falsa o processamento da rotina desviado para fora do looping. SINTAXE ENQUANTO <condio> FAA <conjunto de instrues para condio verdadeira> FIM_ENQUANTO Exemplo: Considere o problema: Pedir a leitura de um valor para a varivel x, multiplicar este valor por 3, implicando-o varivel de resposta R e apresentar o valor R obtido, repetindo esta seqncia por 5 vezes. Passos: criar uma varivel para servir como contador com valor inicial 1; enquanto o valor do contador for < ou = a 5, processar os passos 3,4 e 5; Ler um valor para a varivel X; Efetuar a multiplicao do valor de x por 3, implicar o resultado em r; apresentar o valor calculado contido na varivel R; Acrescentar +1 varivel contador; Quando contador for maior que 5, encerrar o processamento do looping. Sujesto: fazer o mesmo exerccio enquanto o usurio desejar. Exerccio de aprendizagem Elaborar o algoritmo de um programa que efetue o calculo da fatorial do nmero 5. Fatorial o produto9 dos nmeros naturais desde 1 at o interiro n. Sendo assim o clculo de um fatorial conseguido pela multiplicao sucessiva do nmero de termos. Exemplo: CONTADOR 1 2 3 4 5 FATORIAL 1 1 2 6 24 RESULTADO 1 2 6 24 120

Logo vemos que o fatorial de 5 120. 16

PROGRAMA FATORIAL VAR contador, resultado: INTEIRO; INICIO Resultado<-1 Contador<-1 ENQUANTO contador<=5 FAA Resultado<-resultado+contador Contador<-contador+1 FIM_ENQUANTO ESCREVA(O fatorial de 5 ,resultado) FIM Exerccios de Fixao: 1 - Apresentar todos os valores numricos interios mpares situados na faixa de 0 a 20. 2 - Apresentar o total da soma obtida dos cem primeiros nmeros inteiros. 3 - Apresentar os resutlados de uma tabuada de um nmero apresentado pelo usurio. Todo o programa deve se repetir enquanto o usurio desejar. 4 - Apresentar os quadrados dos nmeros intereiros de 15 a 200 Looping com teste lgico no fim

Caracteriza-se por uma estrutura que efetua um teste lgico no fim de um looping, denominada repita, sendo conseguida com a utilizao do conjunto de instrues repita...at_que. A estrutura repita...at_que tem o seu funcionamento controlado tambm por deciso, porm ir efetuar a execuo de um conjunto de instrues pelo menos uma vez antes de verificar a validade da condio estabelecida. Diferente da estrutura enquanto que execugta somente um conjunto de instrues, enquanto a condio verdadeira. Exemplo: "Pedir a leitura de um valor para a varivel X, multiplicar este valor por 3, colocando o resultado em uma varivel R e apresentar o valor. Tudo isso dever ser repetido por 5 vezes". Criar uma varivel contador; Ler um valor para a varivel X; Efetuar a multiplicao do valor de X por 3, implicando o resultador em R; Apresentar o valor calculado contido na varivel R; Acrescentar 1 ao contador; Repetir os passos 2,3,4 e 5 at que o contador seja maior que 5.

Exerccios:

17

a) Apresentar todos os valores numricos inteiros pares situados na faixa de 100 a 200. b) Apresentar o total da soma obtido dos cinco primeiros nmeros inteiros. c) Apresentar a tabuada de um nmero qualquer. Todo o programa deve se repetir enquanto o usurio desejar. d) Apresentar todos os nmeros divisveis por 4 que sejam menores que 20. e) Apresentar os quadrados dos nmeros inteiros de 2 a 50. f) Elaborar um programa que apresente no final, o somatrio dos valores pares existentes na faixa de 10 at 20.

Looping com varivel de controle Os loopings que possuem um nmero finito de execues podero ser processados atravs de estrutura para, sendo conseguida com a utilizao das intrues para...de...at...passo...faa...fim_para. Esta estrutura tem o seu funcionamento controlado por uma varivel denominada contador. Sendo assim, poder executar um determinado conjunto de instrues um determinado nmero de vezes. Sintaxe: PARA <varivel> DE <incio> AT <fim> PASSO <incremento> FAA <instrues> FIM_PARA Para exemplificar considere o problema anterior : "Pedir a leitura de um valor para a varivel X, multiplicar este valor por 3, colocando o resultado em uma varivel R e apresentar o valor. Tudo isso dever ser repetido por 5 veses". Definir um contador variando de 1 a 5; Ler um valor para a varivel X; Efetuar a multiplicao do valor de X por 3, implicando o resultador em R; Apresentar o valor calculado contido na varivel R; Repetir os passos 2,3,4 e 5 at que o contador seja maior que 5. Exerccios: a) Apresentar todos os valores numricos inteiros mpares situados na faixa de 1000 a 1500. b) Apresentar o total da soma obtido de N nmeros inteiros onde N um nmero digitado pelo usurio. c) Apresentar a tabuada de um nmero qualquer. d) Apresentar os nmeros divisveis por 3 que sejam menores que 12. e) Elaborar um programa que apresente no final, o somatrio dos valores pares existentes na faixa de 10 at 20.

18

5 - Matrizes

As matrizes consistem em uma tcnica de programao que permite trabalhar com o agrupamento de vrias informaes dentro de uma mesma varivel. Este agrupamento ocorrer obedecendo sempre ao mesmo tipo de dado, e por esta razo chamado de estruturas de dados homogneas ou matriz.

Matrizes de uma dimenso ou vetores Este tipo de estrutura tambm denominado por alguns como matrizes unidimensionais. Sua utilizao mais comum est vinculada creao de tabelas. Caracteriza-se por ser definida uma nica varivel dimensionada com um determinado tamanho. A dimenso de uma matriz constituda por constantes interias e positivas. Os nomes dados s matrizes seguem as mesmas regras de nomes utilizados para indicar as variveis simples. Para se Ter uma idia de como utilizar matrizes em uma determinada situao, considere o seguinte problema: Calcular e apresentar a mdia geral de uma turma de 8 alunos. A mdia a ser obtida deve ser a mdia geral das mdias de cada aluno obitida durante o ano letivo. Desta forma ser necessrio somar todas as mdias e divid-las por 8. A tabela a seguir, apresenta o nmero de alunos, suas notas bimestrais e respectivas mdias anuais.

ALUNO 1 2 3 4 5 6 7 8

MDIA 4.5 6.5 8.0 6.5 6.0 7.0 6.5 6.0

Agora basta escrever um programa para efetuar o clculo das 8 mdias de cada aluno. Para representar a mdia do primeiro aluno ser utilizada a varivel MD1, para o segundo MD2 e assim por diante. Ento tem-se: MD1=4.5;MD2=6.5;MD3=8.0;MD4=6.5;MD5=6.0;MD6=7.0;MD7=6.5;MD8=6.0. Com o conhecimento adquirido at este momento, seria ento elaborado um programa que efetuaria a leitura de cada nota, a soma das mesmas e a diviso do valor da soma por 8, obtendo-se desta forma a mdia, conforme exemplo abaixo:

19

Programa mdia_turma Var MD1,MD2,MD3,MD4,MD5,MD6,MD7,MD8 : real Soma, media : real Inicio Soma<-0 Leia MD1,MD2,MD3,MD4,MD5,MD6,MD7,MD8 Soma<- MD1+MD2+MD3+MD4+MD5+MD6+MD7+MD8 Media<-soma/8 Escreva media Fim

Perceba que para receber a mdia foram utilizada 8 vairveis. Com a tcnica de matrizes poderia Ter sido utilizada apenas uma varivel com a capacidade de armazenar 8 valores. Vamos utilizar como representao de nome a forma mais comum usada pelas linguagens de programao, que o nome da varivel e em seguida, entre colchetes, a dimenso da mesma. Desta forma, teramos uma matriz MD[1..8], onde seu nome MD, possuindo um tamanho de 1 a 8. MD[1]=4.5; MD[2]=6.5; MD[3]=8.0; MD[4]=3.5; MD[5]=6.0; MD[6]=7.0; MD[7]=6.5; MD[8]=6.0 Observe que o nome um s, o que muda a informao indicada dentro dos colchetes. A esta informao d-se o nome de ndice, sendo este o endereo onde o elemento est armazenado. Para definir as variveis no portugus estruturado utilizaremos a seguinte sintaxe: VARIAVEL : Matriz[<dimenso>] de <tipo de dado> Desta forma utilizaria-mos no exemplo : Var MD : Matriz[1..8] de real;

Obs.: outros autores podero utilizar outros tipos de declarao, isto tambm acontece com as linguagens de programao. A leitura e escrita da matriz feita passo a passo, um elemento por vez com as

20

instrues leia e escreva, como as variveis simples, embora deva-se observar o ndice. Exemplo: Escreva MD[2] Leia MD[1] {este comando escrevera o valor 6.5}

{este comando efetua a leirua de um valor para a nota do 1 aluno}

Abaixo apresentado o algoritmo da leitura da notas dos 8 alunos, clculo da mdia e a apresentao da mesma e apresentao das notas lidas. Programa mdia_turma Var MD : matriz[1..8] de real Soma, media : real; I : inteiro; Inicio Soma<-0 Para i de 1 at 8 passo 1 faa Leia MD[i] Soma<-soma+MD[i] Fim_para Media<-soma/8 Escreva media Para i de 1 at 8 passo 1 faa Escreva MD[i] Fim_para Fim Exerccios 1 - Desenvolva um programa que efetue a leitura de 10 valores para uma matriz A e que esses valores sejam passados para a matriz B acresentando 10 porcento a cada elemento. 2 - Desenvolva um programa que efetue a leitura de 10 valores para uma matriz A e que esses valores sejam passados para a matriz B verificando se o ndice for par dever ser multiplicado por 5 e se for impar, somado a 5. 3 - Desenvolva um programa que efetue a leitura de 10 elementos para uma matriz A e apresente no final a somatria dos elementos mpares. 4 - Ler duas matrizes A e B com 20 elementos. Construir uma matriz C, sendo esta formada pelos elementos de A subtratdos dos elementos de B. 5 - Ler duas matrizes A e B de 4 elementos cada. Construir uma matriz C, sendo esta a juno das duas outras matrizes. Desta forma, C dever Ter o dobro de elementos, ou seja, 8. 6 - Ler 20 elementos de uma matriz A e construir uma matriz B de mesa dimenso com os mesmos elementos de A, sendo que estes devero estar invertidos, ou seja, o primeiro elemento de A passa a ser o ltimo de B, o segundo elemento de A passa a ser o penltimo de b e assim por diante.

21

Matrizes com mais de uma dimenso Em matrizes unidimensionais a manipulao dos elementos " feita atras de um nico looping (enquanto, para ou repita). No caso de matrizes com mais dimenses, devera ser utilizado o nmero de loopings relativo ao tamanho de sua dimenso Desta forma, uma matriz de duas dimenses dever ser controlada com dois loopings, sendo que de trs dimenses dever ser controlada por trs loopings e assim por diante. Nestas matrizes, os seus elementos sero tambm manipulados de forma individualizada, sendo a referncia feita sempre atravs de dois ndices : o primeiro para indicar a linha e o segundo para indicar a coluna. Desta forma para referenciar um elemento que est na Segunda linha e na terceira coluna de uma matriz, tem-se tabela[2,3]. Para declarar uma matriz de 8 linhas e 5 colunas, por exemplo, ficaria : VAR <nomevariavel> : MATRIZ[dimenso1,dimenso2] DE <tipodedado>; Caso 1 - Como modelo, vamos utilizar dos exemplos, o primeiro, que efetue a leitura de 4 notas para 4 bimestres e apresente no final as mdias de cada bimestre : Existe uma tabela aqui PROGRAMA EXEMPLO1 {declarao das variveis} VAR Notas : MATRIZ[1..4,1..4] DE REAL; Nota, Bim : integer; Soma : REAL; INICIO {leitura dos elementos da matriz} PARA bim DE 1 ATE 4 FACA PARA nota DE 1 ATE 4 FACA LEIA(notas[bim,nota]) FIM_PARA FIM_PARA {clculo e apresentao das mdias} PARA bim DE 1 ATE 4 FACA Soma <-0 PARA nota DE 1 ATE 4 FACA Soma <- soma +notas[bim,nota] FIM_PARA ESCREVA(A nota do bimestre ,bim, ,soma/4) FIM_PARA FIM

Caso2 - Imaginemos a seguinte matriz tridimensional:

22

jk a

Gf Ee

sa x

R f

1 A

5 g

7 d

8 F

k h

l f

j h

N H

Considerando esta matriz com 2 linhas e 3 colunas e cada elemento (clula) da tabela dividida em 4 partes, temos uma matriz com 3 dimenses que pode ser declarada da seguinte maneira: VAR Tabela : array[1..2,1..3,1..4] de caractere; A maneira mais correta de efetuar a leitura e escrita de matrizes utilizando um lao de repetio para cada dimenso da matriz. ` Para efetuar a leitura do elemento que est na linha 2 coluna 3 elemento 4 utilizamos: Escreva(Digite o elemento da linha 2 coluna 3 elemento 4:); Leia(tabela[2,3,4]; Ou para ler todos os elementos:

Programa Leitura; Var Tabela: array[1..2,1..3,1..4] de caractere; l,c,e: integer; inicio para l de 1 ate 2 passo 1 faa {percorre as linhas de 1 a 2} para c de 1 ate 3 passo 1 faa {percorre as colunas de 1 a 3} para e de 1 at 4 passo 1 faa {percorre os elementos de 1 a 4} escreva(Digite o elemento da linha ,l, coluna ,c, elemento ,e, : ); leia(tabela[l,c,e]; fim_para fim_para fim_para fim

23

Exerccios 1 Desenvolver um programa de agenda que cadastre o nome, endereo, cep de 4 pessoas e em seguida liste-os. 2 Crie um programa que faa a leitura de 10 nomes de alunos onde cada aluno dever ter 4 notas. Para isso crie uma matriz unidimensional para armazenar os nomes e uma bidimensional para as notas. Aps efetuar a leitura o programa deve apresentar os alunos e as mdias.

24

6 - Buscas e ordenao de matrizes

Busca sequencial Caso1: Efetuar a leitura de 5 nomes para uma matriz A. Solicitar um valor para pesquisa do usurio, pesquisar na matriz os nomes que coicidem com o valor e apresentar os nomes e as posies dos elementos encontrados. Caso no tenha encontrado, apresente uma mensagem que o valor de busca no foi encontrado. Caso2: Efetuar a leitura de 5 alunos para uma matriz alunos e suas 5 mdias para uma matriz chamada medias. Apresente os alunos que tm nota manor que 7 dizendo que esto para exame. Se no foi encontrado nenhum aluno, apresente uma mensagem que nenhum aluno ficou para exame. Algoritmos de busca (matria aplicada a estrutura de dados) Ordenao Imagine um programa com 5 elementos inteiros em uma matriz A dispostos como mostrado a tabela abaixo : MATRIZ A INDICE ELEMENTO 1 9 2 8 3 7 4 5 5 3 Ou seja : A[1]=9 A[2]=8 A[3]=7 A[4]=5 A[5]=3 Para efetuar o processo de troca necessrio aplicar o mtodo de propriedade distributiva, sendo assim, o elemento que estiver em A[1] dever ser comparado com os elementos que estiverem em A[2], A[3], A[4] e A[5]. Depois, o elemento que estiver em A[2] no necessita ser comparado com o elemento que estiver em A[1], pois j foram anteriormente comparados, passando a ser comparado somente com os elementos que estiverem em A[3], A[4] e a[5]. Na sequncia, o elemento que estiver em A[3] comparado com os elementos que estiverem em A[4] e A[5] e por fim o elemento de a[4] comparado com A[5]. A cada comparao se o primeiro elemento comparado for maior que o segundo os valores devero ser trocados utilizando-se uma varivel de troca.

Exemplo : 25

Programa ordenacao; Var A : matriz[1..5] de inteiros; I, J, troca : inteiro; Inicio Para i de 1 at 5 passo 1 faa Leia A[i] Fim_para Para i de 1 at 5 passo 1 faa Para j de i+1 at 5 passo 1 faa Se A[j]<A[i] ento Troca <- A[i] A[i] <- A[j] A[j] <- troca Fim_se Fim_para Fim_para Para i de 1 at 5 passo 1 faa Escreva A[i] Fim_para Fim

26

7 - Registros

At agora aprendemos a trabalhar com uma estrutura de dados de tipos homogneos (matrizes). Os registros so estruturas de dados que se diferenciam das matrizes, devido o fato de possurem campos onde definimos tipos de dados diferentes para cada campo. Sintaxe: Type <identificador> = record <lista dos campos e seus tipos> end; Var <variveis> : <identificador>; No captulo anterior, um exerccio de aprendizagem solicitava que fosse informado o nome de 10 alunos e suas 4 notas bimestrais, o que obrigou a utilizao de duas matrizes, uma para conter os nomes, por seus valores serem do tipo caractere e a outra para conter as notas, por seus valores serem do tipo real. Com registros podemos armazenar os mesmos dados em apenas uma estrutura que seria: TYPE CAD_ALUNO = RECORD NOME : STRING; NOTA1 : REAL; NOTA2 : REAL; NOTA3 : REAL; NOTA4 : REAL; END; VAR ALUNO : CAD_ALUNO; O acesso a estes dados, tanto para leitura quanto para a escrita seria : READLN(ALUNO.NOME) READLN(ALUNO.NOTA1) WRITELN(ALUNO.NOME) WRITELN(ALUNO.NOTA1)

Estrutura de um registro de conjunto Consiste em estabelecer uma estrutura de registro onde um campo do registro do tipo matriz. Exemplo:

TYPE

27

CAD_ALUNO = RECORD CODIGO : INTEGER; NOME : STRING; NOTAS : ARRAY[1..4] OF REAL; END; VAR ALUNO : CAD_ALUNO; Leitura : READLN(ALUNO.NOTAS[1]); Escrita : WRITELN(ALUNO.NOTAS[2]); Estrutura de um conjunto de registros Consiste em estabelecer uma matriz de tipo registro. Exemplo: TYPE CAD_ALUNO = RECORD CODIGO : INTEGER; NOME : STRING; NOTA1 : REAL; NOTA2 : REAL; NOTA3 : REAL; NOTA4 : REAL; END; VAR ALUNO : ARRAY[1..10] OF CAD_ALUNO; Leitura : READLN(ALUNO[1].NOTA1); Escrita : WRITELN(ALUNO[2].NOME); Exerccios: 1 Elaborar um programa que faa a leitura de 10 produtos contendo descrio, quantidade, quantidade mnima e valor. Aps a leitura dos dados apresentar uma ficha de compra onde devero ser listados todos os produtos que esto abaixo da quantidade mnima. No final da lista apresentar o total a ser gasto para repor estes produtos. {conjunto de registro} 2 - Efetuar a leitura de 4 notas bimestrais para 8 alunos. Apresentar o boletim escolar dos alunos. 3 Elaborar um programa que contenha em um menu do seguinte formato : PROGRAMA AGENDA DE TELEFONES 1 CADASTRAR 2 PESQUISAR 3 ALTERAR 4 CLASSIFICAR 5 LISTAR 6 - SAIR ESCOLHA UMA OPO : [ ] Construa rotinas que desempenham cada uma das funes do menu acima. Os dados da agenda devero ser : nome, telefone e celular

28

8 Utilizao de Subrotinas Os procedimentos e funes so utilizados na diviso de um programa complexo, permitindo assim possuir a modularizao de um determinado problema, considerado grande e de difcil soluo. A modularizao do cdigo nos d vrias vantagem na linguagem pascal : Para tarefas que devem ser efetuadas mais do que uma vez num programa, a modularidade evita a necessidade de programao redundante (repetida) de essencialmente o mesmo conjunto de instrues. Dessa forma, cada mdulo pode ser definido apenas uma vez e depois acedido de vrios pontos do programa. Um conjunto diferente de dados pode ser processado de cada vez que o mdulo acessado. Facilidade na interpretao do cdigo. O uso de mdulos de programa pode, portanto, reduzir apreciavelmente o tamanho de um programa. Uma sub-rotina , na verdade, um programa, e sendo um programa poder efetuar diversas operaes computacionais (entrada, processamento e sada). As sub-rotinas so dutilizadas na diviso de algoritmos complexos, permitindo assim possuir a modularizao de um determinado problema, sonsiderado grande e de difcil soluo. Sub Rotinas do tipo procedimento Sintaxe : PROCEDIMENTO <nome do procedimento> VAR <variveis> INICIO <instrues> FIM

Exemplo : efetuar um programa que utilize um procedimento para determinar o maior nmero entre 3 inteiros. Exerccios : 1 Elaborar um programa que possua uma sub-rotina que apresente o total do somatrio dos N primeiros nmeros inteiros. (1+2+3+4+...+N) 2 Elabore um programa que solicite do usurio 3 nmeros. Se a soma dos 3 nmeros for menor que 10, solicite os 3 nmeros novamente e saia do programa. Como o programa pode solicitar 2 vezes os 3 nmeros, crie um procedimento para solicitar estes 3 nmeros.

29

Utilizao de Parmetros Parmetros tm por finalidade servir como um ponto de comunicao bidirecional entre as sub-rotinas e o programa principal. Exemplo: PROCEDIMENTO TROCA(A,B : INTEIRO); VAR X : INTEIRO; INICIO X<-A; A<-B; B<-X; FIM; Exerccios : 1 Desenvolva um programa que solicite do usurio o seu salrio e o percentual de acrescimo. Aps a leitura chame uma sub-rotina para calcular e apresentar o salrio atualizado. 2 Desenolva um programa que solicite do usurio a base e a altura de um tringulo retngulo e chame um procedimento para calcular e apresentar a rea do triangulo. 3 Elaborar um programa que possua uma sub-rotina que apresente o total do somatrio dos N primeiros nmeros inteiros. (1+2+3+4+...+N) 4 Elaborar um programa que utilize um procedimento para calcular a potncia de um nmero, ou seja, chamando-se o procedimento POTENCIA(2,3) o procedimento deve calcular e apresentar o resultado 8. 5 Construa uma procedure que receba como parmetro uma frase e um nmero inteiro, esta procedure deve escrever a frase na tela repetidamente o nmero de vezes que foi passado como parmetro. Sub-rotinas do tipo funo Uma funo um bloco de programa como os procedimentos, sua principal diferena est no fato de a funo retornar um determinado valor. O valor de uma funo retornado em seu nome. Sintaxe : FUNCAO <nome da funo>(<parametro1>,<parametro2> : <tipo>) : <tipo de retorno>; VAR <variveis> INICIO <instrues> <nome da funo> := <valor de retorno>; FIM Exemplo : Desenolva um programa com uma funo que retorne o maior nmero

30

entre dois valores. Exerccio : 1- Desenvolva um programa que solicite do usurio 2 valores e um operador (+,,/,*), chame um procedimento que receba como parmetro os valores solicitados ao usurio e devolva a soma dos valores caso o operador seja +, a subtrao dos valores caso o operador seja e assim por diante. 2 Desenvolva um programam com uma subrotina que receba um nmero N e retorne ao programa principal o somatrio dos N primeiros nmeros inteiros. Apresente o valor retornado pela funo. 3 Crie um programa que solicite do usurio a base e a altura de um tringulo retangulo, chame uma funo que calcule e retorne a rea da figura. Apresente o valor retornado pela funo. 4 Baseado no exemplo dado: PROGRAM SOMA; USES CRT; VAR A,B,R : INTEGER; BEGIN CLRSCR; WRITE('Entre com o valor de A : '); READLN(A); WRITE('Entre com o valor de B : '); READLN(B); R:=A+B; WRITELN('O resultado da soma de A e B : ',R); END. A) construa um programa com uma procedure que calcule e apresente o resultado da soma dos dois valores A e B passados como parmetro; B) construa um programa com uma funo que calcule a soma dos dois valores A e B passados como parmetro e retorne o resultado da soma para que este seja apresentado. 5 Construa uma procedure que replique uma seqncia de um caracter o nmero de vezes passados como parmtro. Ex.: replica(-,20) esta chamada a procedure deve escrever vinte sinais de menos. 6 Construa uma funo que faa o acrscimo em porcentagem do valor passado como parmetro. Ex.: ValorAtual:=percentual(ValorAntigo,perc_acrescimo); percentual(200,10)=220;

31

9 Arquivos

Um arquivo de suma importncia nos programas computacionais, desde o tempo em que o primeiro computador surgiu, pois, para que um programa faa algum tipo de operao, o mesmo precisa ser alimentado com informaes: estas, ou so fornecidas pelo teclado, o que atualmente torna-se invivel, ou so fornecidos atravs de um arquivo. Conceitos ITEM ou CAMPO: unidade de informao; o valor de um item pode ser um nmero inteiro, uma cadeia de caracteres, um nmero decimal ou, ainda, uma data. REGISTRO: conjunto de itens ou uma linha de uma tabela ARQUIVO: conjunto de registros. Exemplo de um arquivo de alunos: R.A. N(6) 1 2 3 . . 200 NOME C(30) Ana Paula Cristina Renata ENDEREO C(50) Rua... Av... Rua... MENS. Dec(8,2) 250,00 260,00 255,00

Pedro

Av...

270,00

Campos do arquivo: R.A., nome, endereo e mensal. Tamanho do registro: 96 bytes Total de registros: 200 Tamanho total do arquivo: 19200 Lembrando que: 1K 1024 bytes

1M 1024 K

1 G 1024 M

1 T 1024 G

CHAVE PRIMRIA (PK): uma chave que representa um valor diferente para cada registro do arquivo, de tal forma que, dado um valor da chave primria, identificado um nico registro do arquivo. Exemplo de chave primria para o arquivo de alunos: R.A Uma chave primria pode ser composta por mais de um campo. CHAVE SECUNDRIA: difere de uma primria pela possibilidade de no possuir uma valor diferente para cada registro. Assim, um valor de uma chave secundria identifica um conjunto de registros. utilizada principalmente para buscas e ordenao. CHAVE DE ESTRANGEIRA (FK): a chave usada para identificar o(s) registro(s) desejado(s) em uma operao de acesso a um outro arquivo. 32

EXERCCIOS Com base no arquivo de funcionrios abaixo, resolva as questes: Filial 1 1 2 2 . . a) b) c) d) e) Matrcula 1024 1050 1029 1080 Nome Vagner Maria Marcelo Valria Cargo Porteiro Zeladora Digitador Analista Sistemas Data Adm 25/05/91 16/03/92 05/04/95 06/09/96 Salrio 350,00 200,00 600,00 1500,00

Quais so os campos do arquivo? Qual o 3 registro do arquivo? Defina o tamanho de cada campo. Calcule o tamanho dos registros (desconsidere a , do valor e a / da data). Calcule o espao em disco que este arquivo ir ocupar, considerando que o mesmo tem um total de 400 registros. f) Defina a chave primria do arquivo. g) Defina uma chave secundria para o arquivo, considerando que dever ser emitido um relatrio ordenado por FILIAL, CARGO e MATRCULA.

O PASCAL, possui dois tipos de arquivos, os quais so: 1. Arquivos FILE 2. Arquivos TEXT

33

Arquivos FILE Um arquivo do tipo FILE, tambm conhecido por arquivo randmico, ou de acesso aleatrio, o arquivo mais importante do Pascal, sendo desta forma tambm o mais utilizado. Um arquivo randmico caracterizado pelo fato de ser possvel buscar uma determinada informao em qualquer posio que a mesma se encontre, sem haver a necessidade de se percorrer todo o arquivo at se alcanar a informao desejada. Sintaxe : <Nome da varivel> : FILE OF<tipo> Observao: Um arquivo FILE deve ser apenas um tipo de dado, ou seja : INTEGER, REAL, RECORD, STRING, BYTE, etc. Exemplo: Crie um programa que defina uma varivel como sendo um arquivo FILE de STRINGs, crie tambm neste mesmo programa um tipo Arquivo de INTEGERs. PROGRAM Exemplo; TYPE Meu_tipo = FILE OF INTEGER; VAR Minha_Varivel = FILE OF STRING; BEGIN END. Estrutura Interna do Arquivo: Quando um arquivo FILE criado, o mesmo possui a seguinte estrutura: Posio Fsica 0 1 2 n Informao

A posio fsica corresponde a um nmero que gerado automaticamente no instante que uma informao qualquer includa no arquivo. Este nmero, corresponde ao Endereo da informao no arquivo, sendo que atravs deste Endereo que possvel recuperar qualquer informao, sem precisar percorrer todo o arquivo em busca da mesma, ao invs disto basta fornecer o nmero da posio fsica da informao no arquivo. Observao: Passaremos daqui por diante a chamar as informaes armazenadas em um arquivo de Registros.

34

Sub-Rotinas para Tratamento de Arquivos FILES

Existem uma grande quantidade de sub-Rotinas construdas especialmente para manipular arquivos FILE. As principais so:

Rotina : ASSIGN() Funo : Serve para associar um determinado Nome de arquivo, no disco ou disquete com o arquivo definido pelo programador. Sintaxe : ASSIGN(Meu_Arquivo, STRING_Com_Nome_Arquivo_DOS). Exemplo: PROGRAM TESTE TYPE Registro = RECORD Nome : STRING; Idade : BYTE; END; VAR Arquivo : FILE OF Registro; BEGIN ASSIGN (Arquivo, dados.dat); END.

Rotina : REWRITE() Funo : Cria e abre para E\S um arquivo. Caso o arquivo no exista, o mesmo ser criado. Caso o arquivo j exista, todos os dados existentes nele sero apagados. Sintaxe : REWRITE(Meu_Arquivo); Exemplo: PROGRAM Teste; TYPE Registro = RECORD Nome : STRING; Idade : BYTE; END; VAR Arquivo : FILE OF Registro; BEGIN ASSIGN (Arquivo, Dados.Dat); REWRITE (Arquivo); END.

35

Rotina : RESET() Funo : Abre para E/S um arquivo que j exista. Caso o arquivo no exista ocorrer um erro de execuo e o programa ser abortado. Sintaxe : RESET(Meu_Arquivo) Exemplo: PROGRAM Teste; TYPE Registro = RECORD Nome : STRING; Idade : BYTE; END; VAR Arquivo : FILE OF Registro; BEGIN ASSIGN (Arquivo, Dados.Dat); RESET (Arquivo); END.

Rotina Funo Sintaxe Exemplo:

: CLOSE() : Fecha um arquivo que tenha sido aberto com RESET\REWRITE. : CLOSE(Meu_Arquivo) PROGRAM Teste; TYPE Registro = RECORD Nome : STRING; Idade : BYTE; END; VAR Arquivo : FILE OF Registro; BEGIN ASSIGN (Arquivo, Dados.Dat); REWRITE (Arquivo); CLOSE (Arquivo); END.

36

Rotina : WRITE() Funo : A Rotina WRITE tem a mesma Funo de sada de informaes como at agora j tnhamos trabalhado, somente que ao invs da informao ser apresentada no vdeo, a mesma ser armazenada em um arquivo. Sintaxe : WRITE (Meu_Arquivo, Registro) Exemplo: PROGRAM Teste; TYPE Registro = RECORD Nome : STRING; Idade : BYTE; END; VAR Arquivo : FILE OF Registro; Reg : Registro; BEGIN ASSIGN (Arquivo, Dados.Dat); REWRITE (Arquivo); WRITE (Digite o Nome: ); READ (Reg.Nome); WRITE (Digite a Idade: ); READ (Reg.Idade); WRITE (Arquivo, Reg); CLOSE (Arquivo); END. Rotina : READ() Funo : A Rotina READ tem a mesma Funo de entrada de informaes como at agora j tnhamos trabalhado, somente que ao invs da leitura ser feita pelo teclado, a mesma ser feita de um arquivo. Sintaxe : READ (Meu_Arquivo, Registro) Exemplo: PROGRAM Teste; TYPE Registro = RECORD Nome : STRING; Idade : BYTE; END; VAR Arquivo : FILE OF Registro; Reg : Registro; BEGIN ASSIGN (Arquivo, Dados.Dat); RESET (Arquivo); READ (Arquivo,Reg); WRITE (Nome = , Reg.Nome); WRITE (Idade = , Reg.Idade); CLOSE (Arquivo); END.

37

Observao: Aps cada operao READ/WRITE no arquivo, o endereo do registro corrente no arquivo incrementado em uma unidade. Assim por Exemplo, se o endereo do registro corrente igual a 10, aps uma operao de READ/WRITE, o registro corrente passar a ser o nmero 11. Rotina Funo arquivo. Sintaxe Exemplo: : FILEPOS() : Retorna um nmero inteiro indicando qual o registro corrente em um : Registro_Corrente : = FILEPOS (Meu_Arquivo) PROGRAM Teste; TYPE Registro = RECORD Nome : STRING; Idade : BYTE; END; VAR Arquivo : FILE OF Registro; Corrente: INTEGER; BEGIN ASSIGN (Arquivo, Dados.Dat); RESET (Arquivo); corrente : = FILEPOS(Arquivo); WRITE (corrente); CLOSE (Arquivo); END.

Rotina Funo Sintaxe Exemplo:

: FILESIZE() : Retorna quantos registro existem armazenados no arquivo. : Tamanho_Arquivo : = FILESIZE (Meu_Arquivo) PROGRAM Teste; TYPE Registro = RECORD Nome : STRING; Idade : BYTE; END; VAR Arquivo : FILE OF Registro; Total : INTEGER; BEGIN ASSIGN (Arquivo, Dados.Dat); RESET (Arquivo); Total : = FILESIZE (Arquivo); WRITE (Total); CLOSE (Arquivo); END.

38

Rotina : SEEK () Funo : Posiciona o ponteiro do arquivo em um registro determinado, para que o mesmo possa ser processado. Sintaxe : SEEK(Meu_Arquivo, Endereo_Registro) Exemplo: PROGRAM Teste; TYPE Registro = RECORD Nome : STRING; Idade : BYTE; END; VAR Arquivo : FILE OF Registro; Reg : Registro; BEGIN ASSIGN (Arquivo, Dados.Dat); RESET (Arquivo); SEEK (Arquivo, 10); READ (Arquivo, Reg); WRITE (Nome = , Reg.Nome); WRITE (Idade = , Reg.Idade); CLOSE (Arquivo); END. Rotina Funo Sintaxe Exemplo: : EOF() : Retorna TRUE caso se alcance o final do arquivo, FALSE caso contrrio. : Chegou_Final : = EOF (Meu_Arquivo)

PROGRAM Teste; TYPE Registro = RECORD Nome : STRING; Idade : BYTE; END; VAR Arquivo : FILE OF Registro; Reg : Registro; BEGIN ASSIGN (Arquivo, Dados.Dat); RESET (Arquivo); WHILE NOT EOF(Arquivo) DO BEGIN READ (Arquivo, Reg); WRITE (Nome = , Reg.Nome); WRITE (Idade = , Reg.Idade); END; CLOSE (Arquivo); END.

39

Rotina : ERASE () Funo : Elimina o arquivo do disco. importante notar que o arquivo a ser eliminado no pode estar aberto. Sintaxe : ERASE (Meu_Arquivo) Exemplo: PROGRAM Teste; TYPE Registro = RECORD Nome : STRING; Idade : BYTE; END; VAR Arquivo : FILE OF Registro; BEGIN ASSIGN (Arquivo, Dados.Dat); ERASE(Arquivo); END. Exerccios: a) Faa um programa de incluso de dados em um arquivo chamado pessoas.dat. Os registros deste arquivo devero ser formados de cdigo, nome e telefone de uma pessoa. b) Faa outro programa que abra o arquivo criado no exerccio anterior e liste todos os dados no vdeo. c) Elabore um programa para incluir produtos em um arquivo qualquer. A incluso dever ser efetuada enquanto o usurio desejar. O produto composto de cdigo, descrio, quantidade e valor. Quando o usurio no desejar incluir mais produtos, chame uma procedure para listar os dados inclusos e o total em Reais do estoque. d) Incluir um mdulo de consulta no arquivo de produtos do exerccio anterior. e) Faa um programa com as seguintes rotinas: 1 Incluso de funcionarios: Devero ser includos clientes no arquivo func.dat enquanto o usurio desejar. Os dados dos funcionrios so : cdigo, nome, salrio, nfilhos. 2 - Processamento Folha de pagamento: Para cada funcionrio dever ser criada uma folha de pagamento contendo: cdigo, codfun, salrio. O salrio da folha dever ser igual ao salrio de seu cadastro mais 1% para cada filho que tiver. 3 Listagem de folha de pagamento: Dever ser uma listagem com o seguinte lay-out : Cod. Folha Cod. Func. Nome Func. NFilhos Salrio ... ... Total da Folha: f) Crie um arquivo de peas, com o seguinte Lay-Out: Nome de Pea, cor , quantidade, tamanho e deletado. O campo Deletado ser um campo Boolean, setado inicialmente para FALSE , informando se o registro est ou no deletado do arquivo. g) Faa a uma Rotina para deletar um, ou mais, registros do arquivo de peas. A deleo consiste em setar o campo deletado do arquivo para TRUE.

40

h) Percorrer o arquivo de peas imprimindo somente as peas que no foram deletadas i) Faa uma Rotina que elimine fisicamente os registros do arquivo de peas que foram marcadas para deleo, isto , onde o campo deletado est setado para TRUE.

41

Você também pode gostar