Você está na página 1de 33

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho

LGICA DE PROGRAMAO Objetivo: capacitar o estudante a criar diferentes estruturas de repetio e de deciso atravs do uso de operadores lgicos, relacionais e aritmticos, conforme necessidades reais de programao. Tambm objetiva a criao de algoritmos completos e funcionais utilizando diferentes estruturas de programao. Tpico 1: Lgica de Programao O que Lgica de Programao e Seqncia Lgica? Lgica de programao a tcnica de encadear pensamentos para atingir determinado objetivo. Ela permite definir uma seqncia lgica de passos, que so executados at atingir um objetivo ou soluo de um problema. Exemplos de Seqncias Lgicas para: Chupar uma bala: 1. 2. 3. 4. Pegue a bala; Retire o papel; Chupe a bala; Jogue o papel no lixo.

Fritar um ovo: 1. 2. 3. 4. 5. 6. 7. Pegue o ovo, a manteiga, o sal e a frigideira; Coloque a frigideira sob o acendedor do fogo; Acenda o fogo do acendedor; Coloque a manteiga na frigideira e espere ela derreter; Quebre o ovo e coloque a clara e a gema do mesmo na frigideira; Adicione uma pitada de sal na frigideira; Espere terminar de fritar para em seguida desligar o fogo.

Exerccios: 1) Crie uma seqncia lgica para tomar banho. 2) Faa um algoritmo para somar dois nmeros e multiplicar o resultado pelo primeiro nmero. 3) Descreva com detalhes a seqncia lgica para trocar um pneu de um carro. 4) Faa um algoritmo para trocar uma lmpada. 5) Quais so os passos necessrios para efetuar um emprstimo de livro numa biblioteca. 6) Descreva com detalhes a seqncia lgica para fazer um bolo de aniversrio. 7) Quais etapas so necessrias para efetuar um saque num caixa eletrnico. 8) Quais so os passos necessrios para deixar um recado para um amigo no Orkut.

2
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho Tpico 2: Desenvolvimento de Algoritmos O que so Instrues? Instrues so um conjunto de regras ou normas definidas para a realizao ou emprego de algo. Em informtica, o que indica a um computador uma ao elementar a executar. Convm ressaltar que uma ordem isolada no permite realizar o processo completo, para isso necessrio um conjunto de instrues colocadas em ordem seqencial lgica. O que um Algoritmo? Um algoritmo formalmente uma seqncia finita de passos que levam a execuo de uma tarefa. Podemos pensar em algoritmo como uma receita, uma seqncia de instrues que do cabo de uma meta, um objetivo especfico. Estas tarefas no podem ser redundantes nem subjetivas na sua definio, devem ser claras e precisas. O que um Programa? Os programas de computadores nada mais so do que algoritmos escritos numa linguagem de computador (Pascal, C, Cobol, Fortran, Visual Basic, Java, entre outras) e que so interpretados e executados por uma mquina, no caso um computador. Notem que dada esta interpretao rigorosa, um programa por natureza muito especfico e rgido em relao aos algoritmos da vida real. Como se escreve um Algoritmo? Para escrever um algoritmo precisamos descrever a seqncia de instrues, de maneira simples e objetiva. Para isso utilizaremos algumas tcnicas: Usar somente um verbo por frase Usar frases curtas e simples Ser objetivo Procurar usar palavras que no tenham sentido dbio importante ressaltar que qualquer tarefa que siga determinado padro pode ser descrita por um algoritmo, como por exemplo: FAZER ARROZ DOCE ou ento CALCULAR O SALDO FINANCEIRO DE UM ESTOQUE. Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em trs fases fundamentais.

Onde temos: ENTRADA: So os dados de entrada do algoritmo PROCESSAMENTO: So os procedimentos utilizados para chegar ao resultado final SADA: So os dados j processados

3
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho

Problema: Calcular a mdia final dos alunos da 3 Srie. Os alunos realizaro quatro provas: P1, P2, P3 e P4. A Mdia Final ser igual a (P1 + P2 + P3 + P4)/4. Para montar o algoritmo proposto, so efetuadas trs perguntas: a) Quais so os dados de entrada? R: Os dados de entrada so P1, P2, P3 e P4 b) Qual ser o processamento a ser utilizado? R: O procedimento ser somar todos os dados de entrada e dividi-los por 4 (quatro), (P1 + P2 + P3 + P4)/4. c) Quais sero os dados de sada? R: O dado de sada ser a mdia final Algoritmo Proposto: Receba a nota da prova1 Receba a nota de prova2 Receba a nota de prova3 Receba a nota da prova4 Calcule a Mdia somando todas as notas e dividindo o resultado por 4 Mostre a Mdia das notas Teste de Mesa: Aps desenvolver um algoritmo ele dever sempre ser testado. Este teste chamado de TESTE DE MESA, que significa, seguir as instrues do algoritmo de maneira precisa para verificar se o procedimento utilizado est correto ou no. Veja o resultado da execuo do exemplo anterior:
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho

P1 nota1 nota1 nota1 nota1 nota1 nota1

P2 nota2 nota2 nota2 nota2 nota2

P3

P4

Mdia

Sada

nota3 nota3 nota3 nota3 nota4 nota4 nota4 (nota1+nota2+nota3+nota4)/4 (nota1+nota2+nota3+nota4)/4 Mdia

Exerccios: 1) Identifique os dados de entrada, processamento e sada no algoritmo abaixo: Receba cdigo da pea; Receba valor da pea; Receba quantidade de peas; Calcule o valor total da pea (quantidade * valor da pea); Mostre o cdigo da pea e seu valor total. 2) Faa um algoritmo para Calcular o estoque mdio de uma pea, sendo que ESTOQUEMDIO = (QUANTIDADE MNIMA + QUANTIDADE MXIMA) /2. 3) Efetue o Teste de Mesa no algoritmo anterior com dados definidos por voc. O que um Diagrama de Blocos? O diagrama de blocos uma forma padronizada e eficaz para representar os passos lgicos de um determinado processamento. Com o diagrama pode-se definir uma seqncia de smbolos, com um significado bem definido, portanto, sua principal funo a de facilitar a visualizao dos passos de um processamento. Como representar um Diagrama de Blocos? Existem diversos smbolos em um diagrama de bloco. O quadro abaixo apresenta alguns smbolos que sero usados durante o curso:

5
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho Dentro do smbolo sempre ter algo escrito, pois somente os smbolos no dizem nada. Veja no exemplo a seguir:

