• Nenhum resultado encontrado

Variáveis compostas heterogêneas

N/A
N/A
Protected

Academic year: 2022

Share "Variáveis compostas heterogêneas"

Copied!
8
0
0

Texto

(1)

Variáveis compostas heterogêneas

Os dados combinados em um determinado registro levam o nome de variáveis heterogêneas (dados derivados) por se tratar de uma coleção de dados de diferentes tipos primitivos (real, inteiro, caractere, cadeia e lógico), reunidos em uma mesma estrutura.

Exemplo 01:

Pretende-se combinar os elementos (dados) encontrados em um cadastro de clientes, que correspondem a:

NOME: deve conter dados do tipo cadeia

ENDEREÇO: deve conter dados do tipo cadeia

CÓDIGO POSTAL: deve conter dados do tipo cadeia

CLIENTE PESSOA FISICA OU JURÍDICA: deve conter dados do tipo caractere COMPRAS DO 1° MÊS: deve conter dados do tipo real COMPRAS DO 2° MÊS: deve conter dados do tipo real COMPRAS DO 3° MÊS: deve conter dados do tipo real

Note que existem três grandes tipos de dados relacionados a um mesmo cliente: (cadeia, caractere, e real), a combinação dos diferentes tipos de dados em um único registro corresponde a um conjunto de dados heterogêneo.

Atribuição de registro (variável heterogênea)

Sua atribuição deve ser feita antes da atribuição das variáveis a serem manipuladas pelo sistema, usando a sintaxe:

Exemplo 02:

tipo

<CAD_CLIENTES> = registro NOME: cadeia ENDEREÇO: cadeia CÓDIGO POSTAL: cadeia FISICO/JURÍCIO: caractere COMP01: real

COMP02: real COMP03: real fim_regitro var

CREDITO: cad_clientes tipo

<identificador> = registro

<lista dos campos e seus tipos>

fim_registro var

<variáveis> : <identificador>

(2)

Leitura e escrita de um registro

Tanto a leitura quanto a escrita de um registro podem ser realizadas de duas maneiras a 1ª. campo a campo, sendo indicado o nome da variável do tipo de registro e seu campo separados por um caractere “.” ponto. A 2ª indicando apenas o nome do registro antecedido pelos comandos “leia” ou “escreva”, neste caso todos os campos serão manipulados pelo comando.

Exemplo 03

programa CREDITO_DE_ CLIENTES tipo

<CAD_CLIENTES> = registro NOME: cadeia ENDEREÇO: cadeia CÓDIGO POSTAL: cadeia FISICO/JURÍCIO: caractere COMP01: real

COMP02: real COMP03: real fim_registro var

CREDITO: cad_clientes início

leia CREDITO. NOME leia CREDITO.ENDEREÇO leia CREDITO.CÓDIGO_POSTAL leia CREDITO.FISICO/JURÍCIO leia CREDITO.COMP01

leia CREDITO. COMP02 leia CREDITO. COMP03 escreva CREDITO. NOME escreva CREDITO.ENDEREÇO escreva CREDITO.CÓDIGO_POSTAL escreva CREDITO.FISICO/JURÍCIO escreva CREDITO.COMP01

escreva CREDITO.COMP02 escreva CREDITO.COMP03 fim

Exemplo 04

início

leia CREDITO escreva CREDITO fim

Observe que com este procedimento algum campo que

não seja necessário pode ser suprimido ou utilizado em outro momento, assim a referência de

cada um dos campos individualmente possibilita maior

liberdade ao desenvolvedor da solução tecnológica.

Trecho de código do registro todo não discriminando os dados.

Adote a entrada de dados como sendo a mesma do exemplo anterior.

(3)

Estrutura de registro matriz

Uma maneira conveniente é combinar os elementos de registro com matrizes do tipo vetor, reduzindo drasticamente o trabalho de elaboração do código.

Exemplo

Em um registro bancário, contendo os dados abaixo.

Codificação

tipo

CAD_CLIENTE = registro

NOME, ENDEREÇO, CPF : cadeia CLIENTE_ESPECIAL : lógico

MOV_FINANC : conjunto [1..6] de real fim_registro

var

CLIENTE : cad_cliente I : inteiro

início

leia CLIENTE.NOME leia CLIENTE.ENDEREÇO leia CLIENTE.CPF

para I de 1 até 6 passo 1 faça leia CLIENTE.MOV_FINANC[I]

fim_para

{bloco de execuções}

escreva CLIENTE.NOME escreva CLIENTE.ENDEREÇO escreva CLIENTE.CPF

