Você está na página 1de 50

INTRODUÇÃO À LÓGICA

DE PROGRAMAÇÃO

Algoritmos e Lógica de Programação


Profa. Ianna Sodré
INTRODUÇÃO

 Muitos anos se passaram desde os primórdios da


história da computação.

 Surgiram vários paradigmas de programação.

 Uma base de conhecimento que não mudou e não


mudará nunca – a Lógica de Programação.

 Lógica de Programação e Raciocínio Matemático -


interpretação de um problema e a utilização correta de
uma fórmula.
Não existem
fórmulas em
informática!
INTRODUÇÃO

 Aperfeiçoamento de nossa forma de pensar e


raciocinar sobre um problema.

 Extrair do problema uma solução eficiente e eficaz.

 É preciso aprender a pensar sobre os problemas,


extraindo deles o máximo de informações.
INTRODUÇÃO
 A solução que criamos para um determinado
problema necessita ser exteriorizada e expressa
numa linguagem publicamente conhecida.

 Assim, utilizamos a lógica de programação


para desenvolver nossas soluções e os
algoritmos para apresentar essas soluções ao
mundo.

 Precisamos mais do que “fórmulas”, precisamos


aprender a pensar.
NOÇÕES DE LÓGICA

 O que é Lógica?
 Lógica trata da correção do pensamento (por que
pensamos de determinado jeito e não de outro).
 Lógica é a arte de pensar corretamente e, visto que a
forma mais complexa do pensamento é o raciocínio, a
Lógica estuda ou tem em vista a correção do
raciocínio.
 A Lógica tem em vista a ordem da razão.
 Isto dá a entender que a nossa razão pode funcionar
desordenadamente, pode pôr as coisas de pernas para
o ar.
 Por isso a Lógica ensina a colocar Ordem no
Pensamento.
NOÇÕES DE LÓGICA
Exemplos:
a) Todo mamífero é animal.
Todo cavalo é mamífero.
Portanto, todo cavalo é animal.

b) Todo mamífero bebe leite.


O homem bebe leite.
Portanto, todo homem é mamífero e animal.
EXISTE LÓGICA NO DIA-A-DIA?

 Sempre que pensamos, o raciocínio e a lógica nos


acompanham necessariamente.
 Também quando falamos, pois a palavra falada é a
representação do pensamento; e, visto que a palavra
escrita é a representação da palavra falada, também
pensamos quando escrevemos, utilizando lógica ou
não (textos sem sentido).
 Daí percebemos a importância da Lógica na nossa
vida não só na teoria, como também na prática, já que
quando queremos pensar, falar ou escrever
corretamente precisamos colocar em Ordem o
Pensamento, isto é, utilizar a Lógica.
EXISTE LÓGICA NO DIA-A-DIA?

 Exemplos:
a) A gaveta está fechada.
A bala está na gaveta.
Preciso primeiro abrir a gaveta, para depois
pegar a bala.

b) João é mais velho que José.


Marcelo é mais novo que José.
Portanto, João é mais velho que Marcelo.
ALGORITMIZANDO A LÓGICA

 Construir algoritmos é o objetivo fundamental de


toda a programação, mas, afinal,
 O que é Algoritmo?
 “Algoritmo é uma seqüência de passos que visam atingir
um objetivo bem definido.”
 Apesar de achar este nome estranho, algoritmos são
comuns em nosso cotidiano, como, por exemplo, uma
receita de bolo.
 Nela está descrita uma série de ingredientes
necessários, uma seqüência de diversos passos -
ações - a serem cumpridos para que se consiga fazer
determinado tipo de bolo - objetivo bem definido
aguardado ansiosamente por todos.
ALGORITMIZANDO A LÓGICA

 “Ação é um acontecimento que a partir de um estado


inicial, após um período de tempo finito, produz um estado
final previsível e bem definido”, em que, “Estado é a
situação atual de dado objeto.”

 Exemplo de ação: sequência de Fibonacci

A escolha de um valor qualquer para depois escrever a


