Sie sind auf Seite 1von 60

_______________________________________________________________________________________________________SUM

RIO






SENAI - SERVIO NACIONAL DE APRENDIZAGEM INDUSTRIAL
C.F.P. DE PONTA GROSSA











C CU UR RS SO O T T C CN NI IC CO O E EM M I IN NF FO OR RM M T TI IC CA A
D DI IS SC CI IP PL LI IN NA A: : T T C CN NI IC CA AS S D DE E P PR RO OG GR RA AM MA A O O I I






















Prof. Ademir Mazer Jr

FI EP
CI EP
SESI
SENAI
I EL

_______________________________________________________________________________________________________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
Introduo a Algoritmos .......................................................................... 23
Noes de Lgica .................................................................................................... 23
Algoritmizando a Lgica ......................................................................................... 24
Fases de um programa ............................................................................................. 25
Planejamento ............................................................................................................................. 25
Projeto ....................................................................................................................................... 25
Escrita ....................................................................................................................................... 25
Depurao ................................................................................................................................ 26
Manuteno ............................................................................................................................... 26
Programao Estruturada ........................................................................................ 26
Pseudo-linguagem ................................................................................................... 26
Algoritmo X Qualidade ........................................................................................... 26
Mtodo para construo de algoritmos ................................................................... 27
Mtodo Cartesiano .................................................................................................................... 27
Planejamento Reverso ............................................................................................................... 27
Tabelas de deciso .................................................................................................................... 27
Exerccios ............................................................................................................................. 28
_______________________________________________________________________________________________________SUM
RIO

Conceitos Bsicos ...................................................................................... 29
Tipos Primitivos ...................................................................................................... 29
Exerccios: ............................................................................................................................ 29
Arquitetura de Memria .......................................................................................... 29
Memria .................................................................................................................................... 30
Armazenamento de dados na memria ................................................................... 30
Formao de Identificadores ................................................................................... 30
Constantes ................................................................................................................................. 30
Variveis ................................................................................................................................... 31
Exerccio .............................................................................................................................. 31
Expresses ............................................................................................................... 31
Expresses Aritmticas ............................................................................................................. 31
Operadores Aritmticos ............................................................................................................ 31
Funes Matemticas ................................................................................................................ 32
Prioridades ................................................................................................................................ 32
Expresses Lgicas ................................................................................................................... 32
Operadores Relacionais ............................................................................................................ 33
Operadores Lgicos .................................................................................................................. 33
Comandos de Atribuio ......................................................................................... 33
Comandos de Entrada e Sada de Dados ................................................................. 34
Entrada de Dados ...................................................................................................................... 34
Sada de Dados .......................................................................................................................... 34
Blocos ...................................................................................................................... 34
Estruturas de Controle ............................................................................. 36
Estrutura Seqencial ................................................................................................ 36
Exerccios ............................................................................................................................. 37
Estruturas de Seleo ou Deciso ........................................................................... 37
Deciso Simples ........................................................................................................................ 37
Exerccios ............................................................................................................................. 38
Deciso Composta .................................................................................................................... 38
Exerccios ............................................................................................................................. 38
Seleo Mltipla ....................................................................................................................... 38
Exerccio .............................................................................................................................. 40
Estruturas de Repetio ........................................................................................... 40
Repita ... At - Estrutura com teste no final ......................................................................... 41
Exerccio .............................................................................................................................. 41
Enquanto .. Faa - Estrutura com teste no Incio .................................................................. 41
Exerccio .............................................................................................................................. 42
Para .. Passo - Estrutura com varivel de Controle .............................................................. 42
Exerccio .............................................................................................................................. 42
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
Procedimentos e Funes ......................................................................... 53
Procedimentos ......................................................................................................... 53
Escopo de Variveis .................................................................................................................. 54
Parmetros ................................................................................................................................ 54
Funes .................................................................................................................... 55
Passagem de Parmetros por Referncia e Valor ..................................................................... 55
Exerccios ............................................................................................................................. 56
Recursividade .......................................................................................................... 57
Recursividade Direta ................................................................................................................. 57
Recursividade Indireta .............................................................................................................. 57
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


C CO ON NT TE E D DO O P PR RO OG GR RA AM M T TI IC CO O

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
Original Designer 6

H HI IS ST T R RI IA A D DA A L L G GI IC CA A

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


___________________________________________________________________________________Introduo a Lgica
Propposicional
7

I IN NT TR RO OD DU U O O A A L L G GI IC CA A P PR RO OP PO OS SI IC CI IO ON NA AL L

Preliminares
Proposio

Frase o elemento de comunicao que relaciona palavras entre si de modo a estabelecer uma
mensagem com sentido completo.

As frases podem ser de vrios tipos:

-Declarativa: O Sol uma estrela.
-Imperativa: No faa isto!
-Interrogativa: Onde voc mora?
-Exclamativa: Parabns!
-
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.

As proposies podem ser simples ou compostas.

