Você está na página 1de 61

Lgica de programao

Lauro de Freitas 2011 Copyright 2011 por SENAI DR BA. Todos os direitos reservados Departamento Regional da Bahia DR/ SENAI 1

Lgica de programao
Elaborao: Ricel Leite Reviso Tcnica: Ricel Leite Reviso Pedaggica: Gumercindo Pereira Filho Padronizao: ASDEN-SEQ / Assessoria de Qualificao Normalizao: Ncleo de Informao Tecnolgica

Catalogao na fonte (Ncleo de Informao Tecnolgica NIT ) ______________________________________________________ SENAI- DR BA. Lgica de Programao. Salvador, 2011. 57p. il. (Rev.01).

1. Magnetismo 2. Fora

I. Ttulo

CDD 530 _______________________________________________________

Servio Nacional de Aprendizagem Industrial - SENAI Endereo: Rua Edstio Ponde , 342 - Stiep Salvador Bahia - Brasil CEP: 41.770-395 Tel.: (71) 343-1300 Fax. (7X) 343-1399 Home Page: www.fieb.org.br

Lgica de programao
1. Apresentao
Com o objetivo de apoiar e proporcionar a melhoria contnua do padro de qualidade e produtividade da indstria, o SENAI BA desenvolve programas de educao profissional e superior, alm de prestar servios tcnicos e tecnolgicos. Essas atividades, com contedos tecnolgicos, so

direcionadas para indstrias nos diversos segmentos, atravs de programas de educao profissional, consultorias e informao tecnolgica, para profissionais da rea industrial ou para pessoas que desejam profissionalizarse visando inserir-se no mercado de trabalho.

Este material didtico foi preparado para funcionar como instrumento de consulta. Possui informaes que so aplicveis de forma prtica no dia-a-dia do profissional, e apresenta uma linguagem simples e de fcil assimilao. um meio que possibilita, de forma eficiente, o aperfeioamento do aluno atravs do estudo do contedo apresentado no mdulo. 3

Lgica de programao
SUMRIO Pg.
1. 2. 3. Apresentao .............................................................................................3 Introduo Lgica de Programao......................................................6 Lgica .........................................................................................................7 3.1 Seqncia lgica ..................................................................................7 3.2 Instrues .............................................................................................7 4. Algoritmo....................................................................................................7 5. Programas ..................................................................................................8 6. Modo de desenvolver algoritmos...........................................................10 6.1 Pseudocdigo.....................................................................................10 6.2 Como construir um algoritmo..............................................................10 6.3 Fases..................................................................................................11 6.4 Exemplo de algoritmo .........................................................................11 6.5 Teste de Mesa....................................................................................12 7. Diagrama de Blocos ................................................................................14 7.1 Diagrama de blocos............................................................................14 7.2 Simbologia..........................................................................................14 8. Constantes, os Tipos de Dados e as Variveis.....................................18 8.1 Constantes .........................................................................................18 8.2 Variveis.............................................................................................18 8.2.1 Tipos de Variveis .......................................................................19 8.2.2 Declarao de Variveis..............................................................19 9. Operadores...............................................................................................21 9.1 Operadores Aritmticos ......................................................................21 9.2 Operadores Relacionais .....................................................................22 9.3 Operadores Lgicos ...........................................................................24 10. Operaes Lgicas ..............................................................................26 11. Proposies e Conectivos ..................................................................30 11.1 Tabela Verdade ..................................................................................30 11.2 Operaes lgicas sobre proposies:...............................................31 11.2.1 Negao ( ~ )...............................................................................31 11.2.2 Conjuno ( ^) .............................................................................32 11.2.3 Disjuno.....................................................................................33 11.2.4 Condicional ( ) ......................................................................34 11.2.5 Bi condicional ( ) ....................................................................35 12. Linearizao de expresses................................................................37
4

Lgica de programao
12.1 Modularizao de expresses ............................................................37 12.2 Operadores especiais (MOD e DIV) ...................................................38 12.3 Funes..............................................................................................38 12.3.1 Bibliotecas de funes.................................................................39 13. Estrutura de deciso e repetio........................................................39 13.1 Estrutura de Deciso ..........................................................................40 13.1.1 Se ento ......................................................................................40 13.1.2 Se ento seno ...........................................................................40 13.1.3 Caso selecione ............................................................................42 13.2 Estrutura de Repetio .......................................................................46 13.2.1 Enquanto x, processar.................................................................46 13.2.2 At que x, processar....................................................................47 13.2.3 Processar..., enquanto x..............................................................47 13.2.4 Processar... at que x..................................................................48 14. Arquivos de dados ...............................................................................50 14.1 Conceitos Bsicos ..............................................................................50 14.2 Abertura de Arquivos ..........................................................................51 14.3 Fechamento de Arquivos....................................................................51 14.4 Leitura de Arquivos.............................................................................51 14.5 Movimentao de registros.................................................................52 14.6 Gravao de Arquivos ........................................................................53 14.7 Macro Fluxo........................................................................................53 15. Relatrios.............................................................................................56 15.1 Caractersticas do Formulrio.............................................................56 15.2 Controle de linhas e salto de pginas.................................................56 15.3 Impresso de Cabealho e Esttica de Pgina ..................................57 16. Referncias...........................................................................................61

