Академический Документы
Профессиональный Документы
Культура Документы
RANILDO LOPES
APOSTILA 01 da OFICINA
DESENVOLVENDO O
PENSAMENTO
COMPUTACIONAL
Representao da informao
Um programa, nada mais , do que uma sequncia de comandos que enviados a CPU faz com que as
instrues sejam processadas.
Para que as instrues sejam processadas na memria do computador, toda a informao precisa ser
representada de um modo comum e coerente em todos os tipos de sistemas e ambientes, o que obrigou a criao
de um modelo geral de representao numrica.
3 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
O sistema baseia-se no nmero de dgitos, chamados de base que podero ser utilizados para a representao
da informao.
Qualquer valor , assim, representado por uma combinao destes dgitos.
Quando analisamos da direita para a esquerda, o produto de cada dgito vai ser equivalente base elevada
posio que ela ocupa, o que torna o primeiro dgito menos significativo do que o ltimo.
O sistema utilizado o sistema decimal, e como consiste em combinaes de dez dgitos distintos, de 0 a 9,
todos os produtos so calculados como potncias da base.
Veja um exemplo!
Sistema binrio
Para que todos os circuitos e dispositivos do computador consigam compartilhar uma informao preciso
que respeitem um modelo de representao comum. Como, a nvel fsico, s existem dois estados possveis -
ausncia ou presena de corrente eltrica - o sistema tem de ser de base dois (binrio), pelo que atribui a cada um
desses estados um dgito (ou bit) distinto - 0 para a ausncia e 1 para a presena de corrente.
A analogia lgica quase imediata, pois os mesmos valores podem, tambm, ser usados para representar o
falso e o verdadeiro.
O bit o menor bloco de informao compreensvel e distinguvel, e que pode servir para a construo de
blocos de informao mais complexos.
Em grupos de oito, os bits formam a unidade mais importante na representao de informao - o byte -
atravs da qual, representada a capacidade de armazenamento e memria.
Exemplo:
8 bits formam 1 byte
1024 bytes formam 1 kilobyte
1024 kilobytes formam 1 megabyte
1024 megabytes formam 1 gigabyte
1024 gigabytes formam 1 terabyte
Sistema Hexadecimal
Mdulo 02
A converso do sistema hexadecimal para o sistema binrio muito simples. Como a base a quarta potncia
da base do sistema binrio, cada dgito pode ser imediatamente convertido num bloco de quatro bits equivalentes.
Uma das vantagens a reduo do comprimento da sequncia da informao, ficando mais fcil a sua
visualizao e manipulao para qualquer pessoa.
Por esse motivo que a utilizao do sistema hexadecimal vem sendo cada vez mais frequente
Nota
normal o uso de aproximaes quando a quantidade de informaes grande. Para isso, foram criados
vrios sufixos que representam vrios tipos de arredondamentos - kilo, mega, giga, tera etc.
Sistema Hexadecimal II
Apesar do sistema binrio ser o mais simples e adequado s necessidades fsicas do computador, no fcil e
rpido para voc entender.
Para tornar esta percepo mais simples, converte-se o primeiro numero em um sistema hexadecimal.
Como o nome indica, o sistema hexadecimal usa uma base de 16 dgitos distintos (de 0 a 9 mais as seis
primeiras letras do alfabeto - A, B, C, D, E,F - que representam os valores de 10 a 15).
Da mesma maneira que o sistema decimal ou binrio, cada combinao representa um valor decimal
equivalente soma dos produtos totais de cada dgito.
Veja o exemplo:
Algoritmos
Vamos comear aprendendo o que um algoritmo. Imagine uma receita de bolo. Voc concorda que uma
receita uma sequncia lgica que fornece instrues? Um algoritmo muito semelhante a uma receita de bolo:
so fornecidos os ingredientes e o modo de fazer.
Podemos, ento, afirmar que uma receita de qualquer alimento nada mais do que um algoritmo.
Toda e qualquer receita, possui os ingredientes(entrada), o modo de preparo (processamento), e o resultado
que o alimento pronto (sada).
Analogamente teremos a Entrada, o Processamento e a Sada!
Metodologia de soluo
Para concluir, vamos reforar alguns conceitos sobre a metodologia para a anlise de sistemas.
Como voc j sabe todo e qualquer sistema ou programa sempre surge de uma necessidade e normalmente
tem um objetivo claramente definido, sendo assim devemos observar algumas regras antes mesmo de iniciar o
desenvolvimento de um sistema ou programa:
Entender o problema imprescindvel.
Formular um esboo da soluo necessrio.
Fazer uma primeira aproximao das variveis que podero ser utilizadas.
Rever os passos originais, detalhando o processo.
Se o algoritmo estiver suficientemente detalhado, testar com um conjunto de dados significativos.
Implementar numa linguagem de programao.
Se voc seguir as etapas de desenvolvimento descritas durante nosso curso com certeza voc alcanar
excelentes resultados!
7 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
Prtica
Abordamos conceitos e definies que muitas vezes fazem parte do nosso dia a dia, porm no paramos
para analis-los.
O raciocnio lgico desenvolvido a medida que procuramos utiliz-los naturalmente na rotina diria como
por exemplo organizando uma agenda de compromissos.
Faa o exerccio proposto com ateno e se encontrar dificuldades registre-as no frum para discuti-las com
seus colegas de curso.
Parabns! Voc chegou ao final do Mdulo 03!
MDULO 04 - ALGORITMOS
Tcnicas para a construo de algoritmos
Para se desenvolver algoritmos existem algumas tcnicas que veremos a seguir, entre elas esto os
pseudocdigos e os fluxogramas ou o diagrama de bloco.
Se formos analisar cada uma das tcnicas vamos chegar a concluso de que todas apresentam vantagens e
desvantagens, mas todas seguem um raciocnio lgico.
Pseudocdigo
Este nome uma aluso posterior implementao em uma linguagem de programao, ou seja, quando
formos programar em uma linguagem, por exemplo Visual Basic, estaremos gerando cdigo em Visual Basic. Por isso
os algoritmos so independentes das linguagens de programao. Ao contrrio de uma linguagem de programao
no existe um formalismo rgido de como deve ser escrito o algoritmo.
O algoritmo deve ser fcil de se interpretar e fcil de codificar. Ou seja, ele deve ser o intermedirio entre a
linguagem falada e a linguagem de programao.
Exemplo de algoritmo
Imagine o seguinte problema:
Calcular a mdia final dos alunos da 3 Srie. Os alunos realizaro quatro provas: P1, P2, P3 e P4.
Onde:
Para se utilizar a tabela ao lado basta seguir o fluxo da pgina anterior e atribuir valores para a Prova1,
Prova2, Prova3 e Prova4, o resultado da mdia dever ser obtido seguindo a frmula especificada no algoritmo.
Em clculos complexos voc pode utilizar uma calculadora para checar o resultado das operaes. O resultado
obtido na calculadora dever ser o mesmo para o calculado via algoritmo.
Diagrama de bloco ou fluxograma
Voc sabe o que um diagrama de bloco?
O diagrama de blocos, tambm conhecido como fluxograma, uma forma padronizada e eficaz para
representar os passos lgicos de um determinado processamento.
Com o diagrama podemos definir uma sequncia de smbolos, com significado bem definido, portanto, sua
principal funo a de facilitar a visualizao dos passos de um processamento.
Para a representao de uma sequncia lgica utilizando o diagrama de bloco necessrio seguir uma
simbologia. Existem diversos smbolos em um diagrama de bloco. No decorrer do curso apresentaremos os mais
utilizados.
Veja na animao abaixo, alguns dos smbolos que iremos utilizar. Dentro do smbolo sempre ter algo
escrito, pois somente os smbolos no nos dizem nada.
No fluxo ao lado seguimos uma sequncia lgica somente com informaes diretas, j no fluxo ao lado
utilizamos clculo, exibimos o resultado do mesmo e ainda utilizamos uma estrutura de deciso.
Um fluxograma pode se tornar muito difcil de se ler quando o algoritmo se torna complexo, alm de gastar
muito papel para ser desenhado!
INCIO
Receber n1
Receber n2
Receber n3
Calcular Mdia=(n1+n2+n3) / 3
Exibir Mdia
Se mdia > 5 exibir "aprovado"
Seno exibir "reprovado"
FIM
Exemplos de Diagrama de Bloco
10 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
Cada informao desta aula muito importante para a construo de um raciocnio lgico.
Faa o exerccio proposto com ateno e se encontrar dificuldades registre-as no frum para discuti-las com
seus colegas de curso.
EXERCCIO PROPOSTO
1. Elabore um algoritmo para calcular o preo total de uma mercadoria, sabendo que Preo Total = (Preo
Unitrio X quantidade)
2. Faa um teste de mesa com o algoritmo anterior com dados definidos por voc;
Parabns! Voc chegou ao final do Mdulo 04!
MDULO 05 - CONSTANTES, VARIVEIS E TIPOS DE DADO
Constantes, variveis e tipos de dados
O objetivo de um algoritmo manipular dados e chegar a soluo de um problema. Para manipular dados
uma linguagem de programao, qualquer que seja, utiliza variveis e constantes.
Uma varivel um espao reservado na memria do computador para armazenar um tipo de dado
determinado. Variveis devem receber nomes para poderem ser referenciadas e modificadas quando necessrio.
Um programa deve conter declaraes que especificam de que tipo so as variveis que ele utilizar e as vezes um
valor inicial.
Tipos podem ser por exemplo: inteiros, reais, caracteres etc. As expresses combinam variveis e constantes
para calcular novos valores.
CONSTANTES
Constante um determinado valor fixo que no se modifica ao longo do tempo, durante a execuo de um
programa. Conforme o seu tipo, a constante classificada como sendo numrica, lgica e literal. Exemplo de
constantes:
VARIVEIS
Varivel a representao simblica dos elementos de um certo conjunto. Cada varivel corresponde a uma
posio de memria, cujo contedo pode se alterado ao longo do tempo durante a execuo de um programa.
Embora uma varivel possa assumir diferentes valores, ela s pode armazenar um valor a cada instante.
Podemos dizer que o valor da CPMF, se utilizado em um algoritmo, uma Constante pois seu valor no vai
mudar durante a execuo do mesmo e o valor do saldo de sua conta bancria pode variar de acordo com a
movimentao financeira, neste caso o saldo pode ser considerado uma Varivel.
EXEMPLOS DE VARIVEIS
Variveis:
Salrio = salrio fixo + comisso
Varivel -> NOME = "JOSE" <- contedo da varivel
Varivel -> IDADE = 50 <- contedo da varivel
TIPOS DE VARIVEIS
As variveis e as constantes podem ser basicamente de quatro tipos: numricas, caracteres, alfanumricas
ou lgicas.
11 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
Numricas - Especficas para armazenamento de nmeros, que posteriormente podero ser utilizados para
clculos. Podem ser ainda classificadas como inteiras ou reais. As variveis do tipo inteiro so para armazenamento
de nmeros inteiros e as reais so para o armazenamento de nmeros que possuam casas decimais.
Caracteres - Especficas para armazenamento de conjunto de caracteres que no contenham nmeros
(literais). Ex: nomes.
Alfanumricas - Especficas para dados que contenham letras e/ou nmeros. Pode em determinados
momentos conter somente dados numricos ou somente literais. Se usado somente para armazenamento de
nmeros, no poder ser utilizada para operaes matemticas.
Lgicas - Armazenam somente dados lgicos que podem ser verdadeiro ou falso.
As variveis s podem armazenar valores de um mesmo tipo, de maneira que tambm so classificadas como
sendo numricas, lgicas e literais.
Numricos
o Inteiros 13, 7, -3
o Reais 22.5, 9.5, -6.6
o Ponto flutuante 0.321 x 10E9
Caracteres / Alfanumricos
o Caracteres 'A', 'B', 'a', 'b'
o Cadeia de caracteres (STRINGS)
o 'Ol! Voc entendeu?'
Lgicos
o S podem assumir os valores falso e verdadeiro -> (10<3) falso (8=8) verdadeiro
Operaes sobre os dados - Operadores
Os operadores so meios pelo qual incrementamos, decrementamos, comparamos e avaliamos dados
dentro do computador. Existem trs tipos de operadores:
Operadores Aritmticos
Operadores Relacionais
Operadores Lgicos
Os operadores aritmticos so os utilizados para obter resultados numricos. Alm da adio, subtrao,
multiplicao e diviso, voc pode utilizar o operador para exponenciao.
Para a formulao de operaes aritmticas usaremos a seguinte simbologia:
Nota
"Escolha nomes que indiquem a funo da varivel no algoritmo."
S=(a * b)/2.0 um pssimo exemplo;
Area_Triangulo=(Base * Altura) / 2.0. Assim no fica mais legvel?
Operadores Lgicos
Os operadores lgicos servem para combinar resultados de expresses, retornando se o resultado final
verdadeiro ou falso.
Veja na tabela abaixo os operadores Lgicos:
E AND
OU OR
NO NOT
E/AND - Uma expresso AND (E) verdadeira se todas as condies forem verdadeiras.
OU/OR - Uma expresso OR (OU) verdadeira se pelo menos uma condio for verdadeira.
NO/NOT - Uma expresso NOT (NO) inverte o valor da expresso ou condio, se verdadeira inverte para
falsa e vice-versa.
Operadores lgicos II
A tabela a seguir mostra todos os valores possveis criados pelos trs operadores lgicos (AND, OR e NOT).
1 valor Operador 2 valor Resultado
T AND T T
T AND F F
F AND T F
F AND F F
T OR T T
T OR F T
F OR T T
F OR F F
T NOT F
F NOT T
Veja o exemplo!
Suponha que temos trs variveis A = 10, B = 15 e C = 2.
Os resultados das expresses seriam:
1 valor Operador 2 valor Resultado
T AND T T
T AND F F
F AND T F
F AND F F
T OR T T
T OR F T
13 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
F OR T T
F OR F F
T NOT F
F NOT T
Expresses Resultados
A = B AND B > C Falso
A <> B ORB < C Verdadeiro
A > B NOT Verdadeiro
A < B AND B > C Verdadeiro
A >= B OR B = C Falso
A <= B NOT Falso
Regras para nomes de constantes e variveis
Os nomes para as constantes e variveis devem ser nomes que expressem o que determinada varivel ou
constante realmente faz e sempre bom voc tomar os devidos cuidados na criao de cada varivel dentro de seu
algoritmo. Leve em considerao as regras abaixo:
Devem comear com uma letra.
O restante pode ser letra ou dgito ou algum caracter especial permitido.
Dentro de uma expresso podemos realizar o que chamamos de operao de atribuio. Uma operao de
atribuio especifica que uma varivel vai receber determinado valor, e indicada pelo smbolo ' <-'. como por
exemplo:
LADO2 <- 5
BASE <- 6
Uma varivel s pode receber valores do tipo em que ela foi definida. Ex: variveis reais s recebem valores
reais.
X <- 5.6
Y <- -0.006
Variveis tipo caracter
Nome <- 'Maria'
Tipo booleano
Condio <- Falso
Forma geral
14 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
varivel <- expresso
Temos tambm o smbolo alternativo: ' = '
Ex: Base <- 5.0
Altura <- 6.0
Area_Triangulo <- (Base * Altura) / 2.0
Nota
Variveis do lado direito no sofrem alterao. Toda varivel usada no lado direito deve possuir um valor
antes da expresso ser avaliada.
Prioridades dos operadores
Vamos agora lembrar um regra matemtica que chamamos de precedncia. Voc consegue se lembrar de
suas primeiras aulas de matemtica?
Toda expresso composta de um ou mais operandos, e nas expresses e seus operandos que a regra da
precedncia se aplica.
Analise a expresso: 3 + 6 * 13 = 117 ou 81?
Voc consegue responder a questo acima? Voc j deve ter concludo que na matemtica existe uma
prioridade no clculo de expresses como acima descrita, no exemplo, o resultado correto 81 pois existe
prioridade da multiplicao em relao a adio.
Esta regrinha apesar de ser simples muito importante quando codificamos expresses matemticas em
qualquer linguagem de programao e at mesmo nos algoritmos.
+ Adio Esquerda p/Direita
- Subtrao Esquerda p/Direita
* Multiplicao Esquerda p/Direita
/ Diviso Esquerda p/ Direita
** ou ^^ Exponenciao Direita p/Esquerda
Dica: Voc deve conhecer as regras e us-las de forma que a expresso seja facilmente lida. E
principalmente que estejam corretas!
Parabns! Voc chegou ao final do Mdulo 05!
MDULO 06 - OPERAES LGICAS
Operaes lgicas
Operaes lgicas so utilizadas quando se torna necessrio tomar decises em um diagrama de bloco.
Num diagrama de bloco, toda deciso ter sempre como resposta o resultado VERDADEIRO ou FALSO.
Como no exemplo do algoritmo "COMER UM CHOCOLATE". Imaginemos que algumas pessoas no gostem de
comer chocolate branco, neste caso teremos que modificar o algoritmo para: "Comer um Chocolate".
Pegar o chocolate
O chocolate branco?
o Se sim, no coma o chocolate
o Se no, continue com o algoritmo
Retirar o papel
Coma o chocolate
Jogar o papel no lixo
15 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
Leitura de arquivos
Aps abrir um arquivo necessrio LER os dados que esto em disco e transfer-los para a memria. Essa
transferncia feita por registro. Esse procedimento gerenciado pelo prprio sistema operacional.
O smbolo para leitura de arquivo:
Toda vez que abrimos um arquivo ele posiciona o "ponteiro" no primeiro registro, ou seja, no incio do
arquivo. Para que voc possa trabalhar com os dados se torna necessrio saber onde est o ponteiro do registro.
Isso voc pode fazer testando se o ponteiro est no incio (BOF - Bottom Of File) ou no final do arquivo (EOF -
End Of File). Esse sempre executado aps a leitura do registro (mudana da posio do ponteiro).
Simbolicamente voc pode representar esse passo da seguinte maneira. Veja o exemplo de diagrama de bloco
abaixo.
inicio
abrir arquivo
contreg=0
20 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
ler arquivo
SE fim de arquivo EOF
exibir contreg
fechar arquivo
fim
NAO
contreg = contreg + 1
Volta ler arquivo
Movimentao de registros: Como voc viu na pgina anterior, quando um arquivo aberto o
ponteiro est no primeiro registro. A cada leitura do arquivo o ponteiro se movimenta para o prximo registro e
assim por diante.
Veja a tabela abaixo:
CODIGO DO CLIENTE NOME ENDEREO TELEFONE
Registro 1 1313 JOO DA SILVA R. UM, 200 7759-9887
Registro 2 1314 MARIA JOS R. DIAS, 155 2275-7845
Registro 3 1315 MANOEL DOS SANTOS R. FLORES, 100 7844-8578
Gravao de arquivos: Da mesma maneira que os registros so lidos de um arquivo, tambm
devemos gravar registros em um arquivo.
A gravao consiste na transferncia de um registro da memria, para um perifrico (disco, pen drive).
Macrofluxo: O macrofluxo a representao grfica dos arquivos que sero processados em um programa.
Os dois exemplos de macrofluxo, ao lado, do uma viso geral de como devemos proceder com cada um dos
programas.
O primeiro diz que haver um arquivo de entrada, um processamento e um arquivo de sada. J o segundo
exemplo diz que haver um arquivo de entrada, um processamento, e a sada ser um relatrio.
Exemplo 1
ARQ ENT
PROGRAMA
ARQ SAI
Exemplo 2Z
ARQ CLI
PROGRAMA
RELATRIO
RELATRIOS
A impresso de relatrios o registro de informaes processadas pelo computador em um meio de
armazenamento de dados chamado de formulrio. Para efetuarmos a impresso de relatrios devemos nos
preocupar com os seguintes aspectos:
Caractersticas do formulrio
Controle de linhas e salto de pgina
Impresso de cabealho e esttica da pgina
Impresso de rodap
Caractersticas do formulrio
A maioria dos formulrios possui um formato padro, isto , a quantidade de linhas por pgina e de
caracteres por linha so constantes.
Controle de linhas e salto de pginas
Uma preocupao com impresso de relatrios no permitir que a impressora imprima fora do papel, pois
alm de esteticamente no ficar bom, haveria perda de informaes.
Para controlarmos o nmero de linhas impressas, devemos criar um contador de linha e no deixar o valor
desses contadores ultrapassarem o nmero desejado de linhas por pginas.
Impresso de cabealho e esttica de pgina
Para termos uma idia melhor da esttica do formulrio, veja a tabela ao lado.
Rodap
21 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
22 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
Prtica
extremamente importante utilizarmos a lgica e algoritmos para manipulao de dados.
O resultado de um bom trabalho desenvolvido para manipular dados a integridade da informao,
otimizao de recursos e agilidade da aplicao.
Faa o exerccio proposto com ateno e se encontrar dificuldades registre-as no frum para discuti-las com
seus colegas de curso.
Parabns! Voc chegou ao final do Mdulo 07!
MDULO 08 - ESTRUTURAS DE DADOS
INTRODUO A ESTRUTURAS DE DADOS
Agora que voc j sabe o que um algoritmo e j est preparado para utilizar as tcnicas utilizadas para o
desenvolvimento de sequncias lgicas, voc, a partir deste ponto estar se aprofundando e exercitando ainda mais
o seu raciconio abstrato.
O seu objetivo entender os conceitos da organizao e manipulao de informaes em computadores
digitais e compreender os conceitos de tipos abstratos de dados, trabalhar com vetores, matrizes, entender as
tcnicas para manipulao de arquivos, Listas, Filas, Pilhas e rvores.
No esquea que a sua dvida pode ser a de todos, interaja com seu Tutor e no perca a oportunidade de
aprender!
Informao
Voc j sabe que a unidade bsica de informao, para uso em computadores, o dgito binrio (binary digit),
usualmente chamado bit. Um bit pode representar dois estados mutuamente exclusivos (ligado/desligado, zero/um,
verdadeiro/falso, etc.). Por exemplo, uma lmpada pode estar em ligada ou no e, portanto, um bit de
informao. Se for necessrio representar mais que dois estados, ento uma quantidade maior de bits ser utilizada,
como no exemplo a seguir, onde so usados 2 bits para representar um dispositivo de 4 estados:
Como regra, so necessrios n bits para representar 2n estados. Os dgitos 0 e 1 so utilizados para cada
estado possvel de um bit. Assim, vrios bits so indicados por uma sequncia de 0s e 1s. No entanto, nenhum
elemento da seqncia indica que esta representa um dado em particular. Por exemplo, pode-se representar um
inteiro ou um caracter com um conjunto de bits, mas a interpretao depende do criador do conjunto e no dos
seus elementos, nas prximas pginas voc ver quais so os tipos de representao.
Estado bit 0 bit 1
Estado A 0 0
Estado B 0 1
Estado C 1 0
Estado D 1 1
Informao II
Inteiros no negativos
Cada inteiro formado pelas potncias de 2 de cada bit 1 na sequncia, Veja o exemplo abaixo:
23 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
Em Binrio Convertendo... Em decimais
00100110 2^1+2^2+2^5 = 2 + 4 + 32 38
As posies so numeradas da direita para esquerda, iniciando em zero. Logo, a sequncia 00100110 tem 1s
nas posies 1, 2 e 5. Uma sequncia de n bits pode representar um nmero inteiro entre 0 e 2^n - 1.
INTEIROS
Uma representao de nmeros inteiros negativos pode ser feita pelo complemento de um, mtodo em que
um nmero negativo representado pela inverso individual de cada bit do nmero positivo. Assim, se 00100110
significa 38, 11011001 significa -38.
O bit mais esquerda passa a ser o bit de sinal: se zero, o nmero positivo e se um, negativo. Dados n
bits, pode-se representar um valor entre -2^(n-1) +1 e 2^(n-1) - 1, havendo duas notaes para o zero, +0 e -0,
respectivamente 00000000 e 10000000.
Outra forma o uso do complemento de dois, que soma 1 na representao do complemento de um do
nmero: se 11011001 -38 em complemento de um, 11011010 o mesmo nmero em complemento de dois.
Nesta ltima notao, h uma nica representao para o zero, considerando nmeros de um tamanho fixo, e n bits
denotam valores entre -2^(n-1) e 2^(n-1)-1.
Informao III
Dgitos decimais
Nmeros reais
Nmeros decimais podem ser representados por sequncias de grupos de 4 bits, cada grupo representando
um dgito decimal entre 0 e 9. Por exemplo, 00100110 separado em 0010 (2) e 0110 (6), representando o valor 26
em decimal. Esta notao chamada decimal codificado em binrio (binary coded decimal - bcd).
Nota
Valor decimal Mantissa Base Expoente Sequncia Hexadecimal
0000 0000 0000 0000
0 0 10 0 00 00 00 00 H
0000 0000 0000 0000
0000 0000 0000 0000
100 1 10 2 00 00 01 02 H
0000 0001 0000 0010
0000 0000 0000 0000
0.5 5 10 -1
0000 0101 1111 1111
0000 0000 0000 0000
12000 12 10 3
0000 1100 0000 0011
1111 1111 1111 1111
-12000 -12 10 3
1111 0100 0000 0011
256 256 10 0
NMEROS REAIS
O mtodo usual para representao de nmeros reais a notao de ponto flutuante, onde o valor
representado por um nmero, chamado mantissa, multiplicado por uma base, geralmente fixa, elevada a uma
potncia inteira, chamada expoente.
Assim, o valor v denotado por v = mantissa x base ^ expoente. Numa sequncia de 32 bits, com mantissa de
24 e expoente de 8bits, o valor 387,53 pode ser expresso como 000000001001011101100001 (= 38753)
multiplicado por dez elevado a 11111110 (-2), formando a sequncia 00000000100101110110000111111110.
Informao IV
Cadeias de caracteres
Dados de oito bits, podem ser representados com 256 diferentes caracteres. Ento, cada caractere
denotado por um padro de bits, escolhido arbitrariamente. conveniente que o padro escolhido facilite a
intercomunicao de sistemas e operaes sobre os dados (por exemplo, ordenao).
Na codificao ASCII, a sequncia 00100110 indica o smbolo &. O caractere A representado por 1100 0000,
B por 1100 0001, etc. A cadeia AB, com efeito, formada por 1100 00001100 0001.
INFORMAO DIGITAL
A informao digital, ento, no tem significado por si mesma. A interpretao de um padro de bits que
fornece o seu significado. Um mtodo de interpretao de padres de bits chamado freqentemente de tipo de
dados.
24 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
"A memria de um computador simplesmente um grupo de bits. Em qualquer instante da operao do
computador, qualquer particular bit da memria est em um estado 0 ou 1, chamado valor ou contedo deste
bit."
INFORMAO DIGITAL
Os bits so agrupados em unidades maiores, chamadas bytes. Estas, por sua vez, so agrupadas em palavras
(words). A cada uma destas unidades atribudo um endereo, que um nome identificando aquela unidade entre
todas as demais. O endereo usualmente numrico e, da, pode-se referenciar o byte 500, a word 2048 etc.
Cada computador tem um conjunto de tipos de dados nativos, isto , sua construo prov mecanismos para
manipular os padres de bits consistentemente com os objetos que estes representam. Por exemplo, a adio de
dois nmeros inteiros envolve instrues que interpretam corretamente os padres de bits, produzem um terceiro
padro que representa a soma dos dois primeiros e o armazena em um endereo especfico. Se a mesma operao
feita com nmeros reais, um conjunto diferente de instrues deve ser executado, para que os padres de bits
representando valores reais sejam corretamente interpretados.
de responsabilidade do programador escolher o conjunto de instrues apropriado aos seus propsitos.
Neste ponto, uma linguagem de alto nvel pode ajudar consideravelmente. Veja o exemplo, ao lado, codificado em
Linguagem C.
int num1, num2;
float v_real1, v_real2;
num1 = num1 + num2;
v_real1 = v_real1 + v_real2;
};
INFORMAO DIGITAL II
O compilador reserva espao para quatro diferentes nmeros. Estes espaos so referenciados pelos
identificadores num1, num2, v_real1 e v_real2, usados em substituio aos endereos numricos para uma
manipulao mais conveniente. Os valores inteiros sero interpretados como inteiros e os reais como reais, sendo
da responsabilidade do compilador a correta traduo das declaraes nas respectivas instrues do computador.
Neste sentido, o operador "+" um operador genrico, pois tem diferentes significados dependendo do contexto
em que est.
As declaraes de uma linguagem de alto nvel especificam como o contedo da memria do computador
interpretado pelo programa, especificando quanta memria necessria para um objeto especfico, qual a
interpretao do contedo deste objeto e outras informaes essenciais. Especificam, tambm, qual o significado
exato dos operadores que so utilizados a partir delas
Um tipo de dados pode ser entendido como um mtodo para interpretar os padres de bits em memria. No
entanto, pode ser visto de uma perspectiva totalmente diferente, no mais em relao s funes implementadas
eletronicamente no computador, mas em relao ao ponto de vista do usurio e das suas expectativas.
{
int num1, num2;
float v_real1, v_real2;
num1 = num1 + num2;
v_real1 = v_real1 + v_real2;
};
PONTEIROS EM C
A linguagem C permite a criao de ponteiros, que so referncias a endereos de memria ou, dito de outra
forma, referncia a localizaes de objetos.
Assim, se valor_1 uma varivel, &valor_1 o endereo onde o contedo da varivel est armazenado e
recebe o nome de ponteiro. Uma varivel pode ser declarada como sendo um ponteiro para um tipo de dados,
como no exemplo:
int * valor_inteiro;
float * valor_ptoflut;
char * valor_caracter;
Pode-se atribuir valores a ponteiros, copi-los para outros ponteiros ou executar operaes de aritmtica de
ponteiros (+ e -). Veja o exemplo ao lado:
valor_inteiro = &valor_1;
/* atribuindo valores */
valor_auxiliar = valor_inteiro;
/* copiando ponteiros */
25 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
valor_auxiliar = 256;
/* atribuindo valor ao endereo referenciado */
valor_controle = valor_auxiliar;
/* resgatando valor do endereo referenciado */
valor_inteiro++;
/* apontando para o proximo inteiro na memria */
valor_auxiliar--;
/* apontando para o inteiro anterior na memria */
printf("%i\n",*valor_auxiliar);
/* exibe na tela a varivel */
MDULO 09 - INFORMAES DIGITAIS E REGISTROS
Variveis
Variveis compostas homogneas
Assim como na teoria dos conjuntos, uma varivel pode ser interpretada como um elemento e uma estrutura
de dados como um conjunto.
Quando uma determinada estrutura de dados for composta de variveis com o mesmo tipo primitivo, temos
um conjunto homogneo de dados. Voc pode considerar que uma varivel composta homognea seja como uma
manada de elefantes, e seus elementos (variveis) sejam como os prprios elefantes (que so da mesma espcie).
Vamos, novamente, utilizar uma analogia. Imaginemos um edifcio com um nmero finito de andares,
representando uma estrutura de dados, e seus andares, parties dessa estrutura. Visto que os andares so uma
segmentao direta do prdio, estes compem ento o que chamado de estrutura unidimensional (uma
dimenso).
Voc agora j sabe o que um vetor e nas prximas pginas voc estar aprendendo como declar-los e
manipul-los.
Variveis II
Declarao de vetores
Veja, abaixo, como declarar um vetor:
Onde:
LI - representa o limite inicial do vetor
LF - representa o limite final do vetor
<tipo> - representa qualquer um dos tipos bsicos ou tipo anteriormente definido
Lista de variveis - lista de variveis (separadas por vrgulas) que tero o mesmo tipo denotado por VARIVEL.
Voc pode criar uma estrutura de dados, utilizando um vetor, para armazenar as notas de alunos de uma
determinada classe. Veja o exemplo ao lado:
tipo VARIVEL = vetor [LI..LF] de ;
VARIVEL: lista de variveis;
Exemplo:
tipo CLASSE = vetor[1..40] de reais;
CLASSE: VCLASSE;
7,5 8,5 9,5 6,5 ......... 7,5 2,5
1 2 3 4 39 40
Variveis III
Declarao de vetores
Podemos notar, no exemplo anterior, que LI e LF devem ser obrigatoriamente constantes e LI > LF.
O nmero de elementos do vetor ser dado por LF - LI + 1. Isto significa que as posies do vetor so
identificadas a partir de LI, com incrementos unitrios, at LF.
LI LI + 1 LI + 2 LF - 1 LF
Manipulao
Ao imaginar o elevador de um prdio, sabemos que este capaz de acessar qualquer um de seus andares.
Entretanto, no basta saber que andar desejamos atingir se no soubermos o nome do edifcio, pois qualquer um
possui andares. O que precisamos de antemo saber o nome do edifcio e s ento nos preocuparmos para qual
daqueles andares queremos ir.
26 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
Manipulando variveis
O mesmo acontece com vetores , vistos que so compostos por diversas variveis e, como podem existir
muitos vetores, torna-se necessrio determinar primeiro qual vetor contm o dado necessrio e depois especificar
em qual posio este se encontra.
Veja o exemplo abaixo:
VCLASSE [3]
..........
1 2 39 40
O nome do vetor determinado por meio do identificador que foi utilizado na definio de variveis, e a
posio, por meio da constante, expresso aritmtica ou varivel que estiver dentro dos conchetes, tambm
denominada NDICE.
Aps isolar um nico elemento do vetor, voc poder manipul-lo atravs de qualquer operao de entrada,
sada ou atribuio.
Exemplo:
V [3] <- 30;
leia (V[3]);
escreva (V[3]);
Manipulando variveis II
As estruturas de dados so estritamente relacionadas com o algoritmo. Ento, para voc entender e solidificar
seus conhecimentos, utilizaremos alguns algoritmos em portugus estruturado que calcule a mdia aritmtica geral
de uma classe com dez alunos e imprima a quantidade de notas acima da mdia.
Analise e entenda o algoritmo ao lado.
Voc deve estar se perguntando em como proceder a contagem dos alunos com nota acima da mdia da
turma, faz-se necessria a comparao de cada uma das dez notas com o contedo da varivel MEDT. Entretanto,
todas as notas foram lidas em uma mesma varivel, e seu valor foi acumulado em uma segunda varivel a fim de
poder calcular a mdia. Isto implica que ao ter calculado a mdia, no teramos acesso as nove notas anteriores que
o algoritmo descartou. Para corrigir este problema voc poderia utilizar uma varivel para cada nota
Veja o exemplo:
incio
{declarao de variveis}
real: MED, {mdia anual de um dado aluno}
ACUM, {acumulador}
MEDT; {mdia anual da turma}
inteiro: CONT; {contador}
CONT = 0;
ACUM = 0;
faa enquanto CONT < 10 {condio}
leia (MED);
ACUM = ACUM + MED;
CONT = CONT + 1;
fim enquanto;
MEDT = ACUM / 10;
escreva ("Mdia anual da Turma = ", MEDT);
fim.
Manipulando variveis III
O algoritmo ao lado torna-se impraticvel para uma grande quantidade de notas. Voc concorda?
Seria muito mais coerente se usssemos uma s varivel que contm muitas outras, isto , um vetor,
armazenando cada nota numa posio diferente do mesmo.
Se voc quiser parar em todos os andares, bastaria apertar todos os botes. Em outras palavras, teramos de
"apertar boto" vrias vezes, s que a cada vez seria um boto diferente (haveria uma variao) exatamente o
mesmo poderamos fazer para acessar todos os elementos de um vetor: bastaria utilizar uma varivel como ndice, a
qual teria sua variao controlada de acordo com nossa convenincia.
incio
{declarao de variveis}
inteiro: A,B,C,D,E,F,G,H,I,J,NOTACIMA;
real: MEDIA;
27 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
notacima = 0;
leia (A,B,C,D,E,F,G,H,I,J);
MEDIA = (A,B,C,D,E,F,G,H,I,J)/10;
se A > MEDIA entao NOTACIMA=NOTACIMA+1;
se B > MEDIA entao NOTACIMA=NOTACIMA+1;
se C > MEDIA entao NOTACIMA=NOTACIMA+1;
se D > MEDIA entao NOTACIMA=NOTACIMA+1;
se E > MEDIA entao NOTACIMA=NOTACIMA+1;
se F > MEDIA entao NOTACIMA=NOTACIMA+1;
se G > MEDIA entao NOTACIMA=NOTACIMA+1;
se H > MEDIA entao NOTACIMA=NOTACIMA+1;
se I > MEDIA entao NOTACIMA=NOTACIMA+1;
se J > MEDIA entao NOTACIMA=NOTACIMA+1;
escreva (NOTACIMA);
fim.
Manipulando variveis IV
Rescrevendo o exemplo, teramos o seguinte algoritmo:
incio
{definio de tipos}
tipo CLASSE = vetor [1..10] de reais;
{declarao de variveis}
CLASSE: VCLASSE;
real: SOMA, MDIA;
inteiro: NOTACIMA, X;
SOMA: 0;
NOTACIMA: 0;
para X de 1 at 10 faa
leia (VCLASSE [X]);
fim para;
para X de 1 at 10 faa
leia SOMA = SOMA+VCLASSE[X]
fim para;
MEDIA = SOMA/10;
para X de 1 at 10 faa
se VCLASSE[X] > MEDIA ento NOTACIMA
= NOTACIMA + 1
fim se;
fim para;
escreva (NOTACIMA);
fim.
Variveis compostas multidimensionais
Suponha que , alm do acesso pelo elevador at determinado andar, tenhamos tambm a diviso desse andar
em apartamentos. Para chegar a algum deles no basta s o nmero do andar, precisamos tambm do nmero do
apartamento.
Os vetores tm como principal caracterstica a necessidade de apenas um ndice para endereamento - so
estruturas unidimensionais.
Uma estrutura que precisasse de mais de um ndice, como no caso do edifcio dividido em apartamentos,
seria ento denominada estrutura composta multidimensional, neste caso, de duas dimenses (bidimensional).
Voc pode tambm chamar estas estruturas de matrizes.
Variveis compostas multidimensionais II
Declarao de matrizes
Veja, abaixo, como declarar uma matriz:
tipo VARIVEL = matriz [LI1..LF1, LI2..LF2,...LIn..LFn] de tipo;
VARIVEL: lista de variveis;
Onde:
LI1..LF1,LI2..LF2,...,LIn..LFn - so os limites dos intervalos de variao dos ndices da varivel, onde cada par de
limites est associado a um ndice.
28 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
tipo - representa qualquer um dos tipos bsicos ou tipo anteriormente definido.
lista de variveis - lista de variveis (separadas por vrgulas) que tero o mesmo tipo denotado por VARIVEL.
tipo SALA = matriz[1..4,1..4] de inteiros;
SALA: MSALA;
O nmero de dimenses da matriz igual ao nmero de intervalos.
O nmero de elementos igual ao produto do nmero de elementos de cada dimenso: (LF1 - LI1+1)*(LF2-
LI2+1)*...*(LFn-LIn+1).
Exemplo:
tipo M = matriz[1..3,2..4,3..4] de reais;
M: MAT;
MAT tem trs dimenses e (3-1+1) * (4-2+1) * (4-3+1) = 18 elementos
MSALA tem duas dimenses e (4-1+1) * (4-1+1) = 16 elementos
Variveis compostas multidimensionais III
Manipulao
Para acessar um elemento em uma matriz precisamos, como num edifcio, de seu nome, de seu andar e do
nmero de seu apartamento. Considerando uma estrutura bidimensional (dois ndices: andar e apartamento), o
primeiro ndice indica a linha e o segundo, a coluna.
Exemplo:
Para matrizes com trs dimenses, repete-se a estrutura bidimensional tantas vezes quantos forem os
elementos da terceira dimenso, numerando-as de acordo com os limites especificados na declarao de tipo.
Variveis compostas multidimensionais IV
Manipulao
Exemplo:
A matriz MAT poderia ser representada por:
2 3 4 2 3 4
1 1
2 2
3 3
3 4
MAT
O elemento assinalado na figura anterior corresponde a MAT [2,3,4].
Observando mais profundamente, percebemos que uma estrutura composta multidimensional na realidade
um conjunto de vetores que so determinados por cada intervalo que compem o tipo matriz.
Para utilizar o vetor, ns o inserimos em um nico lao de repetio, fazendo com que haja variao de seu
ndice. Como em uma estrutura multidimensional possumos mais de um ndice, faz-se necessria a utilizao de
mais laos de repetio em mesmo nmero do que o nmero de dimenses da matriz.
Variveis compostas multidimensionais V
Manipulao
As matrizes mais utilizadas so as bidimensionais, devido a sua direta relao com muitas aplicaes (por
exemplo, tabelas), que devem possuir dois laos de repetio. Uma aplicao prtica deste exemplo um jogo de
azar muito conhecido, a loteria esportiva.
1 X 2
1 ___ Remo _ Paissand ___
29 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
_ ___ _
___ _ ___
2 So Paulo Palmeiras
_ ___ _
___ _ ___
3 Bahia Fortaleza
_ ___ _
___ _ ___
4 Gremio Internacional
_ ___ _
___ _ ___
5 Bangu Botafogo
_ ___ _
___ _ ___
6 Ponte Preta Guarani
_ ___ _
___ _ ___
7 Corinthians Portuguesa
_ ___ _
___ _ ___
8 Atltico MG Cruzeiro
_ ___ _
___ _ ___
9 Atltico Botafogo SP
_ ___ _
___ _ ___
10 Juventude Coritiba
_ ___ _
___ _ ___
11 Flamengo Fluminense
_ ___ _
___ _ ___
12 Olaria Vasco
_ ___ _
___ _
13 River Santos
_ ___
Variveis compostas multidimensionais VI
Manipulao
Voc preencheu o carto da Loteria Esportiva e agora voc deseja saber qual o jogo que possui mais
marcaes, ou seja, qual dos 13 jogos possui um triplo, ou se este no existir, um duplo.
Como cada jogo esta disposto em trs parties, voc ter de avaliar se cada uma delas possui ou no uma
marcao "X" e, em segueguida, avaliar o prximo jogo do mesmo modo. Resumindo, para cada linha voc
percorrer todas as colunas.
Para percorrer a matriz desta forma, voc deve:
Fixar a linha
Variar a coluna
Outro problema seria descobrir qual das colunas do carto possui mais marcaes, se a coluna um, a coluna
dois ou a coluna do meio.
Para resolver essa questo, voc precisar determinar quantas marcaes existem em cada coluna e verificar
qual dos trs valores o maior. Neste caso, voc estar invertendo o modo de percorrer a matriz, verificando todas
as linhas de uma coluna e seguindo depois para a prxima coluna.
Para percorrer a matriz desta forma, voc deve:
Veja o algoritmo!
Algoritmo
incio
{definio de tipos} se QTMARLIN > QTMAR entao
tipo JOGO = matriz [1..13,1..3] de incio
caracteres; QTMAR = QTMARLIN;
{declarao de variveis} NJOGO = LIN
JOGO: MJOGO; {nome da matriz} fim;
inteiro: LIN, {ndice para linha} fim se;
COL, {ndice para fim para;
coluna} escreva ("Jogo Mais Marcado: ",
QTMAR, {maior nmero NJOGO);
30 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
de marcaes encontrado} escreva ("Qtde. de marcaes: ",
NJOGO, {nmero do QTDMAR);
jogo com mais marcaes} fim.
QTMARLIN; {Nmero de
marcaes em uma linha}
QTMAR=0;
para LIN de 1 at 13 faa
QTMARLIN=0;
para COL de 1 at 3 faa
se MJOGO[LIN,COL] =
"X" entao
QTMARLIN = QTMARLIN + 1;
fim se
fim para;
Outro problema seria descobrir qual das colunas do carto possui mais marcaes, se a coluna um, a coluna
dois ou a coluna do meio.
Para resolver essa questo, voc precisar determinar quantas marcaes existem em cada coluna e verificar
qual dos trs valores o maior. Neste caso, voc estar invertendo o modo de percorrer a matriz, verificando todas
as linhas de uma coluna e seguindo depois para a prxima coluna.
Para percorrer a matriz desta forma, voc deve:
Fixar a coluna
Variar a linha
Veja o algoritmo!
Algoritmo
incio
{definio de tipos}
tipo JOGO = matriz [1..13,1..3] de caracteres;
{declarao de variveis}
JOGO: MJOGO; {nome da matriz}
inteiro: LIN, {ndice para linha}
COL, {ndice para coluna}
QTMAR, {maior nmero de marcaes encontrado}
NCOL, {nmero da coluna com mais marcaes}
QTMARCOL; {Nmero de marcaes em uma coluna}
QTMAR=0;
para COL de 1 at3 faa
QTMARCOL=0;
para LIN de 1 at 13 faa
se MJOGO[LIN,COL] = "X" entao
QTMARCOL = QTMARCOL + 1;
fim se
fim para;
se QTMARCOL > QTMAR entao
incio
QTMAR = QTMARCOL;
NCOLUNA = COL;
fim;
fim se;
fim para;
escreva ("Coluna mais Marcada: ", NCOL);
escreva ("Qtde. de marcaes: ", QTDMAR);
fim.
Registro
Uma das principais estruturas de dados o registro. Para exemplificar, imagine uma passagem de avio, que
formada por um conjunto de informaes logicamente relacionadas, porm de tipos diferentes, tais como nmero
da passagem (inteiro), origem e destino (caractere), data (caractere), horrio (caractere), poltrona (inteiro),
31 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
distncia (real), fumante (lgico), que so subdivises do registro (elementos do conjunto), tambm chamadas de
campos. Logo, um registro composto por campos que so partes que especificam cada uma das informaes.
Declarao
tipo VARIVEL = registro
tipo1 : campo1;
tipo2 : campo2;
..
tipoN : campoN;
fim registro;
VARIVEL : lista de variveis;
Registros II
Onde:
VARIVEL - representa o nome associado ao tipo de registro construdo.
tipo1, tipo2, tipoN - representam qualquer um dos tipos bsicos ou tipo anteriormente definido.
campo1, campo2, campoN - representam nomes associados a cada campo de registro.
lista de variveis - lista de variveis (separadas por vrgulas) que tero o mesmo tipo denotado por VARIVEL.
O exemplo, ao lado, corresponde definio de um modelo REGPASSAGEM de um registro e criao de
uma rea de memria chamada passagem, capaz de conter oito subdivises.
Exemplo:
tipo REGPASSAGEM = registro
inteiro : nmero;
caractere : origem;
caractere : destino;
caractere : data;
caractere : horrio;
inteiro : poltrona;
real : distncia;
lgico : fumante;
fim registro;
REGPASSAGEM : passagem;
Registro III
Manipulao
Em determinados momentos voc pode precisar de todas as informaes contidas no registro (PASSAGEM)
ou de apenas algum campo do registro (como frequentemente, o nmero da poltrona).
Quando voc acessa um registro genericamente, voc esta se referenciando obrigatoriamente todos os
campos por ele envolvidos. Exemplo:
leia (PASSAGEM);
escreva (PASSAGEM.FUMANTE);
leia (PASSAGEM.POLTRONA);
escreva (PASSAGEM.FUMANTE);
Para utilizar um campo especfico do registro, voc deve diferenciar esse campo. Para tal voc utilizar o
caractere "." (ponto) para estabelecer a separao do nome do registro do nome do campo
leia (PASSAGEM.POLTRONA);
escreva (PASSAGEM.FUMANTE);
Exemplo: Utilizando o registro PASSAGEM
incio
{definies anteriores}
.
.
.
leia(PASSAGEM.NMERO); {acesso especfico a um campo do registro}
leia(PASSAGEM.ORIGEM); {acesso especfico a um campo do registro}
leia(PASSAGEM.DESTINO); {acesso especfico a um campo do registro}
.
.
.
32 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
escreva(PASSAGEM); {acesso genrico ao registro}
fim
Registro IV
Registro de conjuntos
Os registros vistos at agora possuam em seus campos apenas informaes de tipos primitivos, entretanto,
voc pode dispor tambm campos que so compostos, ou seja, formados por outros tipos construdos.
Digamos que voc possui um registro de estoque de um produto contendo como um de seus campos um
valor numrico que indique baixas por dia do produto, por dia da semana. Temos ento, um valor de seis posies,
no qual cada posio corresponde a um dia til da semana.
Nome:Cdigo: Preo:
Baixa:
1 2 3 4 5 6
Registro V
Declarao
Para declarar o tipo de registro da pgina anterior, voc pode utilizar um tipo construdo: o vetor. Voc
precisar primeiramente declarar tal tipo, e depois o tipo de registro, isto , voc precisar declarar todos os
conjuntos que sero includos no registro antes da sua declarao.
Exemplo:
tipo VDIAS = vetor[1...6] de inteiros
tipo REGPROG = registro
caractere : nome;
inteiro : cdigo;
real : preo;
VDIAS : baixa;
fim registro;
REGPROD : produto;
Registro VI
Manipulao
A manipulao de um registro de conjuntos deve obedecer s manipulaes prprias de cada estrutura de
dados anteriormente definida.
Exemplo: para acessar o quanto foi vendido do produto no terceiro dia da semana da quarta semana,
teramos:
PRODUTO.BAIXA[4,3]
Se voc necessitar obter do registro o nome do produto, o cdigo, o preo e as baixas da segunda semana o
trecho do algoritmo seria:
incio
{definies anteriores}
.
.
.
escreva(PRODUTO.NOME);
escreva(PRODUTO.CDIGO);
escreva(PRODUTO.PREO);
para J de 1 at 5 faa
escreva(PRODUTO2.BAIXA[2,J]);
fim para
.
.
fim
REGISTRO VII - CONJUNTO DE REGISTROS
Nas estruturas compostas homogneas (vetores e matrizes) utilizamos tipos de dados primitivos como sendo
os elementos dessas estruturas. Agora voc utilizar como componente dessa estrutura no apenas um tipo
primitivo, mas sim os tipos construdos, neste caso os registros. Supondo que quisssemos manter um registro de
informaes relativas a passagens areas de todos os lugares de um avio, voc poderia utilizar um registro
33 U.E. Edgar Tito DESEN.O PENSAMENTO COMPUTACIONAL PROF. RANILDO LOPES
referente a cada poltrona (PASSAGEM), e para agrupar todos eles voc poderia utilizar um conjunto desses
registros.
O seu avio possui 12 lugares, numerados sequencialmente de 1 a 12, voc pode, para uni-los, criar um vetor
no qual cada posio um elemento de tipo construdo do registro (PASSAGEM).
1 Nmero: 0001 Fumante:
2 De: Para:
Data: / / Horrio:
3 Poltrona: Destino:
...
12
Registro VIII
Declarao
No exemplo anterior voc possui um vetor composto por registros. Voc no poder declarar este vetor sem
antes ter declarado seus elementos.Portanto, voc deve declarar primeiro o tipo construdo de registro e depois o
vetor.
Exemplo:
tipo REPASSAGEM = registro
inteiro : nmero;
caractere : origem, destino;
caractere : data, horrio;
inteiro : poltrona;
real : distncia;
lgico : fumante;
fim registro;
tipo VETPASSAGEM = vetor[1...12] de REPASSAGEM;
VETPASSAGEM : AVIO
Registro IX
Manipulao
Ao acessar as informaes contidas em um conjunto de registros, voc pode utilizar o modo de acesso
caracterstico de cada estrutura.
Exemplo: para saber a baixa do dcimo produto, da terceira semana do ms e do quarto dia da semana, voc
escreveria:
PRODUTO[10].BAIXA[3,4]
Para obter um algoritmo que imprima o total de movimentao do estoque para cada um dos 500 produtos o
algoritmo seria:
incio
{definio anteriores}
.
para N de 1 at 500 faa
ACM = 0;
para I de 1 at 4 faa
para J de 1 at 6 faa
ACM = ACM + PRODUTO[N].BAIXA[I,J];
fim para
fim para
escreve (PRODUTO[N].NOME,ACM);
fim para
.
fim para.
Prtica
Variveis sero sempre utilizadas em suas aplicaes. Por isso muito importante que voc tenha entendido
seus conceitos e funcionalidades.
Faa o exerccio proposto com ateno e se encontrar dificuldades registre-as no frum para discuti-las com
seus colegas de curso.