Você está na página 1de 63

_________________________________________________________________________________________________Histria da Lgica

_________________________________________________________________________________________________Histria da Lgica

_________________________________________________________________________________________________Histria da Lgica

FIEP CIEP SESI SENAI IEL

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

CURSO TCNICO EM INFORMTICA DISCIPLINA: TCNICAS DE PROGRAMAO I

Prof. Ademir Mazer Jr

_________________________________________________________________________________________________Histria da Lgica

_______________________________________________________________________________________________________SUMRI O

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

_______________________________________________________________________________________________________SUMRI O

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

_______________________________________________________________________________________________________SUMRI O

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

_______________________________________________________________________________________________________SUMRI O

CONTEDO PROGRAMTICO
1.Noes de Lgica 2.Conceito de Algoritmos 3.Componentes de Algoritmos 3.1. Tipos de dados primitivos 3.2. Arquitetura da memria 3.3. Armazenamento de dados em memria 3.4. Variveis e constantes 3.5. Expresses 3.5.1. 3.5.2. 3.5.3. 3.6.1. 3.6.2. 3.6.3. 3.7.1. 3.7.2. 3.7.3. 3.7.4. 3.8.1. 3.8.2. Expresses aritmticas Expresses lgicas Avaliao de expresses Atribuio Entrada de dados Sada de dados Estrutura Seqencial Estrutura de Deciso Estrutura de Repetio Alinhamentos Variveis Compostas Homogneas Variveis Compostas Heterogneas

3.6. Instrues primitivas

3.7. Estruturas de controle

3.8. Estruturas de dados

3.9. Arquivos 4. Subalgoritmos 4.1. Funes 4.2. Procedimentos 4.3. Passagem de Parmetros 4.4. Escopo de variveis Turbo Pascal

_________________________________________________________________________________________________Histria da Lgica

HISTRIA DA LGICA
Aristteles e lgica silogstica (base da argumentao legal). Sofre deficincias da linguagem natural Os esticos e a introduo dos conectivos. 1700 - Leibniz e lgica simblica (proposional e predicados) 1800 - lgebra de Boole : leitura da lgica simblica para valores de um domnio e operadores Foco atual : lgica de primeira ordem, lgica de segunda ordem, resoluo por padres. Dijkstra: O objetivo da lgica o raciocnio automtico McCarty: a principal ferramenta para a computao

___________________________________________________________________________________Introduo a Lgica Propposicional

INTRODUO A LGICA PROPOSICIONAL


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: Imperativa: Interrogativa: Exclamativa: O Sol uma estrela. No faa isto! Onde voc mora? 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 b) Onde voc vai? No tem predicado 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. 10

___________________________________________________________________________________Introduo a Lgica Propposicional

Exemplos: p: O Mxico fica na Amrica do Norte. Q: O nmero 16 quadrado perfeito. Proposio composta ou frmula formada por duas ou mais proposies relacionadas pelo conectivos lgicos. Sero indicadas por letras maisculas de nosso alfabeto. Notao: P (p,q,r,...) indica que a proposio composta P formada pelas proposies simples p, q, r, ... As proposies que fazem parte de uma proposio composta podem ser, elas mesmas, proposies compostas. Exemplos: P: 1 + 2 = 3 e 2 1 Q: 1 + 2 = 3 ou 2 1 R: Se 1 + 2 = 3, ento 2 1

Conectivos Lgicos Conectivos lgicos (ou operadores lgicos) so palavras ou expresses usadas para formar novas proposies a partir de proposies. Os conectivos lgicos so: no e ou se ..., ento ... ... se, e somente se ...

Valor Lgico O valor de uma proposio chamado valor lgico. Os valores lgicos possveis so: verdade (V) e falsidade (F). Notao: V (p) indica o valor lgico da proposio p. Assim, se a proposio p for verdadeira, V(p) = V; se a proposio p for falsa, V(p) = F. O valor lgico de uma proposio composta depende exclusivamente dos valores lgicos das suas proposies componentes e dos conectivos lgicos que as ligam. Exemplos: a) p: O Sol verde. b) q: Um hexgono tem seis lados. V(p) = F V(q) = V 11

___________________________________________________________________________________Introduo a Lgica Propposicional

c) r: 2 raiz da equao x2 + 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 V V F q F V F 12

___________________________________________________________________________________Introduo a Lgica Propposicional

Proposio Composta por 3 Proposies Simples - P(p,q,r) Tabela-Verdade p V V V V F F F F Teorema: O nmero de linhas distintas de uma tabela-verdade dado por 2n, onde n nmero de proposies simples componentes e 2 representa o nmero de valores lgicos possveis (V ou F). q V V F F V V F F r V F V F V F V 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 V F Exemplos: 1) Dada a proposio: 13 ~p F V