Lgica de programao
2. Introduo Lgica de Programao
Nos primrdios da histria da computao, o desenvolvimento de softwares que interagissem com a mquina no era uma das atividades mais fceis. Escrever em linguagem de mquina, em binrio ou hexadecimal, era um trabalho rduo e exigia muita ateno concentrao, alm de um pouco de arte tambm. Era necessrio entender o que cada conjunto de nmeros binrio ou hexadecimal, iriam fazer nestes programas. Com o passar dos tempos, era necessria mais agilidade com a programao, surgiu ento a linguagem Assembly. Nesta linguagem alguns conjuntos de cdigo em binrio ou hexadecimal eram representados por comandos, que eram conhecidos com instruo ou mnemnico. Isso poupava tempo no desenvolvimento. No entanto, os microprocessadores evoluram e necessitaram de recursos mais avanados, tornando as linguagens de baixo nvel incapazes de realizar algumas aes. Foram criadas ento as conhecidas linguagens de alto nvel. Estas linguagens possuam uma maior distncia das linguagens de mquina, porm, aumentou mais a produtividade e melhorou a compreenso por parte dos programadores. Os cdigos de baixo nvel so responsveis em traduzir os comandos em alto nvel para a linguagem de mquina. Como exemplos de linguagens de alto nvel esto: Pascal, Basic e Fortran. A linguagem C em algumas literaturas tambm considera linguagem de alto nvel. No entanto, ela uma linguagem de mdio nvel, pois se utiliza de linguagem de baixo nvel, bem como a linguagem de alto nvel. Antes, os microprocessadores possuam uma linguagem encapsulada ou residente, como exemplo, o Basic. Isso obrigava os fabricantes de microprocessadores a inserir um interpretador nestes dispositivos, o que caracterizava essa linguagem como interpretada. Com as linguagens compiladas era diferente. Era necessrio um compilador que convertia a linguagem de alto nvel, (compilava), em linguagem compreensvel mquina. Este processo demandava um tempo que nas linguagens interpretadas no era necessrio, pois na linguagem interpretada, cada programa era executado na hora.

Lgica de programao
3. Lgica
Programao lgica um paradigma de programao que faz uso da lgica matemtica. A lgica de programao garante aos desenvolvedores criar uma sequncia lgica com eficcia e eficincia.

3.1 Seqncia lgica


A seqncia lgica pode ser definida como uma lista de passos que so obedecidos para o cumprimento de uma tarefa.

3.2 Instrues
Instruo um conjunto de regras ou normas, composta por diversas instrues (etapas) para a realizao de uma operao em um processador. Uma instruo para ser executada com sucesso, deve ser colocada em uma seqncia lgica. Alguns autores descrevem instruo com a menor parte da execuo de uma operao. Podemos citar, como exemplo, a instruo tomar banho. Para realizar esta instruo, precisaremos executar outras instrues integrantes, como: retirar a roupa, entrar no box, molhar-se, passar o sabonete, enxaguar-se, enxugar-se e assim por diante.

4. Algoritmo
Podemos descrever algoritmo como uma sequncia definida, tendo um tempo de execuo finito e que segue passos para a execuo de uma determinada ao ou tarefa. Podemos encontrar em muitos livros o exemplo de algoritmo com sendo uma receita de bolo, lembrando que alguns algoritmos podem ser extremamente complexos. Tudo e qualquer atividade pode ser exemplificada atravs de algoritmos. Podemos citar como algoritmo, a ao de escovar os dentes:

Lgica de programao
Pegar a escova Colocar o creme dental na escova Umedecer a escova Escovar todos os dentes Rejeitar o creme dental aps a escovao Lavar a escova Enxaguar a boca Guardar a escova

5. Programas
Os programas so algoritmos escritos em alguma linguagem de programao, seja de baixo nvel (Aseembly) ou alto nvel (COBOL, Pascal, C, C++, VB, .NET e outras tantas linguagens). Cada linguagem possui comandos especficos para a execuo de instrues.

Lgica de programao
Exerccios
1) Construa um algoritmo para realizar a soma de trs nmeros e dividir o resultado por cada um desses nmeros: 2) Monte uma sequncia lgica para ligar o computador: 3) Monte uma sequncia lgica para encher uma garrafa com gua: 4) Construa um algoritmo para assistir um filme em DVD:

Lgica de programao
6. Modo de desenvolver algoritmos
6.1 Pseudocdigo
O Pseudocdigo uma linguagem utilizada para construo dos algoritmos. Esta linguagem independe de uma linguagem especfica de programao. Hoje existe uma pseudolinguagem muito utilizada que o Portugus Estruturado ou Portugol. Alguns aplicativos convertem essa linguagem para algumas linguagens de programao como: Pascal e C. No devemos esquecer que o peseudocdigo deve seguir uma seqncia lgica correta para que assim possa ser convertida em uma linguagem de programao e ter bom funcionamento.

6.1.1 Como construir um algoritmo


Existem algumas regras para escrevermos um algoritmo, uma delas e usarmos objetividade e simplicidade para constru-los. Vejamos abaixo algumas tcnicas serem utilizadas: Utilizar frases simplificadas Evitar redundncia Desenvolver sempre os algoritmos para que possam ser lidos e compreendidos por qualquer pessoa Utilizar um verbo somente, por frase

Exemplo de algoritmo: Algoritmo "SomaDeDoisValores"; varivel: SOMA,A,B: inteiro; Inicio Escreva("Digite um primeiro numero"); Leia(A); escreva("Digite o segundo numero"); leia(B); Soma A + B; escreva(SOMA); fim. 10

Lgica de programao
6.2 Fases
Vimos anteriormente que o algoritmo deve seguir uma seqncia lgica bem definida. No entanto, existem trs fases fundamentais para criao deste algoritmo e sua seqncia lgica que : ENTRADA Descrevendo esses passos, temos: ENTRADA: determinam os dados que sero utilizados no processo. PROCESSAMENTO: a execuo dos passos com base nos dados de entrada. SADA: o resultado do processamento dos dados. Exemplo: ENTRADA PROCESSAMENTO SADA PROCESSAMENTO SADA

Roupa suja

Lavar roupa suja

Roupa lima

6.3 Exemplo de algoritmo


Temos como exemplo, calcular a idade de Joo. Para isso, utilizaremos o ano do seu nascimento e ano atual. Para realizao deste clculo, faremos os seguintes questionamentos: a) Quais sero os dados da ENTRADA? Resposta: os dados da entrada sero: o ano atual e ano de nascimento. b) Qual procedimento ser realizado no PROCESSAMENTO? Resposta: deveremos subtrair o ano atual do ano de nascimento para obteno da idade atual. c) Quais sero os dados as SADA? Resposta: a sada ser a idade atual do Joo.