Veja que no exemplo da bala seguiu-se uma seqncia lgica somente com informaes diretas, j no segundo exemplo da mdia utilizou-se clculo e exibiu-se o resultado do mesmo. Exerccios: 1) Construa um diagrama de blocos que : Leia a cotao do dlar; Leia um valor em dlares; Converta esse valor para Real; Mostre o resultado.

6
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho 2) Desenvolva um diagrama que: Leia 4 (quatro) nmeros; Calcule o quadrado para cada um; Somem todos e; Mostre o resultado. 3) Construa um algoritmo para pagamento de comisso de vendedores de peas, levando-se em considerao que sua comisso ser de 5% do total da venda e que voc tem os seguintes dados: Identificao do vendedor; Cdigo da pea; Preo unitrio da pea; Quantidade vendida. E depois construa o diagrama de blocos do algoritmo desenvolvido, e por fim faa um teste de mesa.

Tpico 3: Identificadores, Constantes, Variveis e Tipos de Dados O que so Identificadores? Identificadores so nomes simblicos para os objetos referenciados nos algoritmos. Identificadores podem ser formados por uma letra ou caracter sublinhado seguido por qualquer combinao de letras, dgitos ou sublinhados. Exemplos de identificadores:

O que so Constantes? Constante um determinado valor fixo que no se modifica ao longo do tempo, durante a execuo de um programa. Conforme o seu tipo, a constante classificada como sendo numrica, lgica e literal. Exemplo de constantes:

7
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho O que so Variveis? Varivel a representao simblica dos elementos de um certo conjunto. Cada varivel corresponde a uma posio de memria, cujo contedo pode se alterado ao longo do tempo durante a execuo de um programa. Embora uma varivel possa assumir diferentes valores, ela s pode armazenar um valor a cada instante. Exemplos de variveis:

O que so Tipos de Dados? Trata-se de uma combinao de valores e de operaes que constantes e variveis podem executar. As variveis e as constantes podem ser basicamente de trs tipos: Numricas, Alfanumricas ou Lgicas. Numricas: Especficas para armazenamento de nmeros, que posteriormente podero ser utilizados

para clculos. Podem ser ainda classificadas como Inteiras ou Reais. As variveis do tipo inteiro so para armazenamento de nmeros inteiros e as Reais so para o armazenamento de nmeros que possuam casas decimais. Literais: Especficas para dados que contenham letras e/ou nmeros. Pode em determinados momentos conter somente dados numricos ou somente literais. Se usado somente para armazenamento de nmeros, no poder ser utilizada para operaes matemticas. Lgicas: Armazenam somente dados lgicos que podem ser Verdadeiro ou Falso.

Como se Declara uma Varivel? As variveis s podem armazenar valores de um mesmo tipo, de maneira que tambm so classificadas como sendo numricas, lgicas e literais. Para declarar novas variveis, basta seguir a sintaxe abaixo, descrevendo o tipo da varivel e seu identificador: Tipo1 Identificador1; Tipo2 Identificador21, Identificador22, Identificador23; ... TipoN ListaDeIdentificadoresDoTipoN; Como se Atribui um Valor uma Varivel? Atribuir um valor a uma varivel significa armazenar um valor temporariamente numa varivel. Isto ocorre quando uma instruo de atribuio utilizada no algoritmo, cujos exemplos seguem abaixo: 8
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho

// Declarao de Variveis Inteiro x, y; Literal a; Logica b; // Atribuio de Valores s Variveis x = 1; y = x + 2; a = abc; b = falso; Pode-se observar que a atribuio procura um valor que est a direita de =, que pode ser uma expresso, para uma varivel (nica) que est na parte esquerda da instruo, representada pelo seu identificador. Sempre que houver um comando de atribuio deve-se observar os seguintes itens: Primeiro avaliada a parte direita, obtendo-se um valor nico. A parte da direita do comando de atribuio pode ser uma expresso bem complicada. O valor obtido da expresso da parte direita atribudo varivel (nica) que est na parte esquerda. O tipo do valor avaliado da expresso na parte direita deve ser compatvel com o tipo da varivel que est na parte esquerda. Obs.: um nmero inteiro tambm pode ser visto como um nmero real. Se um valor armazenado em uma varivel, o valor anterior que estava nesta varivel perdido.

Exerccios: 1) Faa um algoritmo que calcule a velocidade mdia de um carro. Este algoritmo ir receber o tempo e o espao percorrido pelo carro. 2) Faa um algoritmo que recebe uma temperatura em graus Fahrenheit e calcula a temperatura equivalente em graus Centgrados. Obs.: C = (5/9)*(F-32) 3) Faa agora um algoritmo que recebe uma temperatura em graus Centgrados e calcula a temperatura equivalente em graus Fahrenheit. 4) Escreva um algoritmo que calcule a hipotenusa de um tringulo reto. 5) Refaa os algoritmos dos exerccios propostos anteriores, s que agora usando declaraes de variveis e atribuies. Tpico 4: Lgica Matemtica O que so Operadores? Os operadores so meios pelos quais so efetuados incrementos, decrementos, comparaes e avaliaes de dados dentro do computador. Pode-se destacar trs tipos de operadores: Operadores Aritmticos; Operadores Relacionais; Operadores Lgicos.

9
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho Para que serve os Operadores Aritmticos? Os operadores aritmticos so os utilizados para obter resultados numricos. Alm da adio, subtrao, multiplicao e diviso, pode-se utilizar outros operadores aritmticos (cujo suporte depende da linguagem de programao escolhida), como o operador para exponenciao por exemplo. Os smbolos para os operadores aritmticos so:

Operao Adio Subtrao Multiplicao Diviso Exponenciao

Smbolo + * / **

Qual a hierarquia de precedncia das Operaes Aritmticas? 1) ( ) Parnteses 2) Exponenciao 3) Multiplicao, diviso (o que aparecer primeiro) 4) + ou (o que aparecer primeiro) Exemplo:

Para que servem os Operadores Relacionais? Os operadores relacionais so utilizados para comparar valores de tipos de dados semelhantes, sejam constantes ou variveis de um mesmo tipo. Estes operadores sempre retornam valores lgicos (verdadeiro ou falso/ True ou False). Parnteses podem ser usados para se definir prioridades na avaliao de expresses relacionais.

10
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho Os operadores relacionais so:

Operao Maior que Menor que Menor ou igual que Maior ou igual que Igual Diferente

