Este documento discute algoritmos e lógica de programação. Primeiro, define algoritmos como sequências lógicas de passos para resolver problemas e apresenta exemplos simples. Em seguida, discute conceitos como variáveis, constantes, operadores e estruturas de controle para construir algoritmos. Finalmente, fornece dicas para projetar algoritmos de forma estruturada e lógica.
2. O que pretendemos:
• Revisar conceitos de lógica na
perspectiva da filosofia
• Apresentar os conceitos de algoritmos e
suas estruturas
• Orientar quanto à construção de
algoritmos
• Exercitar o raciocínio lógico formal,
através da elaboração de algoritmos
3. Lógica
Para a filosofia: área que trata das
formas do pensamento em geral (dedução,
indução, hipótese, inferência etc.) e das
operações intelectuais que visam à
determinação do que é verdadeiro ou não.
Para a computação: organização e
planejamento das instruções,
assertivas etc. em um algoritmo,
a fim de viabilizar a
implantação de um programa.
Fonte: Houaiss
4. Sequência lógica
São passos executados até
atingir um objetivo ou solução
de um problema.
5. Instruções
São um conjunto de regras ou
normas definidas para a
realização ou emprego de algo.
Em computação, é o que indica
a um computador uma ação
elementar a executar.
6. Lógica de programação
Significa o uso correto das leis de
pensamento, da 'ordem da razão1 e de
processos de raciocínio e simbolização
formais na programação de computadores,
objetivando a racionalidade e o
desenvolvimento de técnicas que
cooperem para a produção de soluções
logicamente válidas e coerentes, que
resolvam com qualidade os problemas que
se deseja programar.
7. Lógica de programação
Um mesmo raciocínio pode ser expresso
em qualquer um dos inúmeros idiomas
existentes, mas continuará
representando o mesmo raciocínio.
O mesmo ocorre com a Lógica de
Programação, que uma vez concebida,
pode ser representada em qualquer das
inúmeras linguagens de programação. Sua
concepção se dá através dos Algoritmos.
8. Algoritmos
É formalmente uma sequência finita
e bem definida de passos, não
ambígua, que levam a execução de
uma tarefa.
ou
É um conjunto de passos lógicos,
bem definidos, que descreve a
solução de um problema.
9. Software
São algoritmos escritos numa
linguagem de computador
(Pascal, C, Cobol, Fortran, Visual
Basic, Java, PHP, dentre outras ) e
que são interpretados e
executados por uma máquina
computacional.
10. Algoritmos - exemplo
Considera este
Algoritmo “Trocar lâmpada” algoritmo
Início suficientemente
detalhado?
Pegar uma escada;
Posicionar a escada embaixo da lâmpada;
Buscar uma lâmpada nova;
Subir na escada;
Retirar a lâmpada velha;
Colocar a lâmpada nova.
Fim
11. Algoritmos – outro exemplo
E agora,
Algoritmo “Trocar lâmpada” Melhorou?
Você poderia
Início elaborar outra
Pegar uma escada; sequência?
Posicionar a escada embaixo da lâmpada;
Buscar uma lâmpada nova;
Acionar o interruptor;
Se a lâmpada não acender, então
Subir na escada;
Retirar a lâmpada queimada;
Colocar a lâmpada nova.
Fim
12. Algoritmos
Essencialmente, os algoritmos
orientam sobre o modo de processar
os dados de entrada, gerando
outros dados como saída.
Dados de
Dados de Dados de
Dados de
Processamento
Processamento
entrada
entrada entrada
entrada
13. Algoritmos
Para qualquer processo computacional, o
algoritmo precisa estar rigorosamente
definido, especificando a maneira que
ele se comportará em todas as
circunstâncias.
A corretude do algoritmo pode ser provada
matematicamente, bem como a quantidade
de tempo e espaço (complexidade)
necessários para a sua execução → estes
aspectos são alvo da análise de
algoritmos.
14. Algoritmos
Os algoritmos são construídos utilizando-se:
Linguagem natural, através de uma lista de
procedimentos bem definida, na qual as
instruções são executadas passo a passo a
partir do começo da lista
Fluxograma: uma ideia que pode ser
facilmente visualizada através de uma
notação gráfica
Linguagem de programação, tal como o Pascal.
15. Fluxograma
• Utilização de símbolos gráficos
para representar algoritmos.
• No fluxograma existem símbolos
padronizados para início, entrada
de dados, cálculos, saída de
dados, fim etc.
Comando Decisão Saída
Entrada
Início/Fim
16. Fluxograma
Início do algoritmo
Entrada do número
Cálculo do dobro do número
Apresentação do resultado
Fim do algoritmo
17. Algoritmos – dicas de construção
1.Faça uma leitura de todo o problema até o
final, a fim de formar a primeira
impressão. A seguir, releia o problema e
faça anotações sobre os pontos principais
2.Verifique se o problema foi bem entendido,
se preciso releia o problema quantas vezes
for preciso para tentar entendê-lo
3.Extraia do problema todas as suas saídas
4.Extraia do problema todas as suas entradas
5.Identifique qual é o processamento
principal
18. Algoritmos – dicas de construção
6. Verifique se será necessário algum valor
intermediário que auxilie a transformação das
entradas em saídas. Esta etapa pode parecer
obscura no início, mas com certeza no
desenrolar do algoritmo, estes valores
aparecerão naturalmente.
7.Teste cada passo do algoritmo, com todos os
seus caminhos para verificar se o
processamento está gerando os resultados
esperados.
8.Crie valores de teste para submeter ao
algoritmo
9.Reveja o algoritmo, checando as boas normas
de criação.
19. Engenharia de software
– algumas observações
Portabilidade: programas que podem ser
executados em uma variedade de máquinas
com pouca ou nenhuma alteração de código.
A linguagem Java é o exemplo mais
conhecido
Prevenção de erros: Primeiramente,
escrever programas livres de erros. Como
isso não existe, usar técnicas de
depuração e eliminação de erros
Aparência e Comportamento: Uso de técnicas
de projeto de interfaces com o usuário e
facilidade de uso
20. Engenharia de software
– algumas observações
Boas Práticas de programação: escrever
programas claros, mais compreensíveis, mais
sustentáveis e mais fáceis de testar e
depurar
Uso de comentários: usar sempre que
possível para ilustrar os passos ao longo
do algoritmo
Erros comuns de programação: problemas que
devem ser observados para serem evitados
Desempenho: programas de rápida execução e
que ocupam pouco espaço de memória
21. Estrutura de um Algoritmo
Cabeçalho
Declaração de variáveis
Declaração de constantes
Início
Bloco de comandos
Fim
22. Constantes
Constante é um determinado valor fixo que
não se modifica ao longo do tempo,
durante a execução de um programa.
Conforme o seu tipo, a constante é
classificada como sendo numérica, lógica
e literal.
3 =CONSTANTE
Pi := 3,141516
23. Variáveis
Variável é a representação simbólica dos
elementos de um certo conjunto.
Cada variável corresponde a uma posição de
memória, cujo conteúdo pode ser alterado ao
longo do tempo durante a execução de um
programa.
Embora uma variável possa assumir diferentes
valores, ela só pode armazenar um valor a
cada instante.
Variável Conteúdo
NOME := "JOSE"
IDADE := 50
24. Variáveis – declaração
• As variáveis só podem armazenar valores
de um mesmo tipo, de maneira que também
são classificadas como sendo numéricas,
lógicas e literais
• Precisam ser declaradas no início
(cabeçalho) de cada algoritmo,
indicando o nome e o tipo
25. Variáveis – tipos
• Numéricas:
– Específicas para armazenamento de
números, que poderão ser utilizados para
cálculos. Podem ser ainda classificadas
como Inteiras (integer) ou Reais (real)
– As variáveis do tipo inteiro são para
armazenamento de números inteiros e as
reais são para o armazenamento de
números que possuam casas decimais
• Caracteres:
– Específicas para armazenamento de
conjunto de caracteres que não contenham
números (literais) → Ex: nome
26. Variáveis – tipos
• Alfanuméricas:
– Específicas para dados que contenham
letras e/ou números. Pode em
determinados momentos conter somente
dados numéricos ou somente literais. Se
usado somente para armazenamento de
números, não poderá ser utilizada para
operações matemáticas.
• Lógicas:
– Armazenam somente dados lógicos que
podem ser Verdadeiro ou Falso.
Falso
27. Operadores
Os operadores são meios pelo quais
incrementamos, decrementamos,
comparamos e avaliamos dados em um
algoritmo.
Temos três tipos de operadores:
– Operadores Aritméticos
– Operadores Relacionais
– Operadores Lógicos
28. Operadores aritméticos
• Adição +
• Subtração -
• Multiplicação *
• Divisão /
OBS: A linguagem Pascal não possui um operador para
potenciação; a mesma é calculada a partir de cálculos de produto
ou através de uma função exponencial (ex) e função logarítmica
(LN(X)).
Sintaxe:
XY := EXP(Y*LN(X))
EX.
X0.5 = EXP(0.5 * LN(X))
29. Operadores relacionais
Descrição Símbolo
• Igual a =
• Diferente de <>
• Maior que >
• Menor que <
• Maior ou igual a >=
• Menor ou igual a <=
30. Operadores lógicos
• E – AND – ^ (conjunção)
• OU – OR – v (disjunção)
• NÃO – NOT - ~ (negação)
Exemplos de uso:
'A terra é redonda' E 'A terra é um planeta'
'O artista é famoso', logo OU 'ele é rico' OU
'ele é talentoso'
31. Tabela-verdade
Tabela-verdade é o conjunto de todas as
possibilidades combinatórias entre os
valores de diversas variáveis lógicas, as
quais se encontram em apenas duas
situações (V ou F), e um conjunto de
operadores lógicos.
32. Tabela-verdade
Operação de negação
AA Não A
Não A
FF VV
VV FF
Ex:
(A) A menina é obediente → V
(Não A) A menina é desobediente → F
33. Tabela-verdade
Operação de conjunção
AA BB A eeB
A B
VV VV VV
VV FF FF
FF VV FF
FF FF FF
Ex:
(A) A menina é obediente
(B) A menina é estudiosa
(A e B) A menina é obediente e estudiosa.
34. Tabela-verdade
Operação de disjunção não exclusiva
AA BB A ou B
A ou B
VV VV VV
VV FF VV
FF VV VV
FF FF FF
Ex:
(A) A menina é obediente
(B) A menina é estudiosa
(A ou B) A menina é obediente ou estudiosa.
35. Tabela-verdade
Operação de disjunção exclusiva
AA BB A ou B
A ou B
VV VV FF
VV FF VV
FF VV VV
FF FF FF
Ex:
(A) A menina é obediente
(B) A menina é estudiosa
(A ou B) A menina é obediente ou a menina é estudiosa.
36. Bloco de comandos
Compreende:
* Comandos de atribuição
* Estruturas de controle
- Estruturas de decisão
- Estruturas de repetição
37. Comandos de atribuição
Um comando de atribuição permite-nos
fornecer um valor a uma variável
Tipos
– Comandos de entrada
• Ex: leia (A)
– Comandos de saída
• Ex: escreva (A)
O tipo do dado deve ser compatível com o
tipo da variável, isto é:
– Somente podemos atribuir um valor lógico
a uma variável capaz de comportá-lo,
ou seja, um variável declarada como
sendo do tipo lógicos
38. Estrutura de decisão
Os comandos de decisão ou desvio fazem parte
das técnicas de programação que conduzem a
estruturas de programas que não são
totalmente sequenciais.
As principais estruturas de decisão são:
“Se … Então”,
“Se … então … Senão”
e
“Caso … Selecione”
39. Estrutura de decisão
INÍCIO
“Iniciar regime”
Verificar o calendário
• Verificar o calendário Não Sim
É segunda-feira
• É segunda-feira?
• Se sim,
– Iniciar regime Aproveitar... Iniciar regime
– Matricular na Matricular na
academia academia
• Se não,
– Aproveitar
FIM
40. Condicional (If ... Then ... Else ...)
Algoritmo Teste
Definir variáveis;
Início;
S
N1=N2
N1=N2 Ler N1;
? Ler N2;
N Se N1=N2 Então
N1>N2 N Escrever (N1=N2)
N1<N2
? Senão {ELSE}
S Se N1>N2 Então
Escrever (N1>N2)
N1>N2
Senão {ELSE}
Escrever (N2>N1);
Fim.
41. Estruturas de repetição
É uma estrutura de desvio do fluxo de
controle que realiza e repete diferentes
comandos ou ações dependendo se uma
condição é verdadeira ou falsa
Estão associados a uma estrutura de
repetição, uma condição e um bloco de
código
Enquanto ... faça <comando(s)>
Repita <comando(s)> até que ...
42. Estruturas de repetição
Enquanto ... faça <comando(s)>
A condição é verificada inicialmente, e caso
seja verdadeira, o bloco de comandos é
executado. Após o final da execução do bloco, a
condição é verificada novamente, e caso ela
ainda seja verdadeira, o código é executado
novamente.
Repita <comando(s)> até que ...
Primeiro, o bloco de comandos é executado, e
depois que a condição é verificada. Caso seja
verdadeira, o bloco de comandos é novamente
executado.
43. Estruturas de repetição
Deve-se observar que, caso o bloco de
comandos nunca modificar o estado da
condição, a estrutura será executada para
sempre, uma situação chamada laço (loop)
infinito. Da mesma forma, é possível
especificar uma estrutura em que o bloco de
comandos modifica o estado da condição, mas
esta é sempre verdadeira.
44. Ler dois números e uma letra. Se a letra for a, adicionar, se for s, subtrair, se
for m, multiplicar, se for d, dividir, senão, exibir “Operação inexistente”
Início 1
Início 1
S Resultado:=
Definir N1,N2,Resultado:Real; S Operação:
Definir N1,N2,Resultado:Real; Letra=m? Resultado:= Operação:
Definir Letra,Tecla: Char; N1*N2 Multiplicação
Definir Letra,Tecla: Char; Letra=m? N1*N2 Multiplicação
n
n
Ler N1; Resultado:= Operação:
Ler N1; Letra=d? Resultado:= Operação:
N1/N2 Divisão
Letra=d? N1/N2 Divisão
Ler N2;
Ler N2;
Operação:
Ler Letra; Operação:
Ler Letra; Inexistente
Inexistente
S Operação:
S Resultado:= Operação:
Letra=a? Resultado:= Adiçao
Letra=a? N1+N2 Adiçao
N1+N2 Fim
Fim
n
n
S Operação:
S Resultado:= Operação:
Letra=s? Resultado:= Subtração
N1-N2 Subtração
Letra=s? N1-N2
n
n
1
1
45. Algumas pontuações...
• A lógica se relaciona com a 'ordem
da razão', com a 'correção do
pensamento'
• É necessário utilizar processos
lógicos de programação para
construir algoritmos
46. Um pouco de humor
Um pouco de humor
sempre cai bem...
sempre cai bem...
47. Talvez se tivesse casado com uma programadora oodiálogo seria melhor…
Talvez se tivesse casado com uma programadora diálogo seria melhor…
48.
49.
50. Exercícios
1. Sabendo que A=3, B=7 e C=4, informe se as
expressões abaixo são verdadeiras ou falsas.
a) (A+C) > B
b) B >= (A + 2)
c) C = (B –A)
d) (B + A) <= C
e) (C+A) > B
2. Construa um algoritmo que avalie cada uma das
expressões acima, considerando que os valores de
A, B e C são variáveis e são dados pelo usuário.
51. Exercícios
3. Elabore um algoritmo que dada a idade de
um nadador classifique-o em uma das
seguintes categorias:
Infantil A = 5 a 7 anos
Infantil B = 8 a 11 anos
Juvenil A = 12 a 13 anos
Juvenil B = 14 a 17 anos
Adultos = Maiores de 18 anos
52. Exercícios
3. A média parcial (MP) de uma disciplina semestral no Ifba é
calculada com base na média aritmética não ponderada de 3
notas (Uni1, Uni2, Uni3). Caso o estudante alcance média parcial
igual ou superior a 7,0, ele é aprovado sem precisar fazer prova
final (PF). Caso ele alcance média parcial entre 3,0 e 6,9, ele
precisará fazer prova final. Caso ele obtenha média inferior a
3,0, ele é reprovado. Utilizando uma pseudo linguagem
(português estruturado), construa um algoritmo que leia o
nome do estudante, suas notas nas 3 unidades, calcule sua
média parcial e informe a situação de aprovação. Para os casos
de ser necessário fazer prova final, deve também mostrar a nota
mínima que ele precisa na prova final. O cálculo para a nota
mínima necessária na prova final é =(7*MP)/3. (2,0)
MP < 3 → reprovado
3,0 <= MP < 7,0 → precisa fazer prova final
MP >= 7,0 → aprovado
53. Referências
FORBELLONE, André Luiz Vilar; EBERSPACHER, Henri
Frederico. Lógica de programação: a construção
de algoritmos e estrutura de dados. 3. São
Paulo: Prentice Hall, 2005.
Cap. 1, 2 e 3.