11

Lgica de programao
Montagem do Algoritmo: Pegar o ano atual Pegar o ano de nascimento Subtrair o ano atual do ano de nascimento Exibir a idade atual

6.4 Teste de Mesa


Todo algoritmo deve passar por um teste, que conhecido como Teste de Mesa, onde ser analisado todo o processamento do algoritmo, desde a entrada dos dados at a sada. Vamos ao exemplo anterior: Ano atual Ano de nascimento Montamos a tabela com os dados abaixo: Ano atual Ano de nascimento Idade atual

12

Lgica de programao
Exerccio
1) Realize a identificao da entrada do processamento e as sada dos dados, montando um fluxo com base no algoritmo abaixo: o o o o o Pegar nota1 Pagar nota2 Pegar nota3 Calcular mdia final ((nota1 + nota2 + nota3) / 3) Exibir a mdia final

2) Realize o Teste de Mesa com base no algoritmo acima, utilizando dados aleatrios.

13

Lgica de programao
7. Diagrama de Blocos
7.1 Diagrama de blocos
O Diagrama de Blocos nada mais que uma forma de exemplificao grfica para representao de um processamento e seus passos. O Diagrama de Blocos ajuda na compreenso de um processo por utilizar uma linguagem universal, contendo smbolos que possuem significados especficos. Qualquer desenvolvedor entender um processo utilizando o Diagrama de Blocos.

7.2 Simbologia
So utilizados diversos smbolos, observe o quadro abaixo contendo estes smbolos:

14

Lgica de programao

Os smbolos sempre sero caracterizados por uma descrio, assim identificaremos quais aes sero realizadas em cada passo. Vejamos um exemplo: Calcular idade atual de um indivduo

15

Lgica de programao
INCIO

PEGAR ANO ATUAL

PEGAR ANO DE NASCIMENTO

SUBTRAIR ANO ATUAL DE ANO DE NASCIMENTO

IDADE ATUAL

FIM

16

Lgica de programao
Exerccios
1) Monte um Diagrama de blocos para: Somar 4 valores de entrada, calcular a mdia e exibir se foi aprovado ou reprovado. 2) Monte um Diagrama de blocos para: Calcular o valor final do financiamento de um veculo de R$ 21.050,00, que ter juro de 11% ao ano

17

Lgica de programao
8. Constantes, os Tipos de Dados e as Variveis
As Variveis e as Constantes so algumas das partes integrantes de um programa. No entanto, nem todo programa ir conter uma constante mas conter uma varivel. A varivel utilizada para o armazenamento de um valor em um programa. Este valor utilizado no decorrer da execuo e pode ser alterado ou no nesta execuo. As variveis em um programa possuem tipos que podem ser numricas, caracteres, alfanumricas ou lgicas. Veremos mais adiante a descrio de cada tipo.

8.1 Constantes
As constantes so valores que no so modificados em um programa. O valor declarado em uma constante permanecer inalterado durante toda a execuo de um programa. Exemplo: V1 V2 = V1 + 4 A constante acima declarada determina que a subtrao dos valores das variveis V1 e V2 ser igual ao valor da varivel V1 somado a 4.

8.2 Variveis
As variveis so os objetos ou partes integrantes, utilizados em um programa. As variveis so mutveis em um programa, podendo assim receber vrios valores. No entanto, cada valor ser utilizado individualmente. Vejamos um exemplo da utilizao de variveis: VARIVEL VARIVEL VARIVEL VARIVEL (Nota1 + Nota2 + Nota3) / 4 = Mdia

Constante 18

Lgica de programao
8.2.1 Tipos de Variveis
Vimos que as variveis e as constantes podem ser dos tipos: numricas, caracteres, alfanumricas e lgicas. Vimos, tambm, que as constantes permanecem inalterveis durante toda a execuo do programa. Vimos, ainda, que as variveis podem receber diferente valores. No entanto, assume cada valor unitariamente. Vamos observar a tabela abaixo com os tipos de variveis e suas respectivas descries: Tipo Descrio

Numricas Caracteres Alfanumricas Lgicas

Servem para armazenar valores a serem utilizados durante a execuo do programa. Servem para armazenar valores indiferentes. Exemplo: Endereo. Servem para armazenar valores que contenham letras e nmeros. Exemplo: Senha Servem para armazenar dados booleanos. Exemplo: Verdadeiro ou Falso.

8.2.2 Declarao de Variveis


As variveis so declaradas previamente em um programa. Valores atribudos no incio do programa que sejam incompatveis aos declarados, so descartados ou ocasionam um erro na execuo do programa. Neste caso, os programadores criam os chamados tratamentos de erro para evitar uma possvel atribuio incorreta de valor a uma determinada varivel.

19

Lgica de programao
Exerccios
1) Crie um algoritmo exemplificando atravs de um diagrama de blocos, declare previamente as variveis e constantes, e faa a verificao das entradas de dados incompatveis.

20

Lgica de programao
9. Operadores
Utilizamos os Operadores para executarmos aes de comparao, incremento ou decremento para avaliarmos os dados em um processamento computacional. Estes operadores podem ser de trs tipos: Operadores Aritmticos Operadores Relacionais Operadores Lgicos

9.1 Operadores Aritmticos


Para obtermos resultados numricos, utilizamos os operadores aritmticos. So utilizados em operaes, como: adio, subtrao, multiplicao e diviso, podendo tambm ser utilizada a exponenciao. Vejamos a tabela abaixo com os smbolos para estes operadores: OPERAO Adio Subtrao Multiplicao Diviso Exponenciao SMBOLO + * / **

Para a realizao de operaes utilizando operadores aritmticos, deve obedecer uma hierarquia. Vejamos abaixo esta hierarquia: 1 ( ) (Parnteses); 2 Exponenciao; 3 Multiplicao ou Diviso; 4 Soma ou Subtrao. Exemplo: (3+1) /2 = =4/2=2 Resolvemos primeiramente o que estava entre parnteses e depois resolvemos a diviso.