sequência de Fibonacci é considerada uma ação?
Não, pois a escolha é imprevisível!
A escrita dos termos da sequência é uma ação?
Sim, pois parte de um estado inicial e depois de um
tempo produz resultado previsível e bem definido.
ALGORITMIZANDO A LÓGICA

 Um mesmo comando poderia ter sido usado:


“ Escreva os termos de Fibonacci inferiores a x”

 Algoritmo é a descrição de um conjunto de comandos


que obedecidos, resultam numa sucessão finita de
ações.
 Não é a solução de um problema.
 Só se aprende construindo, testando.
ALGORITMO

 Outros algoritmos freqüentemente encontrados são:


 instruções para utilizar um aparelho
eletrodoméstico;
 uma receita para preparo de algum prato;
 guia de preenchimento para declaração do imposto
de renda;
 a regra para determinação de máximos e mínimos
de funções por derivadas sucessivas;
 a maneira como as contas de água, luz e telefone
são calculadas mensalmente; etc.
EXERCÍCIOS
1. Um homem precisa atravessar um rio com um barco que possui
capacidade de carregar apenas ele mesmo e mais uma de suas três
cargas, que são: um lobo, um bode e um maço de alfafa. O que o
homem deve fazer para conseguir atravessar o rio sem perder suas
cargas?
2. Três jesuítas e três canibais precisam atravessar um rio; para tal,
dispõem de um barco com capacidade para duas pessoas. Por
medidas de segurança não se permite que em alguma margem a
quantidade de jesuítas seja inferior à de canibais. Qual a seqüência
de passos que permitiria a travessia com segurança?
3. Numa determinada noite, acontece uma queda de energia. Você
sabia que poderia encontrar uma vela na gaveta da cozinha, um
lampião embaixo da cama, fusíveis de reserva no armário da sala e
fósforos na estante da cozinha. Descreva a seqüência de passos
que poderia ser utilizada para diagnosticar e resolver o problema,
que pode ser previsto em duas possibilidades:
a) o fusível queimou;
b) a queda é na estação da companhia elétrica.
ALGORITMO

São vários os conceitos para algoritmo.


 “Um conjunto finito de regras que provê uma
seqüência de operações para resolver um tipo de
problema específico” [KNUTH]
 “Seqüência ordenada, e não ambígua, de passos que
levam à solução de um dado problema” [TREMBLAY]
 “Processo de cálculo, ou de resolução de um grupo de
problemas semelhantes, em que se estipulam, com
generalidade e sem restrições, as regras formais para
a obtenção do resultado ou da solução do problema”
[AURÉLIO]
ALGORITMO

 Portanto, podemos redefinir Algoritmo como:


 “Algoritmo é a descrição de um conjunto de ações
que, obedecidas, resultam numa sucessão finita de
passos, atingindo o objetivo.”
 Em geral um algoritmo destina-se a resolver um
problema: fixa um padrão de comportamento a ser
seguido, uma norma de execução a ser trilhada, com
o objetivo de alcançar a solução de um problema.
 O que é padrão de comportamento?
 Imagine a seguinte seqüência de números: 1, 6, 11,
16, 21, 26....
 Para determinar o sétimo elemento da série,
precisamos descobrir qual a sua regra de formatação,
isto é, seu padrão de comportamento.
ALGORITMO
 Descrever uma atividade bem cotidiana, como,
por exemplo, trocar uma lâmpada.
 pegue a escada;
 posicione-a embaixo da lâmpada;
 busque uma lâmpada nova;
 suba na escada;
 retire a lâmpada velha;
 coloque a lâmpada nova.
ALGORITMO

Algoritmo não
computacional Início
cujo objetivo é 1. Tirar o fone do gancho;
usar um 2. Ouvir o sinal de linha;
S
telefone
E
público. Q
3. Introduzir o cartão;
4. Teclar o número desejado;
U
Ê 5. Se der o sinal de chamar DESVIO
N 5.1 Conversar;
C 5.2 Desligar;
I
A 5.3 Retirar o cartão;
L 6. Senão
6.1 Repetir;
Fim.
ALGORITMO

 Involuntariamente, já seguimos uma determinada