Proposio simples nica, ou seja, no contem nenhuma outra proposio como parte integrante.
Indicaremos tais proposies por letras minsculas de nosso alfabeto.
___________________________________________________________________________________Introduo a Lgica
Propposicional
8

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
___________________________________________________________________________________Introduo a Lgica
Propposicional
9
c) r: 2 raiz da equao x
2
+ 3x - 4 = 0 V(r) = F

Princpios Fundamentais da Lgica

Princpio da No-Contradio
Uma proposio no pode ser simultaneamente verdadeira e falsa.

Princpio do Terceiro Excludo
Toda proposio ou s verdadeira ou s falsa, nunca ocorrendo um terceiro caso.
Logo, toda proposio admite um e um s dos valores V ou F.


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.


Proposio Composta por 2 Proposies Simples - P(p,q)

Tabela-Verdade

p q
V F
___________________________________________________________________________________Introduo a Lgica
Propposicional
10
V V
F F
F V



Proposio Composta por 3 Proposies Simples - P(p,q,r)

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 2
n
, onde n nmero de
proposies simples componentes e 2 representa o nmero de valores lgicos possveis
(V ou F).

Operaes Lgicas sobre Proposies
Operao Negao (~)
Se p uma proposio, a negao da proposio p denotada por ~ p (l-se no p).

-Se V(p) = V, ento V(~ p) = F
-Se V(p) = F, ento V(~ p) = V
-
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
___________________________________________________________________________________Introduo a Lgica
Propposicional
11

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 :
___________________________________________________________________________________Introduo a Lgica
Propposicional
12
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 e A . x e B}
A conjuno de duas proposies (p . q) verdadeira se, e somente se, cada componente for
verdadeiro.

A tabela-verdade da operao conjuno :
p q p.q
V V V
V F F
F V F
F F F
OU
p ^ q
V V V
V F F
F F F
F F F

Operao Disjuno (V)
Duas proposies p e q podem ser combinadas pelo conectivo ou (com sentido de e/ou) para
formar uma proposio composta denominada disjuno das proposies originais.

Notao: p v q (l-se: p ou q)

Na linguagem natural, o conectivo ou pode traduzir tanto a idia de hipteses
mutuamente exclusivas (ou ocorre isto ou ocorre aquilo) quanto a de que pelo menos
uma das hipteses ocorre.

Exemplos:

1) A sentena chove ou faz frio verdadeira nos seguintes casos: s chove;
-s faz frio;
___________________________________________________________________________________Introduo a Lgica
Propposicional
13
-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.


No primeiro exemplo, a disjuno inclusiva e, no segundo, a disjuno exclusiva.
Em nosso estudo, vamos nos preocupar apenas com a disjuno inclusiva.

Exemplos:

1) Dadas as proposies:
p: Joo estudante.
Q: Joo mecnico.
A disjuno :
p v q: Joo estudante ou mecnico.

2) Dadas as proposies:
p: 10 nmero primo
q: 10 nmero composto
a disjuno :
p v q: 10 nmero primo ou nmero composto.
O smbolo v pode ser usado, tambm, para definir a unio de dois conjuntos: A B = {x / x e A
v x e B}

A disjuno inclusiva de duas proposies (p v q) falsa se, e somente se, todas as componentes
forem falsas.

A tabela-verdade da operao disjuno :

p q pvq
V V V
V F V
F V V
F F F

Exemplos:
___________________________________________________________________________________Introduo a Lgica
Propposicional
14

1) Determinar o valor lgico da proposio composta P dada a seguir: P: 3 < t ou 2 no nmero
primo.
Resoluo:
3 < t uma proposio verdadeira.
2 no nmero primo uma proposio falsa.
Com as proposies simples dadas esto ligadas pelo conectivo ou, ento: V(P) = V
2)Sejam as proposies:
p: Maurcio jogador de vlei.
Q: Maurcio bonito.
Escrever em linguagem natural as seguintes proposies:
a) p . q b) p v ~q
Resoluo:
a) Maurcio jogador de vlei e Maurcio bonito.
b) Maurcio jogador de vlei ou Maurcio no bonito.

3) Construir a tabela-verdade para a proposio p v ~ q.
Resoluo:
p q ~ q p v ~ q
V V F V
V F V V
F V F F
F F V V

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).

Outras maneiras de se ler o condicional p q:
-q, se p.
-p condio suficiente para q.
-q condio necessria para p.

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
___________________________________________________________________________________Introduo a Lgica
Propposicional
15
conseqente.

Exemplos:
1) Dadas as proposies:
p: 1 litro = 1 dm
3

q: 1 ml = 1 cm
3

a condicional :
p q: Se 1 l = 1 dm
3
, ento 1 ml = 1 cm
3
.

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 e Z
a condicional :
p q: Se 5 < 2, ento 2 e Z.

Obs.: O smbolo Z representa o conjunto dos nmero inteiros.

A proposio condicional p q s falsa quando p verdadeira e q falsa. Caso isto no
ocorra, a proposio condicional ser verdadeira.
A tabela-verdade da operao condicional :
p q p q
V V V
V F F
F V V
F F V
Operao Bicondicional ( )
Duas proposies p e q podem ser combinadas pelo conectivo lgico ... se, e somente se ... para
formar uma nova proposio denominada bicondicional.