21

Lgica de programao
9.2 Operadores Relacionais
Para realizarmos comparaes entre Strings utilizamos os operadores relacionais, que podem ser caracteres ou nmeros. Os valores utilizados para a comparao podem ser constantes ou variveis. Os resultados destes operadores retornam como valores booleanos ou lgicos, que pode ser verdadeiro ou falso (True ou False, em algumas linguagens de programao). Utilizamos os parnteses para atribuirmos ordem de prioridade nas operaes. Vejamos na tabela abaixo os operadores relacionais: DESCRIO Igual a Diferente de Maior que Menor que Maior ou igual a Menor ou igual a Exemplo: Temos a seguir duas variveis e seus valores: A=6 B=3 Vejamos o resultado, utilizando operadores relacionais: EXPRESSO A=B A <> B A>B A<B A >= B A <= B FALSO VERDADEIRO VERDADEIRO FALSO VERDADEIRO FALSO RESULTADO SMBOLO = <> ou ou != > < >= <=

22

Lgica de programao
Vejamos, a seguir, algumas expresses utilizando smbolos: Exemplo de campos do mesmo valor Exemplo de campo com constante numrica

Sim Cdigo=Cod Cd > 100

No

Exemplo de campo com constante alfanumrica

Sim Nome = Maria

No

23

Lgica de programao
9.3 Operadores Lgicos
Utilizamos os operadores lgicos para efetuarmos combinaes ente resultados de determinadas expresses, verificando se o seu resultado ser verdadeiro ou falso. Vejamos na tabela abaixo os operadores lgicos: Nome Valor Descrio

E OU NO

AND OR NOT

Esta expresso ser somente verdadeira se todos forem verdadeiros. Esta expresso ser somente verdadeira se ao menos um for verdadeiro. Esta expresso realiza uma inverso de valores. Quando todos forem falsos, este ser verdadeiro ou vice e versa.

Vejamos a tabela abaixo com a utilizao dos trs operadores lgicos citados acima: Exemplo: Temos os seguintes valores: A=7 B = 10 C=2

Como resultado, teremos: A=B A <> B A>B A<B A >= B A <= B Expresses AND OR NOT AND OR NOT B>C B<C B>C B=C Resultado FALSO VERDADEIRO VERDADEIRO VERDADEIRO FALSO FALSO

24

Lgica de programao
Exerccios
1) Tendo-se A = 4, B = 8 e C = 5, informe se as expresses citadas abaixo so verdadeiras ou falsas. a) (A + C) > B b) B>= (A+4) c) C = (B A) d) (B + A) <= C e) (C + A) > B 2) Tendo-se A=6, B=5, C=3 e D=6, informe se as expresses citadas abaixo so verdadeiras ou falsas. a) (A > C) AND (C <= D) b) (A + B) > 10 OR (A + B) = (C + D) c) (A >= C) AND (D >= C)

25

Lgica de programao
10. Operaes Lgicas

Utilizamos as Operaes Lgicas em Diagramas de Blocos quando se faz necessrio uma tomada de deciso. Este resultado sempre ser VERDADEIRO ou FALSO. Vejamos, como exemplo, o algoritmo Tomar Banho. Iremos verificar se tem um sabonete para tomar banho: Tomar Banho Ir para o banheiro Tem sabonete? o Se sim, tomar banho o Se no, continue o algoritmo Pegar um sabonete novo Retirar a embalagem Jogar embalagem no lixo Ir tomar banho

26

Lgica de programao
Vejamos este mesmo algoritmo, utilizando-se o Diagrama de Blocos: Incio

Ir para o banheiro

Tem sabonete? Pegar um sabonete novo

Retirar a embalagem

Tomar banho

Jogar embalagem no lixo

Ir tomar banho

27 Fim

Lgica de programao

28

Lgica de programao
Exerccios
1) Elabore um diagrama de blocos para efetuar uma operao lgica (Verdadeiro ou Falso) na leitura de um nmero para verificar se o mesmo positivo ou negativo, armazenando este valor em uma varivel. Exiba o resultado no final. 2) Elabore um diagrama de blocos para efetuar uma operao lgica (Verdadeiro ou Falso) na leitura de um nmero para verificar se o mesmo par ou mpar, armazenando estes valores em variveis e exibindo os resultados no final.

29

Lgica de programao

11.
11.1

Proposies e Conectivos
Tabela Verdade

O valor lgico de uma proposio composta depende dos valores lgicos das proposies componentes, e se determina por um dispositivo chamado tabela-verdade, no qual figuram todos os possveis valores lgicos da proposio composta correspondentes a todas as possveis atribuies dos valores lgicos das proposies simples componentes.

Princpios fundamentais da lgica proposicional: Principio da no-conformidade Uma proposio no pode ser simultaneamente verdadeiro e falsa. Principio do terceiro excludo Uma proposio ou verdadeira ou falsa, nunca ocorre um terceiro caso.

No caso de uma proposio simples, pelo princpio do terceiro excludo, temos: P v f

No caso de uma proposio composta, cujas proposies simples componentes so p e q, as nicas possveis atribuies dos valores lgicos p e q, so: P V V Q V F 30

Lgica de programao
F V

No caso de uma proposio composta cujas componentes simples so p, q e r, as nicas atribuies possveis p, q e r so: P v v v v f f f f Q v v f f v v f f R v f v f v f v f

11.2

Operaes lgicas sobre proposies:

Quando raciocinamos, efetuamos operaes sobre proposies, sendo que elas obedecem as regras de um clculo, chamado de clculo proposicional que semelhante ao da aritmtica sobre nmeros. Veremos a seguir as operaes lgicas fundamentais.

11.2.1 Negao ( ~ )
A proposio representada por no p chama-se negao de uma proposio p. O valor lgico verdade (V) quando p falsa e falso (F) quando p verdadeira. O valor lgico da negao de uma proposio definido pela seguinte tabela verdade: P v f ~P f v