___________________________________________________________________________________Introduo a Lgica Propposicional

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 : p q: Carlos estuda Matemtica e joga xadrez. 2) Dadas as proposies: p: 2 > 0 14

___________________________________________________________________________________Introduo a Lgica Propposicional

q: 2 1 a conjuno : p q: 2 > 0 e 2 1

O smbolo pode ser usado, tambm, para definir a interseco de dois conjuntos. A B = {x / x A x B} A conjuno de duas proposies (p q) verdadeira se, e somente se, cada componente for verdadeiro. A tabela-verdade da operao conjuno : p V V F F p V V F F q V F V F OU ^ V F F F pq V F F F q V 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 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; 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: 15

___________________________________________________________________________________Introduo a Lgica Propposicional

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 q: Joo estudante ou mecnico. 2) Dadas as proposies: p: 10 nmero primo q: 10 nmero composto a disjuno : p q: 10 nmero primo ou nmero composto. O smbolo pode ser usado, tambm, para definir a unio de dois conjuntos: A B = {x / x A x B} A disjuno inclusiva de duas proposies (p q) falsa se, e somente se, todas as componentes forem falsas. A tabela-verdade da operao disjuno : p V V F F Exemplos: 1) Determinar o valor lgico da proposio composta P dada a seguir: P: 3 < ou 2 no nmero primo. Resoluo: 3 < uma proposio verdadeira. 2 no nmero primo uma proposio falsa. Com as proposies simples dadas esto ligadas pelo conectivo ou, ento: V(P) = V 16 q V F V F p q V V V F

___________________________________________________________________________________Introduo a Lgica Propposicional

2)Sejam as proposies: p: Maurcio jogador de vlei. Q: Maurcio bonito. Escrever em linguagem natural as seguintes proposies: a) p 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 ~ q. Resoluo: p V V F F q V F V F ~q F V F V p ~q V V F V b) p ~q

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 conseqente. Exemplos: 1) Dadas as proposies: p: 1 litro = 1 dm3 q: 1 ml = 1 cm3 a condicional : 17

___________________________________________________________________________________Introduo a Lgica Propposicional

p q: Se 1 l = 1 dm3, ento 1 ml = 1 cm3. 2) Dadas as proposies: p: Chove q: Faz frio a condicional : p q: Se chove, ento faz frio. 3) Dadas as proposies: p: 5 < 2 q: 2 Z a condicional : p q: Se 5 < 2, ento 2 Z. 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 V V F F q V F V F p q V F V 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. 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. 18

___________________________________________________________________________________Introduo a Lgica Propposicional

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 V V F F Tabela verdade resumo dos conectivos p V V F F q V F V F p^q V F F F pvq V V V F ~p F F V F p q V F V V p <-> q V F F V q V F V F pq V F F V

Prioridade dos conectivos a) Parnteses Usar parnteses em todas as frmulas indicando assim a prioridade das subfrmulas. ((( ~p ) v q) ((r ^ ~q) <-> p)) 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

19

___________________________________________________________________________________Introduo a Lgica Propposicional

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) (p q) 6.b) (p q) ^ (r q) (p ^ r) 1.c) ((p ~p) ^ ~(q r)) (~q ^ r) 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 ~p) A tabela-verdade : p V F Logo, (p ~p) uma tautologia. Contradio Uma proposio composta uma contradio quando o seu valor lgico sempre a falsidade (F), quaisquer que sejam os valores lgicos das proposies componentes. Exemplo: p: Chove ~p: No chove (p p) ~ A tabela-verdade : p V F Logo, (p ~p) uma tautologia. ~p F V p ~p F F ~p F V p ~p V V

20

___________________________________________________________________________________Introduo a Lgica Propposicional

Contingncia Uma proposio contingente (ou uma indeterminao) quando no uma tautologia e no uma contradio.

Exerccios Dadas as proposies abaixo, diga se ela uma Tautologia, Contradio ou Contingncia 1.(p ^ ~p) ^ p 2.(p ^ ~q) ^ p 3.(p ^ ~p) q 4.(q ^ ~p) ^ r 5.p ^ (q r) (p q)

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: Mostrar que (p q) p. p V V F F q V F V F p q V F F F (p q) p V V V V

Como (p q) p uma tautologia, ento (p q) p, isto , ocorre a implicao lgica.

21

___________________________________________________________________________________Introduo a Lgica Propposicional

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 V V F F q V F V F p q V F V V q p V V F V (p q) (q p) V F F V p q V F F 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 ~q). Analisemos a tabela-verdade envolvendo as seguintes proposies: A p q V F F F B ~p ~q F V V V ~B ~ (~ p ~ q) V F F F