Notao: p q (l-se: p se, e somente se q)

Outras maneiras de se ler o bicondicional p q:
-p condio necessria e suficiente para q.
___________________________________________________________________________________Introduo a Lgica
Propposicional
16
-q condio necessria e suficiente para p.

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.

A proposio bicondicional p q s verdadeira quando V(p) = V(q), caso contrrio falsa.
A tabela-verdade da operao bicondicional :

p q p q
V V V
V F F
F V F
F F V

Tabela verdade resumo dos conectivos

p q p ^ q p v q ~p p q p <-> q
V V V V F V V
V F F V F F F
F V F V V V F
F F F F F V V


Prioridade dos conectivos

a) Parnteses
Usar parnteses em todas as frmulas indicando assim a prioridade das subfrmulas.

((( ~p ) v q) ((r ^ ~q) <-> p))

___________________________________________________________________________________Introduo a Lgica
Propposicional
17
Quando o significado for claro podemos simplificar o uso de parnteses.

b) Tabela abaixo

(~) > (^) > ( v) > () > (<->)

Exerccios
Dadas as proposies a seguir, monte a expresso e a tabela verdade correspondente:
1.a)Est chovendo
2.b)Est frio

2.a)Joo vai viajar
3.b)Maria vai viajar
4.c)Se Maria viajar ao lado de Joo, Joo ficar feliz

3.a)Joo vai viajar se Maria for
4.b)Maria vai viajar se Mario for
5.c)Mario vai viajar se Carlos ou Maria for

4.Dadas as expresses abaixo, monte as tabelas verdade
5.a) p ^ (q r) v (p v q)
6.b) (p q) ^ (r q) v (p ^ r)
1.c) ((p ~p) ^ ~(q v r)) (~q ^ r) v s
Tautologia, Contradio e Contingncia
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 v ~p)

A tabela-verdade :
p ~ p p v ~p
V F V
F V V
Logo, (p v ~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
___________________________________________________________________________________Introduo a Lgica
Propposicional
18
~p: No chove
(p .~ p)

A tabela-verdade :
p ~ p p . ~p
V F F
F V F

Logo, (p v ~p) uma tautologia.

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) v q
4.(q ^ ~p) ^ r
5.p ^ (q r) v (p v q)
Implicao Lgica ou Conseqncia Lgica ( )

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.

Assim B implica logicamente em A se B A uma tautologia, e B ^ ~A uma contradio.

Notao: P Q (l-se: P implica Q).

-Os smbolos e tm significados diferentes:
-O smbolo realiza uma operao entre proposies, dando origem a uma nova proposio
p q cuja tabela-verdade pode conter tanto V quanto F.
-O smbolo entre duas proposies dadas indica uma relao, isto , que a proposio
condicional associada uma tautologia.

Exemplo:
___________________________________________________________________________________Introduo a Lgica
Propposicional
19

Mostrar que (p . q) p.
p q p . q (p . q) p
V V V V
V F F V
F V F V
F F F V

Como (p . q) p uma tautologia, ento (p . q) p, isto , ocorre a implicao lgica.
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.

Assim A equivalncia lgica de B se A <-> B uma tautologia.

Notao: P Q ou P Q (l-se: P equivalente a Q) Intuitivamente, proposies
logicamente equivalentes transmitem a mesma informao, a mesma idia, a partir das mesmas
proposies componentes.

Exemplo:
Mostrar que (p q) . (q p) e p q so equivalentes.
p q p q q p (p q) . (q p) p q
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.

-O bicondicional no uma operao lgica bsica, mas a conjuno de proposies condicionais.

Exemplo:

Mostrar que (p . q) ~ ( ~ p v ~q).
Analisemos a tabela-verdade envolvendo as seguintes proposies:

A B ~B
p q p . q ~ p ~ q ~ p v ~ q ~ (~ p v ~ q) A ~ B
___________________________________________________________________________________Introduo a Lgica
Propposicional
20
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

Como (p . q) ~ ( ~ p v ~ q) uma tautologia, ento (p . q) ~ (~ p v ~ q), isto ,
ocorre a equivalncia lgica.

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)


____________________________________________________________________________________________Introduo a
Algoritmos

I In nt tr ro od du u o o a a A Al lg go or ri it tm mo os s
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.

b) Todo mamfero bebe leite.
O homem bebe leite.
Portanto, todo homem mamfero e animal.

Existe Lgica no dia-a-dia?
Sempre que pensamos, o raciocnio e a lgica nos acompanham necessariamente. Tambm
quando falamos, pois a palavra falada a representao do pensamento; e, visto que a palavra
escrita a representao da palavra falada, tambm pensamos quando escrevemos, utilizando a
Lgica ou a Ilgica. Da percebemos a importncia da Lgica na nossa vida no s na teoria, como
tambm na prtica, j que quando queremos pensar, falar ou escrever corretamente precisamos
colocar em Ordem o Pensamento, isto , utilizar a Lgica.

Exemplos:

a) A gaveta est fechada.
A bala est na gaveta.
Preciso primeiro abrir a gaveta, para depois pegar a bala.

b) Joo mais velho que Jos.
Marcelo mais novo que Jos.
Portanto, Joo mais velho que Marcelo.

____________________________________________________________________________________________Introduo a
Algoritmos

Algoritmizando a Lgica

Construir algoritmos o objetivo fundamental de toda a programao, mas, afinal,

O que Algoritmo?
Algoritmo uma seqncia de passos que visam atingir um objetivo bem definido.

(Ordem do Pensamento e, portanto, Lgica)

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:

Ao um acontecimento que a partir de um estado inicial, aps um perodo de tempo finito,
produz um estado final previsvel e bem definido, em que:
Estado a situao atual de dado objeto.
Portanto, podemos redefinir Algoritmo como:
Algoritmo a descrio de um conjunto de aes que, obedecidas, resultam numa sucesso
finita de passos, atingindo o objetivo.

Em geral um algoritmo destina-se a resolver um problema: fixa um padro de comportamento a
ser seguido, uma norma de execuo a ser trilhada, com o objetivo de alcanar a soluo de um
problema.
O que padro de comportamento?
Imagine a seguinte seqncia de nmeros: 1, 6, 11, 16, 21, 26....
Para determinar o stimo elemento da srie, precisamos descobrir qual a sua regra de formatao,
isto , seu padro de comportamento.
Para tal, observamos que a srie obedece uma constncia; visto que existe uma diferena
constante entre cada elemento, a qual pode ser facilmente determinada, somos capazes de
determinar o stimo e qualquer outro termo.
Podemos, ento, descrever uma atividade bem quotidiana, como, por exemplo, trocar uma
lmpada. Apesar de aparentemente bvias demais, muitas vezes fazemos esse tipo de atividade
inconscientemente. Sem percebermos seus pequenos detalhes. Vejamos se ela fosse descrita passo a
passo:

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, ...

passo1 faa N igual a zero
passo2 some 1 a N
passo3 volte ao passo 2


Soma dos primeiros 100 nmeros naturais:
passo1 faa N igual a zero
passo2 some 1 a N
passo3 se N for menor ou igual a 100
ento volte ao passo 2
seno pare

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.

Ao construir algoritmos devemos:
1.Saber que estes sero lidos por outras pessoas, alm de ns mesmos, permitindo sua fcil
correo.
2.Escrever comentrios na sua elaborao. Algoritmos sem comentrios sinal de amadorismo, e
um dos grandes erros que programadores cometem. Sua elaborao deve ser clara e resumida,
limitando-se s ocasies de maior detalhamento. Devem acrescentar alguma coisa, no apenas
frasear.
3.Os comandos nos dizem o que est sendo feito, os comentrios dizem o porqu.
4.Todo algoritmo deve possuir comentrios no prlogo, explicando o que ele faz e dar instrues
para seu uso.
5.Utilizar espaos e/ou linhas em branco para melhorar a legibilidade.
10.Nomes representativos para variveis. Uma seleo adequada de nomes de variveis o
____________________________________________________________________________________________Introduo a
Algoritmos

princpio mais importante da legibilidade de algoritmos.
11.Um comando por linha suficiente.
12.Uso de parnteses aumenta a legibilidade e previne erros.
13.Utilize identao, pois mostra a estrutura lgica do algoritmo. Deve ser feita segundo certos
padres estabelecidos.

Mtodo para construo de algoritmos
A.Ler atentamente o enunciado.
justamente o enunciado do exerccio que fornece o encaminhamento necessrio resoluo do
problema, que se torna, portanto, dependente de sua completa compreenso.
B.Retirar do enunciado a relao das entradas de dados.
C.Retirar do enunciado a relao das sadas de dados.
D.Determinar o que deve ser feito para transformar as entradas determinadas nas sadas especficas.
Nesta fase que determinamos a construo de algoritmos propriamente dito, pois, a partir de
alguns requisitos especificados, devemos determinar qual a seqncia de aes capaz de
transformar um conjunto definido de dados nas informaes de resultado. Para isso, podemos:
D.1. Utilizar o Mtodo Cartesiano quando a complexidade (variedade) no estiver totalmente
absorvida, conhecida.
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.

D.2. Aplicar o Planejamento Reverso.

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
27

C Co on nc ce ei it to os s B B s si ic co os s


Em cada linguagem a frase de construo envolve dois aspectos:

-a sintaxe - forma como pode ser escrita;
-a semntica - contedo - a lgica de cada comando.


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:

1.Inteiro: valores de -32,768 at +32,768
2.Real: valores com virgulas negativos ou positivos com grande abrangncia.
3.Caracter: toda e qualquer informao composta de caracteres alfanumricos (0..9, a..z, A..Z)
e/ou caracteres especiais (!, @, #, $, %, ^, &, *, etc). Estes caracteres (podendo ser um s ou
uma cadeia) aparecero sempre entre apstrofos, ou aspas. Exemplo: "ASD",'2e3', "V".
4.Lgico: tambm conhecido como tipo Booleano, toda e qualquer informao que pode
assumir somente dois valores (aberto/fechado, acesso/apagado), no nosso caso apenas pode-se
usar V (verdadeiro) ou F (falso).

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.

