IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 1 IFSC – Chapecó – Algoritmos II (Linguagem Pascal) Sumário 1 Algoritmos................................................................................................................. 3 2 A Linguagem Pascal.................................................................................................. 4 2.1 Construção do programa em Pascal.................................................................... 4 2.1.1 Cabeçalho do Programa............................................................................... 5 2.1.2 Área de Declarações.................................................................................... 5 2.1.3 Corpo do Programa...................................................................................... 5 2.2 Variáveis............................................................................................................. 6 2.2.1 Tipos de Variáveis....................................................................................... 6 2.2.2 Atribuição de Valores.................................................................................. 7 2.3 Entrada e Saída de dados.................................................................................... 7 2.3.1 Entrada de dados.......................................................................................... 8 2.3.2 Saída de dados............................................................................................. 8 2.4 Operadores.......................................................................................................... 8 2.5 Posicionamento na tela....................................................................................... 9 2.6 Cores do texto e fundo (textbackground e textcolor)..........................................9 2.7 Estruturas de Repetição e Condição................................................................. 10 2.7.1 Comando for n=:1 to 10............................................................................. 10 2.7.2 Comando If ... then ... else......................................................................... 10 2.7.3 Comando While......................................................................................... 10 2.7.4 Comando Break......................................................................................... 11 2.8 Comando Case of:............................................................................................. 12 3 Variáveis Compostas Homogêneas - Vetores ......................................................... 14 3.1 Uso do comando for com vetores..................................................................... 14 3.2 O que se pode e o que não se pode fazer com vetores, na linguagem Pascal:.. 15 3.2.1 Não é possível:.......................................................................................... 15 3.2.2 O que é permitido:..................................................................................... 15 4 Variáveis Compostas Homogêneas – Matrizes........................................................16 5 Procedimentos (procedures).....................................................................................17 6 Variáveis Compostas Heterogêneas – Registros......................................................19 7 Menu Hierárquico.................................................................................................... 20 8 Variáveis Compostas Heterogêneas – Registros em arquivos (c:\cadastro.txt)....... 22 2 IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 3 ALGORITMOS II 1 Algoritmos Um algoritmo pode ser definido como um conjunto de regras (instruções), bem definidas, para solução de um determinado problema. Segundo o dicionário Michaelis, o conceito de algoritmo é a "utilização de regras para definir ou executar uma tarefa específica ou para resolver um problema específico." A partir desses conceitos de algoritmos, pode-se perceber que a palavra algoritmo não é um termo computacional, ou seja, não se refere apenas à área de informática. É uma definição ampla que agora que você já sabe o que significa, talvez a utilize no seu cotidiano normalmente. Na informática, o algoritmo é o "projeto do programa", ou seja, antes de se fazer um programa (software) na Linguagem de Programação desejada (Pascal, C, Delphi, etc.) deve-se fazer o algoritmo do programa. Já um programa, é um algoritmo escrito numa forma compreensível pelo computador (através de uma Linguagem de Programação), onde todas as ações a serem executadas devem ser especificadas nos mínimos detalhes e de acordo com as regras de sintaxe1 da linguagem escolhida. Uma das formas mais eficazes de aprender algoritmos é através de muitos exercícios. Tabela 1: Dicas de como aprender e como não aprender algoritmos Algoritmos não se aprende Algoritmos se aprende Copiando algoritmos Construindo algoritmos Estudando algoritmos prontos Testando algoritmos Os algoritmos podem ser representados de várias formas, como por exemplo: a) Através de uma língua (português, inglês, etc.): forma utilizada nos manuais de instruções, nas receitas culinárias, bulas de medicamentos, etc. b) Através de uma linguagem de programação (Pascal, C, Delphi, etc.): esta forma é utilizada por alguns programadores experientes, que "pulam" a etapa do projeto do programa (algoritmo) e passam direto para a programação em si. c) Através de representações gráficas: são bastante recomendáveis, já que um "desenho" (diagrama, fluxograma, etc.) muitas vezes substitui, com vantagem, várias palavras. Diagrama NassiFluxograma Português Shneiderman Estruturado IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 4 2 A Linguagem Pascal Pascal é uma linguagem de programação estruturada, que recebeu este nome em homenagem ao matemático Blaise Pascal. Foi criada em 1970 pelo suíço Niklaus Wirth, tendo em mente encorajar o uso de código estruturado. O próprio Niklaus Wirth diz que Pascal foi criada simultaneamente para ensinar programação estruturada e para ser utilizada em sua fábrica de software. Simultaneamente, a linguagem reflete a liberação pessoal de Wirth das restrições impostas após seu envolvimento com a especificação de ALGOL 68, e sua sugestão para essa especificação, o ALGOL W. Pascal originou uma enorme gama de dialetos, podendo também ser considerada uma família de linguagens de programação. Grande parte de seu sucesso se deve a criação, na década de 1980, da linguagem Turbo Pascal, inicialmente disponível para computadores baseados na na arquitetura 8086 (com versões para 8080 no seu início). Pascal é normalmente uma das linguagens de escolha para ensinar programação, junto com Scheme, C e Fortran. Comercialmente, a linguagem foi sucedida pela criação da linguagem Object Pascal, atualmente utilizada nos IDEs Embarcadero Delphi (Object Pascal), Kylix e Lazarus. 2.1 Construção do programa em Pascal O programa se constitui num texto, que pode ser editado em qualquer editor de texto ou diretamente no compilador, sendo necessário ser salvo com a terminação .pas de pascal, em seguida compilado (traduzido para linguagem de máquina), para depois ser executado. Nos compiladores de hoje já é possível executar direto pulando todas estas etapas. Um programa em Pascal é composto, basicamente, de três partes. São elas: Cabeçalho do Programa; Área de Declarações; Corpo do Programa. Vejamos, na figura a seguir como essas partes são distribuídas em um programa: IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 5 2.1.1 Cabeçalho do Programa Esta área é utilizada para se fazer a identificação do programa com um nome. O cabeçalho de um programa é constituído pela instrução PROGRAM seguida de um nome. Ao final do nome deve-se colocar o símbolo ponto-e-vírgula ( ; ). 2.1.2 Área de Declarações Esta área é utilizada para validar o uso de qualquer tipo de identificador que não seja predefinido, estando divida em sete sub-áreas: uses, label, const, type, var, procedure e function. No II Curso Pré-engenharia, vamos estudar apenas a sub-área var. Esta é utilizada na declaração das variáveis que serão utilizadas durante a execução de um programa, assim como o seu tipo. 2.1.3 Corpo do Programa Nessa área escreveremos nossos algoritmos utilizando as funções da linguagem Pascal e as declarações feitas na área anterior. Aqui está o programa propriamente dito, isto é, a seqüência de instruções que daremos à máquina para que ela crie um programa que execute as ações que desejamos. Iniciamos o corpo do programa com a instrução BEGIN e finalizamos com a instrução END seguida de um ponto ( . ). O uso dessas instruções caracteriza o que chamamos de bloco. O programa em Pascal se constitui basicamente de: {comentários entre chaves não são lidos pelo compilador} program Nome_do_programa; {identificação do programa} var {declaramos as variáveis} a,b,c:real; {variáveis:tipo} begin {início do corpo do programa} read(a); {comandos dentro do corpo} IFSC – Chapecó – Algoritmos II (Linguagem Pascal) c:=a; vírgula} end. {comandos terminam com ponto 6 e {fim do corpo do programa com ponto} 2.2 Variáveis Em programação, variáveis são regiões da memória do computador previamente identificadas, que têm por finalidade armazenar informações (dados) de um programa temporariamente. Podem ser vistas como um papel, inicialmente em branco, onde se podem escrever valores (sejam numéricos, de texto ou lógicos) no decorrer da execução do programa. Uma variável pode armazenar apenas um valor por vez. Sendo considerado como valor o conteúdo de uma variável, este valor está associado ao tipo de dado da variável. Para declarar variáveis na linguagem Pascal, devemos Nesse exemplo estamos obedecer à seguinte sintaxe: declarando as variáveis de nome Soma, Total e Salário como sendo do tipo REAL; Idade e Contador como sendo do tipo INTEGER; e Nome como sendo do tipo STRING. 2.2.1 Tipos de Variáveis Veremos aqui os principais tipos de variáveis que são utilizados na linguagem Pascal. Descrição Tamanho Tipo Boolean Char Byte Variáveis desse tipo podem armazenar apenas dois valores distintos: True ou False (Verdadeiro ou Falso). Variáveis desse tipo podem armazenar apenas um caractere. Armazena valores inteiros positivos entre 0 e 8 bits (1 byte) 8 bits (1 byte) 8bits (1 byte) 255, inclusive. Integer Armazena valores inteiros positivos ou 16 bits (2 bytes) negativos entre -32768 e 32767. Longint Armazena valores inteiros positivos ou 32 bits (4 bytes) negativos entre -2147483648 e 2147483647. Shortint Armazena valores inteiros positivos ou negativos entre -128 e 8 bits (1 byte) IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 7 127. Word Armazena valores inteiros positivos entre 0 e 16 bits (2 bytes) 65535. Double Armazena valores reais. Possui precisão de 8 bytes 15 dígitos. Real Armazena valores reais. Possui precisão de 6 bytes 11 dígitos. String Armazena cadeias caracteres (palavras ou frases). de variável Depende do valor da 2.2.2 Atribuição de Valores Para atribuir valores a uma variável, utilizamos a seguinte construção: Nome-da-Variável := Valor; Vejamos este exemplo: Esse programa declara algumas variáveis e atribui valores a elas. Observe que quando trabalhamos com caracteres ou string, o valor atribuído deve estar entre aspas simples (‘ ’). Caso contrário o resultado não sairá como o esperado. Observe também que esse programa não exibe nenhuma mensagem na tela do computador. Ele apenas atribui valores às variáveis e finaliza sem qualquer mensagem. No capítulo seguinte aprenderemos como fazer isso. 2.3 Entrada e Saída de dados Aqui começaremos a apresentar os primeiros comandos da linguagem Pascal. É muito importante prestar atenção na sintaxe dos comandos, pois pequenos erros farão com que o compilador exiba uma mensagem de erro e o programa não será criado. Entrada e saída de dados são fundamentais em todos os programas criados, pois estabelecem uma comunicação entre a máquina e o usuário. 2.3.1 Entrada de dados Em Pascal, a entrada de dados é feita utilizando o comando readln(). A sintaxe desse comando é a seguinte: readln(Variável1, Variável2, ...); IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 8 Nesse caso, o programa vai parar sua execução até que o usuário digite algum valor. Ao digitar o valor e pressionar a tecla ENTER, o valor digitado será armazenado na Variável1 e o programa esperará novamente por um valor, mas o armazenará na Variável2. Isso se repete até que todas as variáveis listadas estejam preenchidas com algum valor. Vejamos um programa que utiliza entrada de dados pelo usuário: 2.3.2 Saída de dados Em Pascal, a saída de dados é feita utilizando o comando writeln(). Esse comando imprime alguma mensagem na tela do computador. Vejamos sua sintaxe: Writeln(‘Mensagem 1’, variável 1, ...); Vejamos ao lado um programa que apenas exibe uma mensagem na tela: 2.4 Operadores Os operadores, como o nome sugere, nos permitem realizar operações entre variáveis numéricas. Essas operações podem ser algébricas, lógicas ou de comparação. Dessa forma, existem operadores diferentes para cada tipo. Veremos a seguir. Operadores Aritméticos Resumiremos os operadores aritméticos na seguinte tabela: IFSC – Chapecó – Algoritmos II (Linguagem Pascal) Operador Função + * / div Soma Subtração Multiplicação Divisão simples Divisão inteira mod Resto da divisão inteira 9 Um exemplo da utilização desses operadores pode ser observado no programa abaixo. Nosso primeiro exemplo de programa em Pascal: program nome; var nome:string; begin clrscr; write('Escreva um nome '); read(nome); writeln('O nome que voce escreveu foi: ',nome); readkey; end. Segundo desafio: Criar um programa que leia dois valores e calcule as operações básicas com os mesmos: Adição, subtração, multiplicação, divisão e média. 2.5 Posicionamento na tela O comando gotoxy define a posição do cursor do teclado na tela. Sintaxe gotoxy (coluna: integer ; linha: integer ) ; Exemplo.Programa que move o cursor do teclado para a linha 10, coluna 15, e imprime "Olá, mundo!" na tela. Program PascalZIM; Begin gotoxy(15,10); textcolor( lightcyan ); textbackground( red ); write('Olá, mundo!'); End. 2.6 Cores do texto e fundo (textbackground e textcolor) O comandos definem a cor de fundo usada na impressão de textos. Sintaxe textbackground ( listaDeCores ) ; textcolor ( listaDeCores ) ; IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 10 onde listaDeCores pode ser uma constante inteira ou qualquer uma dentre as cores seguintes: BLUE GREEN CYAN RED MAGENTA BROWN LIGHTGRAY DARKGRAY LIGHTBLUE LIGHTCYAN LIGHRED LIGHMAGENTA LIGHTGREEN YELLOW WHITE BLACK 2.7 Estruturas de Repetição e Condição Por vezes, precisamos que o programa realize determinada ação repetidamente, seja por um número determinado de vezes, ou enquanto uma condição está sendo satisfeita, ou mesmo até que uma condição seja verificada. Para isto utilizam-se as Estruturas de Repetição, para evitar que, por exemplo, tenhamos que escrever 30 vezes o comando readln() quando quisermos ler do teclado as notas dos 30 alunos de uma turma de informática. 2.7.1 Comando for n=:1 to 10 Repete a execução de um bloco de comandos por um número de vezes que depende dos objetivos do programa. Sua sintaxe é a seguinte: Desafio: criar um programa que mostre na tela os números de 1 a 100, sendo que dez números em cada linha. 2.7.2 Comando If ... then ... else Na maioria dos casos, quando verificamos uma condição, queremos que uma ação seja tomada no caso da condição ser satisfeita, mas também queremos que outra ação seja tomada no caso da condição não ser verificada. Para isso existe a estrutura supracitada, cuja sintaxe é a que segue (atenção à ausência de ponto-e-vírgula antes do comando else): Desafio: criar um programa que mostre na tela os números de 1 a 100, sendo que dez números em cada linha, porém, os números pares tem que ser amarelos e os ímpares brancos. Desafio: criar um algoritmo para ler o nome do aluno, notas das tres provas, e calcular se o mesmo foi aprovado ou reprovado conforme a média(mínimo 6). 2.7.3 Comando While IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 11 Difere do comando for quanto à sintaxe. A maioria dos programas em que se usa o while podem ser feitos usando-se o for, e vice-versa. Porém, em alguns casos a escolha de um deles simplifica significativamente a lógica a ser utilizada. Vejamos a sintaxe do comando while: Dasefio: criar um algoritmo para ler um número infinito de palavras e mostrar na tela após a leitura. Para encerrar a leitura, deverá ser digitada a palavra “SAIR”. 2.7.4 Comando Break Algumas vezes é interessante parar o programa antes que um laço seja realizado por completo. Nestes casos, utiliza-se o comando break, cuja sintaxe será mostrada no exemplo a seguir: IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 12 Desafio: montar um algoritmo que crie X números aleatórios . O usuário tem que digitar o número até acertar. Quando isto ocorrer, o algoritmo tem que emitir uma mensagem e avisar sobre o acerto do número. O usuário terá um número Y de tentativas. Desafio da loteria. Os números da loteria são de 01 até 60. Montar um algoritmos que sorteie 6 dezenas. Não pode haver duplicidade de números. Escreva um programa que leia a razão de uma PA, o seu primeiro termo e a quantidade de termos e com isso calcule a soma dessa PA. 2.8 Comando Case of: Possibilita a escolha de um conjunto de comandos que serão executados, dentre várias alternativas de escolha. Sintaxe case < selector > of < lista de constantes > : < comandos > ; < lista de constantes > : < comandos > ; ... < lista de constantes > : < comandos > ; else < comandos > ; end ; Onde: - < seletor > é uma expressão do tipo integer ou char ; - < lista de constantes > é uma sequência de constantes do tipo integer ou char, separadas por vírgula (ao invés de uma constante é possível usar um intervalo de constantes, que consiste em duas constantes separadas por um par de pontos) A cláusula else não é obrigatória, e os comandos associados a essa cláusula serão executados somente se nenhuma outra opção do case foi selecionada ; Exemplo Program PascalZIM ; Var opcao : integer ; Begin write ( 'Entre com uma opcao: ' ); readln ( opcao ); case opcao of 1 : writeln( 'Você escolheu a opção 1...' ); 2 : writeln( 'Você escolheu a opção 2...' ); 3 : writeln( 'Você escolheu a opção 3...' ); else writeln( 'Você escolheu uma opção diferente de 1, 2, 3...' ); end ; End. IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 13 IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 14 3 Variáveis Compostas Homogêneas - Vetores Um vetor (array em inglês) é um agregado de variáveis do mesmo tipo (homogêneas). O exemplo abaixo mostra a representação gráfica de um vetor de 6 inteiros chamado v: Cada “casa” , ou “elemento”, do vetor é uma variável independente. No exemplo acima, cada elemento pode conter um valor inteiro, e as posições foram ordenadas de 1 até 6. Os elementos de um vetor são identificados pelo nome do vetor associado ao número de ordem da sua posição relativa no vetor: v[1], v[2], v[3], v[4], v[5] e v[6]. Assim, no caso acima, a variável v[2] tem o valor 67. Podemos alterar esse valor exatamente como fazemos com qualquer variável: v[2] := 100; readln(v[2]); Para declarar esse vetor em um programa Pascal, é usada a forma abaixo: var v: array[1..6] of integer; A forma geral é: var <identificador do vetor>: array [<intervalo das posições>] of <tipo dos valores do vetor> Cada variável do conjunto é representada por: <identificador do vetor>[<expressão cujo valor é a posição da variável> ] onde a expressão deve ser do tipo declarado. Por exemplo, a variável na posição 3 do vetor pode ser representada por: v[3] v[10-7] v[5*5-2*11] v[x-4], supondo que x tenha o valor 7, etc. 3.1 Uso do comando for com vetores A manipulação de vetores é grandemente facilitada pelo uso dos comandos de repetição, especialmente o for. Por exemplo, para zerar (colocar o valor 0) todas as posições do vetor v definido acima, seria necessário escrever 6 comandos: v[1]:= 0; v[2]:= 0; v[3]:= 0; v[4]:= 0; v[5]:= 0; v[6]:= 0; A mesma operação pode ser feita com apenas um comando de repetição for, usando uma variável de controle para representar as posições do vetor: for i:= 1 to 6 do v[i]:=0; É fácil imaginar o que isso representa de simplificação para a manipulação de vetores grandes. IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 15 Da mesma forma, para ler do teclado todos os valores do vetor v, seriam também necessários 6 comandos: read (v[1]); read (v[2]); read (v[3]); read (v[4]); read (v[5]); read (v[6]); Todos esses comandos podem ser substituídos por um único comando for: for i:= 1 to 6 do read(v[i]); 3.2 O que se pode e o que não se pode fazer com vetores, na linguagem Pascal: 3.2.1 Não é possível: a) Não se pode ler todo um vetor diretamente com um comando read. Não se pode escrever: read(v); É necessário ler casa a casa, diretamente, ou com um laço de repetição como for no exemplo acima. b) Não se pode escrever todos os elementos de um vetor com um único comando write. Não é permitido escrever: write(v). Também nesse caso cada elemento deve ser tratado como uma variável independente, por exemplo: for i:= 1 to 6 do write(v[i]); c) Não é possível copiar os valores dos elementos de um vetor para outro com um único comando de atribuição. Ou seja, dados dois vetores v e w, ambos do mesmo tamanho e do mesmo tipo, não é permitido fazer: w:= v; . Também aqui é necessário trabalhar elemento a elemento, e o comando for mais uma vez é indicado: for i:= 1 to 6 do w[i]:= v[i]; c) Não existe comandos ou funções que dão o tamanho (número de elementos) de um vetor. d) Não é permitido tentar acessar uma posição fora do intervalo de posições definido para o vetor. A tentativa causará um erro em tempo de execução e o programa abortará. No caso do vetor v acima, por exemplo, não é permitido escrever: v[8]:= 20, read(v[8]) ou write (v[8]) porque a faixa de valores das posições vai de 1 a 6 apenas. 3.2.2 O que é permitido: a) A faixa de valores das posições não precisa começar em 1. Qualquer intervalo de valores pode ser usado na definição de um vetor. Por exemplo, podemos definir um vetor assim: var v:array[15..20] of real; Nesse caso o vetor v terá apenas os elementos: v[15], v[16], v[17], v[18], v[19] e v[20] b) As posições não precisam ser necessariamente números inteiros. Podem ser qualquer tipo ordinal, ou seja, que possa ser definido por uma seqüência ordenada de valores. Por exemplo, os caracteres em Pascal formam uma seqüência ordenada na tabela de caracteres, e podem portanto serem marcadores de posição em um vetor. Podemos definir um vetor assim: var letras: array['a'..'z'] of integer; Nesse caso os elementos do vetor são: letras['a'], letras['b'], ….., letras['z'] IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 16 4 Variáveis Compostas Homogêneas – Matrizes Matriz é um vetor em que existem duas dimensões, linha e coluna. Serve para armazenar várias informações em cada linha, porém todas do mesmo tipo (número ou texto). Não se pode inserir um número e um texto na mesma matriz. A declaração abaixo define um vetor de duas dimensões, do tipo inteiro: var matriz : array [ 1 .. 10, 1.. 20 ] of integer ; matriz com 10 linhas e 20 colunas cada linha. matriz : array [ 1 .. 5, 1.. 5 ] of integer ; matriz com 5 linhas e 5 colunas cada linha. Desafio: Fazer um programa que dada duas matrizes A e B, determinar a soma de A e B. A soma de duas matrizes é bastante simples, apenas precisamos somar os elementos correspondentes de cada matriz e o resultado colocar em uma outra matriz. Veja o seguinte exemplo de soma de dois matrizes A e B de tamanho 3x3: Desafio: Crie um programa em pascal que realize as seguintes operações na matriz C: a) soma dos elementos de cada linha; b) soma dos elementos de cada coluna c) soma dos elementos da diagonal principal; IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 17 5 Procedimentos (procedures) Uma procedure é uma parte do programa que pode ser executada diversas vezes com base em algum critério. Exemplo: de acordo com um valor de entrada, se o mesmo for par, executa determinado cálculo, caso contrário, outro cálculo. A chamada ou ativação de uma procedure é feita referenciando-se o seu nome no local do programa onde a mesma deve ser ativada, ou seja, onde a sua execução deve ser iniciada. Observe o exemplo: O programa ao lado lê 2 valores e mostra a soma e subtração dos mesmo através de procedures. IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 18 Ao terminar a execução dos comandos de uma procedure, a seqüência do programa retorna sempre à instrução seguinte que provocou a sua chamada. A pocedure deve ser implementada antes da rotina principal do programa. Desafio: elaborar um programa que faça desenhos com forma de quadrado ou retângulo através de duas procedures. IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 19 Um posto está vendendo combustíveis com a seguinte tabela de descontos: Álcool: • até 20 litros, desconto de 3% por litro • acima de 20 litros, desconto de 4% por litro Gasolina: • até 30 litros, desconto de 4% por litro • acima de 30 litros, desconto de 5% por litro. Diesel: • somente acima de 50 litros, desconto de 6% por litro. Escreva um algoritmo que leia o número de litros vendidos, o tipo de combustível (codificado da seguinte forma: A-álcool, G-gasolina, D-diesel), calcule e mostre o valor a ser pago pelo cliente sabendo-se que o preço do litro da gasolina é R$ 2,50 o preço do litro do álcool é R$ 1,90 e o diesel é R$ 1,85. Mostrar o valor do desconto oferecido. 6 Variáveis Compostas Heterogêneas – Registros Pode-se inserir informações de tipos diferentes em vetores, como exemplo, código, nome, cidade, idade, etc, através de registros. Os registros são conjuntos de dados logicamente relacionados, mas de tipos diferentes (inteiro, real, literal, ...). Veja o exemplo abaixo: Temos campos de tipos diferenciados dentro de um único vetor com 100 posições, ou seja, pode-se cadastrar 100 pessoas com as informações de cada campo. Para inserir a informação no vetor, basta indicar qual a posição(ponteiro) e o campo no mesmo. Para exibir as informações, basta usar o comando write, posição(ponteiro) do vetor e qual o campo. IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 20 7 Menu Hierárquico A maioria dos sistemas possui diversos módulos, clientes, cidades, vendas, produtos e demais. Para facilitar o gerenciamento, existe um recurso muito utilizado, o Menu Hierárquico, que consiste em dividir o sistemas em diversas Procedures dentro de uma Procedure Principal e assim sucessivamente. Menu Principal Clientes Cadastra Clientes Vendas Consulta Clientes Inclui Vendas Relatórios Consulta Vendas Vendas Geral Comissão/Vendas/Ve ndedor Vendas/Produto Na linguagem Pascal, cada sub módulo (3 nível do organograma), deve ser declarado como uma procedure. Em seguida os Sub Menus que chamam as procedures e por final o Menu Principal. Ou seja, na linguagem será como o organograma invertido, Procedure + Sub Menus + Menu Principal. IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 21 IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 8 Variáveis Compostas Heterogêneas arquivos (c:\cadastro.txt) – Registros 22 em As operações básicas realizadas sobre um arquivo são abertura, leitura, escrita e fechamento. A abertura de arquivos corresponde à ação de se associar o arquivo declarado no programa com o arquivo físico(c:\cadastro.txt). • O primeiro passo é associar as informações digitadas na tela a um arquivo (txt) a ser gravado no computador: assign(arquivo, 'C:\ARQTXT.TXT'); • Para ler o conteúdo de um arquivo, usa-se o comando: reset(arquivo); Este comando lê as informações do arquivo físico e as coloca na memória do sistema. • Para exibir o conteúdo do arquivo, usa-se o comando: readln(arquivo, mensagem); sendo que mensagem é um campo texto do arquivo. • Para incluir o conteúdo da memória para o arquivo, usa-se o comando: writeln(arquivo, mensagem); Resumindo: Cria a variável arquivo:text; Cria a variável mensagem:string[50]; O comando append inclui o conteúdo da variável mensagem ao arquivo físico. Após manipular o arquivo, deve-se fechar o mesmo com o comando close(arquivo); O comando reset pega as informações do arquivo físico e traz para a memória. while not eof(arquivo) percorre todos os registros do arquivo. Após manipular o arquivo, deve-se fechar o mesmo com o comando close(arquivo); IFSC – Chapecó – Algoritmos II (Linguagem Pascal) 23 Algoritmos II – Lista de exercícios Faça um algoritmo que leia um vetor com 15 posições. Os números são de 1 a 5. Mostrar quantas ocorrências crescentes e decrescentes aconteceram no vetor. Ex 1-3-4-2-3-3-5-4-5 1 2 4 3 2 3 4 1 1 5 4 1 3 5 5 Crescentes=7 Decrescentes=5 Iguais=2 Matriz Criar duas matrizes A e B com tamanho 4x4. Inserir valores de 1 a 4. Mostrar quantos valores estão na mesma posição em ambas as matrizes. Preço médio O preço médio é um recurso muito utilizado nos sistemas de gerenciamento de estoque para saber se uma compra está sendo executada dentro do valor aceitável. Ele é calculado através da seguinte fórmula: Produto Qtdade Custo Total Custo Médio Limite aceitável Geladeira 10 % limite 15 R$ 1.000,00 R$ 10.000,00 R$ 1.000,00 R$ 1.100,00 R$ R$ 13.500,00 R$ 940,00 R$ 1.034,00 10% 5 R$ 1.200,00 R$ R$ 983,33 R$ 1.081,67 900,00 6.000,00 =SOMA(D2:D4)/SOMA(B2:B4) Com base nesta informação, elabore um algoritmo que avise quando o custo de uma compra for maior que 10% do custo médio. Use registros para facilitar o algoritmo.