para I de 1 até 6 passo 1 faça

escreva CLIENTE.MOV_FINANC[I]

fim_para fim

NOME:

CLIENTE ESPECIAL: SIM NÃO

ENDEREÇO:

CPF:

NOVIMENTAÇÃO FINANCEIRA

JAN FEV MAR ABR MAI JUN

TIPOS DE DADOS cadeia

lógico cadeia cadeia real

(4)

Exemplo:

Desenvolver um programa que leia uma tabela de cargos e salários. Em seguida, o programa deve solicitar que seja fornecido o código de um determinado cargo. Esse código deve estar entre 1 e 17. O operador do programa pode fazer quantas consultas desejar. Sendo o código válido, o programa deve apresentar o cargo e o salário associado ao cargo selecionado. Caso seja inválido, deve avisar o operador dessa ocorrência. Para inserir dados no sistema dos códigos de cargo/salários, observe a tabela seguinte:

TABELA DE CARGOS E SALÁRIOS

Cód. Cargo Salário h.

01 Anal. de cargos e salários 9,00 02 Auxiliar contábil 6,25 03 Chefe de cobrança 8,04 04 Chefe de expedição 8,58

05 Contador 15,60

06 Gerente regional 22,90

07 Escriturário 5,00

08 Faxineiro 3,20

09 Gerente administrativo 10,30 10 Gerente comercial 10,40 11 Gerente de pessoal 10,29 12 Gerente de treinamento 10,68 13 Gerente financeiro 10,54

14 Contínuo 2,46

15 Operador de computador 6,05

16 Programador 9,10

17 Secretária 7,31

(5)

(fonte: Manzano, Algoritmos, pag 205 – 23 ed.)

programa TABELA_DE_SALÁRIOS tipo

REG_DADOS = registro

CÓDIGO : inteiro CARGO : cadeia SALÁRIO : real fim_registro

var

TABELA: conjunto [1..17] de reg_dados I, CODPESQ : inteiro

RESP: caractere ACHA: lógico início

para I de 1 até 17 passo 1 faça TABELA [I].CÓDIGO ← I

escreva “Código ...:”, TABELA[I].CÓDIGO escreva “Cargo ...:”, leia TABELA[I].CARGO escreva “Salário...:”, leia TABELA[I].SALÁRIO fim_para

RESP← “SIM”

enquanto (RESP = “SIM”) faça escreva “Qual código – 1 a 17”

leia CODPESQ I ← 1

ACHA ←.Falso.

enquanto (I =< 17) .e. (ACHA = .Falso.) faça se (CODPESQ = TABELA[I].CÓDIGO) então

ACHA ← .Verdadeiro.

senão I ← I + 1 fim_se fim_enquanto

se (ACHA = .Verdadeiro.) então

escreva “Código:...”, TABELA[I].CÓDIGO escreva “Cargo: ...”, TABELA[I].CARGO escreva “Salário: ...”, TABELA[I].SALÁRIO senão

escreva “Cargo Inexistente”

fim_se

escreva “Deseja continuar pesquisa? – Responda [S]im ou [N]ão:”

leia RESP fim_enquanto fim

(6)

Procedimentos

Um módulo de procedimentos ou sub-rotina corresponde a um bloco de programa que se referencia por um rótulo permitindo que um programa principal chame suas funções nos processos a serem realizados, permitindo ao idealizador de solução tecnológica modulada em rotinas e sub-rotinas. Sua diagramação em português estruturado e seu diagrama de blocos obedecem às seguintes sintaxes.

Obs: O código da sub-rotina deve ser escrito antes de sua chamada no trecho de chamada da sub-rotina, assim, a chamada da sub-rotina deve ser representada em português estruturado de forma sublinhada, estando esta forma associado à ação indicada do símbolo processo predefinido.

Funções

Uma função corresponde a um bloco de programa semelhante o procedimento (sub- rotina), contendo inicio, fim e identificada por um rótulo que permite o programa principal chamar suas execuções. A diferença entre procedimento e função é que a função corresponde a uma estrutura de abstração que sua principal característica operacional na capacidade de sempre retornar um conteúdo de resposta, ou seja, a função retorna um “valor” que retorna no próprio rótulo da função podendo ocorrer em operações de processamento (lógico ou matemático) e de saída, enquanto os procedimentos não retornam conteúdos, a não ser com o uso de procedimentos de passagem de parâmetro por valor ou por referência.

CODIFICAÇÃO

programa <rótulo do programa>

procedimento <sub-rotina>

var

<variáveis>