p V V F F

q V F V F

~p F F V V

~q F V F V

A ~B V V V V

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

Exerccios Verifique se os pares de frmulas abaixo so equivalncias lgicas ou implicaes lgicas. 22

___________________________________________________________________________________Introduo a Lgica Propposicional

a) (p ^ q) e q b) ~(p ^ q) e ( ~p v ~q) c) (~p v q) e (p q)

23

____________________________________________________________________________________________Introduo a Algoritmos

Introduo a Algoritmos
Noes de Lgica
O que Lgica? Lgica trata da correo do pensamento. Como filosofia, ela procura saber por que pensamos assim e no de outro jeito. Com arte ou tcnica, ela nos ensina a usar corretamente as leis do pensamento. Poderamos dizer tambm que a Lgica a arte de pensar corretamente e, visto que a forma mais complexa do pensamento o raciocnio, a Lgica estuda ou tem em vista a correo do raciocnio. Podemos ainda dizer que a lgica tem em vista a ordem da razo. Isto d a entender que a nossa razo pode funcionar desordenadamente, pode pr as coisas de pernas para o ar. Por isso a Lgica ensina a colocar Ordem no Pensamento. Exemplos: a) Todo o mamfero animal. Todo cavalo mamfero. Portanto, todo cavalo animal. 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. Involuntariamente, j seguimos uma determinada seqncia de aes que, representadas neste

____________________________________________________________________________________________Introduo a Algoritmos

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 passo2 passo3 faa N igual a zero some 1 a N volte ao passo 2

Soma dos primeiros 100 nmeros naturais: passo1 passo2 passo3 faa N igual a zero some 1 a N 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 princpio mais importante da legibilidade de algoritmos.

____________________________________________________________________________________________Introduo a 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 assumir para que se efetue sua respectiva ao.

____________________________________________________________________________________________Introduo a Algoritmos

E.Construir o algoritmo. F.Executar o algoritmo. Implica executar todas as aes descritas seguindo o fluxo de execuo estabelecido, verificando se os resultados obtidos correspondem ao esperado quando da montagem do algoritmo, detectando ento algum possvel erro no desenvolvimento deste. Essa atividade conhecida por teste de mesa. Exerccios 1.Um homem precisa atravessar um rio com um barco que possui capacidade de carregar apenas ele mesmo e mais uma de suas trs cargas, que so: um lobo, um bode e um mao de alfafa. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas? 2.Suponha que voc possua um rob e queira faz-lo trocar uma lmpada, sendo que o mesmo foi programado para obedecer aos seguintes comandos: pegue <objeto> pressione <objeto> gire garras 180 no sentido horrio gire garras 180 no sentido anti-horrio mova <objeto> para <lugar> desloque-se para <lugar> e ainda capaz de: perceber quando algum comando no pode mais ser executado sentir alguma fonte de calor Que ordens voc daria para que seu rob trocasse a lmpada? 3.Construa um algoritmo que mostre todos os passos que voc segue para escolher o tipo de roupa com que vai sair, aps levantar, levando em considerao apenas o tempo (bom, nublado, chuvoso) e a temperatura (quente, moderado, frio). 4.Elabore um algoritmo que mova trs discos de uma Torre de Hani, que consiste em trs hastes (a b - c), uma das quais serve de suporte para trs discos diferentes (1 - 2 - 3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor. O objetivo transferir os trs discos para outra haste. 5.Trs jesutas e trs canibais precisam atravessar um rio; para tal, dispem de um barco com capacidade para duas pessoas. Por medidas de segurana no se permite que em alguma margem a quantidade de jesutas seja inferior de canibais. Qual a seqncia de passos que permitiria a travessia com segurana? 6.Numa determinada noite, acontece uma queda de energia. Voc sabia que poderia encontrar uma vela na gaveta da cozinha, um lampio embaixo da cama, fusveis de reserva no armrio da sala e fsforos na estante da cozinha. Descreva a seqncia de passos que poderia ser utilizada para diagnosticar e resolver o problema, que pode ser previsto em duas possibilidades: a) o fusvel queimou; b) a queda na estao da companhia eltrica.

________________________________________________________________________________________________Conceitos Bsicos

Conceitos Bsicos
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 ( ) 1 ( ) 0,0 ( ) 0 ( ) -1 ( ) a ( ) + 36 ( ) + 32 ( ) - 0,001 ( ) + 0,05 ( ) + 3257 ( ) abc ( ) +3257 ( ) -0,0 ( ) .V. ( )V ( )F ( ) .V. ( )F ( ) -32 ( ) +3257 ( ) 'F'