Smbolo > < >= <= == <> ou !=

Exemplo: Tendo duas variveis A = 5 e B = 3, os resultados das expresses seriam:

Expresso A == B A <> B A>B A<B A >= B A <= B

Resultado Falso Verdadeiro Verdadeiro Falso Verdadeiro Falso

Para que servem os Operadores Lgicos? Os operadores lgicos servem para combinar resultados de expresses relacionais, retornando se o resultado final verdadeiro ou falso. Os operadores lgicos so: AND (E) - Uma expresso AND (E) verdadeira se todas as condies forem verdadeiras; OR (OU) - Uma expresso OR (OU) verdadeira se pelo menos uma condio for verdadeira NOT (NO) - Um expresso NOT (NO) inverte o valor da expresso ou condio, se verdadeira inverte para falsa e vice-versa.

11
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho A tabela abaixo mostra todos os valores possveis criados pelos trs operadores lgicos (AND, OR e NOT): 1 Valor V V F F V V F F V F Exemplos: Dada as trs variveis A = 5, B = 8 e C =1, os resultados das expresses seriam: Expresses A == B A <> B A>B A<B A >= B A <= B Exerccios: 1) Tendo as variveis SALARIO, IR e SALLIQ, e considerando os valores abaixo. Informe se as expresses so verdadeiras ou falsas. AND OR NOT AND OR NOT B>C B=C B>C B<C Resultado F V V V F F Operador AND AND AND AND OR OR OR OR NOT NOT 2 Valor V F V F V F V F F V Resultado V F F F V V V F

SALARIO 100,00 200,00 300,00

IR 0,00

SALLIQ 100

EXPRESSO (SALLIQ >= 100,00) (SALLIQ < 190,00) (SALLIQ == SALARIO IR)

V ou F

10,00 190,00 15,00 285,00

2) Sabendo que A=3, B=7 e C=4, informe se as expresses abaixo so verdadeiras ou falsas. a) (A+C) > B b) B >= (A + 2) c) C = (B A) d) (B + A) <= C e) (C+A) > B ( ) ( ) ( ) ( ) ( )

3) Sabendo que A=5, B=4 e C=3 e D=6, informe se as expresses abaixo so verdadeiras ou falsas. a) (A > C) AND (C <= D) b) (A+B) > 10 OR (A+B) = (C+D) ( ( ) ) 12
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho c) (A>=C) AND (D >= C) O que so Proposies? Proposio todo o conjunto de palavras ou smbolos que exprimem um pensamento de sentido completo. As proposies transmitem pensamentos, isto , afirmam fatos. Exemplo: (a) A Lua um satlite da Terra. (b) Recife a capital de Pernambuco. A Lgica da Matemtica adota como regras fundamentais do pensamento os dois seguintes princpios (ou axiomas): (I) PRINCPIO DA NO CONTRADIO: Uma proposio no pode ser verdadeira e falsa ao mesmo tempo. (II) PRINCPIO DO TERCEIRO EXCLUDO: Toda proposio ou verdadeira ou falsa, verifica-se sempre um destes casos e nunca um terceiro. Por virtude deste princpio diz-se que a Lgica Matemtica uma Lgica bivalente. Por exemplo, as proposies (a), (b) acima so todas verdadeiras, mas as duas seguintes so falsas: (a) Vasco da Gama descobriu o Brasil. (b) A Terra quadrada. Assim, as proposies so expresses a respeito das quais tem sentido dizer que so verdadeiras e falsas. Quais so os valores lgicos das proposies? O valor lgico de uma proposio verdade se a proposio verdadeira e falsidade se a proposio falsa. Os valores lgicos verdade e falsidade de uma proposio designam-se abreviadamente pelas letras V e F, respectivamente. Aplicando os princpios da no contradio e do terceiro excludo, conclui-se que toda proposio tem um, e um s, dos valores V, F. Exemplo: (a) O mercrio mais pesado que a gua. (b) O Sol gira em torno da Terra. ( )

O valor lgico da proposio (a) a verdade(V) e o valor lgico da proposio (b) a falsidade (F). Como as proposies so classificadas? As proposies podem ser classificadas em simples e compostas. Proposio simples aquela que no contm nenhuma outra proposio como parte integrante de si mesma. As proposies simples so geralmente designadas pelas letras latinas minsculas p, q, r, s ...., chamadas letras proposicionais. Exemplos de proposies simples: p : Carlos careca. 13
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho q : Pedro estudante. r : O nmero 25 quadrado perfeito. Uma proposio composta aquela formada pela combinao de duas ou mais proposies. As proposies compostas so habitualmente designadas pelas letras latinas P, Q, R, S...., tambm chamadas letras proposicionais. Exemplos de proposies compostas: P : Carlos careca e Pedro estudante. Q : Carlos careca ou Pedro estudante. S : Se Carlos careca, ento infeliz. As proposies compostas tambm costumam ser chamadas frmulas proposicionais ou apenas frmulas. Quando interessa destacar ou explicitar que uma proposio composta P formada pela combinao das proposies simples p, q, r...., escreve-se: P(p, q, r). O que so Conectivos? Conectivos so palavras usadas para formar novas proposies a partir de outras. Por exemplo, nas seguintes proposies compostas: P : O nmero 6 par e o nmero 8 cubo perfeito. Q : O tringulo ABC retngulo ou issceles. R : No est chovendo. S : Se Jorge engenheiro, ento sabe matemtica. T : O tringulo ABC equiltero se e somente se equiltero. So conectivos usuais em lgica de matemtica as palavras: "e", "ou", "no", "se...ento", "...se e somente se...". O que uma Tabela-Verdade? uma tcnica que apresenta todos os possveis valores lgicos de uma proposio composta. O valor de uma proposio composta definido pela composio dos valores lgicos das suas proposies simples componentes, e, segundo o princpio do terceiro excludo, toda a proposio simples p verdadeira ou falsa, isto , tem o valor lgico V(verdade) ou o valor lgico F(falsidade). Exemplo - proposio composta cujas proposies simples componentes so p e q:

14
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho

_ p q 1 V 2 V 3 F 4 F V F V F

Exemplo - proposio composta cuja proposies simples componentes so p, q, r:

_ p q r 1 V 2 V 3 V 4 V 5 F 6 F 7 F 8 F V V V F F F V F

V V V F F F V F

