Escolar Documentos
Profissional Documentos
Cultura Documentos
Lgica
1
_________________________________________________________________________________________________Histria da
Lgica
2
_________________________________________________________________________________________________Histria da
Lgica
FIEP
CIEP
SESI
SENAI
IEL
3
_________________________________________________________________________________________________Histria da
Lgica
4
_______________________________________________________________________________________________________SUM
RIO
SUMRIO
CONTEDO PROGRAMTICO............................................................ 8
HISTRIA DA LGICA .......................................................................... 9
INTRODUO A LGICA PROPOSICIONAL ................................ 10
Preliminares ......................................................................................................... 10
Proposio............................................................................................................................10
Conectivos Lgicos ..............................................................................................................11
Valor Lgico ........................................................................................................................11
Princpios Fundamentais da Lgica ......................................................................................12
Tabela - Verdade ................................................................................................................12
Operaes Lgicas sobre Proposies .................................................................. 13
Operao Negao (~) ..........................................................................................................13
Operao Conjuno ().......................................................................................................14
Operao Disjuno (V) .......................................................................................................15
Operao Condicional ( ) .................................................................................................17
Operao Bicondicional ( ) ...............................................................................................18
Exerccios ........................................................................................................................19
Tautologia, Contradio e Contingncia............................................................... 19
Tautologia ............................................................................................................................19
Contradio..........................................................................................................................20
Contingncia ........................................................................................................................20
Exerccios ........................................................................................................................20
Implicao Lgica ou Conseqncia Lgica ( ) .............................................. 21
Equivalncia Lgica ( ) .................................................................................... 21
Exerccios ........................................................................................................................22
Estrutura de Dados................................................................................... 45
Agregados Homogneos ...................................................................................... 45
Variveis Compostas Homogneas.......................................................................................45
Declarao.......................................................................................................................45
Exerccio .........................................................................................................................46
Agregados Multidimensionais .............................................................................................46
Declarao.......................................................................................................................46
Exerccios ........................................................................................................................48
_______________________________________________________________________________________________________SUM
RIO
Agregados Heterogneos...................................................................................... 48
Registros ..............................................................................................................................48
Declarao.......................................................................................................................48
Conjunto de Registros .......................................................................................... 49
Exerccio .........................................................................................................................50
Arquivos..................................................................................................... 59
Definio.............................................................................................................. 59
Organizao dos Arquivos ................................................................................... 59
Seqencial............................................................................................................................59
Direta ou Aleatria ...............................................................................................................59
Declarao ...........................................................................................................................60
Manipulao de Arquivos..................................................................................... 60
Abertura ...............................................................................................................................60
Fechamento..........................................................................................................................60
Leitura..................................................................................................................................60
Gravao ..............................................................................................................................61
Posicionamento e verificao de fim e incio de arquivo.......................................................61
Avance (nome-arquivo);........................................................................................................... 61
FDA (nome-arquivo) ............................................................................................................61
Posicione (nome-arquivo, chave);........................................................................................61
Estudo de Concepes ..........................................................................................................62
Arquivo Direto Acessado Seqencialmente ..........................................................................62
Arquivo Seqencial Acessado Randomicamente: Arquivo Indexado ....................................62
Exerccios:.......................................................................................................................62
_______________________________________________________________________________________________________SUM
RIO
CONTEDO PROGRAMTICO
1.Noes de Lgica
2.Conceito de Algoritmos
3.Componentes de Algoritmos
3.1. Tipos de dados primitivos
3.2. Arquitetura da memria
3.3. Armazenamento de dados em memria
3.4. Variveis e constantes
3.5. Expresses
3.5.1. Expresses aritmticas
3.5.2. Expresses lgicas
3.5.3. Avaliao de expresses
3.6. Instrues primitivas
3.6.1. Atribuio
3.6.2. Entrada de dados
3.6.3. Sada de dados
3.7. Estruturas de controle
3.7.1. Estrutura Seqencial
3.7.2. Estrutura de Deciso
3.7.3. Estrutura de Repetio
3.7.4. Alinhamentos
3.8. Estruturas de dados
3.8.1. Variveis Compostas Homogneas
3.8.2. Variveis Compostas Heterogneas
3.9. Arquivos
4. Subalgoritmos
4.1. Funes
4.2. Procedimentos
4.3. Passagem de Parmetros
4.4. Escopo de variveis
Turbo Pascal
_________________________________________________________________________________________________Histria da
Lgica
HISTRIA D A LGICA
Aristteles e lgica silogstica (base da argumentao legal). Sofre deficincias da linguagem
natural
Os esticos e a introduo dos conectivos.
1700 - Leibniz e lgica simblica (proposional e predicados)
1800 - lgebra de Boole : leitura da lgica simblica para valores de um domnio e operadores
Foco atual : lgica de primeira ordem, lgica de segunda ordem, resoluo por padres.
Dijkstra: O objetivo da lgica o raciocnio automtico
McCarty: a principal ferramenta para a computao
9
___________________________________________________________________________________Introduo a Lgica
Propposicional
Preliminares
Proposio
Frase o elemento de comunicao que relaciona palavras entre si de modo a estabelecer uma
mensagem com sentido completo.
A linguagem natural nem sempre clara e precisa, sendo muito comum a ocorrncia de
ambigidades que geram dvidas sobre o significado do que se est falando.
Por isso, um dos objetivos da lgica estabelecer uma linguagem formal, onde se pode expressar
com clareza, preciso e emitir juzo de verdadeiro ou falso para determinadas frases.
Proposio um conceito primitivo (aceito sem definio). Mas nada impede que se estabeleam
as suas caractersticas para melhor entendimento.
Proposio uma frase declarativa (com sujeito e predicado), qual pode ser atribudo, sem
ambigidade, um dos valores lgicos: verdadeiro (V) ou falso (F).
Exemplos:
1) So proposies:
a) O Japo fica na frica.
b) O Brasil banhado pelo Oceano Atlntico.
c) 3 + 4 = 7
d) 5 > 8
2) No So proposies:
a) 3 + 4 No tem predicado
b) Onde voc vai? Sentena interrogativa.
c) Os estudantes jogam vlei. O sujeito no est claramente especificado e a
sentena no pode ser classificada em V ou F.
Proposio simples nica, ou seja, no contem nenhuma outra proposio como parte integrante.
Indicaremos tais proposies por letras minsculas de nosso alfabeto.
10
___________________________________________________________________________________Introduo a Lgica
Propposicional
Exemplos:
p: O Mxico fica na Amrica do Norte.
Q: O nmero 16 quadrado perfeito.
Proposio composta ou frmula formada por duas ou mais proposies relacionadas pelo
conectivos lgicos. Sero indicadas por letras maisculas de nosso alfabeto.
Notao:
P (p,q,r,...) indica que a proposio composta P formada pelas proposies simples p, q, r, ...
As proposies que fazem parte de uma proposio composta podem ser, elas mesmas,
proposies compostas.
Exemplos:
P: 1 + 2 = 3 e 2 1
Q: 1 + 2 = 3 ou 2 1
R: Se 1 + 2 = 3, ento 2 1
Conectivos Lgicos
Conectivos lgicos (ou operadores lgicos) so palavras ou expresses usadas para formar novas
proposies a partir de proposies.
Os conectivos lgicos so:
no
e
ou
se ..., ento ...
... se, e somente se ...
Valor Lgico
O valor de uma proposio chamado valor lgico. Os valores lgicos possveis so: verdade (V)
e falsidade (F).
Notao:
V (p) indica o valor lgico da proposio p. Assim, se a proposio p for verdadeira, V(p) = V;
se a proposio p for falsa, V(p) = F.
O valor lgico de uma proposio composta depende exclusivamente dos valores lgicos das suas
proposies componentes e dos conectivos lgicos que as ligam.
Exemplos:
a) p: O Sol verde. V(p) = F
b) q: Um hexgono tem seis lados. V(q) = V
11
___________________________________________________________________________________Introduo a Lgica
Propposicional
Princpio da No-Contradio
Uma proposio no pode ser simultaneamente verdadeira e falsa.
Tabela - Verdade
Tabela-verdade uma maneira prtica de dispor organizadamente os valores lgicos envolvidos
em uma proposio composta.
Para a proposio simples p, temos:
Tabela-Verdade de p
p
V
F
Para proposies compostas, veremos que o nmero dos componentes simples determina o nmero
de linhas das tabelas-verdade. A princpio, vamos construir as tabelas-verdade dispondo, apenas,
todas as possibilidades de valores lgicos das proposies componentes; os possveis valores
lgicos das proposies compostas estudados mais adiante.
Tabela-Verdade
p q
V F
12
___________________________________________________________________________________Introduo a Lgica
Propposicional
V V
F F
F V
Tabela-Verdade
p q r
V V V
V V F
V F V
V F F
F V V
F V F
F F V
F F F
Teorema:
O nmero de linhas distintas de uma tabela-verdade dado por 2n, onde n nmero de
proposies simples componentes e 2 representa o nmero de valores lgicos possveis (V ou
F).
Logo, a negao de uma proposio apresenta valor lgico oposto ao da proposio dada.
A tabela-verdade da operao negao :
p ~p
V F
F V
13
___________________________________________________________________________________Introduo a Lgica
Propposicional
Exemplos:
1) Dada a proposio:
p: O Sol um planeta.
A sua negao :
~ p: O Sol no um planeta.
2) Dada a proposio:
q: 2 + 3 = 5
a sua negao :
~ q: 2 + 3 5
3) Dada a proposio:
r: Rio de Janeiro um pas.
A sua negao :
~ r: Rio de Janeiro no um pas.
A negao pode, ainda, ser expressa de outras maneiras, como: ~ r: No verdade que Rio de
Janeiro um pas.
~ r: falso que Rio de Janeiro um pas.
Negar uma proposio p no apenas afirmar algo diferente do que p afirma, ou algo
com valor lgico diferente.
Exemplo:
A proposio O Sol uma estrela, que verdadeira, no negao da proposio
O Sol um planeta, que falsa.
Operao Conjuno ()
Duas proposies p e q podem ser combinadas pelo conectivo e para formar uma proposio
composta denominada conjuno das proposies originais.
Notao: p q (l-se: p e q)
Exemplos:
1) Dada as proposies:
p: Carlos estuda Matemtica.
Q: Carlos joga xadrez.
A conjuno :
14
___________________________________________________________________________________Introduo a Lgica
Propposicional
p q: Carlos estuda Matemtica e joga xadrez.
2) Dadas as proposies:
p: 2 > 0
q: 2 1
a conjuno :
p q: 2 > 0 e 2 1
O smbolo pode ser usado, tambm, para definir a interseco de dois conjuntos.
A B = {x / x A x B}
A conjuno de duas proposies (p q) verdadeira se, e somente se, cada componente for
verdadeiro.
Notao: p q (l-se: p ou q)
Exemplos:
15
___________________________________________________________________________________Introduo a Lgica
Propposicional
chove e faz frio.
2) O mesmo no acontece com a sentena Pedro passar nos exames ou repetir de ano, que s
verdadeira nos seguintes casos:
Pedro passar nos exames;
Pedro repetir de ano.
Mas falsa a hiptese:
Pedro passar nos exames e repetir de ano.
Exemplos:
1) Dadas as proposies:
p: Joo estudante.
Q: Joo mecnico.
A disjuno :
p q: Joo estudante ou mecnico.
2) Dadas as proposies:
p: 10 nmero primo
q: 10 nmero composto
a disjuno :
p q: 10 nmero primo ou nmero composto.
O smbolo pode ser usado, tambm, para definir a unio de dois conjuntos: A B = {x / x A
x B}
A disjuno inclusiva de duas proposies (p q) falsa se, e somente se, todas as componentes
forem falsas.
p q pq
V V V
V F V
F V V
F F F
Exemplos:
16
___________________________________________________________________________________Introduo a Lgica
Propposicional
Operao Condicional ( )
Duas proposies p e q podem ser combinadas pelo conectivo lgico se ..., ento ... para
formar uma nova proposio denominada condicional.
Notao: p q (l-se: se p, ento q).
Exemplo:
A proposio condicional Se chove, ento a rua fica molhada, tambm pode ser lida das
seguintes formas:
Chover uma condio suficiente para a rua ficar molhada.
A rua ficar molhada uma condio necessria quando chove.
No condicional p q, a proposio p chamada antecedente e a proposio q conseqente.
17
___________________________________________________________________________________Introduo a Lgica
Propposicional
Exemplos:
1) Dadas as proposies:
p: 1 litro = 1 dm3
q: 1 ml = 1 cm3
a condicional :
2) Dadas as proposies:
p: Chove
q: Faz frio
a condicional :
p q: Se chove, ento faz frio.
3) Dadas as proposies:
p: 5 < 2
q: 2 Z
a condicional :
p q: Se 5 < 2, ento 2 Z.
Operao Bicondicional ( )
Duas proposies p e q podem ser combinadas pelo conectivo lgico ... se, e somente se ... para
formar uma nova proposio denominada bicondicional.
18
___________________________________________________________________________________Introduo a Lgica
Propposicional
Exemplos:
1) Dadas as proposies:
p: Perereca se transforma em sapo.
Q: Sapo se transforma em prncipe.
A bicondicional :
p q: Perereca se transforma em sapo se, e somente se, sapo se transforma em prncipe.
2) Dadas as proposies:
p: Joo homem.
Q: Joo tem a voz grave.
A bicondicional :
p q: Joo homem se, e somente se, Joo tem a voz grave.
p q pq
V V V
V F F
F V F
F F V
a) Parnteses
Usar parnteses em todas as frmulas indicando assim a prioridade das subfrmulas.
19
___________________________________________________________________________________Introduo a Lgica
Propposicional
b) Tabela abaixo
Exerccios
Dadas as proposies a seguir, monte a expresso e a tabela verdade correspondente:
1.a)Est chovendo
2.b)Est frio
Tautologia
Uma proposio composta uma tautologia quando o seu valor lgico sempre verdade (V),
quaisquer que sejam os valores lgicos das proposies componentes.
Exemplos:
p: Chove
~p: No chove
(p ~p)
A tabela-verdade :
p ~p p ~p
V F V
F V V
Logo, (p ~p) uma tautologia.
Contradio
Uma proposio composta uma contradio quando o seu valor lgico sempre a falsidade (F),
quaisquer que sejam os valores lgicos das proposies componentes.
Exemplo:
p: Chove
~p: No chove
20
___________________________________________________________________________________Introduo a Lgica
Propposicional
(p ~ p)
A tabela-verdade :
p ~p p ~p
V F F
F V F
Contingncia
Uma proposio contingente (ou uma indeterminao) quando no uma tautologia e no uma
contradio.
Exerccios
Dadas as proposies abaixo, diga se ela uma Tautologia, Contradio ou Contingncia
1.(p ^ ~p) ^ p
2.(p ^ ~q) ^ p
3.(p ^ ~p) q
4.(q ^ ~p) ^ r
5.p ^ (q r) (p q)
Dadas as proposies compostas P e Q, diz-se que ocorre uma implicao lgica (ou relao de
implicao) entre P e Q quando a proposio condicional P Q uma tautologia.
OU
Uma frmula A consequncia lgica de uma frmula B, se e somente se para qualquer
interpretao em que B verdadeira A tambm verdadeira.
Exemplo:
21
___________________________________________________________________________________Introduo a Lgica
Propposicional
Mostrar que (p q) p.
p q pq (p q) p
V V V V
V F F V
F V F V
F F F V
Equivalncia Lgica ( )
Dadas as proposies compostas P e Q, diz-se que ocorre uma equivalncia lgica entre P e Q
quando suas tabelas-verdade forem idnticas.
OU
Uma frmula A equivalncia lgica de uma frmula B (A logicamente equivalente a B) se A
implicao lgica de B e B implicao lgica de A.
Exemplo:
Mostrar que (p q) (q p) e p q so equivalentes.
p q pq qp (p q) (q p) pq
V V V V V V
V F F V F F
F V V F F F
F F V V V V
Logo, (p q) (q p) p q.
Exemplo:
A B ~B
p q pq ~p ~q ~p ~q ~ (~ p ~ q) A~B
22
___________________________________________________________________________________Introduo a Lgica
Propposicional
V V V F F F V V
V F F F V V F V
F V F V F V F V
F F F V V V F V
Exerccios
Verifique se os pares de frmulas abaixo so equivalncias lgicas ou implicaes lgicas.
a) (p ^ q) e q
b) ~(p ^ q) e ( ~p v ~q)
c) (~p v q) e (p q)
23
____________________________________________________________________________________________Introduo a
Algoritmos
Introduo a Algoritmos
Noes de Lgica
O que Lgica?
Lgica trata da correo do pensamento. Como filosofia, ela procura saber por que pensamos
assim e no de outro jeito. Com arte ou tcnica, ela nos ensina a usar corretamente as leis do
pensamento.
Poderamos dizer tambm que a Lgica a arte de pensar corretamente e, visto que a forma mais
complexa do pensamento o raciocnio, a Lgica estuda ou tem em vista a correo do raciocnio.
Podemos ainda dizer que a lgica tem em vista a ordem da razo. Isto d a entender que a nossa
razo pode funcionar desordenadamente, pode pr as coisas de pernas para o ar. Por isso a Lgica
ensina a colocar Ordem no Pensamento.
Exemplos:
a) Todo o mamfero animal.
Todo cavalo mamfero.
Portanto, todo cavalo animal.
Exemplos:
Algoritmizando a Lgica
Algoritmos
O que Algoritmo?
Algoritmo uma seqncia de passos que visam atingir um objetivo bem definido.
Apesar de achar este nome estranho, algoritmos so comuns em nosso cotidiano, como, por
exemplo, uma receita de bolo. Nela est descrita uma srie de ingredientes necessrios, uma
seqncia de diversos passos - aes - a serem cumpridos para que se consiga fazer determinado
tipo de bolo - objetivo bem definido aguardado ansiosamente por todos. Para aprimorar nosso
conceito de algoritmo, vamos tornar mais evidente alguns outros conceitos, como, por exemplo, o
de ao:
pegue a escada;
posicione-a embaixo da lmpada;
busque uma lmpada nova;
suba na escada;
retire a lmpada velha;
coloque a lmpada nova.
____________________________________________________________________________________________Introduo a
Algoritmos
Involuntariamente, j seguimos uma determinada seqncia de aes que, representadas neste
algoritmo, fazem com que ele seja seguido naturalmente por pessoas, estabelecendo um padro de
comportamento.
assim tambm com os algoritmos escritos para computador, voc deve especificar todos os
passos, para que o computador possa chegar ao objetivo.
Por exemplo:
Dados os nmeros naturais(N)
0, 1, 2, 3, 4, 5, 6, ...
Nos dois exemplos acima, o primeiro possui repertrio bem definido mas no finito, enquanto
que o segundo tem um critrio de parada, ou seja, finito e descreve um padro de comportamento,
ou seja, temos um algoritmo.
Fases de um programa
Como tudo na terra, o programa tem um tempo de vida, chamado de ciclo de vida de um
programa.
Planejamento
a fase onde definimos o problema a ser resolvido utilizando um computador. Nesta fase
relacionamos a entrada e a sada do futuro programa, assim como a definio dos arquivos
auxiliares que ele venha a utilizar.
Projeto
a fase onde a resoluo do problema concebida. Neste ponto so definidos detalhes do
algoritmo, estrutura de dados empregados pelo programa.
Escrita
Consiste em codificar o programa em uma linguagem de programao apropriada.
____________________________________________________________________________________________Introduo a
Algoritmos
Depurao
Ao final da escrita estaremos com o programa quase pronto; mas ser que ele funciona? Esta a
fase onde depuramos o programa, ou seja, corrigimos os erros.
Manuteno
Passada a fase de depurao, o programa ser ento liberado para utilizao. Mas durante sua
vida til, um programa pode ser alterado; neste caso teremos que fazer novas mudanas, ou seja,
manuteno.
Programao Estruturada
um mtodo de projeto que tem por objetivo gerar um produto (programa), que tem certas
caractersticas desejveis, tais como:
1.correo - os programas devem antes de mais nada, dar respostas certas para entradas certas.
2.
3.complitude - os programas devem dar respostas inteligveis para entradas erradas.
4.
5.flexibilidade - os possveis erros de programao devem ser fceis de serem removidos, e as
alteraes devido a mudanas devem ser implementadas facilmente.
6.
7.eficincia - programas devem ser eficientes quanto aos recursos computacionais como economia
de memria, tempo de processamento.
8.
9.transparente - programas devem ser fceis de serem compreendidos.
Pseudo-linguagem
Escrever um algoritmo em portugus (portugol) visa principalmente facilitar o projetista, pensar
no problema e no na mquina.
Algoritmo X Qualidade
Todo algoritmo deve ser feito de maneira lgica e racional, visando principalmente a sua
eficincia e clareza.
Mtodo Cartesiano
Nosso principal objetivo enquanto programadores vencer a complexidade, o que mantm
clebre a frase de Descartes Dividir para Conquistar. Este mtodo consiste justamente em
atacar o problema abrangente dividindo-o em partes menores, a fim de torn-lo mais simples ou
especfico e, se necessrio, dividir novamente as partes no compreendidas.
Podemos esquematizar o seguinte procedimento (algoritmo) para o mtodo:
i. Dividir o problema em suas partes principais.
ii. Analisar a diviso obtida para garantir coerncia.
Iii. Se alguma parte no for bem compreendida, aplicar a ela o mtodo.
iv. Analisar o objeto para garantir entendimento e coerncia.
Planejamento Reverso
Processo utilizado que, a partir das sadas (informaes de resultado), procura desagregar,
desmontando a informao, a fim de atingir os dados de entrada, quando ento teramos (do fim
para o incio) todas as aes.
D.3. Montar uma tabela de deciso quando uma ou mais aes dependentes de um conjunto de
condies assumirem determinadas combinaes de valores.
Tabelas de deciso
Objetiva basicamente relacionar as aes que dependem de alguma condio com as prprias
condies, a fim de esclarecer e visualizar facilmente quais valores o conjunto de condies deve
____________________________________________________________________________________________Introduo a
Algoritmos
assumir para que se efetue sua respectiva ao.
E.Construir o algoritmo.
F.Executar o algoritmo.
Implica executar todas as aes descritas seguindo o fluxo de execuo estabelecido, verificando
se os resultados obtidos correspondem ao esperado quando da montagem do algoritmo, detectando
ento algum possvel erro no desenvolvimento deste. Essa atividade conhecida por teste de
mesa.
Exerccios
1.Um homem precisa atravessar um rio com um barco que possui capacidade de carregar apenas ele
mesmo e mais uma de suas trs cargas, que so: um lobo, um bode e um mao de alfafa. O que o
homem deve fazer para conseguir atravessar o rio sem perder suas cargas?
2.Suponha que voc possua um rob e queira faz-lo trocar uma lmpada, sendo que o mesmo foi
programado para obedecer aos seguintes comandos:
pegue <objeto>
pressione <objeto>
gire garras 180 no sentido horrio
gire garras 180 no sentido anti-horrio
mova <objeto> para <lugar>
desloque-se para <lugar>
e ainda capaz de:
perceber quando algum comando no pode mais ser executado
sentir alguma fonte de calor
Que ordens voc daria para que seu rob trocasse a lmpada?
3.Construa um algoritmo que mostre todos os passos que voc segue para escolher o tipo de roupa
com que vai sair, aps levantar, levando em considerao apenas o tempo (bom, nublado,
chuvoso) e a temperatura (quente, moderado, frio).
4.Elabore um algoritmo que mova trs discos de uma Torre de Hani, que consiste em trs hastes (a
- b - c), uma das quais serve de suporte para trs discos diferentes (1 - 2 - 3), os menores sobre os
maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja
colocado um disco maior sobre um menor. O objetivo transferir os trs discos para outra haste.
5.Trs jesutas e trs canibais precisam atravessar um rio; para tal, dispem de um barco com
capacidade para duas pessoas. Por medidas de segurana no se permite que em alguma margem
a quantidade de jesutas seja inferior de canibais. Qual a seqncia de passos que permitiria a
travessia com segurana?
6.Numa determinada noite, acontece uma queda de energia. Voc sabia que poderia encontrar uma
vela na gaveta da cozinha, um lampio embaixo da cama, fusveis de reserva no armrio da sala
e fsforos na estante da cozinha. Descreva a seqncia de passos que poderia ser utilizada para
diagnosticar e resolver o problema, que pode ser previsto em duas possibilidades:
a) o fusvel queimou;
b) a queda na estao da companhia eltrica.
________________________________________________________________________________________________Conceitos
Bsicos
Conceitos Bsicos
Tipos Primitivos
As informaes manipuladas pelo computador se apresentam atravs dos dados (informaes) e
das instrues (comandos).
Os dados possuem diferentes tipos, que podem ser classificados em quatro tipos primitivos:
Exerccios:
1) Classifique os dados de acordo com o seu tipo, sendo (I = inteiro, R = real, C = caracter, L =
lgico).
( ) 0 ( ) + 36 ( ) +3257 ( )F
( ) 1 ( ) + 32 ( ) +3257 ( ) 'F'
( ) 0,0 ( ) - 0,001 ( ) -0,0 ( ) .V.
( ) 0 ( ) + 0,05 ( ) .V. ( )F
( ) -1 ( ) + 3257 ( )V ( ) -32
( ) a ( ) abc ( ) -1,9E123 ( ) '0'
Arquitetura de Memria
De um modo geral, a memria do computador pode ser vista como um conjunto de clulas, cada
uma identificada unicamente por um nmero inteiro distinto, conhecido como endereo.
30
________________________________________________________________________________________________Conceitos
Bsicos
Memria
Formao de Identificadores
Podemos imaginar a memria como sendo um armrio repleto de gavetas, no qual as gavetas
seriam os locais fsicos responsveis por armazenar objetos; os objetos (que podem ser substitudos
ou no) seriam as informaes (dados), e as gavetas as variveis ou constantes.
Visto que na memria (armrio) existem inmeras variveis (gavetas), precisamos diferenci-las,
o que feito por meio de identificadores (etiquetas). Cada varivel (gaveta), no entanto, pode
guardar apenas uma informao (objeto) de cada vez, sendo sempre do mesmo tipo (material).
Os identificadores possuem certas regras para serem formados: Devem comear por um caracter
alfabtico;
5.Podem ser seguidos por mais caracteres alfabticos e/ou alfanumricos;
6.No permitido o uso de caracteres especiais ou espaos, com exceo do underscore( _ ).
Variveis e Constantes
So entidades que armazenam valores. A diferena entre variveis e constantes est na
possibilidade de alterao do valor armazenado, durante todo o tempo de durao do programa.
Constantes
Entendemos que uma informao constante quando no sofre nenhuma variao no decorrer do
tempo.
A declarao de constantes deve ser feita da seguinte maneira:
Const
um_cm = 1
nome = Joo
31
________________________________________________________________________________________________Conceitos
Bsicos
pi = 0,1415
Variveis
Entendemos que uma informao varivel quando sofre variaes durante o decorrer do tempo.
A declarao de variveis feita da seguinte maneira:
Variveis
dlar : real
endereo : caracter
existe : lgico
Exerccio
Assinale os identificadores vlidos:
1 - abc 2 - AB/C 3 - Joo 4 - [x]
Expresses
um conjunto de constantes e/ou variveis e/ou funes ligadas por operadores aritmticos ou
lgicos.
Expresses Aritmticas
Denominamos expresso aritmtica aquela cujos operadores so aritmticos e cujos operandos
so constantes e/ou variveis do tipo numrico (inteiro e/ou real).
Operadores Aritmticos
Chamamos de operadores aritmticos o conjunto de smbolos que representa as operaes
bsicas da matemtica:
Operadores Binrios:
1+ adio
1* multiplicao
1** potenciao
1- subtrao
1/ diviso
1// radicao
1mod resto da diviso
1div quociente da diviso inteira
Operadores Unrios:
32
________________________________________________________________________________________________Conceitos
Bsicos
1+ manut. sinal
1- manut. sinal
Exemplo:
9/4 = 2,25
9 div 4 = 2
9 mod 4 = 25
15 div 7 = 2
15 mod 7 = 1
Funes Matemticas
Alm das operaes aritmticas bsicas anteriormente citadas, podemos usar nas expresses
aritmticas algumas funces da matemtica:
1sen(x) - seno de x;
1cos(x) - coseno de x;
1tg(x) - tangente de x;
1arctg(x) - arco cuja tangente x;
1arccos(x) - arco cujo coseno x;
1arcsen(x) - arco cujo seno x;
1abs(x) - valor absoluto (mdulo) de x;
1int(x) - a parte inteira de um nmero fracionrio;
1frac(x) - a parte fracionria de x;
1ard(x) - transforma por arredondamento, um nmero fracionrio em inteiro;
1sinal(x) - fornece o valor -1, +1 ou 0 conforme o valor de x seja negativo, positivo ou
nulo;
1rnd(x) - valor randmico de x;
Onde x pode ser um nmero, varivel, expresso aritmtica ou tambm outra funo matemtica.
Prioridades
A hierarquia das expresses e funes aritmticas a seguinte:
Expresses Lgicas
Denominamos expresso lgica aquela cujos operadores so lgicos e/ou relacionais e cujos
33
________________________________________________________________________________________________Conceitos
Bsicos
operandos so relaes e/ou variveis e/ou constantes do tipo lgico.
Operadores Relacionais
Utilizamos os operadores relacionais para realizar comparaes entre dois valores de mesmo tipo
primitivo. Tais valores so representados por constantes, variveis ou expresses aritmticas.
Os operadores so:
1= igual a
1> maior que
1< menor que
1< > diferente de
1> = maior ou igual a
1< = menor ou igual a
Exemplos:
5=5 a = A
V F
Operadores Lgicos
Utilizaremos trs conectivos bsicos para a formao de novas proposies a partir de outras j
conhecidas. Os operadores lgicos so:
1e conjuno
1ou disjuno no exclusiva
1xou disjuno exclusiva
1no negao
Exemplo:
a) no 2**3 < 4**2 ou abs(int(15/-2)) < 10
no 8 < 16 ou abs(int(-7,5)) < 10
no F ou abs(-7) < 10
V ou 7 < 10
V ou V
V
34
________________________________________________________________________________________________Conceitos
Comandos de Atribuio
Bsicos
Um comando de atribuio permite-nos fornecer um valor a uma certa varivel, onde o tipo
dessa informao deve ser compatvel com o tipo da varivel, isto , somente podemos atribuir um
valor lgico a uma varivel capaz de comport-lo, ou seja, uma varivel declarada do tipo lgico.
O comando de atribuio uma seta apontando para a varivel ou dois pontos e o sinal de igual (
:= ):
Exemplo:
variveis
A, B : lgico;
X : inteiro;
A := V;
X := 8 + 13 div 5;
B := 5 = 3;
Entrada de Dados
Para que nossos algoritmos funcionem, em quase todos os casos precisaremos de informaes
que sero fornecidas somente aps o algoritmo pronto, e que sempre estaro mudando de valores,
para que nossos algoritmos recebem estas informaes, devemos ento construir entradas de dados,
pelas quais o usurio (pessoa que utilizar o programa) poder fornecer todos os dados necessrios.
A sintaxe do comando de entrada de dados a seguinte:
leia (varivel);
leia ("Entre com o valor de var1 e var 2: ", var1, var2);
Sada de Dados
Da mesma forma que nosso algoritmo precisa de informaes, o usurio precisa de respostas as
suas perguntas, para darmos estas respostas usamos um comando de sada de dados para informar a
resposta.
A sintaxe do comando de sada de dados a seguinte:
escreva (varivel);
escreva (cadeia de caracteres );
escreva (cadeia, varivel);
escreva (nmero, cadeia, varivel);
35
________________________________________________________________________________________________Conceitos
Blocos
Bsicos
Delimitam um conjunto de aes com uma funo definida; neste caso, um algoritmo pode ser
definido como um bloco.
Exemplo:
incio incio do algoritmo
seqncia de aes
36
_____________________________________________________________________________________________Estruturas de
Controle
Estruturas de Controle
Estrutura Seqencial
o conjunto de aes primitivas que sero executadas numa seqncia linear de cima para baixo
e da esquerda para direita, isto , na mesma ordem em que foram escritas. Como podemos perceber,
todas as aes devem ser seguidas por um ponto-e-vrgula (;), que objetiva separar uma ao de
outra.
Variveis;
(declarao de variveis);
incio
comando 1;
comando 2;
comando 3;
fim.
Exemplo:
Construa um algoritmo que calcule a mdia aritmtica entre quatro notas quaisquer fornecidas pelo
usurio.
37
_____________________________________________________________________________________________Estruturas de
Controle
Exerccios
Deciso Simples
Se <condio> ento
incio {bloco verdade}
C; {comando nico (ao primitiva)}
fim {bloco}
<condio> uma expresso lgica, que, quando inspecionada, pode gerar um resultado falso ou
verdadeiro.
Se V, a ao primitiva sob a clusula ser executada; caso contrrio, encerra o comando, neste
caso, sem executar nenhum comando.
Exemplo
variveis
altura1, altura2 : real
incio
leia (altura1, altura2);
se altura1 > altura2 ento
incio
escreva(Altura 1 maior);
fim {se}
fim. {algoritmo}
38
_____________________________________________________________________________________________Estruturas de
Controle
Exerccios
1.Faa um algoritmo que conhea as quatro notas bimestrais e, informe a mdia do aluno e se ele
passou; mdia para aprovao = 6.
2.Conhea trs nmeros inteiros, e informe qual o maior.
3.Encontrar o dobro de um nmero se este for par, se mpar encontrar o triplo.
Deciso Composta
Se <condio> ento
incio
C;
B;
fim;
seno
incio
A;
fim;
Exerccios
1.Construa um algoritmo que verifique a validade de uma senha fornecida pelo usurio. A senha
valida deve ser igual a LGICA.
2.Conhecendo-se trs nmeros, encontrar o maior.
3.Dados trs nmeros inteiros, coloc-los em ordem crescente.
4.
Seleo Mltipla
Escolha varivel
caso valor1 : comando1;
caso valor2 : comando2;
caso valor3 : comando3;
caso valor4 : comando4;
caso contrrio comando_F
fimescolha;
Esta estrutura evita que faamos muitos blocos se, quando o teste ser sempre em cima da
mesma varivel.
39
_____________________________________________________________________________________________Estruturas de
Controle
Exemplo:
se X = V1 ento incio
C1;
fim
seno incio
se X = V2 ento incio
C2;
fim;
seno incio
se X = V3 ento incio
C2;
fim
seno incio
se X = V4 ento incio
C3;
fim
seno incio
C4;
fim;
fim;
fim;
fim;
40
_____________________________________________________________________________________________Estruturas de
Controle
Exerccio
1.Numa festinha de fim de curso, foi feito um sorteio para distribuir o dinheiro restante em caixa.
Dez pessoas foram sorteadas com direito a tentar a sorte mais uma vez, da seguinte forma:
Deveriam apanhar uma bola numerada de 0 a 9 e conforme o algarismo sorteado o prmio seria:
se w > 0 ou z < 7
x = (5w + 1) / 3;
t = (5z + 2);
caso contrrio
x = (5z + 2);
t = (5w + 1) / 3;
Estruturas de Repetio
Estas estruturas possibilitam que nosso algoritmo seja muito mais enxuto e fcil de se programar.
41
_____________________________________________________________________________________________Estruturas de
Controle
Imagine um algoritmo de fatorial de 8:
variveis
fat : real;
incio
fat := 8 * 7;
fat := fat * 6 ;
fat := fat * 5;
fat := fat * 4;
fat := fat * 3;
fat := fat * 2;
escreva(fat);
fim.
O resultado ser o fatorial com certeza mas, imagine se fosse o fatorial de 250. Ou ainda, o
usurio deseja fornecer o nmero e o algoritmo deve retornar o fatorial, qual nmero ser digitado?
Quantas linhas devero ser escritas?
Para isso servem as estruturas de repetio, elas permitem que um determinado bloco de
comandos seja repetido vrias vezes, at que uma condio determinada seja satisfeita.
Exerccio
1.Construa o algoritmo de clculo do fatorial com a estrutura Repita .. At.
Exerccio
1.Construa o algoritmo de clculo do fatorial com a estrutura Enquanto .. Faa.
Exerccio
1.Construa o algoritmo de clculo do fatorial com a estrutura Para .. Passo.
2.Analise o desempenho dos trs algoritmos de fatorial feitos e responda qual a melhor estrutura a
se usar.
3.Dado um conjunto de nmeros inteiros, obter a soma e a quantidade de elementos.
4.Encontrar os N primeiros termos de uma progresso geomtrica, onde o primeiro termo e a razo
so conhecidos.
5.Idem ao exerccio 1, calculando tambm a soma dos nmeros negativos, positivos, pares e
mpares.
6.Determinar o menor entre um conjunto de nmeros inteiros fornecidos um de cada vez.
7.A converso de graus Fahrenheit para centgrados obtida pela frmula C = 5/9 (F-32). Escreva
um algoritmo que calcule e escreva uma tabela de graus centgrados em funo de graus
Fahrenheit que variem de 50 a 150 de 1 em 1.
8.Uma rainha requisitou os servios de um monge e disse-lhe que pagaria qualquer preo. O monge,
necessitando de alimentos, indagou rainha sobre o pagamento, se poderia ser feito com gros
de trigo dispostos em um tabuleiro de xadrez, de tal forma que o primeiro quadro deveria conter
apenas um gro e os quadros subseqentes, o dobro do quadro anterior. A rainha achou o
trabalho barato e pediu que o servio fosse executado, sem se dar conta de que seria impossvel
efetuar o pagamento. Faa um algoritmo para calcular o nmero de gro que o monge esperava
receber.
9.Prepare um algoritmo que calcule o valor de H, sendo que ele determinado pela srie
10.H = 1/1 + 3/2 + 5/3 + 7/4 + ... + 99/50.
11.Elabore um algoritmo que determine o valor de S, onde:
12.S = 1/1 - 2/4 + 3/9 - 4/16 + 5/25 - 6/36 ... - 10/100
13.Escreva uma algoritmo que calcule e escreva a soma dos dez primeiros termos da seguinte srie:
43
_____________________________________________________________________________________________Estruturas de
Controle
2/500 - 5/450 + 2/400 - 5/350 + ...
14.Construa um algoritmo que calcule o valor aproximado de PI utilizando a frmula
15.PI = 3//(H*32), onde: H = 1/1**3 - 1/3**3 + 1/5**3 - 1/7**3 + 1/9**3 - ...
16.Fulano tem 1,50 metro e cresce 2 cm pr ano, enquanto Ciclano tem 1,10 metro e cresce 3 cm
por ano. Construa um algoritmo que calcule e imprima quantos anos sero para que Ciclano seja
maior que Fulano.
17.Em uma eleio presidencial, existem quatro candidatos. Os votos so informados atravs de
cdigo. Os dados utilizados para a escrutinagem obedecem seguinte codificao:
1, 2, 3, 4 = voto para os respectivos candidatos;
5 = voto nulo;
6 = voto em branco;
Elabore um algoritmo que calcule e escreva: total de votos para cada candidato;
total de votos nulos;
total de votos em branco;
percentual dos votos em branco e nulos sobre o total;
situao do candidato vencedor sobre os outros trs, no caso, se ele obteve ou no mais votos
que os outros somados;
Como finalizador do conjunto de votos, tem-se o valor 0.
13.Calcule o imposto de renda de um grupo de contribuintes considerando que os dados de cada
contribuinte, nmero do CPF, nmero de dependentes e renda mensal so valores fornecidos
pelo usurio. Para cada contribuinte ser feito um desconto de 5% de salrio mnimo por
dependente.
14.Realizou-se uma pesquisa para determinar o ndice de mortalidade infantil em um certo perodo.
Construa um algoritmo que leia o nmero de crianas nascidas no perodo e, depois, num
nmero indeterminado de vezes, o sexo de uma criana morta (masculino, feminino) e o nmero
de meses da vida da criana.
15.Suponha que exista um prdio sem limites de andares, ou seja, um prdio infinito, onde existam
trs elevadores, denominados A, B e C. Para otimizar o sistema de controle dos elevadores, foi
realizado um levantamento no qual cada usurio respondia:
44
_____________________________________________________________________________________________Estruturas de
Controle
45
______________________________________________________________________________________________Estruturas de
Dados
Estrutura de Dados
Mesmo possuindo tipos bsicos para as declaraes de variveis, voc deve ter notado que eles
muitas vezes no so suficientes para representar toda e qualquer informao que possa surgir.
Portanto, em muitas situaes esses recursos so escassos, o que poderia ser suprido se existissem
mais tipos de informao ou, ainda melhor, se esses tipos pudessem ser construdos, criados,
medida que se fizessem necessrios.
Agregados Homogneos
Da mesma forma que na Teoria dos Conjuntos, uma varivel pode ser interpretada como um
elementos e uma estrutura de dados como um conjunto. As variveis compostas homogneas so
formadas de variveis com o mesmo tipo primitivo.
Os agregados homogneos correspondem a posies de memria, identificadas por um mesmo
nome, referenciadas por um ndice, e que possuem um mesmo tipo.
Declarao
Tipo
IDENTIFICADOR = vetor [LI .. LF] de <tipo>;
variveis
varivel : IDENTIFICADOR;
Primeiramente criaremos um novo tipo e lhe daremos um nome, aps isso podemos us-lo para
declarar as variveis que sero utilizados dentro do programa.
46
______________________________________________________________________________________________Estruturas de
Dados
Exemplo:
Utilizaremos o exerccio de mdia das notas:
tipo
v_notas = vetor [1..4] de real;
variveis
notas : v_notas;
ndice: inteiro;
mdia: real;
incio
mdia <__ 0;
Exerccio
1.Elabore um algoritmo que leia, some e imprima o resultado da soma, entre dois vetores inteiros de
50 posies.
2.Construa um algoritmo que preencha um vetor de 100 elementos inteiros colocando 1 na posio
correspondente a um quadrado perfeito e 0 nos demais casos.
Agregados Multidimensionais
Suponha que, alm do acesso pelo elevador at um 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 - estruturas unidimensionais. Uma estrutura que precisasse de mais de um ndice,
como no caso especfico, dividido em apartamentos, seria ento denominada estrutura composta
multidimensional (agregado), neste caso, de duas dimenses (bidimensional).
Declarao
Tipo
IDENTIFICADOR = matriz [LI1 .. LF1, LI2 .. LF2, .., LIN .. LFN] de <tipo>;
47
______________________________________________________________________________________________Estruturas de
Dados
variveis
varivel : IDENTIFICADOR;
Onde:
LIN, LFN - so os limites dos intervalos de variao dos ndices da varivel, onde cada par de
limites est associado a um ndice. O nmero de dimenses igual ao nmero de intervalos;
<tipo> - qualquer um dos tipos primitivos, ou ainda um outro tipo que pode ser construdo, o
qual veremos adiante.
Primeiramente criaremos um novo tipo e lhe daremos um nome, aps isso podemos us-lo para
declarar as variveis que sero utilizados dentro do programa.
Exemplo:
Construa um algoritmo que efetue a leitura, a soma e a impresso do resultado, entre duas
matrizes inteiras que comportem 25 elementos;
tipo
m = matriz [1 .. 5, 1 .. 5] de inteiros;
variveis
ma, mb, mc : m;
i,j : inteiro;
incio
i <__ 1;
enquanto i <= 5 faa
incio
j < 1;
enquanto j <= 5 faa
incio
conhea (ma[i,j] , mb[i,j]); mc[i,j] < ma[i,j] + mb[i,j]; j < j + 1;
fim;
i < i + 1;
fim;
j < 1;
enquanto j <= 5 faa
incio
i < 1;
enquanto i <= 5 faa
incio
informe (mc[i,j]);
i < i + 1;
fim;
48
______________________________________________________________________________________________Estruturas de
Dados
j < j + 1;
fim;
fim.
Exerccios
1.O tempo que um determinado avio leva para percorrer o trecho entre duas localidades distintas
est disponvel atravs da seguinte tabela:
A B C D E F G
A XX 02 11 06 15 11 01
B 02 XX 07 12 04 02 15
C 11 07 XX 11 08 03 13
D 06 12 11 XX 10 02 01
E 15 04 08 10 XX 05 13
F 11 02 03 02 05 XX 14
G 01 15 13 01 13 14 XX
a) Construa um algoritmo que leia a tabela acima e informe ao usurio o tempo necessrio para
percorrer duas cidades por ele fornecidas, at o momento em que ele fornecer duas cidades iguais
(fonte e destino).
b) Elabore um algoritmo que imprima a tabela sem repeties (apenas o tringulo superior ou o
tringulo inferior).
c) Desenvolva um algoritmo que permita ao usurio informar vrias cidades, at inserir uma cidade
0, e que imprima o tempo total para cumprir todo o percurso especificado entre as cidades
fornecidas.
d) Escreva um algoritmo que auxilie um usurio a escolher um roteiro de frias, sendo que o usurio
fornece quatro cidades: a primeira sua origem, a ltima seu destino obrigatrio, e as outras duas
caracterizam a cidade de descanso (no meio da viagem). Por isso, o algoritmo deve fornecer ao
usurio qual das duas viagens (origem para descanso, descanso para destino) seja o mais prximo
possvel.
Agregados Heterogneos
J sabemos que um conjunto homogneo de dados composto por variveis do mesmo tipo
primitivo; porm, se tivssemos um conjunto em que os elementos no so do mesmo tipo, teramos
ento um conjunto heterogneo de dados.
Registros
Uma das principais estruturas de dados o registro. Para exemplificar, imagine uma passagem
de nibus, que formada por um conjunto de informaes logicamente relacionadas, porm de tipos
diferentes, tais como: nmero da passagem (inteiro), origem e destino (caracter), data (caracter),
horrio (caracter), poltrona (inteiro), distncia (real), fumante (lgico), que so subdivises
(elementos de conjunto) do registro, tambm chamadas de campos. Logo, um registro composto
por campos que so partes que especificam cada uma das informaes.
49
______________________________________________________________________________________________Estruturas de
Dados
Nmero:___________ Fumante:____________
De:__________________________________ Para:__________________________
Data: ____ / _____ / ______ Horrio: ______ : ______
Poltrona:________________ Distncia:______________________
Declarao
Tipo IDENTIFICADOR = registro
campo1 : tipo;
campo2 : tipo;
" "
campoN : tipo;
fimregistro;
variveis
varivel : IDENTIFICADOR;
Onde:
IDENTIFICADOR : representa o nome associado ao tipo registro construdo.
Campo1, campo2, campoN: so os nomes associados a cada campo do registro.
Da mesma forma que na declarao de vetores e matrizes, primeiramente devemos criar um tipo,
para ento declararmos as variveis desse tipo.
Exemplo:
Conhecer um passageiro e imprimir.
Tipo
RegPassagem = registro
nmero, poltrona : inteiro;
origem, destino, data, horrio : caracter; distncia : real;
fumante : lgico;
fimregistro;
variveis
passagem : RegPassagem;
incio
leia(passagem.nmero, passagem.poltrona);
leia(passagem.origem, passagem.destino);
leia(passagem.data, passagem.horrio);
leia(passagem.distncia, passagem.fumante);
escreva(passagem.nmero, passagem.poltrona);
escreva(passagem.origem, passagem.destino);
escreva(passagem.data, passagem.horrio);
escreva(passagem.distncia, passagem.fumante);
fim.
50
______________________________________________________________________________________________Estruturas de
Dados
Conjunto de Registros
Nas estruturas compostas heterogneas (vetores e matrizes) utilizamos tipos de dados primitivos
como sendo os elementos dessas estruturas. Agora utilizaremos 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 rodovirias de todos lugares
de um nibus, utilizaramos um registro diferente para cada poltrona, e para agrupar todos eles
utilizaramos um conjunto desses registros.
Como possumos 44 lugares num nibus, numerados seqencialmente de 1 at 44, podemos,
para uni-los, criar um vetor no qual cada posio um elemento de tipo construdo registro
(passagem).
Como possumos um vetor composto por registros, no podemos declara esse vetor sem antes ter
declarado seus elementos; devemos ento declarar primeiro o tipo construdo registro e depois o
vetor.
Tipo
RegPassagem = registro
nmero, poltrona : inteiro;
origem, destino, data, horrio : caracter; distncia : real;
fumante : lgico;
fimregistro;
VetPassagem = vetor [1 .. 44] de RegPassagem;
variveis
passagem : RegPassagem;
vetor : VetPassagem;
incio
para i < 1 at 44 faa incio
conhea (vetor[i].nmero);
conhea (vetor[i].poltrona);
conhea (vetor[i].origem);
conhea (vetor[i].destino);
conhea (vetor[i].data);
conhea (vetor[i].horrio);
conhea (vetor[i].distncia);
conhea (vetor[i].fumante);
fim;
fim.
51
______________________________________________________________________________________________Estruturas de
Dados
Exerccio
1.Defina um registro para cheque bancrio.
2.Construa um algoritmo que, usando um campo saldo de um registro conta bancria, imprima um
relatrio dos cheques sem fundos.
3.Uma determinada biblioteca possui obras de cincias exatas, cincias humanas e cincias
biomdicas, totalizando 1.500 volumes, sendo 500 volumes de cada rea. O proprietrio resolveu
informatiz-la e para tal agrupou as informaes sobre cada livro do seguinte modo:
Onde:
Proprietrio:______________________________________ Combstivel:___________
Modelo:____________________________________ Cor:_______________________
No chassi:___________________ Ano:______________ Placa:____________________
Combustvel pode ser lcool, diesel ou gasolina;
Placa possui os trs primeiros valores alfabticos e os quatro restantes numricos.
Sabendo-se que o nmero mximo de veculos da cidade de 5.000 unidades e que os valores no
precisam ser lidos.
a) Construa um algoritmo que liste todos os proprietrios cujos carros so do ano de 1980 e
acima e que sejam movidos a diesel.
b) Escreva um algoritmo que liste todas as placas que comecem com a letra A e terminem com 0,
2, 4 ou 7 e seus respectivos proprietrios.
c) Elabore um algoritmo que liste o modelo e a cor dos veculos cujas placas possuem como
segunda letra uma vogal e cuja soma dos valores numricos fornece um nmero par.
d) Construa um algoritmo que permita a troca do proprietrio com o fornecimento do nmero do
chassi apenas para carros com placas que no possuem nenhum dgito igual a zero.
1 1 1 1 1 1
1 2 2 2 2 1
1 2 3 3 2 1
1 2 3 3 2 1
1 2 2 2 2 1
1 1 1 1 1 1
53
__________________________________________________________________________________________Procedimentos e
Funes
Procedimentos e Funes
Ao desenvolvermos um programa, muitas vezes precisamos utilizar uma pequena rotina
repetidamente em mais de um local do mesmo, quando fazemos isso, estamos ocupando mais
espao de memria, aumentando a complexidade do algoritmo, aumentando o tamanho do
programa. Para evitar tudo isso, podemos modularizar o programa, isto , criar procedimentos e
funes (mdulos) uma vez apenas, e cham-los repetidamente de vrias partes do programa, por
um nome que os identifica.
Procedimentos
Aqui aplicamos efetivamente o termo Dividir para Conquistar, quando nos depararmos com
um problema, e formos resolv-lo por meio de algoritmos, devemos dividi-lo em vrios problemas
menores, se necessrio, dividimos novamente em vrios outros problemas menores, resolvendo
estes problemas estaremos conseqentemente resolvendo nosso problema inicial.
Como exemplo, faremos um algoritmo que imprima o extenso do nmero 1 ou 2.
escreva
num : inteiro;
Procedimento mostre_um;
incio
escreva(Um);
fim;
Procedimento mostre_dois;
incio
escreva(Dois);
fim;
incio
Repita
leia(num);
se num = 1 ento
mostre_um;
se num = 2 ento
mostre_dois;
At num > = 2;
fim.
54
__________________________________________________________________________________________Procedimentos e
Funes
O que acontece neste algoritmo o seguinte, os blocos que comeam com a palavra
Procedimento, so mdulos que somente sero executados se chamados do principal ou outro
mdulo do algoritmo. Sendo assim o primeiro comando a ser executado o comando leia, dentro da
estrutura de repetio Repita, que ir conhecer o valor da varivel num, o valor da varivel ento
testado, se for igual a 1 o procedimento mostra_um chamado, quando isto acontece os comandos
que esto contidos dentro do procedimento, neste caso somente o comando informe. Quando a
ultima linha do procedimento executada e encontra-se o comando fim, a execuo do algoritmo
volta exatamente ao comando aps a chamada do procedimento, neste caso, aps a linha mostra_um
ou mostra_dois, executado o teste da estrutura de repetio, se num for maior que 2 o algoritmo
encerrado, caso contrrio, o algoritmo executado novamente a partir do comando leia.
Escopo de Variveis
Olhe para estes quadros e imagine que seja um algoritmo. O quadro maior o mdulo principal,
dentro deles existem mais quatro quadros (1, 2, 3, 4) que so os mdulos secundrios
(procedimentos, funes), sendo que ainda temos o quadro 2 dentro do quadro 1 - isto significa que
o quadro 2 s pode ser chamado pelo quadro 1.
Observe que as variveis K e Y so globais, elas so visveis a todos os mdulos; as variveis J e
H so visveis apenas ao quadro 1 onde esto declaradas, e ao quadro 2 que est declarado dentro do
quadro 1; as variveis O e P so visveis somente ao quadro 2; as variveis O, J, Y so visveis
somente ao quadro 3; e as variveis O, J, L, H, I e A so visveis somente ao quadro 4.
Note qua a varivel Y dentro do quadro 3 no a mesma varivel Y do quadro principal, ento,
se Y usado dentro de 3, o Y mais interno que ser usado. Isto uma prtica desaconselhvel por
tornar o programa confuso e com tendncia a comportamentos indesejados.
Parmetros
Agora imagine se pudssemos mandar mensagens aos procedimentos, isto , se pudssemos
passar parmetros aos procedimentos, desta forma eles ganhariam muito mais poder e
generalizao. Vamos usar o exemplo anterior e ver como podemos diminuir o nmero de
procedimentos.
55
__________________________________________________________________________________________Procedimentos e
Funes
Variveis
num : inteiro;
Procedimento mostre_num (numero : caracter); incio
escreva(numero);
fim;
incio
Repita
leia(num);
se num = 1 ou num = 2 ento mostre_num(num);
At num > = 2;
fim.
Observe como nosso algoritmo ficou menor e mais legvel, conseguimos isto com a passagem de
parmetros para o procedimento.
Funes
Como voc pde perceber, os procedimentos so blocos de comandos que executam
determinada tarefa, mas no retornam nenhum valor, ao contrrio das Funes, que so
especificamente desenvolvidas para retornarem valores aos mdulos que as chamam.
Como exemplo vamos construir um algoritmo que retorne o valor de uma expresso
matemtica:
variveis
X : real;
incio
leia (X);
X < expresso;
escreva(X);
fim.
Procedimento informe_teste;
variveis
i : inteiro;
mens : caracter;
incio
leia( i );
teste (mens, i );
escreva( mens );
fim;
incio
informe_teste;
fim.
Exerccios
1.Reconstrua o algoritmo de clculo fatorial, modularizando com procedimento e funo.
2.Faa um algoritmo que conhea as quatro notas bimestrais e, informe a mdia do aluno e se ele
passou; mdia para aprovao 6.
57
__________________________________________________________________________________________Procedimentos e
Funes
3.A converso de graus Fahrenheit para centgrados obtida pela frmula C = 5/9 (F-32). Escreva
um algoritmo que calcule e escreva uma tabela de graus centgrados em funo de graus
Fahrenheit que variem de 50 a 150 de 1 em 1.
4.Uma rainha requisitou os servios de um monge e disse-lhe que pagaria qualquer preo. O monge,
necessitando de alimentos, indagou rainha sobre o pagamento, se poderia ser feito com gros
de trigo dispostos em um tabuleiro de xadrez, de tal forma que o primeiro quadro deveria conter
apenas um gro e os quadros subseqentes, o dobro do quadro anterior. A rainha achou o
trabalho barato e pediu que o servio fosse executado, sem se dar conta de que seria impossvel
efetuar o pagamento. Faa um algoritmo para calcular o nmero de gro que o monge esperava
receber.
Recursividade
Um objeto recursivo aquele que consiste parcialmente ou definido em termos de si prprio.
Ex.: Nmeros naturais, estruturas em rvores, certas funes matemticas, fatorial, fibonacci, etc...
A ferramenta para codificar programas de modo recursivo o subalgoritmo.
Recursividade Direta
Quando um subalgoritmo (procedimento ou funo) possuir uma referncia explcita a si prprio
atravs de seu nome.
Exemplo:
Procedimento A;
Incio
:
A;
:
Fim;
Recursividade Indireta
Quando um subalgoritmo possuir uma chamada a um segundo subalgoritmo e este possuir uma
referncia direta ou indireta ao primeiro.
Exemplo:
Procedimento A; Procedimento B;
Incio Incio
: :
B; A;
: :
Fim Fim
Deve-se declarar variveis, constantes e tipos como locais, pois a cada chamada recursiva do
subalgoritmo um novo conjunto de variveis locais criado, como tambm para os parmetros
passados. (sempre por valor).
58
__________________________________________________________________________________________Procedimentos e
Funes
Em uma chamada recursiva deve-se considerar a possibilidade da ocorrncia da no terminao
dos clculos, considerando-se ento o critrio de parada.
Evitar nveis de recurso muito profundos, devido a ocupao de memria (variveis locais, estado
corrente do processamento, valor de retorno, valores de parmetros de entrada e sada).
Um algoritmo recursivo empregado quando o problema ou os dados a que se destina for definido
de forma recursiva.
prefervel evitar o uso da recurso sempre que existir uma soluo no recursiva (interativa) para
o problema.
Nem sempre um programa recursivo rpido.
O mtodo para transformar um programa no-recursivo num programa recursivo a criao de uma
pilha definida pelo usurio.
A tcnica de recurso consiste em transformar uma parte do programa, que ser alguma estrutura de
repetio.
No recursivo Recursivo
i := N Funo Dec (i : Inteiro);
Enquanto i > 1 Faa Incio
i := i-1; Se i = 1 ento Dec := i;
fimenquanto; seno
inicio
i:= i-1;
Dec ( i )
fim;
fim;
59
_______________________________________________________________________________________________________Arquiv
os
Arquivos
Chegamos em um ponto, onde voc com certeza j percebeu que totalmente intil ficar fazendo
algoritmos, algoritmos e algoritmos, se no podemos gravar nossas informaes. Imagine uma
biblioteca informatizada, onde todos os livros e scios esto cadastrados; impossvel cadastrar
tudo, toda vez que liga-se o computador; da mesma forma que impossvel manter o computador
24 horas por dia ligado para no perder as informaes.
Para evitar isso, ns vamos aprender a usar os arquivos, onde poderemos guardar nossas
informaes, e recuper-las a qualquer momento, mesmo desligando o computador.
Para voc ter uma idia de como tratamos os arquivos em computadores, faremos uma
comparao com um arquivo de ferro:
Quanto estrutura: Imagine um arquivo de ferro, com uma gaveta apenas; dentro do arquivo
existem vrias fichas numeradas, estes nmeros so as posies no arquivo; e todas as fichas
contm informaes padres, estas informaes so os registros.
Quanto manipulao: Logicamente para voc operar um arquivo, primeiramente ele deve existir,
voc ento compra este arquivo - no nosso caso criamos o arquivo. Toda a vez que voc ir guardar
(gravar) ou pegar (ler) uma ficha (registro em determinada posio), voc deve abrir o arquivo.
Cuidado, se o arquivo j estiver aberto, no tente abr-lo novamente. Aps aberto o arquivo, se vai
guardar uma nova ficha, voc deve numer-la na sequencia das fichas j existentes. Se vai pegar
uma ficha, voc deve achar o nmero da ficha que quer pegar. Depois de feito isto, no esquea de
fechar o arquivo.
Definio
Um arquivo um conjunto de registros (ou seja, uma estrutura de dados), no qual cada registro
no ocupa uma posio fixa dentro da estrutura, no possuindo portanto tamanho pr estabelecido.
Os registros so formados por unidades de informao, denominadas campos. Este conjunto de
registros armazenado em um dispositivo de memria secundria (disco).
Seqencial
Na organizao seqencial os registros so lidos ou gravados no arquivo em ordem
seqencial. Deste modo, a localizao de qualquer um dos registros armazenados
indeterminada, ou seja, para acessar um registro especfico necessrio obedecer a sua
ordem de gravao, o que implica percorrer todos os registros que o antecedem.
Direta ou Aleatria
Na organizao direta, o acesso aos registros feito em ordem aleatria, podendo-se acessar um
registro especfico diretamente, sem se preocupar com os seus antecessores, utilizando neste
acesso o mesmo campo que determinou sua posio no arquivo no instante da gravao. Num
60
_______________________________________________________________________________________________________Arquiv
os
arquivo de acesso direto, os registros no ficam localizados na ordem em que so gravados, o
que leva a entender que cada registro possui um lugar reservado para ser armazenado.
Podemos comparar o trabalho com arquivos seqenciais com a utilizao de fitas K7. E o
trabalho com arquivos diretos com a utilizao de LP's
Declarao
Sendo que um arquivo um conjunto de registros, necessrio definir o registro que compe o
arquivo primeiro, para somente ento, definir o arquivo.
Tipo
Ficha = Registro
cdigo : inteiro;
nome : caracter;
Fim registro;
ArqCli = Arquivo de Ficha;
Varivel
cliente : arq-cli;
Reg_cli : Ficha;
Manipulao de Arquivos
Generalizando, pode-se admitir que todo arquivo possui maneiras semelhantes de ser
manipulado, independentemente de como foi concebido.
Abertura
Todo arquivo deve ser aberto para que as informaes contidas, possam ser recuperadas.
Isto , atravs do comando Abra (nome-do-arquivo).
Ex.: Abra (clientes);
Aps a execuo do comando abertura, o registro que estar a disposio ser sempre o que est
na primeira posio.
Fechamento
Aps o uso do arquivo, necessrio que ele seja fechado, pois o seu contedo poder estar
exposto a agentes externos que podem danificar sua integridade. Para tal utiliza-se o comando
Feche (nome-do-arquivo);
Ex.: Feche (clientes);
Leitura
Num arquivo no se deve retirar informaes, pois se assim fosse este se tornaria vazio
61
_______________________________________________________________________________________________________Arquiv
os
rapidamente. Deve-se ter em mente que, um arquivo no deve ser consumido e sim consultado,
e para isso, deve-se copiar o contedo desejado para um outro registro na memria, utilizando o
comando Leia (nome-do-arquivo, varivel);
Ex.: Leia (clientes, reg_cli);
Gravao
Para a gravao de um registro no arquivo, faz-se necessrio que este possua estruturao de
campos idntica a dos registros j armazenados, e ao mesmo tempo esteja completamente
preenchido. Para tal, utiliza-se o comando Grave (nome-do-arquivo, varivel);
Ex.: Grave (clientes, reg_cli);
Avance (nome-arquivo);
Posiciona o arquivo na posio consecutiva, ou seja, no prximo registro. Se utilizado
repetidas vezes permite percorrer o arquivo passando por uma srie consecutiva de registros.
Ex.: Avance (clientes);
FDA (nome-arquivo)
Esta instruo retorna verdadeiro quando a posio corrente o fim do arquivo e falso caso
contrrio.
Ex.:
Enquanto no FDA (clientes) Faa
Leia (clientes, reg_cli);
Avance (clientes);
Fim enquanto
62
_______________________________________________________________________________________________________Arquiv
os
Posicione (clientes, reg_cli.posio);
Grave (clientes, reg_cli);
Feche (clientes);
Estudo de Concepes
Apesar de um arquivo ser concebido direta ou seqencialmente, isso no obriga necessariamente
que ele seja sempre manipulado como foi concebido. Em outras palavras, um arquivo concebido
randomicamente pode ser acessado seqencialmente, sob certas condies especiais, assim como
um arquivo seqencial pode ser acessado diretamente se for necessrio.
Exerccios:
1.Faa um algoritmo que cadastre as informaes sobre as confeces de um loja. Cada registro ter
a seguinte forma: Cdigo, descrio, tamanho, cor e quantidade.
2.Utilizando o arquivo do algoritmo anterior, elabore uma consulta que poder ser feita pela
descrio ou pelo tamanho.
3.Crie outros trs arquivos que armazenaro os registros com tamanhos P, M e G, respectivamente,
lidos do arquivo original.
63