31

Ex: p: o nmero 125 cubo perfeito V(p) = V ~p: o nmero 125 no cubo perfeito V(~p) = F

Lgica de programao

Pode-se tambm negar uma proposio de outras formas:

Ex: p: Pedro estudioso ~p: No verdade que Pedro estudioso ou ~p: falso que Pedro estudioso Ex: q: Todas as mulheres so vaidosas ~q: Nem todas as mulheres so vaidosas ou ~q: Nenhuma mulher vaidosa ou ~q: Alguma mulher no vaidosa

11.2.2 Conjuno ( ^)
Chama-se conjuno de duas proposies p e q a proposio representada por p e q, cujo valor lgico a verdade quando p e q so verdadeiras e a falsidade nos demais casos. O valor lgico da conjuno de duas proposies dado pela tabela: P v v f f Q v f v f P^Q v f f f

Ex: a) p: Cuiab a capital de Mato Grosso V(p) = V q: Braslia a capital do Brasil V(q) = V

p^q: Cuiab a capital de Mato Grosso e Braslia a capital do Brasil V(p ^q) = V ^ V = V

32

b) p: dois um nmero primo V(p) = V

de q: O quadrado tem Lgica trs lados V(q) = pr F ogramao

p^q: dois um nmero primo e o quadrado tem trs lados V(p^q) = V^F = F

11.2.3 Disjuno 11.2.3.1 Disjuno inclusiva (v)

Chama-se disjuno inclusiva de duas proposies p e q aquela representada por p ou q, cujo valor lgico a falsidade (F) quando o valor lgico das proposies p e q forem falsos; e verdade (V), quando pelo menos uma das proposies for verdadeira. O valor lgico da disjuno inclusiva de duas proposies dado pela tabela:

p v v f f Ex: a) p: A lua amarela V (p) = F

q v f v f

pvq v v v f

q: Pitgoras era grego V (q) = V pvq: A lua amarela ou Pitgoras era grego V (pvq) = FvV = V Ex: b) p: 2 + 2 = 5 V (p) = F q: 3 < 1 V (q) = F pvq: 2 + 2 = 5v3 < 1 V (pvq) = FvF = F

11.2.3.2

Disjuno exclusiva (W)

Chama-se disjuno exclusiva de duas proposies p e q, aquela representada por p ou q, cujo valor lgico a falsidade (F) quando os valores lgicos das proposies p e q so falsos 33

ou verdadeiros; e verdade (V), nos demais casos. O valor lgico da disjuno exclusiva de duas proposies dado como se mostra abaixo:

Lgica de programao

P V V F F Ex: p: Andr baiano. q: Andr carioca. pwq: Andr baiano ou Andr carioca

Q v f v f

PwQ f v v f

Aqui a palavra ou tem o sentido de excluso, pois no existe a possibilidade de ambas as proposies serem verdadeiras. No possvel ocorrer Andr baiano e carioca.

11.2.4 Condicional (

Chama-se proposio condicional aquela representada por se p ento q, cujo valor lgico a falsidade (F) quando p verdadeira e q falsa; o valor lgico a verdade (V) nos demais casos. A condicional, onde p o antecedente e q o conseqente, se l das seguintes maneiras: (i) p condio suficiente para q (ii) q condio necessria para p. O valor lgico da condicional dado como representado abaixo: P V V F F Q v f v f P v f v v Q

34

Ex: a) p: Braslia a capital do Brasil V(p) =V b) q: O ms de julho tem 31 dias V(q) = V p

Lgica de programao

q: Se Braslia a capital do Brasil ento o ms de julho tem 31 dias

V (p

q) = V

V=V

Ex: b) p: Braslia a capital do Brasil V (p) = V q: O nmero 2 mpar V (q) = F p V (p q: Se Braslia a capital do Brasil ento o nmero 2 mpar. q) = V F=F

Ex: c) p: O nmero 2 mpar V (p) = F q: O ms de julho tem 30 dias V (q) = F p V (p q: Se o nmero 2 mpar ento o ms de julho tem 30 dias q) = F F=V

11.2.5 Bi condicional (

Chama-se proposio bi condicional aquela representada por p se e somente se q, cujo valor lgico a verdade (V) quando p e q so verdadeiras ou falsas; e falsa (F) nos demais casos. O bi condicional de duas proposies p e q se lem das seguintes maneiras: (i) p condio necessria e suficiente para q (hei) q condio necessria e suficiente para p O valor lgico do bi condicional dado pela representao abaixo: P V V F F Q v f v f P v f f v Q

Ex: a) p: A cidade de Cuiab est localizada na regio centro-oeste V(p) = V 35

q: 3 / 5 um nmero inteiro V(q) = F p q: A cidade de Cuiab est localizada na regio centro-oeste se e somente se,3 / 5 so Lgica de programao um nmero inteiro. V(p q) = V F=F Ex: b) p: O ms de julho tem 30 dias V(p) = F

q: Braslia a capital da Argentina V(q) = F (p q): O ms de julho tem 30 dias se e somente se, Braslia a capital da Argentina V(p q) = F F = V.

Exerccios 1) Verifique se os valores lgicos de (p ^ q ) e de (~ (~ p v q ) so iguais.

2) Mostre que (p

q) ^ ( q

p) e p

q so equivalentes.

36

Lgica de programao

12.

Linearizao de expresses

Para a construo de Algoritmos todas as expresses aritmticas devem ser linearizadas, ou seja, colocadas em linhas. de extrema importncia salientarmos o uso dos operadores correspondentes da aritmtica tradicional para a computacional. Exemplo:

2 + 3

(5

3 ) + 1 =

(2/3+(5-3))+1=
* Computacional

Tradicional

12.1

Modularizao de expresses

A modularizao a diviso da expresso em partes, proporcionando maior compreenso e definindo prioridades para resoluo da mesma. Como pode ser observado anteriormente, usamos somente os parnteses ( ) em expresses computacionais, para modularizao. Na informtica podemos ter parnteses dentro de parnteses. Exemplos de prioridades: (2+2)/2=2 2+2/2=3