( ) -1,9E123 ( ) '0'

Arquitetura de Memria
De um modo geral, a memria do computador pode ser vista como um conjunto de clulas, cada uma identificada unicamente por um nmero inteiro distinto, conhecido como endereo.

30

________________________________________________________________________________________________Conceitos Bsicos

Memria 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 (28) estados possveis ou representa 256 smbolos de informao.

endereo 1 2 : N

informaes A 10 : .V.

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 (28 x 28 = 216) 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 31

________________________________________________________________________________________________Conceitos Bsicos

pi = 0,1415

Variveis Entendemos que uma informao varivel quando sofre variaes durante o decorrer do tempo. A declarao de variveis feita da seguinte maneira: Variveis dlar : real endereo : caracter existe : lgico

Exerccio Assinale os identificadores vlidos: 1 - abc 5 - 123a 9 - #55 13 BAC 17 - U2 2 - AB/C 6 - 080 10 - AH! 14 - xyz 18 - p{0} 3 - Joo 7-1a3 11 - Etc... 19 - A123 4 - [x] 8 - (x) 12 - ...a 16 - A_B-C 20 - A.

15 - Porta_mala

Expresses
um conjunto de constantes e/ou variveis e/ou funes ligadas por operadores aritmticos ou lgicos. Expresses Aritmticas Denominamos expresso aritmtica aquela cujos operadores so aritmticos e cujos operandos so constantes e/ou variveis do tipo numrico (inteiro e/ou real). Operadores Aritmticos Chamamos de operadores aritmticos o conjunto de smbolos que representa as operaes bsicas da matemtica: Operadores Binrios:
1+

adio 1* multiplicao 1** potenciao 1-subtrao 1/diviso 1// radicao 1mod resto da diviso 1div quociente da diviso inteira Operadores Unrios: 32

________________________________________________________________________________________________Conceitos Bsicos

1+

1-manut.

manut. sinal sinal

Exemplo: 9/4 = 2,25 9 div 4 = 2 9 mod 4 = 25 15 div 7 = 2 15 mod 7 = 1

Funes Matemticas Alm das operaes aritmticas bsicas anteriormente citadas, podemos usar nas expresses aritmticas algumas funces da matemtica:
1sen(x) 1cos(x) 1tg(x) 1arctg(x) 1arccos(x) 1arcsen(x) 1abs(x) 1int(x) 1frac(x) 1ard(x) 1sinal(x)

- seno de x; - coseno de x; - tangente de x; - arco cuja tangente x; - arco cujo coseno x; - arco cujo seno x; - valor absoluto (mdulo) de x; - a parte inteira de um nmero fracionrio; - a parte fracionria de x; - transforma por arredondamento, um nmero fracionrio em inteiro; - fornece o valor -1, +1 ou 0 conforme o valor de x seja negativo, positivo ou - valor randmico de x;

nulo;
1rnd(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:


1(

1funes 1** 1// 1* 1/ 1div 1mod 1+ 1-

parnteses mais internos matemticas

Expresses Lgicas Denominamos expresso lgica aquela cujos operadores so lgicos e/ou relacionais e cujos 33

________________________________________________________________________________________________Conceitos Bsicos

operandos so relaes e/ou variveis e/ou constantes do tipo lgico. Operadores Relacionais Utilizamos os operadores relacionais para realizar comparaes entre dois valores de mesmo tipo primitivo. Tais valores so representados por constantes, variveis ou expresses aritmticas. Os operadores so:
1=

igual a 1> maior que 1< menor que 1< > diferente de 1> = maior ou igual a 1< = menor ou igual a O resultado sempre um valor lgico. Exemplos: 5=5 V V=F F F considere real = 1 e dolar = 1,8 real = dolar F a = A

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

conjuno 1ou disjuno no exclusiva 1xou disjuno exclusiva 1no negao Exemplo: a) no 2**3 < 4**2 ou abs(int(15/-2)) < 10 no 8 < 16 ou abs(int(-7,5)) < 10 no F ou abs(-7) < 10 V ou 7 < 10 V ou V V

34

________________________________________________________________________________________________Conceitos Bsicos

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

35

________________________________________________________________________________________________Conceitos Bsicos

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)

36

_____________________________________________________________________________________________Estruturas de Controle

Estruturas de Controle
Estrutura Seqencial
o conjunto de aes primitivas que sero executadas numa seqncia linear de cima para baixo e da esquerda para direita, isto , na mesma ordem em que foram escritas. Como podemos perceber, todas as aes devem ser seguidas por um ponto-e-vrgula (;), que objetiva separar uma ao de outra. Variveis; (declarao de variveis); incio comando 1; comando 2; comando 3; fim. Exemplo: Construa um algoritmo que calcule a mdia aritmtica entre quatro notas quaisquer fornecidas pelo usurio. 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.