seqüência de ações que, representadas neste
algoritmo, fazem com que ele seja seguido
naturalmente por pessoas, estabelecendo um
padrão de comportamento.
 É assim também com os algoritmos escritos para
computador.
 É preciso especificar todos os passos, para que o
computador possa chegar ao objetivo.
ALGORITMO – SERÁ QUE ENTENDI?

1) Dados os números naturais(N)


0, 1, 2, 3, 4, 5, 6, ...
Os dois exemplos
passo 1 faça N igual a zero
passo 2 some 1 a N
são algoritmos?
passo 3 volte ao passo 2 Justifique.

2) Soma dos primeiros 100 números naturais:


passo 1 faça N e Soma iguais a zero
passo 2 some 1 a N
passo 3 some N a Soma
passo 4 se N for menor que (100 – 1)
então volte ao passo 2
senão pare
POR QUE PRECISAMOS DE
ALGORITMOS?

 “A noção de algoritmo é básica para toda a


programação de computadores”. [KNUTH -
Professor da Universidade de Stanford, autor da
coleção “The art of computer programming”]

 “O conceito central da programação e da ciência da


computação é o conceito de algoritmo”. [WIRTH -
Professor da Universidade de Zurique, autor de
diversos livros na área e responsável pela criação
de linguagens de programação como ALGOL,
PASCAL e MODULA -2]
POR QUE PRECISAMOS DE
ALGORITMOS?

 A importância do algoritmo está no fato de termos


que especificar uma seqüência de passos lógicos
para que o computador possa executar uma tarefa
qualquer, pois o mesmo por si só não tem vontade
própria, faz apenas o que mandamos.
 Com uma ferramenta algorítmica, podemos
conceber uma solução para um dado problema,
independendo de uma linguagem específica e até
mesmo do próprio computador.
CARACTERÍSTICAS DOS ALGORITMOS
Todo algoritmo deve apresentar algumas
características básicas:
 Finitude;
 não dar margem à dupla interpretação (não
ambíguo);
 capacidade de receber dado(s) de entrada do
mundo exterior;
 poder gerar informações de saída para o
mundo externo ao do ambiente do algoritmo;
 Efetividade (todas as etapas especificadas no
algoritmo devem ser alcançáveis em um tempo
finito).
FORMAS DE REPRESENTAÇÃO
Algoritmos podem ser representados, dentre outras
maneiras, por:
 Descrição narrativa;
 Fluxograma;
 Linguagem algorítmica.
DESCRIÇÃO NARRATIVA
Faz-se uso do português para descrever algoritmos.
Exemplo: Receita de Bolo:
Providencie manteiga, ovos, 2 Kg de massa, etc.
Misture os ingredientes
Despeje a mistura na fôrma de bolo
Leve a fôrma ao forno
Espere 20 minutos
Retire a fôrma do forno
Deixe esfriar
Prove
VANTAGENS:
 o português é bastante conhecido por nós;
DESVANTAGENS:
 imprecisão;
 pouca confiabilidade (a imprecisão acarreta a desconfiança);
 extensão (normalmente, escreve-se muito para dizer pouca coisa).
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.
FLUXOGRAMA
Exemplo Explicação
Início do algoritmo

Entrada do número

Cálculo do dobro do número

Apresentação do resultado

Fim do algoritmo
FLUXOGRAMA
VANTAGENS:
 Uma das ferramentas mais conhecidas;

 Figuras dizem muito mais que palavras;

 Padrão mundial

DESVANTAGENS:
 Pouca atenção aos dados, não oferecendo
recursos para descrevê-los ou representá-
los;
 Complica-se à medida que o algoritmo