Exerccios: 1) D os valores lgicos das proposies abaixo, isto , atribua V ou F para cada uma delas. a) 3+5=8 b) A lua um satlite da terra. c) Colombo descobriu o Brasil. d) Pedro lvares Cabral descobriu a Colmbia. e) o nmero 11 primo. f) (8-3)2 = 82 - 32 g) Um nmero divisvel por 2 par h) 1 e -1 so razes da equao x^2 - 1=0 Quais operaes lgicas sobre proposies podemos executar? Negao, Conjuno, Disjuno, Disjuno Exclusiva, Condicional, e Bicondicional. O que uma Negao? Chama-se negao de uma proposio p a proposio representada por "no p", cujo valor lgico a verdade(V) quando p falsa, e a falsidade(F) quando p verdadeira. Assim, "no p" tem o valor lgico oposto daquele de p. Simbolicamente, a negao de p indica-se com a notao " ~ p ", que se l: "no p".

O valor lgico da negao de uma proposio , portanto, definido pela seguinte tabela-verdade:

p ~ p 15
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho

V F

F V

ou seja, pelas igualdades: ~V = F, ~F = V Exemplo: (a) p : Roma a capital da Frana (F) e ~p : Roma no capital da Frana (V). (b) p : O Sol uma estrela (V). ~p : O Sol no uma estrela (F). O que uma Conjuno? Chama-se conjuno de duas proposies p e q a proposio representada por "p e q", cujo valor lgico a verdade(V) quando as proposies p e q so ambas verdadeiras e a falsidade(F) nos demais casos. Simbolicamente, a conjuno de duas proposies p e q indica-se com a notao " p ^ q " que se l " p e q ". O valor lgico da conjuno de duas proposies , portanto, definido pela seguinte tabela-verdade:

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

ou seja, pelas igualdades: V ^ V = V, V ^ F = F, F ^ V = F, F ^ F = F Exemplo: p : A neve branca (V). q : 2 > 5 (F). p ^ q : A neve branca e 2 < 5 (F). V^F=F O que uma Disjuno? Chama-se disjuno de duas proposies p e q a proposio representada por " p ou q ", cujo valor lgico a verdade(V) quando ao menos uma das duas proposies p e q verdadeira e a falsidade(F) quando as proposies p e q so ambas falsas. Simbolicamente, tabela-verdade: a disjuno de duas proposies p e q indica-se com a notao: " p v q ", que se l: " p ou q ". O valor lgico da disjuno de duas proposies , portanto, definido pela seguinte

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

ou seja, pelas igualdades:


TECNOLOGIA DA INFORMAO T.I.

16

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho V v V = V, V v F = V, F v V = V, F v F = F. Exemplo: p : Paris a capital da Frana (V) q : 9 - 4 = 6 (F). p v q : Paris a capital da Frana ou 9 - 4 = 6 (F). VvF=V O que uma Disjuno Exclusiva? Chama-se disjuno exclusiva de duas proposies p e q a proposio representada simbolicamente por p q,

que se l: ou p ou q ou p ou q, mas no ambos, cujo valor lgico verdade (V) somente quando p verdadeira ou q verdadeira, mas no quando p e q so ambas verdadeiras, e falsidade(F) quando p e q so ambas verdadeiras ou ambas falsas. O valor lgico da disjuno exclusiva de duas proposies definido pela seguinte tabela-verdade:

p q V F

V V F V F F F F V V

ou seja, pelas igualdades:

V V = F, V F = V, F V = V, F F = F.
Exemplo: p : Paris a capital da Frana (V) q : 9 - 4 = 6 (F).

p q : Ou paris a capital da Frana ou 9 - 4 = 6 (V).


VF=V O que uma Condicional? Chama-se proposio condicional ou apenas condicional uma proposio representada por " se p ento q ", cujo valor lgico a falsidade(F) no caso em p verdadeira e q falsa e a verdade(V) nos demais casos. Simbolicamente, a condicional de duas proposies p e q indica-se com a notao: "p -> q", que tambm se l de uma das seguintes maneiras: (i) (ii) p condio suficiente para q. (ii)q condio necessria para p.

Na condicional " p -> q ", diz-se que p o antecedente e q o consequente. O smbolo " -> " chamado smbolo de implicao. O valor lgico da condicional de duas proposies , portanto, definido definido pela seguinte tabela-verdade:

p V V

q V F

p -> q V F 17
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho

F F

V F

V V V -> V = V, V -> F = F, F -> V = V, F -> F = V.

ou seja, pelas igualdades:

Exemplos: (a) p : GALOIS morreu em duelo (V) q : 9 - 4 = 5 (V). p -> q : Se GALOIS morreu em duelo ento 9 - 4 = 5 (V). V -> V = V (b) p : CAMES escreveu Lusadas (V) q : 9 - 4 = 10 (F). p -> q : Se CAMES escreveu Lusadas ento 9 - 4 = 10 (F). V -> F = F O que uma Bicondicional? Chama-se proposio bicondicional ou apenas bicondicional uma proposio representada por " p se e somente se q ", cujo valor lgico a verdade(V) quando p e q so ambas verdadeiras ou ambas falsas, e a falsidade(F) nos demais casos. Simbolicamente, a bicondicional de duas proposies p e q indica-se com a notao: p <-> q, que tambm se l de uma das seguintes maneiras: (i) p condio necessria e suficiente para q. (ii)q condio necessria e suficiente para p. O valor lgico da bicondicional de duas proposies portanto, definido pela seguinte tabela-verdade: p q p <-> q V V F F V F V F V F F V V <-> V = V, V <-> F = F, F <-> V = F, F <-> F = V. Portanto, uma bicondicional verdadeira somente quando tambm o so as duas condicionais: p -> q e q -> p. Exemplos: (a) p : GALOIS morreu em duelo (V) q : 9 - 4 = 5 (V). p <-> q : GALOIS morreu em duelo se e somente se 9 - 4 = 5 (V). V <-> V = V (b) p : CAMES escreveu Lusadas (V) q : 9 - 4 = 10 (F). p <-> q : CAMES escreveu Lusadas se e somente se 9 - 4 = 10 (F). V <-> F = F 18
TECNOLOGIA DA INFORMAO T.I.

ou seja, pelas igualdades:

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho Exerccios: 1) Seja p a proposio Est frio e q a proposio Est chovendo. Traduzir, para a linguagem corrente, as seguintes proposies: a) ~p b) p ^ c) p+q d) q <-> p e) p -> ~q f) q v ~p g) ~p ^ ~q h) ~~q