________________________________________________________________________________________________Conceitos
Bsicos
28
Memria

O acesso s informaes armazenadas na memria (leitura, escrita)
feita Byte a Byte. Cada Byte formado por uma combinao de 8
dgitos binrios (0 e 1), sendo assim, um Byte possui 256 (2
8
) estados
possveis ou representa 256 smbolos de informao.


Armazenamento de dados na memria
Cada informao de determinado tipo representada de diferentes
formas, e necessita de uma certa quantidade de memria para armazen-las. O nmero de bytes
necessrios para armazenar uma informao depender do seu tipo. Por exemplo, na maioria das
linguagens de programao o tipo inteiro armazenado ocupando 2 bytes, ou seja 65536 (2
8
x 2
8
=
2
16
) possibilidades (-32767, -32766, ....., -1,0, 1..... 32767, 32768). Um dado do tipo caractere
formado por vrios smbolos, sendo que cada um ocupa 1 byte. Desta forma o nmero de bytes
utilizados no armazenamento do tipo caractere depender do seu tamanho. 1 endereo - 1 byte

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
endereo informaes
1
2
:
N
A
10
:
.V.

________________________________________________________________________________________________Conceitos
Bsicos
29
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]
5 - 123
a
6 - 080 7 - 1 a 3 8 - (x)
9 - #55 10 - AH! 11 - Etc... 12 - ...a
13 ABAC 14 - xyz 15 - Porta_mala 16 - A_B-C
17 - U2 18 - p{0} 19 - A123 20 - A.
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:
+ adio
* multiplicao
** potenciao
- subtrao
/ diviso
// radicao
mod resto da diviso
div quociente da diviso inteira

Operadores Unrios:
________________________________________________________________________________________________Conceitos
Bsicos
30
+ manut. sinal
- 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:
sen(x) - seno de x;
cos(x) - coseno de x;
tg(x) - tangente de x;
arctg(x) - arco cuja tangente x;
arccos(x) - arco cujo coseno x;
arcsen(x) - arco cujo seno x;
abs(x) - valor absoluto (mdulo) de x;
int(x) - a parte inteira de um nmero fracionrio;
frac(x) - a parte fracionria de x;
ard(x) - transforma por arredondamento, um nmero fracionrio em inteiro;
sinal(x) - fornece o valor -1, +1 ou 0 conforme o valor de x seja negativo, positivo ou
nulo;
rnd(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:

( ) parnteses mais internos
funes matemticas
**
//
*
/
div
mod
+
-

Expresses Lgicas
Denominamos expresso lgica aquela cujos operadores so lgicos e/ou relacionais e cujos
________________________________________________________________________________________________Conceitos
Bsicos
31
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:
= igual a
> maior que
< menor que
< > diferente de
> = maior ou igual a
< = menor ou igual a

O resultado sempre um valor lgico.

Exemplos:

5 = 5 a = A
V F

V = F considere real = 1 e dolar = 1,8 real = dolar
F F

Operadores Lgicos
Utilizaremos trs conectivos bsicos para a formao de novas proposies a partir de outras j
conhecidas. Os operadores lgicos so:

e conjuno
ou disjuno no exclusiva
xou disjuno exclusiva
no 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

________________________________________________________________________________________________Conceitos
Bsicos
32
Comandos de Atribuio
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;

Comandos de Entrada e Sada de Dados
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);


________________________________________________________________________________________________Conceitos
Bsicos
33
Blocos
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

fim. Fim do bloco (algoritmo)


_____________________________________________________________________________________________Estruturas de
Controle
34

E Es st tr ru ut tu ur ra as s d de e C Co on nt tr ro ol le e

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.

Resolvendo atravs do Mtodo de Construo de Algoritmos, temos:

1.Dados de entrada: quatro notas bimestrais (N1, N2, N3, N4);
2.Dados de sada: mdia aritmtica annual;
3.O que devemos fazer para transformar quatro notas bimestrais em uma mdia anual?
4.Resposta: utilizar mdia aritmtica.
5.O que mdia aritmtica?
6.Resposta: a soma dos elementos divididos pela quantidade deles. Em nosso caso particular: (N1 +
N2 + N3 + N4)/4;
7.Construindo o algoritmo:

variveis (declarao das variveis)
N1, N2, N3, N4, MA : real;

incio (comeo do algoritmo)
conhea (N1, N2, N3, N4); {entrada de dados}
Ma := (N1 + N2 + N3 + N4) / 4; {processamento}
escreva (A mdia annual e: , MA); {sada de dados}
fim.
_____________________________________________________________________________________________Estruturas de
Controle
35


Exerccios