cresce.
LINGUAGEM ALGORÍTMICA
Consiste na definição de uma pseudolinguagem de programação, cujos
comandos são em português, para representar algoritmos.
Exemplo: Algoritmo “CALCULA_DOBRO”
var NUM, DOBRO: inteiro
inicio
Leia (NUM)
DOBRO  2 * NUM
Escreva (DOBRO)
fimalgoritmo
VANTAGENS:
 Usa o português como base;
 Pode-se definir quais e como os dados vão estar estruturados;
 Passagem quase imediata do algoritmo para uma linguagem de
programação qualquer.
DESVANTAGENS:
 Exige a definição de uma linguagem não real para trabalho;
 Não padronizado.
UM AMBIENTE PARA ESCREVER
ALGORITMOS
Descreveremos uma máquina hipotética para a qual escreveremos
nossos algoritmos. O nosso computador hipotético apresentará a
seguinte organização:
UM AMBIENTE PARA ESCREVER
ALGORITMOS

Cada uma das partes constituintes da figura acima tem os seguintes


significados:
1. Dispositivo de entrada (o teclado):
É o meio pelo qual os dados que serão trabalhados pelo algoritmo vão
ser introduzidos em nosso computador hipotético;
2. Unidade Lógica e Aritmética (ULA):
Parte responsável pelas operações matemáticas e avaliações lógicas;
3. Unidade de Controle:
Exerce controle sobre as demais partes do nosso computador. É uma
verdadeira gerente que distribui tarefas às outras unidades;
4. Memória:
Guarda o algoritmo a ser executado e os dados a serem utilizados
pelo mesmo. Todo dado fornecido ao computador e o resultado de
suas operações ficam guardados na memória;
5. Dispositivo de Saída (vídeo e impressora):
É o meio que se dispõe para apresentação dos resultados obtidos.
FUNCIONAMENTO DO NOSSO
COMPUTADOR
Todos os computadores, independentemente dos seus
tamanhos, são conceitualmente semelhantes ao
esquema da figura anterior.
Resumidamente, podemos afirmar que existem 4
operações básicas que qualquer computador pode
executar:
a) operações de entrada e saída: ler dados do
teclado e escrever dados na tela são exemplos destas
operações. Elas servem para introduzir dados na
memória do nosso computador e exibir dados que já
estejam lá armazenados;
b) operações aritméticas: são utilizadas na
realização de operações matemáticas (adição,
subtração, multiplicação e divisão);
FUNCIONAMENTO DO NOSSO
COMPUTADOR
c) operações lógicas e relacionais: têm
aplicabilidade em comparações, testes de condições
lógicas (2>6 ? X=Y ?);
d) movimentação de dados entre os vários
componentes: as operações aritméticas são
executadas na Unidade Lógica e Aritmética,
necessitando da transferência dos dados para essa
unidade e da volta do resultado final para ser
guardado na memória.
RESOLVENDO UM PROBLEMA
 Suponha que queiramos resolver o
seguinte problema: a partir de dois
números que serão informados, calcular a
adição dos mesmos.
 Se você fosse encarregado de efetuar essa
tarefa, seria bem provável que utilizasse
os passos a seguir:
a) saber quais são os números;
b) calcular a soma dos números;
c) responder à questão com o valor do
resultado.
RESOLVENDO UM PROBLEMA

 Vejamos como seria resolvido esse mesmo problema


em termos das operações básicas citadas
anteriormente:
a) operação de entrada de dados dos números ;
b1) movimento do valor dos números entre a memória
e a ULA;
b2) operação aritmética de somar os 2 números;
b3) movimentação do resultado da ULA para guardar
na memória;
c) operação de saída do resultado, que está guardado
na memória, para o dispositivo de saída desejado.
 Deve-se salientar que os passos b1 e b3,
normalmente, ficam embutidos na operação
matemática, não sendo explicitados.
RESOLVENDO UM PROBLEMA
 Então, escrever algoritmos, ou programar, consiste
em dividir qualquer problema em muitos pequenos
passos, usando uma ou mais das quatro operações
básicas citadas.
 Esses passos que compõem o algoritmo são
denominados de comandos.
 Os comandos de uma linguagem de programação