37

_____________________________________________________________________________________________Estruturas de Controle

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 fim {bloco verdade} {bloco} C; {comando nico (ao primitiva)}

<condio> uma expresso lgica, que, quando inspecionada, pode gerar um resultado falso ou verdadeiro. Se V, a ao primitiva sob a clusula ser executada; caso contrrio, encerra o comando, neste caso, sem executar nenhum comando. Exemplo variveis altura1, altura2 : real incio leia (altura1, altura2); se altura1 > altura2 ento incio escreva(Altura 1 maior); fim {se} fim. {algoritmo}

38

_____________________________________________________________________________________________Estruturas de Controle

Exerccios 1.Faa um algoritmo que conhea as quatro notas bimestrais e, informe a mdia do aluno e se ele passou; mdia para aprovao = 6. 2.Conhea trs nmeros inteiros, e informe qual o maior. 3.Encontrar o dobro de um nmero se este for par, se mpar encontrar o triplo. Deciso Composta Se <condio> ento incio C; B; fim; seno incio A; fim; 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.

39

_____________________________________________________________________________________________Estruturas de Controle

Exemplo: se X = V1 ento incio C1; fim seno incio se X = V2 ento incio C2; fim; seno incio se X = V3 ento incio C2; fim seno incio se X = V4 ento incio C3; fim seno incio C4; fim; fim; fim; fim; 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;

40

_____________________________________________________________________________________________Estruturas de Controle

Exerccio 1.Numa festinha de fim de curso, foi feito um sorteio para distribuir o dinheiro restante em caixa. Dez pessoas foram sorteadas com direito a tentar a sorte mais uma vez, da seguinte forma: Deveriam apanhar uma bola numerada de 0 a 9 e conforme o algarismo sorteado o prmio seria: Nmero da Bola 0 1 2 3 4 5 6 7 8 9 Prmio (% do valor do caixa) 05 25 10 07 08 05 15 12 03 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 = (7x2 - 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. Imagine um algoritmo de fatorial de 8: 41

_____________________________________________________________________________________________Estruturas de Controle

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.

42

_____________________________________________________________________________________________Estruturas de Controle

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: 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 43

_____________________________________________________________________________________________Estruturas de Controle

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

_____________________________________________________________________________________________Estruturas de Controle

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.

45

______________________________________________________________________________________________Estruturas de Dados

Estrutura de Dados
Mesmo possuindo tipos bsicos para as declaraes de variveis, voc deve ter notado que eles muitas vezes no so suficientes para representar toda e qualquer informao que possa surgir. Portanto, em muitas situaes esses recursos so escassos, o que poderia ser suprido se existissem mais tipos de informao ou, ainda melhor, se esses tipos pudessem ser construdos, criados, medida que se fizessem necessrios.

Agregados Homogneos
Da mesma forma que na Teoria dos Conjuntos, uma varivel pode ser interpretada como um elementos e uma estrutura de dados como um conjunto. As variveis compostas homogneas so formadas de variveis com o mesmo tipo primitivo. Os agregados homogneos correspondem a posies de memria, identificadas por um mesmo nome, referenciadas por um ndice, e que possuem um mesmo tipo. 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.

46

______________________________________________________________________________________________Estruturas de Dados

Exemplo: Utilizaremos o exerccio de mdia das notas: tipo v_notas = vetor [1..4] de real; variveis notas : v_notas; ndice: inteiro; mdia: real; incio 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>; 47

______________________________________________________________________________________________Estruturas de Dados

variveis varivel : IDENTIFICADOR; Onde: LIN, LFN - so os limites dos intervalos de variao dos ndices da varivel, onde cada par de limites est associado a um ndice. O nmero de dimenses igual ao nmero de intervalos; <tipo> - qualquer um dos tipos primitivos, ou ainda um outro tipo que pode ser construdo, o qual veremos adiante. Primeiramente criaremos um novo tipo e lhe daremos um nome, aps isso podemos us-lo para declarar as variveis que sero utilizados dentro do programa. Exemplo: Construa um algoritmo que efetue a leitura, a soma e a impresso do resultado, entre duas matrizes inteiras que comportem 25 elementos; tipo m = matriz [1 .. 5, 1 .. 5] de inteiros; variveis ma, mb, mc : m; i,j : inteiro; incio i <__ 1; enquanto i <= 5 faa incio j < 1; enquanto j <= 5 faa incio conhea (ma[i,j] , mb[i,j]); mc[i,j] < ma[i,j] + mb[i,j]; j < j + 1; fim; i < i + 1; fim; j < 1; enquanto j <= 5 faa incio i < 1; enquanto i <= 5 faa incio informe (mc[i,j]); i < i + 1; fim; 48

______________________________________________________________________________________________Estruturas de Dados

j < j + 1; fim; fim. Exerccios 1.O tempo que um determinado avio leva para percorrer o trecho entre duas localidades distintas est disponvel atravs da seguinte tabela: A 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 B C D E F G

a) Construa um algoritmo que leia a tabela acima e informe ao usurio o tempo necessrio para percorrer duas cidades por ele fornecidas, at o momento em que ele fornecer duas cidades iguais (fonte e destino). b) Elabore um algoritmo que imprima a tabela sem repeties (apenas o tringulo superior ou o tringulo inferior). c) Desenvolva um algoritmo que permita ao usurio informar vrias cidades, at inserir uma cidade 0, e que imprima o tempo total para cumprir todo o percurso especificado entre as cidades fornecidas. d) Escreva um algoritmo que auxilie um usurio a escolher um roteiro de frias, sendo que o usurio fornece quatro cidades: a primeira sua origem, a ltima seu destino obrigatrio, e as outras duas caracterizam a cidade de descanso (no meio da viagem). Por isso, o algoritmo deve fornecer ao usurio qual das duas viagens (origem para descanso, descanso para destino) seja o mais prximo possvel.