1.Dados dois nmeros inteiros, achar a mdia aritmtica entre eles.
2.Dados dois nmeros inteiros, trocar o contedo desses nmeros.
3.Dados trs notas inteiras e seus pesos, encontrar a mdia ponderada entre elas.
4.Calcular a rea de um tringulo reto.
5.Escreva um algoritmo que tenha como entrada nome, endereo, sexo, salrio. Informe-os.
6.Escreva um algoritmo que calcule: C = ( A + B ) * B.
7.Faa um algoritmo que calcule o valor a ser pago em uma residncia, que consumiu uma
quantidade X de energia eltrica.
8.Faa um algoritmo para calcular e imprimir a tabuada.
9.Fazer a transformao de um valor em dlar, para a moeda corrente do Brasil.

Estruturas de Seleo ou Deciso
Uma estrutura de deciso permite a escolha de um grupo de aes e estruturas a ser executado
quando determinadas condies, representadas por expresses lgicas, so ou no satisfeitas.

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}
_____________________________________________________________________________________________Estruturas de
Controle
36
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;

Notamos agora que se a condio for satisfeita (Verdadeira), os comandos C e B sero
executados, mas se a condio for falsa, tambm podem ser executados comandos, neste caso o
comando A entrando no seno.

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.

_____________________________________________________________________________________________Estruturas de
Controle
37

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;

Com a estrutura de escolha mltipla, o algoritmo ficaria da seguinte maneira:
escolha X
caso V1 : C1;
caso V2 : C2;
caso V3 : C2;
caso V4 : C3;
seno C4;
fimescolha;





_____________________________________________________________________________________________Estruturas de
Controle
38

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:

Nmero da Bola Prmio (% do valor do caixa)
0 05
1 25
2 10
3 07
4 08
5 05
6 15
7 12
8 03
9 10

Faa um algoritmo que calcule o prmio recebido individualmente por pessoa.
2.Sendo dados 3 nmeros positivos, verificar a natureza do tringulo formado, quanto aos seus
ngulos, com estes nmeros como medida dos lados.
3.Considerando trs notas inteiras, encontrar a mdia aritmtica simples entre as que correspondem
a nmeros pares.
4.Dados 4 nmeros, coloc-los em ordem crescente.
5.Conhecer o nome e a idade de trs pessoas, informar quem o mais velho e quem o mais novo.
6.Dadas duas medidas, informar a figura geomtrica que se forma, sendo que cada medida
corresponde ao tamanho de dois lados paralelos.
7.Dada a hora (apenas a hora, sem minutos ou segundos), informar qual a direo do sol.
8.Sendo conhecidos os valores de Z e W encontrar:
y = (7x
2
- 3x - 8t) / 5(x + 1)
sabendo-se que os valores de x so assim definidos:

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.
_____________________________________________________________________________________________Estruturas de
Controle
39
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.

Repita ... At - Estrutura com teste no final
Esta estrutura faz seu teste de parada aps o bloco de comandos, isto , o bloco de comandos
ser repetido, at que a condio seja V. Os comandos de uma estrutura repita .. at sempre sero
executados pelo menos uma vez.
Repita
comando1;
comando2;
comando3;
at <condio>;

Exerccio
1.Construa o algoritmo de clculo do fatorial com a estrutura Repita .. At.

Enquanto .. Faa - Estrutura com teste no Incio
Esta estrutura faz seu teste de parada antes do bloco de comandos, isto , o bloco de comandos
ser repetido, at que a condio seja F. Os comandos de uma estrutura enquanto .. faa podero
ser executados uma vez, vrias vezes ou nenhuma vez.
_____________________________________________________________________________________________Estruturas de
Controle
40


Enquanto < condio > Faa
incio
< bloco de comandos >;
fim;

Exerccio
1.Construa o algoritmo de clculo do fatorial com a estrutura Enquanto .. Faa.

Para .. Passo - Estrutura com varivel de Controle
Nas estruturas de repetio vistas at agora, acorrem casos em que se torna difcil determinar
quantas vezes o bloco ser executado. Sabemos que ele ser executado enquanto uma condio for
satisfeita - enquanto..faa, ou at que uma condio seja satisfeita - repita...at. A estrutura para ..
passo repete a execuo do bloco um nmero definido de vezes, pois ela possui limites fixos:
Para <varivel> := <valor> at <valor> passo N faa
incio
< bloco de comandos >;
fim;
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:
_____________________________________________________________________________________________Estruturas de
Controle
41
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.

Os valores da alquota para clculo do imposto so:
Renda Lquida Alquota
at 2 salrios mnimos isento
2..3 salrios mnimos 5%
3..5 salrios mnimos 10%
5..7 salrios mnimos 15%
acima de 7 salrios mnimos 20%
O ltimo valor, que no ser considerado, ter o CPF igual a zero. Deve ser fornecido o valor
atual do salrio mnimo.

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.

Como finalizador, teremos a palavra fim no lugar do sexo da criana.
Determine e imprima:
-a porcentagem de crianas mortas no perodo;
-a porcentagem de crianas do sexo masculino mortas no perodo;
-a porcentagem de crianas que viveram dois anos ou menos no perodo.

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:
_____________________________________________________________________________________________Estruturas de
Controle
42

-o elevador que utilizava com maior freqencia;
-o andar ao qual se dirigia;
-o perodo que utilizava o elevador, entre:
-M = matutino;
-V = vespertino;
-N = noturno.