podem estar mais próximos da máquina
(linguagens de baixo nível) ou serem mais
facilmente entendidos pelo homem (linguagens de
alto nível).
RESOLVENDO UM PROBLEMA
 A seqüência de operações básicas, dada
anteriormente, para resolver o problema de
adicionar dois números, está em uma linguagem de
baixo nível para o nosso computador hipotético.
 Em uma linguagem de alto nível teríamos um
resultado assim:
Leia X,Y
SOMA  X + Y
Escreva SOMA
 Como seria a solução usando fluxograma?
ESTRUTURAS CHAVES DA
CONSTRUÇÃO DE ALGORITMOS
 Existem 3 estruturas básicas de controle nas
quais se baseiam os algoritmos:
 Sequenciação
 Decisão ou seleção
 Repetição ou iteração
SEQÜENCIAÇÃO
 Os comandos do algoritmo fazem parte de uma
seqüência, onde é relevante a ordem na qual se
encontram os mesmos, pois serão executados um de
cada vez, estritamente, de acordo com essa ordem.
 De uma forma genérica, poderíamos expressar uma
seqüência da seguinte maneira:
Comando-1
Comando-2
:
Comando-n
 Tem-se uma seqüenciação de n comandos na qual os
comandos serão executados na ordem em que aparecem,
isto é, o comando de ordem i+1 só será executado após a
execução do de ordem i (o 3 só será executado após o
2).
 Todo algoritmo é uma seqüência. A seqüenciação é
aplicada quando a solução do problema pode ser
decomposta em passos individuais.
DECISÃO OU SELEÇÃO OU CONDICIONAL
 Há a subordinação da execução de um ou mais comandos à
veracidade de uma condição.
Se <condição> então
<seq. de comandos-1>
senão <seq. de comandos-2>
 A decisão deve ser sempre usada quando há a necessidade de
testar alguma condição e em função da mesma tomar uma
atitude.
 Em nosso dia-a-dia, estamos sempre tomando decisões,
vejamos um exemplo:
Se tiver dinheiro suficiente, então vou almoçar em um bom
restaurante.
Caso contrário (senão), vou comer um sanduíche na
lanchonete da esquina.
REPETIÇÃO OU ITERAÇÃO
 Essa estrutura também é conhecida por “looping”
ou laço.
 A repetição permite que tarefas individuais sejam
repetidas um número determinado de vezes ou
tantas vezes quantas uma condição lógica permita.
 Exemplos:
a) vou atirar pedras na vidraça até quebrá-la;
b) baterei cinco pênaltis;
c) enquanto tiver saúde e dinheiro, vou
desfrutar a vida.

 A utilização combinada dessas 3 estruturas


descritas vai permitir expressar a solução para uma
gama muito grande de problemas.
 Todas as linguagens de programação oferecem
representantes dessas estruturas.
REFINAMENTOS SUCESSIVOS
 Um algoritmo é considerado completo se os seus
comandos forem do entendimento do seu destinatário.
 Num algoritmo, um comando que não for do
entendimento do destinatário terá que ser desdobrado
em novos comandos, que constituirão um refinamento
do comando inicial, e assim sucessivamente, até que os
comandos sejam entendidos pelo destinatário.
 Por exemplo, o algoritmo para calcular a média
aritmética de dois números pode ser escrito da seguinte
forma:
Algoritmo “CALCULA_MÉDIA”
Inicio
Receba os dois números
Calcule a média dos dois números ?
Exiba o resultado
Fimalgoritmo
REFINAMENTOS SUCESSIVOS
 Podemos desdobrar o comando “Calcule a
média dos dois números” em:
Soma os dois números
Divida o resultado por 2
 Após esse refinamento, o algoritmo pode
ser considerado completo, a menos que o
destinatário não saiba fazer as operações
de adição e divisão, ou não seja capaz de
entender diretamente algum comando.
REFINAMENTOS SUCESSIVOS
 Assim sendo, obtém-se:
Algoritmo “CALCULA_MÉDIA”
Inicio
Receba os dois números
Soma os dois números Refinamento
Divida o resultado por 2
Exiba o resultado
Fimalgoritmo
REFINAMENTOS SUCESSIVOS
 Reescrever um algoritmo completo, com os
refinamentos sucessivos inseridos nos
seus devidos lugares, permite ter uma
visão global de como o algoritmo deve ser
executado.
 À medida que o algoritmo passa a ser
maior e mais complexo, esta visão global
torna-se menos clara e, neste caso, um
algoritmo apresentado com os
refinamentos sucessivos separados oferece
uma melhor abordagem para quem
precisar entendê-lo.
MÉTODO PARA CONSTRUÇÃO DE
ALGORITMOS

 Ler atentamente o enunciado.


 É justamente o enunciado do exercício que fornece
o encaminhamento necessário à resolução do
problema, que se torna, portanto, dependente de
sua completa compreensão.
 Retirar do enunciado a relação das entradas de
dados.
 Retirar do enunciado a relação das saídas de
dados.
 Determinar o que deve ser feito para transformar
as entradas determinadas nas saídas específicas.
ALGORITMO X QUALIDADE

 Todo algoritmo deve ser feito de maneira lógica e


racional, visando principalmente a sua eficiência e
clareza.
 Ao construir algoritmos devemos:
1. Saber que estes serão lidos por outras pessoas, permitindo
sua fácil correção.
2. Escrever comentários na sua elaboração. Devem acrescentar
alguma coisa, não apenas frasear.
3. Sempre atualizar os comentários, em caso de manutenção.
Pior do que um programa sem comentários, é um programa
com comentários errados.
4. Use comentários, também, no cabeçalho do algoritmo,
incluindo, principalmente:
 descrição do que faz o algoritmo
 autor

 data de criação
ALGORITMO X QUALIDADE
5. Os comandos nos dizem o que está sendo feito, os
comentários dizem o porquê.
6. Utilizar espaços e/ou linhas em branco para melhorar a
legibilidade.
7. Uso de parênteses aumenta a legibilidade e previne
erros.
8. Escolha nomes representativos para variáveis, todavia
evite nomes muito longos. Ex:
 Prefira SalBruto ou SalarioBruto ao invés de SB ou
VAR1
 Prefira TotAlunosAprovDireta ao invés de
TotalAlunosAprovacaoDireta
9. Destaque as palavras-chave das estruturas de controle e
comandos com sublinhado.
Ex: se media >= 7 então ...
senão ...
fimse
ALGORITMO X QUALIDADE
10.Um comando por linha é suficiente.
11.Use identação (mostra a estrutura lógica do algoritmo) nos
comandos de acordo com o nível que estejam, ou seja, alinhe
comandos de mesmo nível e desloque comandos de nível
inferior. Ex.:
início
comando 1
se condicao1 entao
comando2
comando3
senao
comando4
comando5
fimse
comando6
fimalgoritmo
EXERCÍCIOS

1. Construa um algoritmo que mostre todos os passos que você segue


para escolher o tipo de roupa com que vai sair, após levantar,
levando em consideração apenas o tempo (bom, nublado, chuvoso)
e a temperatura (quente, moderado, frio).
2. Elabore um algoritmo que mova três discos de uma Torre de Hanói,
que consiste em três hastes (a - b - c), uma das quais serve de
suporte para três discos 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.
EXERCÍCIOS

3. Suponha que você possua um robô e queira fazê-lo trocar


uma lâmpada, sendo que o mesmo foi programado para
obedecer aos seguintes comandos:
 pegue <objeto>
 pressione <objeto>
 gire garras 180 no sentido horário
 gire garras 180 no sentido anti-horário
 mova <objeto> para <lugar>
 desloque-se para <lugar>
e ainda é capaz de:
 perceber quando algum comando não pode mais ser
executado
 sentir alguma fonte de calor
Que ordens você daria para que seu robô trocasse a lâmpada?

Você também pode gostar