37

Lgica de programao

12.2

Operadores especiais (MOD e DIV)

MOD Retorna o resto da diviso entre 2 nmeros inteiros. DIV Retorna o valor inteiro que resulta da diviso entre 2 nmeros inteiros. Exemplo:
13 1 2 6

13 DIV 2 = 6
DIV

MOD 12.3 Funes

13 MOD 2 = 1

Uma funo um instrumento (Sub-algoritmo) que tem como objetivo retornar um valor ou uma informao. A chamada de uma funo feita atravs da citao do seu nome seguido opcionalmente de seu argumento inicial entre parnteses. As funes podem ser predefinidas pela linguagem ou criadas pelo programador de acordo com o seu interesse. Exemplos:
Valor Inicial X X=9

Valor Final Y

Processamento

Y=3

38

Lgica de programao
12.3.1 Bibliotecas de funes

Armazenam um conjunto de funes que podem ser usadas pelos programas. 12.3.1.1 Funes Pr-Definidas
ABS( ) SQRT( ) SQR( ) TRUNC( ) ROUND( ) LOG( ) SIN( ) COS( ) TAN( ) VALOR ABSOLUTO RAIZ QUADRADA ELEVA AO QUADRADO VALOR TRUNCADO VALOR ARREDONDADO LOGARITMO SENO COSSENO TANGENTE

As funes citadas so as mais comuns e importantes para desenvolvimento lgico. Entretanto, cada linguagem possui suas funes prprias. As funes podem ser aritmticas, temporais, de texto etc.

13.

Estrutura de deciso e repetio

Como podemos observar anteriormente para a tomada de deciso, algumas vezes, precisamos realizar certos tipos de verificaes e estas podem interferir diretamente no resultado. Vejamos a seguir dois tipos de estruturas: a Estrutura de Deciso e a Estrutura de Repetio.

39

13.1

Estrutura de Deciso

ou desvio fazem parte das tcnicas de programao que Os comandos de deciso Lgica de programao conduzem as estruturas de programas que no so totalmente sequenciais. 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, Se ento Seno e Caso Selecione.

13.1.1 Se ento
A estrutura de deciso Se normalmente vem acompanhada de um comando, ou seja, se determinada condio for satisfeita pelo comando Se ento execute determinado comando. Usando o exemplo da mdia do aluno, adicionemos a regra de que somente o mesmo estar aprovado se sua mdia for maior ou igual a 5.0. Veja no exemplo de algoritmo como ficaria. Algoritmo: o SE MEDIA >= 5.0 ENTO ALUNO APROVADO

Fluxograma:

13.1.2 Se ento seno

40

Em Se ento Seno, 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.

Lgica de programao

Usando ainda o exemplo anterior, o algoritmo ficaria assim: o SE MEDIA >= 5.0 ENTO ALUNO APROVADO SENO ALUNO REPROVADO

Fluxograma:

A estrutura Se ento Seno pode estar aninhada ou conter outros nveis de decises dentro de um nvel j estabelecido. Por exemplo, adicionada regra de que caso o aluno tenha uma mdia maior ou igual a 5 (cinco), deve-se verificar se a mdia dele maior ou igual a 7 (sete), e caso no seja, o mesmo tem direito a fazer outra avaliao. Algoritmo: o SE MEDIA >= 5 ENTO SE MEDIA >= 7 ENTO ALUNO APROVADO SENO ALUNO NECESSITA FAZER OUTRA AVALIAO SENO ALUNO REPROVADO Fluxograma:

41

Lgica de programao

13.1.3 Caso selecione


A estrutura de deciso Caso Selecione utilizada para testar, na condio, uma expresso, que produz um resultado, ou ento, o valor de uma varivel em que est armazenado determinado contedo. Compara-se, ento, o resultado obtido no teste com os valores fornecidos em cada clusula Caso. Um menu de opes pode ser usado como exemplo, onde o usurio deve escolher um numero associado a uma opo de operao: 42

Lgica de programao

43

INCIO

Lgica de programao
Titulo= Recebe Opcao

Opcao = 1

SIM

Titulo = Opo 1

NO

Opcao = 2

SIM

Titulo = Opo 2

NO

Opcao = 3

SIM

Titulo = Opo 3

NO

Opcao = 4

SIM

Titulo = Opo 4

NO

NO

Opcao = 5

SIM

Titulo = Opo 5

Opcao Errada

Titulo

FIM

44

Exerccios
1) Elabore um diagrama que: de programao Lgica Leia 3 (trs) nmeros; Calcule o quadrado deles individualmente; Se o valor do quadrado do segundo nmero for >= 1000, exiba este e finalize. Caso contrrio, exiba os valores lidos e seus respectivos quadrados.

2) Crie um Diagrama de Blocos que leia um nmero inteiro e mostre uma mensagem indicativa de que este nmero par ou mpar e se este positivo ou negativo. 3) Crie um algoritmo que gere e escreva os nmero mpares dos nmeros lidos entre 0 e 100.

45

Lgica de programao
13.2 Estrutura de Repetio
As estruturas de repetio so utilizadas quando se deseja que um determinado conjunto de instrues ou comandos seja executado em um nmero definido ou indefinido de vezes, ou enquanto um determinado estado prevalecer ou at que certo estado seja alcanado.

13.2.1 Enquanto x, processar


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. possvel utilizar essa estrutura para trabalhar com contadores. Algoritmo: o ENQUANTO X <= 5 FAA QUALQUER COISA

Fluxograma:

46

Lgica de programao
13.2.2 At que x, processar...
Observemos neste caso que determinado bloco de operaes ser executado at que a condio seja satisfeita. Deste modo, os comandos sero somente executados enquanto a condio for falsa. Algoritmo: o Se for FALSA, PROCESSAR QUALQUER COISA o Se for VERDADEIRA, Repetir. Fluxograma: Sim SE ... No

PROCESSAR