Agregados Heterogneos
J sabemos que um conjunto homogneo de dados composto por variveis do mesmo tipo primitivo; porm, se tivssemos um conjunto em que os elementos no so do mesmo tipo, teramos ento um conjunto heterogneo de dados.

Registros Uma das principais estruturas de dados o registro. Para exemplificar, imagine uma passagem de nibus, que formada por um conjunto de informaes logicamente relacionadas, porm de tipos diferentes, tais como: nmero da passagem (inteiro), origem e destino (caracter), data (caracter), horrio (caracter), poltrona (inteiro), distncia (real), fumante (lgico), que so subdivises (elementos de conjunto) do registro, tambm chamadas de campos. Logo, um registro composto por campos que so partes que especificam cada uma das informaes.

49

______________________________________________________________________________________________Estruturas de Dados

Nmero:___________ Fumante:____________ De:__________________________________ Para:__________________________ Data: ____ / _____ / ______ Horrio: ______ : ______ Poltrona:________________ Distncia:______________________ Declarao Tipo IDENTIFICADOR = registro campo1 : tipo; campo2 : tipo; " campoN : tipo; fimregistro; variveis varivel : IDENTIFICADOR; Onde: IDENTIFICADOR : representa o nome associado ao tipo registro construdo. Campo1, campo2, campoN: so os nomes associados a cada campo do registro. Da mesma forma que na declarao de vetores e matrizes, primeiramente devemos criar um tipo, para ento declararmos as variveis desse tipo. Exemplo: Conhecer um passageiro e imprimir. Tipo RegPassagem = registro nmero, poltrona : inteiro; origem, destino, data, horrio : caracter; distncia : real; fumante : lgico; fimregistro; variveis passagem : RegPassagem; incio leia(passagem.nmero, passagem.poltrona); leia(passagem.origem, passagem.destino); leia(passagem.data, passagem.horrio); leia(passagem.distncia, passagem.fumante); escreva(passagem.nmero, passagem.poltrona); escreva(passagem.origem, passagem.destino); escreva(passagem.data, passagem.horrio); escreva(passagem.distncia, passagem.fumante); fim. 50 "

______________________________________________________________________________________________Estruturas de Dados

Conjunto de Registros
Nas estruturas compostas heterogneas (vetores e matrizes) utilizamos tipos de dados primitivos como sendo os elementos dessas estruturas. Agora utilizaremos como componente dessa estrutura no apenas um tipo primitivo, mas sim os tipos construdos, neste caso os registros. Supondo que quisssemos manter um registro de informaes relativas a passagens rodovirias de todos lugares de um nibus, utilizaramos um registro diferente para cada poltrona, e para agrupar todos eles utilizaramos um conjunto desses registros. Como possumos 44 lugares num nibus, numerados seqencialmente de 1 at 44, podemos, para uni-los, criar um vetor no qual cada posio um elemento de tipo construdo registro (passagem). Como possumos um vetor composto por registros, no podemos declara esse vetor sem antes ter declarado seus elementos; devemos ento declarar primeiro o tipo construdo registro e depois o vetor. Tipo RegPassagem = registro nmero, poltrona : inteiro; origem, destino, data, horrio : caracter; distncia : real; fumante : lgico; fimregistro; VetPassagem = vetor [1 .. 44] de RegPassagem; variveis passagem : RegPassagem; vetor : VetPassagem; incio para i < 1 at 44 faa incio conhea (vetor[i].nmero); conhea (vetor[i].poltrona); conhea (vetor[i].origem); conhea (vetor[i].destino); conhea (vetor[i].data); conhea (vetor[i].horrio); conhea (vetor[i].distncia); conhea (vetor[i].fumante); fim; fim.

