Apostila Logica
Apostila Logica
Apostila Logica
Lógica de Programação
_________________________________
1
Modulo: Lógica de Programação
Índice
2 DESENVOLVENDO ALGORITMOS....................................................................................... 6
_________________________________
2
Modulo: Lógica de Programação
_________________________________
3
Modulo: Lógica de Programação
1.1 Lógica
O objetivo da lógica de programação é exercitar os métodos de
raciocínio e elaborar soluções coerentes para determinados problemas,
utilizando-se estruturas básicas de programação, construção e
representação de algoritmos para posterior codificação em linguagens de
programação.
Lógica de programação é a técnica de encadear comandos, em
uma seqüência de instruções que deve ser obedecida, para atingir
determinado objetivo.
_________________________________
4
Modulo: Lógica de Programação
1.3 Algoritmo
Construir algoritmos é a base fundamental de toda a programação.
Um algoritmo é uma seqüência finita de passos, ordenados de forma
lógica, que levam a execução de uma tarefa.
Mesmo sem perceber, utilizamos algoritmo no nosso dia-a-dia
como, por exemplo, para executar uma receita culinária, trocar um pneu
furado ou trocar uma lâmpada.
Os algoritmos também estão presentes na especificação de tarefas
que devem ser repetidas sempre da mesma forma. Para automatizar uma
tarefa, é fundamental descrever seus passos de forma detalhada e clara,
para que qualquer um que venha a executá-la saiba exatamente o que
fazer. Assim, se uma indústria precisa que uma tarefa seja automatizada,
deve descrevê-la através de um algoritmo. Este algoritmo poderá ser lido
por um operário ou transformado em programa para uma máquina.
Os programas de computadores também são construídos a partir de
algoritmos, pois um programa é um algoritmo escrito em uma linguagem
computacional.
_________________________________
5
Modulo: Lógica de Programação
2 Desenvolvendo Algoritmos
Como já vimos, algoritmo é uma seqüência finita de passos que
levam a execução de uma tarefa. Então podemos pensar em algoritmo
como uma receita, uma seqüência de instruções que dão cabo de uma
meta específica. Estas tarefas não podem ser redundantes nem
subjetivas na sua definição, devem ser claras e precisas. Como
exemplo de algoritmos podemos citar os algoritmos das operações básicas
(adição, multiplicação, divisão e subtração) de números reais decimais.
Outros exemplos seriam os manuais de aparelhos eletrônicos, que
explicam passo-a-passo como ligá-los, e utilizá-los. Até mesmo as coisas
mais simples, podem ser descritas pôr seqüências lógicas. Por exemplo:
A B C
+ =
_________________________________
6
Modulo: Lógica de Programação
4
Para montar o algoritmo proposto, faremos três perguntas:
1) Quais são os dados de entrada?
Resposta:_____________________________________
2) Qual será o processamento a ser utilizado?
Resposta:______________________________________
3) Quais serão os dados de saída?
Resposta:______________________________________
Algoritmo
Receba a nota da prova1 em P1
Receba a nota de prova2 em P2
Receba a nota de prova3 em P3
Receba a nota da prova4 em P4
Some P1, P2, P3 e P4 e divida o resultado por 4
Coloque o resultado em Media-Final
Mostre Media-Final
Fim do Algoritmo
_________________________________
7
Modulo: Lógica de Programação
P1 P2 P3 P4 Media-
Final
Aluno 1
Aluno 2
Aluno 3
Aluno 4
_________________________________
8
Modulo: Lógica de Programação
2.4 Exercícios
1) Especifique as ações necessárias para mover três disco de uma Torre de
Hanói, que consiste de três hastes (a - b - c), uma das quais serve de
suporte para três discos de tamanhos diferentes (1 - 2 - 3 ), os menores
sobre os maiores. Pode-se mover um disco de cada vez para qualquer
haste, contanto que nunca seja colocado um disco maior sobre um menor.
O objetivo é transferir os três discos para outra haste.
a b c
_________________________________
9
Modulo: Lógica de Programação
2) Você tem 8 bolas de bilhar. Todas, exceto uma, têm o mesmo peso e
você precisa descobrir qual a mais pesada. Para isto você deve utilizar
uma balança de pratos.
_________________________________
10
Modulo: Lógica de Programação
3 Diagrama de Blocos
3.2 Simbologia
TERMINAL
PROCESSAMENTO
Processamento em geral
EXIBIR
_________________________________
11
Modulo: Lógica de Programação
Dentro do símbolo sempre terá algo escrito, pois somente os símbolos não
conseguem transmitir a informação completa. Veja no exemplo a seguir:
N1
N2
N3
N4
CALCULAR MEDIA =
(N1+N2+N3+N4) / 4
MEDIA
FIM
_________________________________
12
Modulo: Lógica de Programação
3.3 Exercícios
1) Construa um diagrama de blocos que :
o Leia a cotação do dólar
o Leia uma quantidade de dólares
o Converta o valor destes dólares para Real
o Mostre o resultado
_________________________________
13
Modulo: Lógica de Programação
4.1 Dados
A elaboração de qualquer algoritmo seria impossível se não
considerarmos a estrutura de dados envolvidos, pois para processar
informações, estas deverão ser inseridas na memória do computador no
formato de dados.
Os dados manipulados pelos computadores são: Constantes e
Variáveis
4.2 Constantes
Constante é um tipo de dado que não se modifica ao longo do
tempo, durante a execução de um algoritmo. Conforme o seu tipo, a
constante é classificada como sendo numérica ou literal (ou alfanumérica).
Exemplo de constantes:
(P1 + P2 + P3) / 3 Constante numérica
O nome é "MARIA" Literal
4.3 Variáveis
Em um programa, uma variável é um espaço reservado na
memória do computador para armazenar um tipo de dado
determinado. Variáveis devem receber nomes para poderem ser
referenciadas e modificadas quando necessário.
Um programa de computador deve conter declarações que
especificam de que tipo são as variáveis que ele utilizará e às vezes um
valor inicial.
Exemplos de Variáveis:
Conteúdo da variável(Literal)
VARIÁVEIS Variável
NOME = “JOSE”
Total = Produto * Quantidade
IDADE = 50
_________________________________
14
Modulo: Lógica de Programação
4.5 Exercícios
1) O que é uma constante? Dê dois exemplos.
_________________________________
15
Modulo: Lógica de Programação
Inicio
Salário
Salario Abono Salário Novo
600,00 60,00
Abono
350,00
Salário
Novo=
Salário +
Abono
Salário
Novo
Fim
_________________________________
16
Modulo: Lógica de Programação
Inicio
Nome =
“José”
SalárioAtual
= 1200,00
%Reajuste =
ValorReajuste =
SalNovo =
SalNovo
Fim
_________________________________
17
Modulo: Lógica de Programação
5 Operadores
Os operadores são símbolos usados executar operações aritméticas
ou comparações entre variáveis. Temos três tipos de operadores:
Operadores Aritméticos
Operadores Relacionais
Operadores Lógicos
Operador Símbolo
Adição +
Subtração -
Multiplicação *
Divisão /
Exponenciação **
_________________________________
18
Modulo: Lógica de Programação
Descrição Símbolo
Igual =
Diferente NOT =
Maior que >
Menor que <
OPERADOR DESCRIÇÃO
"NÃO": Inverte o valor de um operando. Se o operando é
Not verdadeiro o resultado será falso. Se o operando é falso o
resultado será verdadeiro.
"E": Se os dois operandos são verdadeiros, o resultado
And será verdadeiro. Se um dos dois operandos é falso, o
resultado será falso.
"OU": Se os dois operandos são falsos, o resultado será
Or falso. Se um dos dois operandos é verdadeiro, o resultado
será verdadeiro.
Quando houver uma expressão mais complexa de operadores
relacionais com varias comparações, podem-se usar parênteses para
agrupar operações e estabelecer prioridades.
_________________________________
19
Modulo: Lógica de Programação
Exemplos:
Suponha que temos três variáveis A = 5, B = 8 e C =1, os
resultados das expressões seriam:
Expressões Resultado
A = B AND B > C Falso
A >=B OR B = C Falso
_________________________________
20
Modulo: Lógica de Programação
Exemplo:
Montar diagrama de blocos do algoritmo para calcular o pagamento
de vendedores, sabendo que devem receber o salário base e um abono de
R$ 100,00 quando seu faturamento for superior a R$ 5.000,00.
Inicio
Salário
Base
Faturamento
MOVE 100
Fatura- Sim PARA ABONO
mento >
R$5000
Não
MOVE 0
PARA ABONO CALCULAR
Pagamento =
Salário base + abono
Pagamento
Fim
_________________________________
21
Modulo: Lógica de Programação
5.4 Exercícios
( ) (A+C) > B
( ) B >= (A + 2)
( ) C = (B –A)
( ) (B + A) <= C
( ) (C+A) > B
_________________________________
22
Modulo: Lógica de Programação
REVISÃO
1. Assinale V ou F
____ Para garantir que um algoritmo esteja 100% correto, é melhor construí-lo
após codificarmos o programa.
_________________________________
23
Modulo: Lógica de Programação
REVISÃO
_______________________________________________________________
5. Responda V ou F
0300-00-CALCULA-MULTA
_______________________________________________________________
_______________________________________________________________
______________________________________________________________
_________________________________
24
Modulo: Lógica de Programação
SE MEDIA >= 5
APROVE ALUNO
FIM SE.
Em Diagrama de Blocos:
MEDIA S
Not < 5
N
APROVE
ALUNO
_________________________________
25
Modulo: Lógica de Programação
Em pseudocódigo:
SE MÉDIA NOT < 5
APROVE O ALUNO
SENÃO
REPROVE O ALUNO
FIM SE.
Em Diagrama de Blocos:
Não Sim
MEDIA
>= 5
REPROVAR APROVAR
O ALUNO O ALUNO
Não Sim
MEDIA
>= 5
_________________________________
26
Modulo: Lógica de Programação
Em pseudocódigo:
SE MÉDIA >= 5
SE MEDIA >= 7
APROVAR ALUNO
SENÃO
FAZER NOVA AVALIAÇÃO
SENÃO
REPROVAR ALUNO
FIM SE.
_________________________________
27
Modulo: Lógica de Programação
INICIO
AVALIE SIM
QUANDO MENS =
OP “OPÇÃO1”
1
NÃO
SIM
QUANDO MENS =
2 “OPÇÃO2”
NÃO
SIM
QUANDO MENS =
3 “OPÇÃO3”
NÃO
MENS
FIM
_________________________________
28
Modulo: Lógica de Programação
6.4 Exercícios
INICIO
Ler
SALBASE
Ler
GRATIF
SALBRUTO =
SALBASE + GRATIF
Não Sim
SALBRUTO
< 1000
IR = SALBRUTO IR = SALBRUTO
* (20 / 100) * (15 / 100)
SALLIQ =
SALBRUT - IR
SALLIQ
FIM
_________________________________
29
Modulo: Lógica de Programação
SALBASE GRATIF
3.000,00 1.200,00
1.200,00 400,00
500,00 100,00
Memória
Dados de Saída
SALLIQ
_________________________________
30
Modulo: Lógica de Programação
EXECUTOU
Não EXECUTA
N VEZES? BLOCO DE
INSTRUÇÕES
Sim
CONTINUA
CONTADOR = 0
PEGAR
INICIO RESULTADO = 1
NÚMERO
SOMAR 1 EM
CONTADOR.
Sim
FIM
_________________________________
31
Modulo: Lógica de Programação
SIM
CONTINUA
1ª Forma: 2ª Forma:
BLOCO DE
EXECUTAR
OPERAÇÃO
ATÉ CONDIÇÃO
CONDIÇÃO SATISFEITA
SATISFEITA
FIM
MULTIPLICAR VOLTE
CALCULO RESULTADO POR
NUMERO
_________________________________
32
Modulo: Lógica de Programação
6.7 Exercícios
_________________________________
33
Modulo: Lógica de Programação
_________________________________
34
Modulo: Lógica de Programação
_________________________________
35
Modulo: Lógica de Programação
_________________________________
36
Modulo: Lógica de Programação
_________________________________
37
Modulo: Lógica de Programação
_________________________________
38
Modulo: Lógica de Programação
_________________________________
39
Modulo: Lógica de Programação
7 Arquivos de Dados
Nos algoritmos que vimos até aqui, os dados estavam na memória
do computador, ou seja, após a execução do algoritmo os dados se
perdiam. Para resolver esse problema começaremos a trabalhar com
arquivos, onde poderemos guardar os dados e também manipula-los. Para
isso necessitamos definir alguns conceitos como: campos, registros e
arquivos.
Nome
Registro 1
Registro2
_________________________________
40
Modulo: Lógica de Programação
ABRIR
ARQUIVO
FECHAR
ARQUIVO
LER
ARQUIVO
_________________________________
41
Modulo: Lógica de Programação
Inicio
EOF
LER
REGISTRO
Não CONTAR
E.O.F. REGISTRO
Sim
Diagrama Completo:
INICIO
_________________________________
42
Modulo: Lógica de Programação
ABRIR
ARQUIVO
NREG = 0
LE
REGISTRO
sim
NREG
FECHAR
ARQUIVO FIM
GRAVAR
REGISTRO
_________________________________
43
Modulo: Lógica de Programação
_________________________________
44
Modulo: Lógica de Programação
7.6 Macro-Fluxo
O macro fluxo é a representação gráfica dos arquivos que serão
processados em um programa, sem detalhar os algoritmos.
Estes dois exemplos de Macro-fluxo dão uma visão geral dos
arquivos envolvidos em cada um dos programas. O primeiro diz que
haverá um arquivo de entrada, um processamento e um arquivo de saída.
Já o segundo exemplo diz que haverá um arquivo de entrada, um
processamento, e a saída será um relatório.
1º Exemplo 2º Exemplo
ARQ ARQ
E NT CLI
PROGRAMA PROGRAMA
ARQ
SAIDA RELATÓRIO
_________________________________
45
Modulo: Lógica de Programação
PRODUTO
PRODUTO
TABVENDA
TOTAIS DO PROCESSAMENTO
FINAL DE EXECUCAO
_________________________________
46
Modulo: Lógica de Programação
TOTAIS DO PROCESSAMENTO
_________________________________
47
Modulo: Lógica de Programação
8 Relatórios
A impressão de relatórios é o registro de informações processadas pelo
computador em um meio de armazenamento de dados chamado de
formulário. Para efetuarmos a impressão de relatórios devemos nos
preocupar com os seguintes aspectos:
o Características do formulário
o Controle de linhas, numeração e salto de página
o Impressão de cabeçalho e estética da página
_________________________________
48
Modulo: Lógica de Programação
Listagem de funcionários
Num. Nome Unid
Linhas de Detalhe 0001 Maria XG
0002 José XG
Rodapé
Total de funcionários 2
Área de Cabeçalho:
Local onde devemos colocar linhas de cabeçalho para identificar o
assunto a que se refere o conteúdo da página como um todo, e linhas de
cabeçalho com o nome de cada coluna de informações. Pode haver outras
linhas de cabeçalho de acordo com a necessidade.
Linha de Detalhe:
São as linhas geradas a partir de dados lidos de um arquivo.
Área de Rodapé:
São linhas contendo valores de totalizações de colunas e/ou linhas
de identificação da empresa, ou outras informações de fim de pagina.
_________________________________
49
Modulo: Lógica de Programação
Processar
Principal Iniciar
sim
ACLIN CABE- Abrir Arqs
Iniciar =66 ÇALHO
não
ACLIN ACUM=0
=8 TOTLIN=70
Processar
Ate EOF
LER
COLOCAR ARQFUN
CODFUN
Finalizar NOME
UNIDADE
EM DETALHE Fim
IMPRIMIR
DETALHE Cabeçalho
Fim Finalizar
SOMAR 1 GRAVAR
TOTPAG ACUM
ACLIN + 1
ACUM + 1
MOVE
LER TOTPAG
ARQFUNC P/CABPAG
FECHAR
ARQS
GRAVAR CAB1
SALTANDO
Fim PAGINA
FIM
GRAVAR
CAB2
GRAVAR
CAB3
Fim
_________________________________
50
Modulo: Lógica de Programação
8.5 Exercícios
Fluxo e descrição do processamento
CADCLI
RELATORIO
1...5...10....5...20....5...30....5...40....5...50....5...60....5...70....5.
..80
RELACAO DE CLIENTES / SALDOS - PAG. 99
CB-PAG
_________________________________
51
Modulo: Lógica de Programação
1...5...10....5...20....5...30....5...40....5...50....5...60....5...70....5.
..80
dd/mm/aaaa ESCOLA DA VIDA - RELACAO DE ALUNOS POR SALA DE AULA PAG. 99
C1-DATA C1-
PAG
CODIGO DA CLASSE xxx
C2-CLASSE
_________________________________
52
Modulo: Lógica de Programação
9 Resumo da Simbologia
Símbolo Função
TERMINAL Indica o INÍCIO ou FIM de um processamento
Exemplo: Início do algoritmo
PROCESSAMENTO Processamento em geral
Exemplo: Cálculo de dois números
ENTRADA/SAÍDA Operação de entrada e saída de dados.
Ex: Leitura e Gravação de Arquivos
DECISÃO Indica uma decisão a ser tomada
Exemplo: Verificação de Sexo
RELATÓRIO Relatórios
PROCESSAMENTO
ESTRUTURADO/PREDEFINIDO Processamento Estruturado / Predefinido
Exemplo: Executar ROTINA-A e retornar ao mesmo
ponto do programa.
_________________________________
53