início

<instruções>

fim início

<sub_rotina>

fim

(7)

CÓDIGO programa CALC_FAT_V3

função FATORIAL (N : inteiro) : inteiro var

I, FAT : inteiro início

FAT ← 1

para I de 1 até N passo 1 faça FAT ← FAT * I

fim_para

FATORIAL ← FAT fim

var

LIMITE : inteiro início

escreva “Qual fatorial:”

leia LIMITE

escreva FATORIAL(LIMITE) fim

Obs.: Por se tratar de uma estrutura que retorna um valor é fundamental que seja indicado o tipo de dado da função.

Passagens de parâmetros

O processo de passagem de parâmetros permite estabelecer uma linha de comunicação entre os conteúdos dos trechos de sub-rotinas (parâmetros/funções), e dos trechos de programa que chamam essas sub-rotinas. Tal comunicação que ocorre entre o trecho de programa chamador e o trecho de programa chamado, podendo o parâmetro ser considerado real (quando declarado no trecho do programa que chama a sub-rotina) ou formal (quando é declarado no trecho da sub-rotina). Tais processos de passagem de parâmetros chamam-se:

• Passagem de parâmetro real ← quando o trecho de programa chama uma sub-rotina, ao fazer a operação de passagem, realiza uma abstração.

• Passagem de parâmetro formal ← quando a sub-rotina chamada recebe a passagem de parâmetro, este formaliza a operação de abstração a ela transferida.

Passagem de parâmetro por valor

Dizemos que ocorreu uma passagem de parâmetro por valor quando o parâmetro formal da sub-rotina recebe o parâmetro real do trecho de programa chamador um determinado conteúdo, assumindo o papel de variável local da sub-rotina. Assim qualquer modificação no conteúdo do parâmetro formal não altera o valor do conteúdo do parâmetro real, ou seja, o processamento é realizado e armazenado na própria sub-rotina.

(8)

Passagem de parâmetro por referência

Dizemos que ocorreu uma passagem de parâmetro por referência quando o parâmetro real do programa chamador recebe o conteúdo do parâmetro formal da sub-rotina, portanto dado certo processamento dentro da sub-rotina, o parâmetro formal reflete a alteração de seu conteúdo no parâmetro real. Assim qualquer modificação no conteúdo do parâmetro formal implicará em alteração imediata do conteúdo do parâmetro real correspondente.

CODIFICAÇÃO

programa CALC_FAT_V1

procedimento FATORIAL (N : inteiro) var

I, FAT: inteiro início

FAT ← 1

para I de 1 até N passo 1 faça FAT ← FAT * I

fim_para escreva FAT fim

var

LIMITE : inteiro início

escreva “Qual fatorial:” leia LIMITE FATORIAL (LIMITE)

fim

CODIFICAÇÃO

programa CALC_FAT_V2

procedimento FATORIAL (N : inteiro; var FAT: inteiro) var

I: inteiro início

para I de 1 até N passo 1 faça FAT ← FAT * I

fim_para fim

var

LIMITE, RESP : inteiro início

RESP←1

escreva “Qual fatorial:”

leia LIMITE

FATORIAL (LIMITE, RESP) escreva RESP

fim

Referências

Documentos relacionados

- - Para outros de vocês, se Deus não há chamado você para se tornar Dele discípulo e para fazer o trabalho de ministério, então por que você acha que isso é.

Categoria A: mapas onde fica evidente que o aluno não possui subsunçores relevantes sobre o tema de estudo (quando utilizado como instrumento para averiguar o

START_MODE_INVENTORY=${valor} (Este parâmetro define se a rotina de Inventário será executada. Informe o valor TRUE para ativar ou FALSE para desativar. Se estiver definido

Com base na hipótese de que o pro-drop chinês é o valor default da GU para a aquisição de L2, em oposição à hipótese, defendida por muitos autores, de que a L1 constitui o

Usando o método de Monte Carlo estudamos, para amostras de dimensão finita de alguns modelos de cauda pesada, as propriedades desta classe de estimadores de β.. Palavras–chave:

Considerar a deslocabilidade de uma estrutura e o equilíbrio na forma deslocada é indispensável para avaliar a estabilidade global, um tipo de análise que deve ser feita em

Os países participantes deverão proporcionar um EFP que aumente a empregabilidade das pessoas (tanto a curto como a longo prazo), que lhes permita desenvolver carreiras de

processo de ampla discussão no tema 3. Na literatura internacional, um autor que pode contribuir sensivelmente para a compreensão de como detectar cartéis em postos