51

______________________________________________________________________________________________Estruturas de Dados

Exerccio 1.Defina um registro para cheque bancrio. 2.Construa um algoritmo que, usando um campo saldo de um registro conta bancria, imprima um relatrio dos cheques sem fundos. 3.Uma determinada biblioteca possui obras de cincias exatas, cincias humanas e cincias biomdicas, totalizando 1.500 volumes, sendo 500 volumes de cada rea. O proprietrio resolveu informatiz-la e para tal agrupou as informaes sobre cada livro do seguinte modo:

Cdigo de Catalogao:_____________________________ Doado:__________ Nome da Obra:_____________________________________________________ Nome do Autor:_____________________________________________________ Editora:____________________________ No de pginas:___________________ 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; 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). 52

______________________________________________________________________________________________Estruturas de Dados

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: Proprietrio:______________________________________ Combstivel:___________ Modelo:____________________________________ Cor:_______________________ No chassi:___________________ Ano:______________ Placa:____________________ Combustvel pode ser lcool, diesel ou gasolina; Placa possui os trs primeiros valores alfabticos e os quatro restantes numricos. Sabendo-se que o nmero mximo de veculos da cidade de 5.000 unidades e que os valores no precisam ser lidos. a) Construa um algoritmo que liste todos os proprietrios cujos carros so do ano de 1980 e acima e que sejam movidos a diesel. b) Escreva um algoritmo que liste todas as placas que comecem com a letra A e terminem com 0, 2, 4 ou 7 e seus respectivos proprietrios. c) Elabore um algoritmo que liste o modelo e a cor dos veculos cujas placas possuem como segunda letra uma vogal e cuja soma dos valores numricos fornece um nmero par. d) Construa um algoritmo que permita a troca do proprietrio com o fornecimento do nmero do chassi apenas para carros com placas que no possuem nenhum dgito igual a zero. 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

53

__________________________________________________________________________________________Procedimentos e Funes

Procedimentos e Funes
Ao desenvolvermos um programa, muitas vezes precisamos utilizar uma pequena rotina repetidamente em mais de um local do mesmo, quando fazemos isso, estamos ocupando mais espao de memria, aumentando a complexidade do algoritmo, aumentando o tamanho do programa. Para evitar tudo isso, podemos modularizar o programa, isto , criar procedimentos e funes (mdulos) uma vez apenas, e cham-los repetidamente de vrias partes do programa, por um nome que os identifica.

Procedimentos
Aqui aplicamos efetivamente o termo Dividir para Conquistar, quando nos depararmos com um problema, e formos resolv-lo por meio de algoritmos, devemos dividi-lo em vrios problemas menores, se necessrio, dividimos novamente em vrios outros problemas menores, resolvendo estes problemas estaremos conseqentemente resolvendo nosso problema inicial. Como exemplo, faremos um algoritmo que imprima o extenso do nmero 1 ou 2. escreva num : inteiro; Procedimento mostre_um; incio escreva(Um); fim; Procedimento mostre_dois; incio escreva(Dois); fim; incio Repita leia(num); se num = 1 ento mostre_um; se num = 2 ento mostre_dois; At num > = 2; fim. 54

__________________________________________________________________________________________Procedimentos e Funes

O que acontece neste algoritmo o seguinte, os blocos que comeam com a palavra Procedimento, so mdulos que somente sero executados se chamados do principal ou outro mdulo do algoritmo. Sendo assim o primeiro comando a ser executado o comando leia, dentro da estrutura de repetio Repita, que ir conhecer o valor da varivel num, o valor da varivel ento testado, se for igual a 1 o procedimento mostra_um chamado, quando isto acontece os comandos que esto contidos dentro do procedimento, neste caso somente o comando informe. Quando a ultima linha do procedimento executada e encontra-se o comando fim, a execuo do algoritmo volta exatamente ao comando aps a chamada do procedimento, neste caso, aps a linha mostra_um ou mostra_dois, executado o teste da estrutura de repetio, se num for maior que 2 o algoritmo encerrado, caso contrrio, o algoritmo executado novamente a partir do comando leia.