2) Seja p a proposio Jorge rico e q a proposio Carlos feliz. Traduzir, para a linguagem corrente, as seguintes proposies: a) p+q b) q->p c) p v ~q d) q<->~p e) ~p->q f) (~p ^ q)->p

3) Traduza para a linguagem comum, sabendo que p: os preos so altos e q: os estoques so grandes. a) (p ^ q) ->p b) (p ^ ~q) ->~p c) ~p ^ ~q d) p+~q e) ~(p ^ q) f) ~(p+q) g) ~(~p+~q)

4) Seja p a proposio Jorge alto e q a proposio Jorge elegante. Traduzir, para a linguagem simblica, as seguintes proposies: a) Jorge alto e elegante. b) Jorge alto mas no elegante. c) No verdade que Jorge baixo ou elegante. d) Jorge no baixo e nem elegante. e) Jorge alto, ou baixo e elegante. f) No verdade que Jorge baixo ou que no elegante.

19
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho Tpico 5: Estruturas de Controle e Repetio O que so Comandos de Deciso? Os comandos de deciso, ou de controle, ou de desvio fazem parte das tcnicas de programao que conduzem a estruturas de programas que no so totalmente seqenciais. Com as instrues de SALTO ou DESVIO pode-se fazer com que o programa proceda de uma ou outra maneira, de acordo com as decises lgicas tomadas em funo dos dados ou resultados anteriores. As principais estruturas de deciso so: Se Ento e Se Ento Seno. Como utilizar o comando SE ENTO / IF ... THEN? A estrutura de deciso SE/IF normalmente vem acompanhada de um comando, ou seja, se determinada condio for satisfeita pelo comando SE/IF ento execute determinado comando. Imagine um algoritmo que determinado aluno somente estar aprovado se sua mdia for maior ou igual a 5.0: SE MEDIA >= 5.0 ENTO ALUNO APROVADO Em diagrama de blocos:

Em Java: if (MEDIA >= 5.0){ System.out.println(ALUNO APROVADO); } Como utilizar o comando SE ENTO SENO / IF ... THEN ... ELSE? A estrutura de deciso SE/ENTO/SENO, funciona exatamente como a estrutura SE, com apenas uma diferena, em SE somente podemos executar comandos caso a condio seja verdadeira, diferente de SE/SENO pois sempre um comando ser executado independente da condio, ou seja, caso a condio seja verdadeira o comando da condio ser executado, caso contrrio o comando da condio falsa ser executado. Em algoritmo ficaria assim: SE MDIA >= 5.0 ENTO ALUNO APROVADO SENO ALUNO REPROVADO Em diagrama de blocos:

20
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho

Em Java: if (MEDIA >= 5.0){ System.out.println(ALUNO APROVADO); } else { System.out.println(ALUNO REPROVADO); } No exemplo acima est sendo executada uma condio que, se for verdadeira, executa o comando APROVADO, caso contrrio executa o segundo comando REPROVADO. Pode-se tambm dentro de uma mesma condio testar outras condies. Como no exemplo abaixo:

Em Java: if (MEDIA >= 5.0){ if (MEDIA >= 7.0){ System.out.println(ALUNO APROVADO); } else{ System.out.println(ALUNO VAI FAZER OUTRA AVALIAO); } } else { System.out.println(ALUNO REPROVADO); } 21
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho Exerccios: 1) Joo Papo-de-Pescador, homem de bem, comprou um microcomputador para controlar o rendimento dirio de seu trabalho. Toda vez que ele traz um peso de peixes maior que o estabelecido pelo regulamento de pesca do estado de So Paulo (50 quilos) deve pagar um multa de R$ 4,00 por quilo excedente. Joo precisa que voc faa um diagrama de blocos que leia a varivel P (peso de peixes) e verifique se h excesso. Se houver, gravar na varivel E (Excesso) e na varivel M o valor da multa que Joo dever pagar. Caso contrrio mostrar tais variveis com o contedo ZERO. 2) Elabore um diagrama de bloco que leia as variveis C e N, respectivamente cdigo e nmero de horas trabalhadas de um operrio. E calcule o salrio sabendo-se que ele ganha R$ 10,00 por hora. Quando o nmero de horas exceder a 50 calcule o excesso de pagamento armazenando-o na varivel E, caso contrrio zerar tal varivel. A hora excedente de trabalho vale R$ 20,00. No final do processamento imprimir o salrio total e o salrio excedente. 3) Desenvolva um diagrama que: Leia 4 (quatro) nmeros; Calcule o quadrado de cada um; Se o valor resultante do quadrado do terceiro for >= 1000, imprima-o e finalize; Caso contrrio, imprima os valores lidos e seus respectivos quadrados. 4) Faa um diagrama de bloco que leia um nmero inteiro e mostre uma mensagem indicando se este nmero par ou mpar, e se positivo ou negativo. 5) A Secretaria de Meio Ambiente que controla o ndice de poluio mantm 3 grupos de indstrias que so altamente poluentes do meio ambiente. O ndice de poluio aceitvel varia de 0,05 at 0,25. Se o ndice sobe para 0,3 as indstrias do 1 grupo so intimadas a suspenderem suas atividades, se o ndice crescer para 0,4 as industrias do 1 e 2 grupo so intimadas a suspenderem suas atividades, se o ndice atingir 0,5 todos os grupos devem ser notificados a paralisarem suas atividades. Faa um diagrama de bloco que leia o ndice de poluio medido e emita a notificao adequada aos diferentes grupos de empresas. 6) Elabore um algoritmo que dada a idade de um nadador classifique-o em uma das seguintes categorias: Infantil A = 5 a 7 anos; Infantil B = 8 a 11 anos; Juvenil A = 12 a 13 anos; Juvenil B = 14 a 17 anos; Adultos = Maiores de 18 anos. 7) Elabore um algoritmo que gera e escreve os nmeros mpares dos nmeros lidos entre 100 e 200. 8) Construa um algoritmo que leia 500 valores inteiros e positivos e: Encontre o maior valor; Encontre o menor valor; Calcule a mdia dos nmeros lidos. O que so Comandos de Repetio? So comandos que permitem que um determinado conjunto de instrues ou comandos sejam executados um nmero definido ou indefinido de vezes, ou enquanto um determinado estado de coisas prevalecer ou at que seja alcanado. Os seguintes modelos de repetio sero trabalhados: Enquanto x, Faa (While ... Do); Para ... At ... Faa (For ... To ... Do). Como funciona o Enquanto x, Faa?
TECNOLOGIA DA INFORMAO T.I.

