Você está na página 1de 59

1

Lgica de programao
Lauro de Freitas
2011
Copyright 2011 por SENAI DR BA. Todos os direitos reservados
Departamento Regional da Bahia DR/ SENAI
2
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
3
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 profissionalizar-
se 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.
4
Lgica de programao
SUMRIO
Pg.
1. Apresentao.............................................................................................3
2. Introduo Lgica de Programao......................................................6
3. 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 ..................................................................29
11.1 Tabela Verdade..................................................................................29
11.2 Operaes lgicas sobre proposies:...............................................30
11.2.1 Negao ( ~ )...............................................................................30
11.2.2 Conjuno ( ^) .............................................................................31
11.2.3 Disjuno.....................................................................................32
11.2.4 Condicional ( ) ......................................................................33
11.2.5 Bi condicional ( ) ....................................................................34
12. Linearizao de expresses................................................................ 36
5
Lgica de programao
12.1 Modularizao de expresses............................................................ 36
12.2 Operadores especiais (MOD e DIV) ...................................................37
12.3 Funes.............................................................................................. 37
12.3.1 Bibliotecas de funes.................................................................37
13. Estrutura de deciso e repetio........................................................ 38
13.1 Estrutura de Deciso..........................................................................38
13.1.1 Se ento......................................................................................39
13.1.2 Se ento seno ...........................................................................39
13.1.3 Caso selecione............................................................................41
13.2 Estrutura de Repetio.......................................................................44
13.2.1 Enquanto x, processar.................................................................44
13.2.2 At que x, processar....................................................................45
13.2.3 Processar..., enquanto x.............................................................. 45
13.2.4 Processar... at que x..................................................................46
14. Arquivos de dados...............................................................................48
14.1 Conceitos Bsicos..............................................................................48
14.2 Abertura de Arquivos..........................................................................49
14.3 Fechamento de Arquivos....................................................................49
14.4 Leitura de Arquivos.............................................................................49
14.5 Movimentao de registros.................................................................50
14.6 Gravao de Arquivos ........................................................................51
14.7 Macro Fluxo........................................................................................ 51
15. Relatrios............................................................................................. 54
15.1 Caractersticas do Formulrio............................................................. 54
15.2 Controle de linhas e salto de pginas.................................................54
15.3 Impresso de Cabealho e Esttica de Pgina..................................55
16. Referncias........................................................................................... 59
6
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.
7
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.1Seqncia lgica
A seqncia lgica pode ser definida como uma lista de passos que so obedecidos para o
cumprimento de uma tarefa.
3.2Instrues
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:
8
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.
9
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:
10
Lgica de programao
6. Modo de desenvolver algoritmos
6.1Pseudocdigo
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.
11
Lgica de programao
6.2Fases
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 PROCESSAMENTO SADA
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
6.3Exemplo 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.
Roupa suja
Lavar roupa suja Roupa lima
12
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.4Teste 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
13
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 Pegar nota1
o Pagar nota2
o Pegar nota3
o Calcular mdia final ((nota1 + nota2 + nota3) / 3)
o Exibir a mdia final
2) Realize o Teste de Mesa com base no algoritmo acima, utilizando dados aleatrios.
14
Lgica de programao
7. Diagrama de Blocos
7.1Diagrama 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.2Simbologia
So utilizados diversos smbolos, observe o quadro abaixo contendo estes smbolos:
15
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
16
Lgica de programao
PEGAR ANO DE
NASCIMENTO
INCIO
SUBTRAIR ANO ATUAL
DE ANO DE
NASCIMENTO
IDADE
ATUAL
FIM
PEGAR ANO
ATUAL
17
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
18
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.1Constantes
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.2Variveis
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
19
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 Servem para armazenar valores a serem
utilizados durante a execuo do
programa.
Caracteres Servem para armazenar valores
indiferentes. Exemplo: Endereo.
Alfanumricas Servem para armazenar valores que
contenham letras e nmeros. Exemplo:
Senha
Lgicas 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.
20
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.
21
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.1Operadores 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 SMBOLO
Adio +
Subtrao -
Multiplicao *
Diviso /
Exponenciao **
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.
22
Lgica de programao
9.2Operadores 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 SMBOLO
Igual a =
Diferente de <> ou ou !=
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 RESULTADO
A = B FALSO
A <> B VERDADEIRO
A > B VERDADEIRO
A < B FALSO
A >= B VERDADEIRO
A <= B FALSO
23
Lgica de programao
Vejamos, a seguir, algumas expresses utilizando smbolos:
Exemplo de campos Exemplo de campo com
do mesmo valor constante numrica
Sim
No
Exemplo de campo com
constante alfanumrica
Sim
No
Cdigo=Cod
Cd > 100
Nome = Maria
24
Lgica de programao
9.3Operadores 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 AND Esta expresso ser
somente verdadeira se
todos forem verdadeiros.
OU OR Esta expresso ser
somente verdadeira se ao
menos um for verdadeiro.
NO NOT 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:
Expresses Resultado
A = B AND B > C FALSO
A <> B OR B < C VERDADEIRO
A > B NOT VERDADEIRO
A < B AND B > C VERDADEIRO
A >= B OR B = C FALSO
A <= B NOT FALSO
25
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)
26
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
27
Lgica de programao
Vejamos este mesmo algoritmo, utilizando-se o Diagrama de Blocos:
Incio
Ir para o banheiro
Tem
sabonete?
Jogar embalagem no
lixo
Pegar um sabonete
novo
Retirar a embalagem
Tomar banho
Fim
Ir tomar banho
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. Proposies e Conectivos
11.1 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:
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 Q
V V
V F
F V
F V
P
v
f
30
Lgica de programao
No caso de uma proposio composta cujas componentes simples so p, q e r, as nicas
atribuies possveis p, q e r so:
P Q R
v v v
v v f
v f v
v f f
f v v
f v f
f f v
f f f
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 ~P
v f
f v
Ex: p: o nmero 125 cubo perfeito V(p) = V
~p: o nmero 125 no cubo perfeito V(~p) = F
Pode-se tambm negar uma proposio de outras formas:
31
Lgica de programao
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 Q P^Q
v v v
v f f
f v f
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
b) p: dois um nmero primo V(p) = V
q: O quadrado tem trs lados V(q) = F
p^q: dois um nmero primo e o quadrado tem trs lados V(p^q) = V^F = F
32
Lgica de programao
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 q p v q
v v v
v f v
f v v
f f f
Ex: a) p: A lua amarela V (p) = 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
ou verdadeiros; e verdade (V), nos demais casos.
O valor lgico da disjuno exclusiva de duas proposies dado como se mostra abaixo:
33
Lgica de programao
P Q PwQ
V v f
V f v
F v v
F f f
Ex: p: Andr baiano.
q: Andr carioca.
pwq: Andr baiano ou Andr carioca
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 Q P Q
V v v
V f f
F v v
F f v
Ex: a) p: Braslia a capital do Brasil V(p) =V
b) q: O ms de julho tem 31 dias V(q) = V
p q: Se Braslia a capital do Brasil ento o ms de julho tem 31 dias
34
Lgica de programao
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 q: Se Braslia a capital do Brasil ento o nmero 2 mpar.
V (p 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 q: Se o nmero 2 mpar ento o ms de julho tem 30 dias
V (p 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 Q P Q
V v v
V f f
F v f
F f v
Ex: a) p: A cidade de Cuiab est localizada na regio centro-oeste V(p) = V
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 um nmero inteiro.
V(p q) = V F = F
35
Lgica de programao
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:
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
-

- - 1 3 5
3
2
(2/3+(5-3))+1=
Tradicional
* Computacional
1.1
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:
12.3 Funes
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:
12.3.1 Bibliotecas de funes
13 2
6 1
MOD DIV
13 DIV 2 = 6
13 MOD 2 = 1
Valor Final Y
Valor Inicial X
Processamento
X=9
Y=3
x
38
Lgica de programao
Armazenam um conjunto de funes que podem ser usadas pelos programas.
12.3.1.1 Funes Pr-Definidas
ABS( ) VALOR ABSOLUTO
SQRT( ) RAIZ QUADRADA
SQR( ) ELEVA AO QUADRADO
TRUNC( ) VALOR TRUNCADO
ROUND( ) VALOR ARREDONDADO
LOG( ) LOGARITMO
SIN( ) SENO
COS( ) COSSENO
TAN( ) 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.
13.1 Estrutura de Deciso
Os comandos de deciso ou desvio fazem parte das tcnicas de programao que
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.
39
Lgica de programao
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:
Mdia >= 5.0
Aluno Aprovado
SIM
NO
13.1.2 Se ento seno
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.
- Usando ainda o exemplo anterior, o algoritmo ficaria assim:
o SE MEDIA >= 5.0 ENTO
ALUNO APROVADO
SENO
ALUNO REPROVADO
40
Lgica de programao
- Fluxograma:
Mdia >= 5.0
Aluno Aprovado
SIM
Aluno Reprovado
NO
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
Mdia >= 5.0
Aluno Aprovado
SIM
Aluno Reprovado
NO
Mdia >= 7.0
SIM
NO
Aluno Necessita
Fazer outra
Avaliao
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
Lgica de programao
Exerccios
1) Elabore um diagrama que:
- 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.
44
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:
45
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
No
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
SE ...
PROCESSAR
Repetir
46
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:
47
Lgica de programao
No
Sim
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.
SE ...
PROCESSAR
Repetir
48
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
REGISTRO um conjunto de campos.
Exemplo: Registro de Clientes
COD-CLI NOME ENDEREO FONE
00001 GABRIELA DA SILVA RUA BENTO 3302-9999
SANTO
ARQUIVO um conjunto de registros.
Exemplo: O arquivo de Funcionrio da Empresa, onde esto armazenados os dados de
todos os funcionrios da empresa.
ENDERECO
RUA BENTO SANTO
Registro 1
Registro 1
Registro 1
49
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 :
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 :
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 :
ABRIR ARQUIVO
FECHAR ARQUIVO
LER ARQUIVO
50
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:
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
LER
ARQUI
VO
E.O.F
INICIO
LER
ARQUIVO
E.O.F
NREG
FIM
ABRIR
ARQUIVO
NREG=0
NREG=NREG+1
FECHAR
ARQUIVO
51
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 :
14.7 Macro Fluxo
Atravs do macro fluxo possvel representar de forma grfica as entradas e sadas
utilizadas nos programas.
GRAVRAR
REGISTRO
52
Lgica de programao
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.
ARQ ENT
PROGRAMA
RELATORIO
ARQ CLI
ARQ SAI
PROGRAMA
53
Lgica de programao
Exerccios
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
54
Lgica de programao
15. Relatrios
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.
55
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:
CABECALHO
LINHAS DE DETALHE
SENAI PAG 1
LISTAGEM DE FUNCIONARIOS
MAT NOME UNID
001 JOSE 3B
002 MARIA 2A
003 CARLOS 3B
004 JOANA 2C
005 PAULO 2A
006 MESSIAS 3B
007 JORGE 2C
RODAPE
56
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:
57
Lgica de programao
58
Lgica de programao
Exerccios
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)
Layout (Cadastro de Faltas)
Layout (Relatrio)
+ RELAO DE FUNCIONARIOS / FALTAS PAG.XX
MATRICULA NOME FALTAS DATA CONTRATO
XXXXXXXXX XXXXXXXXXXXXXXXX XXXX XXXXXXXXXX
XXXXXXXXX XXXXXXXXXXXXXXXX XXXX XXXXXXXXXX
ANO: XXXX TOTAL DE FALTAS: XXXXXXXXXXXXXX
Obs: Deve conter o cabealho e totalizadores em todas as paginas e um total de 50
linhas por pagina.
MATRICULA NOME-FUNCIONARIO DATA-
CONTRATACAO
SALRIO
MATRICULA ANO FALTA
CADCLI
PROGRAMA
RELATRIO
CADFLT
59
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.