Construa um algoritmo que calcule e imprima:

-qual o andar mais alto a ser utilizado;
-qual o elevador mais freqentado e em que horrio se encontra seu maior fluxo;
-qual o horrio mais usado de todos e a que elevador pertence;
-qual a diferena percentual entre o mais usado dos horrios e o menos usado (especificando
qual o menos usado);
-qual a percentagem sobre o total de servios prestados do elevador de mdia utilizao.


______________________________________________________________________________________________Estruturas de
Dados
43

E Es st tr ru ut tu ur ra a d de e D Da ad do os s

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.
Variveis Compostas Homogneas
Suponha que voc est dentro de um elevador, para ir a um determinado andar voc deve
especificar o seu nmero, isto , em um vetor, voc deve se referenciar por seu ndice para acessar
qualquer um de seus elementos.

Declarao

Tipo
IDENTIFICADOR = vetor [LI .. LF] de <tipo>;

variveis
varivel : IDENTIFICADOR;

Onde: LI - representa o limite inicial do vetor; LF - representa o limite
final do vetor; <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.








______________________________________________________________________________________________Estruturas de
Dados
44


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
para ndice <
__
1 at 4 faa
leia( notas[ndice] );
fim;
mdia <
__
0;

para ndice <
__
1 at 4 faa
mdia <
__
mdia + notas[ndice]; mdia <
__
mdia / 4;
escreva(mdia);
fim;
fim.
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>;
______________________________________________________________________________________________Estruturas de
Dados
45
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;
______________________________________________________________________________________________Estruturas de
Dados
46
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.
______________________________________________________________________________________________Estruturas de
Dados
47
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.
Nmero:___________ Fumante:____________
De:__________________________________ Para:__________________________
Data: ____ / _____ / ______ Horrio: ______ : ______
Poltrona:________________ Distncia:______________________
______________________________________________________________________________________________Estruturas de
Dados
48

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.
______________________________________________________________________________________________Estruturas de
Dados
49

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:



a)Construir um algoritmo que declare tal estrutura e que reuna todas as informaes de todas as
obras em trs volumes distintos para cada rea.
b) Elabore um trecho de algoritmo que, utilizando como premissa o que foi feito no item a, faa
uma consulta s informaes. O usurio fornecer cdigo da obra e sua rea: existindo tal
livro, informa seus campos; do contrrio; envia mensagem de aviso. A consulta se repete at
que o usurio introduza como cdigo finalizador o nmero -1.
c) Idem ao item b, porm o usurio s informa o nome e a rea do livro que deseja consultar.
d) Escreva um trecho de algoritmo que liste todas as obras de cada rea que representam livros
doados.
e) Idem ao item d, porm, obras que sejam livros comprados e cujo nmero de pginas se
encontram entre 100 e 300.
f) Elabore um trecho de algoritmo que faa a alterao de um registro; para tal, o usurio fornece
o cdigo, a rea e as demais informaes sobre o livro. Lembre-se de que somente pode ser
alterado um livro que exista.
g) Construa um trecho de algoritmo que efetue a excluso de algum livro; o usurio fornecer o
cdigo e a rea.

2.Dado um conjunto de tamanho N, calcular a somatria de seus elementos.
3.Calcular a mdia de um conjunto de nmeros inteiros.
4.Encontrar o maior elemento, e sua respectiva posio, de um vetor A de 15 elementos.
5.Dados dois conjuntos ordenados A e B de N posies, gerar a partir destes o conjunto C,
sabendo-se que o conjunto C dever conter os elementos comuns entre A e B.
6.Dado um conjunto A de N elementos, separ-lo em outros dois conjuntos B e C, contendo B os
elementos pares e C os elementos mpares.
7.Dado um conjunto A de N elementos, separar os elementos pares e mpares, usando apenas um
vetor extra.
8.Fazer um algoritmo para corrigir provas de mltipla escolha. Cada prova tem 10 questes e cada
questo vale 1 ponto. O primeiro conjunto de dados a ser lido ser o gabarito para a correo da
prova. Os outros dados sero os nmeros dos alunos e suas respectivas respostas, e o ltimo
nmero, do aluno fictcio, ser 9999.
9.O programa dever calcular e imprimir:
10.a) para cada aluno, o seu nmero e nota;
11.b) a porcentagem de aprovao, sabendo-se que a nota mnima de aprovao 06;
Cdigo de Catalogao:_____________________________ Doado:__________
Nome da Obra:_____________________________________________________
Nome do Autor:_____________________________________________________
Editora:____________________________ N
o
de pginas:___________________
______________________________________________________________________________________________Estruturas de
Dados
50
12.c) a nota que teve maior freqencia absoluta, ou seja, a nota que apareceu maior nmero de
vezes.
13. Leia uma frase de 80 letras (incluindo brancos).
14.Escrever um algoritmo para:
15.a) contar quantos brancos existem na frase;
16.b) contar quantas vezes aparece a letra A;
17.c) contar quantas vezes ocorre o mesmo par de letras na frase e quais so elas.
18.Para o controle dos veculos que circulam em uma determinada cidade, a Secretria dos
Transportes criou o seguinte registro padro:


Onde:
-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.

11. Escrever um algoritmo para a formao da seguinte matriz:

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


Proprietrio:______________________________________ Combstivel:___________
Modelo:____________________________________ Cor:_______________________
N
o
chassi:___________________ Ano:______________ Placa:____________________
__________________________________________________________________________________________Procedimentos e
Funes
51

P Pr ro oc ce ed di im me en nt to os s e e F Fu un n e es s

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.

__________________________________________________________________________________________Procedimentos e
Funes
52
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

Escopo de variveis seria o mesmo que domnio sobre variveis.
Quando uma varivel declarada no incio do algoritmo, dizemos que ela global, isto , todos
os mdulos do algoritmo reconhecem esta varivel. Quando uma varivel declarada dentro de um
mdulo, dizemos que ela local, isto , somente este mdulo reconhece a varivel. Variveis
declaradas no cabealho do mdulo (parmetros), so variveis locais deste mdulo.












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.
__________________________________________________________________________________________Procedimentos e
Funes
53


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;

Funo Expresso : Real;
incio
expresso < 8 * X ;
fim;

incio
leia (X);
X < expresso;
escreva(X);
fim.

Passagem de Parmetros por Referncia e Valor
Como j falamos, somente funes podem retornar valores e procedimentos no. Mas existe uma
forma de fazer com que uma varivel que foi passada como parmetro, tanto para um procedimento
__________________________________________________________________________________________Procedimentos e
Funes
54
como para uma funo, volte com o valor alterado. Para isso voc deve conhecer o conceito de
passagem de parmetros por Referncia e Valor.
Na passagem por valor, voc apenas passa o contedo da varivel e no seu endereo fsico,
isto , se o contedo da varivel do cabealho, que est recebendo o valor, for alterado dentro do
procedimento ou funo, no ir alterar o contedo da varivel que foi usada para passar o valor.
J na passagem por referncia, voc no apenas passa apenas o contedo da varivel e sim seu
endereo fsico, isto , se o contedo da varivel do cabealho, que est recebendo o valor, for
alterado dentro do procedimento ou funo, ir alterar o contedo da varivel que foi usada para
passar o valor.
Exemplo:
Funo quadrado (X : Real) : Real;
incio
expresso < X * X;
fim;

Procedimento teste (val str : Caracter, X : Real); incio
Se quadrado(X) > 20 ento
str < Maior que 20;
seno
str < Menor que 20;
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.
__________________________________________________________________________________________Procedimentos e
Funes
55
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).
__________________________________________________________________________________________Procedimentos e
Funes
56
-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;
_______________________________________________________________________________________________________Arquiv
os
Original Designer 57

A Ar rq qu ui iv vo os s

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).
-Organizao dos Arquivos
-As operaes bsicas que podem ser feitas em um arquivo atravs de um algoritmo so: leitura,
gravao, alterao e excluso de registros. Basicamente, existem duas possibilidades de
organizao:
-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
_______________________________________________________________________________________________________Arquiv
os
Original Designer 58
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
_______________________________________________________________________________________________________Arquiv
os
Original Designer 59
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);
-
-Posicionamento e verificao de fim e incio de arquivo
-
-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
-
-Posicione (nome-arquivo, chave);
Comando utilizado para que a posio corrente do arquivo seja aquela correspondente ao valor
da varivel chave.
Ex.:
Abra (clientes);
Escreva ( Qual Posio? );
Leia (Reg_cli.posio);
Leia (Reg_cli.cod.);
Leia ( Reg_cli.nome);
_______________________________________________________________________________________________________Arquiv
os
Original Designer 60
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.

Arquivo Direto Acessado Seqencialmente
Um arquivo concebido randomicamente passou por um certo planejamento, que antecedeu sua
criao, onde foi definida a chave de acesso do arquivo. Caso esse planejamento tenha sido
inadequado, pode permitir que surja a necessidade de obter informao do arquivo a partir de um
campo no-chave, forando uma busca seqencial do arquivo randmico.

Arquivo Seqencial Acessado Randomicamente: Arquivo Indexado
Um arquivo concebido seqencialmente foi preenchido na mesma seqncia em que as
informaes foram surgindo. Isto por definio condena-o a gravar ou ler informaes
seqencialmente, o que se tornaria inconveniente se este arquivo crescesse muito e se a quantidade
de acessos fosse muito freqente. Esta situao pode ser controlada atravs de um arquivo
concebido seqencialmente (ou no) de menor porte, facilitando assim a busca seqencial. Este
arquivo possui arquivada em cada registro a posio onde encontrar cada registro original, ou seja,
como se fosse um ndice de uma enciclopdia. Desta forma, um novo arquivo criado chamado
arquivo de ndices, e o arquivo original (seqencial) chamado de arquivo indexado, que atravs do
ndice fornecido pelo arquivo de ndices pode ser acessado diretamente.

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.

Das könnte Ihnen auch gefallen