22

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho Neste caso, o bloco de operaes ser executado enquanto a condio x for verdadeira. O teste da condio ser sempre realizado antes de qualquer operao. Enquanto a condio for verdadeira o processo se repete. Pode-se utilizar essa estrutura para trabalhar com contadores. Em diagrama de bloco a estrutura a seguinte:

Em Java: int Nr = 0; while (Nr <= 100){ Nr = Nr + 1; } Como funciona o Para ... At ... Faa? Neste caso, o bloco de operaes j possui um nmero inicial e final para uma varivel de controle. Para cada 23
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho execuo do bloco de operaes, a varivel de controle incrementada. O processo se repete enquanto a varivel de controle no alcanar o valor final desejado. Exemplo do programa contador em Java, usando o comando Para ... At ... Faa: for (int Nr = 0; Nr <= 100; Nr = Nr + 1){ // aqui ser executado algum processamento 101 vezes!!! } Exerccios: 1) Faa um algoritmo que determine o maior entre N nmeros. A condio de parada a entrada de um valor 0, ou seja, o algoritmo deve ficar calculando o maior at que a entrada seja igual a 0 (ZERO). 2) 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 gros que o monge esperava receber. 3) Faa um algoritmo que conte de 1 a 100 e a cada mltiplo de 10 emita uma mensagem: Mltiplo de 10. 4) Faa um programa que descubra um nmero entre 0 e 1000 imaginado pelo usurio. O programa deve fazer interaes com o usurio. A cada interao, o programa deve tomar um nmero e perguntar para o usurio se este nmero igual, menor ou maior do que o valor imaginado. O usurio deve responder de forma correta. A execuo do programa deve terminar assim que o programa adivinharo valor imaginado pelo usurio. O programa deve imprimir o nmero imaginado e o nmero de perguntas feitas pelo programa. Seu programa no pode fazer mais que 10 perguntas. 5) Um banco faz emprstimos com uma taxa de juros mensal igual a t, onde 0 < t <= 1. Faa um programa que imprime quanto uma pessoa que toma emprestado q reais ficar devendo aps m meses. Os valores de q, t e m so lidos. Tpico 6: Vetores e Matrizes O que um Vetor? Trata-se de uma estrutura de dados que possibilita associar um identificador a um conjunto de elementos de um mesmo tipo. Este tipo de estrutura tambm chamada de matriz unidimensional. Por exemplo, imagine um programa onde precisa-se armazenar as notas de 10 provas realizadas por um aluno. Com os conhecimentos apresentados at o momento, seria necessrio criar dez variveis para armazenar as notas: Int N1, N2, N3, N4, N5, N6, N7, N8, N9, N10; Agora imagine este programa sendo feito para uma turma de 100 alunos. Certamente no seria nada agradvel ler, escrever ou programar desta maneira. Vetores correspondem a posies de memria, identificadas por um mesmo nome, individualizadas por ndices, de tamanho fixo e cujo contedo de mesmo tipo. Assim, o conjunto de 10 notas pode ser associado a apenas um 24
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho identificador, digamos NOTA, que passar a identificar no apenas uma nica posio de memria, mas 10. A referncia ao contedo do n-simo elemento do conjunto ser indicada pela notao NOTA[n], onde n um valor inteiro (tambm podendo ser uma expresso cujo resultado inteiro).

Por exemplo, dada a figura abaixo representando o vetor NOTA:

pode-se observar que a nota de valor 70, que est na quinta posio da sequncia de notas representada por NOTA[4]. A declarao de um vetor em Java feita da seguinte forma:
int[] NOTA = new int[10];

Exemplo 1 Pseudocdigo para imprimir notas iguais e acima da mdia:


Constante Inteira LIMITE = 10; Inteiro[LIMITE] nota; Inteiro i = 0, soma = 0; Real media = 0.0; Enquanto (i<LIMITE) Faa Imprima(Entre com uma nota:); Leia(nota[i]); soma = soma + nota[i]; media = soma / LIMITE; Imprima(Media = + media); Para i = 0 At LIMITE Faa Se (nota[i] >= media) Ento
Imprima(Nota[ + i + ]= + nota[i]);

Exemplo 2 Programa em Java para imprimir notas iguais e acima da mdia: import java.io.*; class ExemploVetorNotas{ public static void main(String args[]) throws Exception { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); int LIMITE = 10; int[] nota = new int[LIMITE]; 25
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho int i = 0, soma = 0; float media = 0.0; while (i<LIMITE){ System.out.prinln(Entre com uma nota:); nota[i] = Integer.parseInt(br.readLine()); soma = soma + nota[i]; } media = soma / LIMITE; System.out.prinln(Media = + media); for (i = 0; i <= LIMITE; i = i + 1){ if (nota[i] >= media){ System.out.prinln(Nota[ + i + ]= + nota[i]); } } } } Exerccios: 1) Leia 10 nmeros e coloque em um vetor. Depois mostre esses nmeros em ordem inversa da que foram lidos. 2) Leia 10 notas, coloque em um vetor e depois calcule a mdia delas. Mostre quantas notas esto abaixo da mdia, quantas esto na mdia e quantas esto acima da mdia. 3) Leia 15 nmeros e coloque em um vetor. Depois gere dois vetores: um com os nmeros em ordem crescente e outro com os nmeros em ordem decrescente. Por fim, mostre o contedo desses dois vetores. 4) Leia N nmeros (no mximo 50) e coloque em um vetor. Depois mostre o menor nmero lido e em quais posies ele aparece no vetor. Exemplo: {3,5,2,7,4,2,9,5}, o menor nmero o 2 e aparece na posio 2 e 5. 5) Leia N nmeros (no mximo 50) e coloque em um vetor. Depois leia um nmero que indique a posio de um nmero no vetor. Mostre o valor desse nmero no vetor. Exemplo: {3,5,2,7,4,2,9,5}. Posio: 3 Nmero: 7. 6) Leia N nmeros (no mximo 20) e coloque em um vetor. Depois mostre os nmeros pares e suas respectivas posies. 7) Leia N nmeros (no mximo 20) e coloque em um vetor. Depois mostre os nmeros primos e suas respectivas posies. 8) Um vendedor precisa se um programa que leia o valor das vendas mensais e mostre quais os meses com maior venda. 9) Um vendedor precisa se um programa que leia o valor das vendas mensais e mostre quais os meses com menor venda. 10) Um professor precisa de um programa que leia as notas das 3 provas que ele ministrou para seus 5 alunos e mostre uma tabela com o nmero do aluno, nota 1, nota 2, nota 3 e mdia. 11) O professor do exerccio anterior quer melhorar o programa. Ele quer que ao final tambm sejam mostrados os nmeros dos alunos com a maior mdia. 12) Leia 8 valores e coloque em um vetor. Depois crie dois vetores: um contendo os nmeros positivos e outro contendo os nmeros negativos do vetor inicial.
TECNOLOGIA DA INFORMAO T.I.