Escopo de Variveis 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. 55

__________________________________________________________________________________________Procedimentos e Funes

Variveis num : inteiro; Procedimento mostre_num (numero : caracter); incio escreva(numero); fim; incio Repita leia(num); se num = 1 ou num = 2 ento mostre_num(num); At num > = 2; fim. Observe como nosso algoritmo ficou menor e mais legvel, conseguimos isto com a passagem de parmetros para o procedimento.

Funes
Como voc pde perceber, os procedimentos so blocos de comandos que executam determinada tarefa, mas no retornam nenhum valor, ao contrrio das Funes, que so especificamente desenvolvidas para retornarem valores aos mdulos que as chamam. Como exemplo vamos construir um algoritmo que retorne o valor de uma expresso matemtica: variveis X : real; 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 como para uma funo, volte com o valor alterado. Para isso voc deve conhecer o conceito de 56

__________________________________________________________________________________________Procedimentos e Funes

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. 3.A converso de graus Fahrenheit para centgrados obtida pela frmula C = 5/9 (F-32). Escreva um 57

__________________________________________________________________________________________Procedimentos e Funes

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; Incio : B; : Fim Fim A; : Procedimento B; Incio :

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). Em uma chamada recursiva deve-se considerar a possibilidade da ocorrncia da no terminao dos 58

__________________________________________________________________________________________Procedimentos e Funes

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 i := N Enquanto i > 1 Faa i := i-1; fimenquanto; Incio Se i = 1 ento Dec := i; seno inicio i:= i-1; Dec ( i ) fim; fim; Recursivo Funo Dec (i : Inteiro);

59

_______________________________________________________________________________________________________Arquivos

Arquivos
Chegamos em um ponto, onde voc com certeza j percebeu que totalmente intil ficar fazendo algoritmos, algoritmos e algoritmos, se no podemos gravar nossas informaes. Imagine uma biblioteca informatizada, onde todos os livros e scios esto cadastrados; impossvel cadastrar tudo, toda vez que liga-se o computador; da mesma forma que impossvel manter o computador 24 horas por dia ligado para no perder as informaes. Para evitar isso, ns vamos aprender a usar os arquivos, onde poderemos guardar nossas informaes, e recuper-las a qualquer momento, mesmo desligando o computador. Para voc ter uma idia de como tratamos os arquivos em computadores, faremos uma comparao com um arquivo de ferro: Quanto estrutura: Imagine um arquivo de ferro, com uma gaveta apenas; dentro do arquivo existem vrias fichas numeradas, estes nmeros so as posies no arquivo; e todas as fichas contm informaes padres, estas informaes so os registros. Quanto manipulao: Logicamente para voc operar um arquivo, primeiramente ele deve existir, voc ento compra este arquivo - no nosso caso criamos o arquivo. Toda a vez que voc ir guardar (gravar) ou pegar (ler) uma ficha (registro em determinada posio), voc deve abrir o arquivo. Cuidado, se o arquivo j estiver aberto, no tente abr-lo novamente. Aps aberto o arquivo, se vai guardar uma nova ficha, voc deve numer-la na sequencia das fichas j existentes. Se vai pegar uma ficha, voc deve achar o nmero da ficha que quer pegar. Depois de feito isto, no esquea de fechar o arquivo.

Definio
Um arquivo um conjunto de registros (ou seja, uma estrutura de dados), no qual cada registro no ocupa uma posio fixa dentro da estrutura, no possuindo portanto tamanho pr estabelecido. Os registros so formados por unidades de informao, denominadas campos. Este conjunto de registros armazenado em um dispositivo de memria secundria (disco).

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 0 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 arquivo de 60

_______________________________________________________________________________________________________Arquivos

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. 0 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. 0 Tipo cdigo : inteiro; nome : caracter; Ficha = Registro

Fim registro; ArqCli = Arquivo de Ficha; 0 Varivel cliente : arq-cli; Reg_cli : Ficha;

Manipulao de Arquivos
0 Abertura 0 Todo arquivo deve ser aberto para que as informaes contidas, possam ser recuperadas. Isto , atravs do comando Abra (nome-do-arquivo). Generalizando, pode-se admitir que todo arquivo possui maneiras semelhantes de ser manipulado, independentemente de como foi concebido.

1 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); 0 Ex.: Feche (clientes); Leitura Num arquivo no se deve retirar informaes, pois se assim fosse este se tornaria vazio 61

_______________________________________________________________________________________________________Arquivos

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); 0 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. 0 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 0 Leia (clientes, reg_cli); 1 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); Posicione (clientes, reg_cli.posio); 62

_______________________________________________________________________________________________________Arquivos

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.

63