Repetir

13.2.3 Processar..., enquanto x


Neste caso, executa-se primeiro o bloco de operaes e somente depois realizado o teste de condio. Se a condio for verdadeira, os comandos so processados novamente antes do teste da condio. Caso contrrio o fluxo do programa continua normalmente. Algoritmo: o PROCESSAR QUALQUER COISA ENQUANTO X <= 5

47

Lgica de programao
Fluxograma:

13.2.4 Processar... at que x


Observemos, neste caso, que o bloco de operaes inicial executado e somente em seguida realizado o teste de condio. Se esta for verdadeira, o programa continua o fluxo de sua execuo; caso contrrio, os comandos so processados novamente antes do teste da condio Algoritmo: o Se for FALSA, PROCESSAR QUALQUER COISA o Se for VERDADEIRA, Repetir. Fluxograma:

48

Lgica de programao
PROCESSAR No

SE ...

Sim

Repetir

Exerccios
1) Construa um algoritmo que determine o maior entre N nmeros. A condio para finalizao da execuo a entrada de um valor 0. Desta forma, o algoritmo deve ficar calculando o maior valor at que a entrada seja igual a 0 (ZERO). 2) Construa um algoritmo que efetue a conta de 1 a 200 e a cada mltiplo de 10 emita a mensagem, Mltiplo de 10.

49

Lgica de programao
14. Arquivos de dados
Os valores utilizados na manipulao, at o momento, estavam alocados na memria, e quando o programa era encerrado as informaes eram perdidas. Os arquivos resolvem este problema armazenando uma grande quantidade de informaes por um grande perodo de tempo, e podem ser recuperadas a qualquer momento.

14.1

Conceitos Bsicos

CAMPO um espao reservado em memria para receber informaes (dados). Exemplo: Campo Nome, Campo Endereo Campo na memria ENDERECO RUA BENTO SANTO

REGISTRO um conjunto de campos. Exemplo: Registro de Clientes COD-CLI 00001 NOME GABRIELA DA SILVA ENDEREO RUA BENTO SANTO FONE 3302-9999

ARQUIVO um conjunto de registros. Exemplo: O arquivo de Funcionrio da Empresa, onde esto armazenados os dados de todos os funcionrios da empresa.

Registro 1 Registro 1 Registro 1

50

Lgica de programao
14.2 Abertura de Arquivos
Ao passo que trabalharmos com arquivo, inicialmente precisaremos ABRIR o arquivo. O fato de abrir o arquivo significa alocar o perifrico (disco, disquete) em que o arquivo se encontra, e deix-lo disponvel para leitura/gravao. O smbolo para abertura de arquivo :

ABRIR ARQUIVO

14.3

Fechamento de Arquivos

Aps a utilizao do arquivo necessrio fech-lo para que seja finalizado o canal de comunicao com o perifrico e mantendo a integridade dos dados armazenados evitando que sejam alterados ou danificados. O smbolo para fechamento de arquivo :

FECHAR ARQUIVO

14.4

Leitura de Arquivos

Para obter as informaes do arquivo necessrio efetuar a leitura do registro, que consiste em mover os dados contidos no dispositivo para uma rea de memria que possui o mesmo layout da informao armazenada. O sistema operacional intermdia o acesso aos dispositivos O smbolo para leitura de arquivo :

LER ARQUIVO

51

Lgica de programao
A leitura dos registros sege uma ordem especifica. Aps a abertura o primeiro registro est disponvel para leitura, esta posio inicial pode ser verificada atravs do ponteiro (BOF Bottom Of File), o mesmo feito quando chega ao final do arquivo (EOF - End Of File). A verificao do final do arquivo importante ser feita sempre antes da leitura. Abaixo temos a representao simblica destes passos:

INICIO LER ARQUI ABRIR ARQUIVO

E.O.F NREG=0

LER ARQUIVO

E.O.F

NREG

FECHAR ARQUIVO

NREG=NREG+1

FIM

14.5

Movimentao de registros

chamada de movimentao de registro a forma pela qual feita a leitura dos registros contidos no arquivo. No instante que o arquivo aberto para a leitura, o ponteiro est na primeira posio do mesmo, desta forma a leitura seria do primeiro registro. Aps a primeira 52

Lgica de programao
leitura o ponteiro se desloca para a prxima posio e desta formar ele se repete at chegar ao ultimo registro que aps sua leitura dado um retorno que chegou ao seu termino.

14.6

Gravao de Arquivos

Aps o processamento dos dados, comum que seja feito o armazenamento com os resultados para que possa ser utilizados em interaes futuras. A gravao de um dado consiste em transferir o registro que est na memria para um dispositivo fsico que pode ser um disco, disquete, pen driver ou at mesmo uma fita. O smbolo para gravao de arquivos :

GRAVRAR REGISTRO

14.7

Macro Fluxo

Atravs do macro fluxo possvel representar de forma grfica as entradas e sadas utilizadas nos programas.

53

Lgica de programao
ARQ ENT ARQ CLI

PROGRAMA

PROGRAMA

ARQ SAI RELATORIO

O primeiro macro fluxo identificado que o programa faz o processamento utilizando um arquivo de entrada e gerado um segundo arquivo com o resultado do processamento. O segundo tambm utiliza um arquivo de entrada, o nome do arquivo informa que so registros com informao de clientes e ao termino do processamento gerado um relatrio. O macro fluxo uma documentao necessria para o entendimento e a validao dos sistemas, ele traz uma viso de como o programa se relaciona com os recursos externos.

54

Exerccios

Lgica de programao