26

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho 13) Um professor aplicou uma prova muito difcil e a mdia da turma ficou baixa. Ele deseja saber quantos alunos ficaram com nota abaixo dessa mdia da turma. Faa um programa que permita ler N notas (no mximo 100) e mostre a mdia das notas e quantos alunos ficaram com nota abaixo da mdia da turma. 14) Leia 10 nmeros e coloque em um vetor. Depois, coloque os elementos desse vetor em ordem crescente e mostre na tela os valores.

O que so Matrizes? Matrizes so vetores de vetores, i.e., um vetor onde cada elemento tambm um vetor. Alm disso, pode-se declarar vetores de vetores de vetores ... No final as matrizes de programao correspondem a forma de matrizes que se costuma aprender no ensino bsico. Exemplo - Calcula e mostra as mdias por bimestre: Constante Inteira QUANT_BIMESTRES = 4; Constante Inteira QUANT_NOTAS = 3; Real[QUANT_BIMESTRES][QUANT_NOTAS] matrizDeNotas; Inteiro bimestre = 0, nota = 0, soma = 0; Para bimestre = 0 At QUANT_BIMESTRES-1 Faa Para nota = 0 At QUANT_NOTAS-1 Faa Imprima(Bimestre + (bimestre+1) + Nota:" +(nota+1)); Leia(matrizDeNotas[bimestre][nota]); Para bimestre = 0 At QUANT_BIMESTRES-1 Faa soma = 0; Para nota = 0 At QUANT_NOTAS-1 Faa soma = soma + matrizDeNotas[bimestre][nota] Imprima(Bimestre +(bimestre+1)+ Mdia: +(soma/QUANT_NOTAS)); Exerccios: 1) Carregue uma matriz 3 x 5 com nmeros inteiros, calcule e mostre a quantidade de elementos positivos, negativos e de zeros nessa matriz. 2) Carregue uma matriz com as 3 notas de 4 alunos. Calcule a mdia das notas e mostre: quais alunos tiraram pelo menos uma nota abaixo da mdia da turma. 3) Carregue uma matriz 12 x 4 com os valores das vendas de uma loja supondo 12 meses e 4 vendedores. Calcule e mostre: em cada ms qual foi o vendedor que vendeu mais. 4) Carregue uma matriz 4 x 4 com nmeros inteiros e mostre a mensagem dizendo se a matriz simtrica. Uma matriz simtrica se A [i, j] = A [j, i]. 5) Faa um programa que receba as vendas trimestrais (de um ano) de 3 vendedores de uma loja e armazene essas vendas em uma matriz. Calcule e mostre: 27
TECNOLOGIA DA INFORMAO T.I.

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho - O total de vendas do ano de cada vendedor; - O total de vendas de cada trimestre; - O total de vendas do ano. Tpico 7: Procedimentos e Funes Por que utilizar Procedimentos e Funes? Muitas vezes um problema grande pode ser resolvido mais facilmente se for dividido em pequenas partes. Tratar partes menores e mais simples em separado muito mais fcil do que tratar o problema grande e difcil de uma s vez. O assunto abordado at o momento adequado para escrever pequenos programas. Entretanto, se for necessrio desenvolver e testar programas mais sofisticados (que envolvam mais funcionalidades) deve-se utilizar tcnicas que permitam, de alguma forma, organizar o cdigo fonte. Alguns aspectos devem ser levados em considerao: - Programas complexos so compostos por um conjunto de segmentos de cdigo no to complexos. - Muitas vezes um programa reutiliza trechos j desenvolvidos em outros programas. comum em programao decompor programas complexos em programas menores e depois junt-los para compor o programa final. Essa tcnica de programao denominada programao modular. A programao modular facilita a construo de programas grandes e complexos, atravs de sua diviso em pequenos mdulos, ou subprogramas, mais simples. Estes subprogramas alem de serem mais simples de serem construdos, so tambm mais simples de serem testados. Esta tcnica tambm possibilita o reaproveitamento de cdigo, permitindo utilizar um mdulo quantas vezes for necessrio eliminando a necessidade de escrev-lo repetidamente. Outro aspecto importante da modularizao a possibilidade de vrios programadores trabalhem simultaneamente na soluo de um mesmo problema, atravs da codificao separada dos mdulos. Assim, cada equipe pode trabalhar em um certo conjunto de mdulos ou subprogramas. Posteriormente estes mdulos so integrados formando o programa final. Em outras palavras, quando for necessrio construir um programa grande, deve-se dividi-lo em partes e ento desenvolver e testar cada parte separadamente. Mais tarde, tais partes sero acopladas para formar o programa completo. Esta modularizao comea atravs do uso adequado de procedimentos e funes. Funes so algumas das formas usadas para o agrupar cdigo de forma organizada e modularizada. Tipicamente, usa-se procedimentos e funes para realizar tarefas que se repetem vrias vezes na execuo de um mesmo programa. Isso feito associando-se um identificador a uma seqncia de comandos, criando assim a Declarao do Procedimento ou da Funo. A partir da, pode-se usar o identificador do procedimento ou da funo dentro do corpo do programa, sempre que for interessante que o seu bloco de comandos seja executado, isto chamado de Chamada de Procedimento ou de Funo. Qual a diferena entre Procedimento e Funo? Basicamente uma funo retorna um valor, sendo portanto geralmente associada a uma expresso, enquanto que um procedimento no retorna valor, sendo portanto interpretado como um comando do sistema. Exemplo 1 Pseudocdigo Declarando e Usando Funo de Soma:: // Declara a funo Inteiro soma (int x, int y) { Inteiro s; s = x + y;
TECNOLOGIA DA INFORMAO T.I.

28

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho Retorne s; } // Programa principal Inteiro c; // Usa a funo soma c = soma(3, 5); // Mostra o resultado Imprime("Resultado: " + c); Exemplo 2 Programa Java Declarando e Usando Funo de Soma: class ExemploFuncaoSoma{ public static int soma (int x, int y) { int s; s = x + y; return s; } public static void main(String args[]) throws Exception { int c; c = soma(3, 5); System.out.prinln("Resultado: " + c); } } Exerccios: 1) Elabore uma funo para calcular a potncia de um nmero. Utilize o comando ENQUANTO x FAA na sua especificao. 2) Dado um vetor, faa uma funo de pesquisa que retorne a posio de um nmero qualquer que se encontra neste vetor. 3) Elabore uma biblioteca de funes para trabalhar com matrizes matemticas (que sero representados por vetores neste caso). Esta biblioteca deve ter pelo menos as funes de soma, subtrao e multiplicao de matrizes. 4) Elabore uma biblioteca de funes para trabalhar com conjuntos de dados (que sero representados por vetores neste caso). Esta biblioteca deve ter pelo menos as funes de unio, interseo e subtrao de conjuntos, as quais recebero dois vetores A e B e retornaro um vetor C. 5) Dado um programa que receba as vendas trimestrais (de um ano) de 3 vendedores de uma loja e armazene essas vendas em uma matriz. Especifique funes que retornem as informaes abaixo: O total de vendas do ano de cada vendedor; O total de vendas do ano de cada produto; O total de vendas de cada trimestre; O total de vendas do ano;
TECNOLOGIA DA INFORMAO T.I.

29

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho A produtividade mensal de cada vendedor; Qual o produto mais vendido por ms; Qual o produto menos vendido por ms.

O que o Escopo de uma Varivel? Escopo de uma varivel refere-se ao mbito em que ela pode ser usada. Uma varivel definida dentro de uma funo s pode ser usada dentro desta funo (no pode ser usada fora do escopo da funo). Portanto, pode-se definir variveis com o mesmo nome em funes diferentes sem nenhum problema. As variveis que so definidas dentro de uma funo so chamadas de locais a essa funo, ou seja, elas s existem enquanto a funo est sendo executada (elas passam a existir quando ocorre a entrada da funo e so destrudas ao sair). Exemplo Anlise de Escopo de Variveis Locais: // Declara a funo Inteiro soma (int x, int y) { Inteiro s; s = x + y; Retorne s; } // Programa principal Inteiro x = 9, c = 0; // Valor original de x !! Imprime("Valor de x: " + x); // Usa a funo soma c = soma(3, 5); // Valor de x foi alterado aps a execuo de soma ??? Imprime("Valor de x: " + x); // Mostra o resultado Imprime("Valor de c: " + c); Exemplo Anlise de Escopo de Variveis Locais: Inteiro s = 0; // Declara a funo Inteiro soma (int x, int y) { Inteiro s; s = x + y; Retorne s; }
TECNOLOGIA DA INFORMAO T.I.

30

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho

// Programa principal Inteiro c = 0; // Valor original de s !! Imprime("Valor de s: " + s); // Usa a funo soma c = soma(3, 5); // Valor de s foi alterado aps a execuo de soma ??? Imprime("Valor de s: " + s); // Mostra o resultado Imprime("Valor de c: " + c);

Como Ocorre a Passagem de Parmetros para uma Funo (ou Procedimento)? H duas formas principais de passagem de parmetros: Passagem de parmetros por valor: O parmetro recebe o valor do argumento (expresso) avaliado na chamada da funo, e que est relacionado a um dos parmetros especficos da funo. Passagem de parmetros por referncia: O parmetro da funo vai usar o mesmo espao de memria usado pelo argumento, ou seja, se o valor do parmetro da funo for alterado, o valor do argumento tambm ser afetado. Neste caso passado como argumento um ponteiro para a varivel e no o seu valor. Exemplo Passagem Por Valor (Programa no Funciona): // Declara o procedimento passagem por valor soma (int n, int i) { n = n + 1; } // Programa principal Inteiro a = 0; // Valor original de a !! Imprime("Valor de a: " + a); // Usa o procedimento soma soma(a, 5); // Valor de a foi alterado aps a execuo de soma ??? Imprime("Valor de a: " + a); Exemplo Passagem Por Referncia (Programa Funciona):
TECNOLOGIA DA INFORMAO T.I.

31

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho

// Declara o procedimento passagem por referncia soma (ValRef int n, int i) { n = n + 1; } // Programa principal Inteiro a = 0; // Valor original de a !! Imprime("Valor de a: " + a); // Usa o procedimento soma soma(a, 5); // Valor de a foi alterado aps a execuo de soma ??? Imprime("Valor de a: " + a);

Exerccios: 1) Elabore um procedimento para calcular a potncia de um nmero. 2) Elabore um procedimento para calcular o fatorial de um nmero. 3) Dado um vetor, faa um procedimento de pesquisa que indique a posio de um nmero qualquer que se encontra neste vetor. 4) Elabore uma biblioteca de procedimento para trabalhar com matrizes matemticas (que sero representados por vetores neste caso). Esta biblioteca deve ter pelo menos os procedimentos de soma, subtrao e multiplicao de matrizes. O que Recursividade? O que so Funes Recursivas? Uma soluo recursiva uma soluo cuja resposta ela mesma de uma maneira reduzida. No caso de funes, uma funo recursiva uma funo que chama a si prpria na sua implementao. Quando uma funo chamada recursivamente, cria-se um novo ambiente local para cada chamada, ou seja, um novo conjunto de variveis locais instanciado como se estivesse efetuando uma chamada de uma funes diferentes. Exemplo Funo Fatorial Recursiva: // Declara a funo Fatorial recursiva Inteiro fatorial (int n) { Se (n == 0) Ento Retorne 1; Seno Retorne n * fatorial(n-1); } // Programa principal
TECNOLOGIA DA INFORMAO T.I.

32

Centro de Educao Tecnolgica do Estado da Bahia ureo de Oliveira Filho Imprime("Fatorial de 10: " + fatorial(10)); Exerccios: 1) Elabore uma funo recursiva para calcular a potncia de um nmero. 2) Elabore uma funo que recebe como parmetro uma matriz e retorne a respectiva matriz inversa. 3) Elabore uma funo recursiva para calcular o nmero de fibonacci (1,1,2,3,5,8,...), onde n3= n2+n1, n4 = n3+n2, .... 4) Elabore uma funo recursiva para efetuar a busca binria num vetor ordenado de valores inteiros.

33
TECNOLOGIA DA INFORMAO T.I.