1) Foram coletados dados de uma populao, (nome, idade, sexo, salrio), com o intuito de consolidar informaes sobre os habitantes. A partir destes dados faa um algoritmo que informa: a) A mdia salarial destes habitantes b) Maior e menor idade. c) Identificar se qual dos sexos possui a maior media salarial d) Quantidade de homens e de mulheres 2) Um arquivo de livros possui os seguintes campos: Cdigo do livro Autor Titulo Quantidade em Estoque Preo de custo Margem Custo/Venda. Crie um segundo arquivo com os seguintes campos: Titulo do livro Preo de Venda. Valor total em estoque Sabendo que Preo de Venda = Preo de Custo * Margem Custo/Venda e Valor total em estoque = Preo de venda * Quantidade em Estoque 3) Elabore um diagrama de blocos para efetuar o controle de estoque de um supermercado, quais produtos precisam ser comprados e a quantidade a ser adquirida, tendo as seguintes informaes. Cdigo do produto. Quantidade Mnima do produto. Quantidade Mxima do produto. Quantidade em estoque de cada produto. A compra de um produto est associada a sua quantidade em estoque: Quantidade em estoque <= quantidade mnima Gere um arquivo com a solicitao de compra dos produtos: Cdigo do Produto e Quantidade a Comprar

55

15.

Relatrios

Lgica de programao

Os relatrios so utilizados pelas reas de negocio para exibir informaes no formato de registro que so resultados de um determinado processamento feito com dados obtidos dos meios de armazenamentos, arquivos, tabelas entre outros. Alguns aspectos devem ser vistos para efetuarmos a impresso de relatrios: Formato e caractersticas do formulrio Controle de linhas e salto de pgina Impresso de cabealho e rodap Numerao de pginas Esttica final da pgina

15.1

Caractersticas do Formulrio

Formulrio o layout definido normalmente pela rea de negocio com as informaes necessrias para as suas atividades. Podem conter um formato padro para a quantidade de linhas por pagina e de colunas de caracteres por linhas constantes (no se alteram).

15.2

Controle de linhas e salto de pginas

necessrio definir o formato do relatrio que ser impresso. Com o layout definido e as dimenses do papel, inicia fase de ajustes para que todos os dados sejam impressos na pagina e que no haja a perda de informao devido a impresso fora do papel, pois a esttica no deve ser comprometida. Deve ser observada a quantidade de linhas para que todas as informaes apaream na pagina. O controle do numero de linhas impressas feito atravs dos contadores de linhas e no deixar o valor desses contadores ultrapassar o nmero desejado de linhas por pginas.

56

Lgica de programao
15.3 Impresso de Cabealho e Esttica de Pgina
O relatrio deve conter uma esttica que facilite o entendimento do seu contedo, veja o exemplo abaixo: SENAI PAG 1

LISTAGEM DE FUNCIONARIOS CABECALHO

MAT 001 002 003 004 005 006 007

NOME JOSE MARIA CARLOS JOANA PAULO MESSIAS JORGE

UNID 3B 2A 3B 2C 2A 3B 2C

LINHAS DE DETALHE

RODAPE

57

Lgica de programao
Vejamos abaixo a descrio de cada campo do formulrio:

CAMPO

DESCRIO

rea de Cabealho

rea que identifica o relatrio com assunto a que se refere o contedo da pagina, definio de colunas e outras informaes a depender da necessidade.

Linha de Detalhe

Registros gerados na parte central do relatrio com informaes obtidas de arquivos ou tabelas de dados.

rea de Rodap

Terminador da pagina de relatrio onde pode conter totalizadores e informaes adicionais.

Veja abaixo um exemplo de diagrama de bloco para impresso de relatrio:

58

Lgica de programao

59

Exerccios

Lgica de programao

1) O gerente de recursos humanos deseja obter uma lista com os funcionrios que mais possuem faltas no ano vigente e em ordem decrescente pelo numero de faltas. Descreva como deve ser este diagrama e blocos com o seguinte Layout: Macro-fluxo Layout (Cadastro de Funcionrios)

CADCLI

MATRICULA

NOME-FUNCIONARIO

DATACONTRATACAO

SALRIO

Layout (Cadastro de Faltas)


CADFLT MATRICULA ANO FALTA

PROGRAMA

RELATRIO

Layout (Relatrio) + MATRICULA XXXXXXXXX XXXXXXXXX ANO: XXXX RELAO DE FUNCIONARIOS / FALTAS NOME XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX FALTAS XXXX XXXX PAG.XX

DATA CONTRATO XXXXXXXXXX XXXXXXXXXX

TOTAL DE FALTAS: XXXXXXXXXXXXXX

Obs: Deve conter o cabealho e totalizadores em todas as paginas e um total de 50 linhas por pagina.

60

Lgica de programao
16. Referncias

Lgica de Programao A Construo de Algoritmos e Estruturas de Dados So Paulo: Forbellone, Andr Luiz Villar - MAKRON, 1993. Sites na Web: http://www.inf.pucrs.br/~egidio/algo1/ BACH. Objectives of Structured Programming. Philadelphia, Pa., 1974 (Computer Programming Management Portfolio, 14-02-01). E, T. C. Fundamentos de Computadores Digitais. Rio de Janeiro, Guanabara, 1980. O. J.; DIJKSTRA, E. W.; HORRE, C. A. R. Structured Programming. London, Academic Press, 1972. rRA, E. W. A Discipline of Programming. Englewood Cliffs. N. J., Prentice-Hall, 1976. C. W. Organizao e Programao de Computadores. Rio de Janeiro, Guanabara, 1980. M. L. Curso de Programao de Computadores. Belo Horizonte, Publicao Interna do ICEx-UFMG, 1977. AS, D. L. On the Criteria do be used in Decomposing Systems into Modules. Communications of the ACM, 12), 1972. A. V. Engenharia de Programas. Rio de Janeiro, LTC - Livros Tcnicos e Cientficos, 1983. N. Program Development by Stepwise Refinement. Communications of the ACM, 14(4), April, 1971. N. From Programming Techniques to Programming Methods. Gunther, A. et alIi International Computer Symposium (ICS). Amsterdam, North-Holland, 1974. Apostila de Lgica de Programao. SENAC RS. , 1 Edio, 2003. MORAES, Paulo Srgio de. Curso Bsico de Lgica de Programao. UNICAMP, Abril de 2000.

61

Você também pode gostar