Professional Documents
Culture Documents
O Que É Lógica de Programação
O Que É Lógica de Programação
A lógica da programação é, sem dúvida, a primeira coisa que deve ser estudada se você quiser se
tornar um bom programador, seja qual for a linguagem. Porque ela é tão importante? Imagine
que agora você é um soldado que recebe ordens e as coloca em prática. O seu capitão lhe diz:
“Soldado, sua missão é encontrar a arma principal do inimigo e sabotá-la, como também fazer o
reconhecimento do local. Assim que você se infiltrar, vai procurar colher o máximo possível de
informações. No entanto, antes das 14:00 deve sair do local. Se observar alguma movimentação
suspeita, saia imediatamente. E lembre-se, sua missão principal é encontrar a arma principal do
inimigo e sabotá-la.” Nessa missão, o soldado precisa sempre se lembrar das ordens do capitão, e
para que ela seja bem sucedida é necessário ele aplicar todas elas. Vamos analisar essa missão:
Quando vamos programar, devemos ser como o comandante. Primeiro, devemos saber qual o
objetivo principal e daí programar as suas condições para que esse objetivo seja atingido.
Existe uma associação direta da Lógica de Programação com o Raciocínio Matemático, onde o
importante é a interpretação de um problema e a utilização correta de uma fórmula. De fato, não
existe “fórmulas” em informática, o que existe é nosso modo de pensar em como resolver e
extrair o máximo de informações de um problema, de maneira eficaz e eficiente sobre um ângulo
de visão. Essa solução precisa ser exteriorizada e expressa numa linguagem conhecida. A lógica
da programação entra nesse ponto, para desenvolvermos soluções e algorítimos para apresentar
essa solução ao mundo. A primeira pessoa a pensar em usar lógica matemática para a
programação foi John McCarthy, ele propôs usar programas para manipular com sentenças
instrumentais comuns apropriadas à linguagem formal, ou seja, o programa básico formará
conclusões imediatas a partir de uma lista de premissas. Essas conclusões serão tanto sentenças
declarativas quanto imperativas. Quando uma sentença imperativa é deduzida, o programa toma
uma ação correspondente.
A primeira linguagem de alto nível do mundo foi a Plankalkül, criada pelo cientista alemão
Konrad Zuse, entre os anos 1942-1946 no desenvolvimento dos primeiros computadores. Ela é
considerada de alto nível porque em termos simples, ela é mais “humana” e está longe do código
de máquina, se aproximando mais da linguagem humana. Vamos entender melhor o que é uma
linguagem de alto nível e a diferença dela e a de máquina.
Uma pessoa que não entende nada de programação, mas sabe inglês, entenderia algumas
palavras da linguagem e poderia facilmente interpretar alguma coisa desse código em PASCAL.
“Program” é programa em inglês, “begin” é começar, “write” é escrever e end é fim. Mesmo sem
saber programar, a pessoas que sabe um pouco de inglês chegaria a mais ou menos a essa
conclusão: “É um programa e vai começar a escrever alguma coisa e depois terminar”. E é
justamente isso!
Quando nos falamos de linguagem mais humana é justamente pelo fato de a entendermos
melhor, de ser humanamente mais fácil de se compreender. Você facilmente entenderia, com um
pouco de estudo, esse código, por exemplo:
program HelloWorld;
begin
writeln(‘Hello World’);
end.
O que é Lógica de Programação
Uma sequência lógica é denominada algoritmo. Então podemos dizer em linguagem mais
coloquial, que um algoritmo é uma sequência de passos para atingir um determinado objectivo.
Como podemos ver a lógica de programação trata basicamente de construir algoritmos que serão
transformados em programas de computador.
Programas de computador, portanto são instruções lógicas que obtém dados do meio externo
(que pode ser um usuário ou um arquivo) e fazem o processamento desses dados gravando as
informações alguma mídia como o HD ou enviando-as para o usuário através de algum
dispositivo. Na realidade, tudo o que vemos em um computador em termos de sistema
operacional e aplicativos, são programas que foram desenvolvidos por programadores. O
programador necessita ter um pensamento lógico bastante desenvolvido, analisando sempre
causa e efeito, e acima de tudo ser paciente e persistente.
Quem quer começar uma carreira como programador deve primeiro aprender lógica de
programação. Uma base sólida em lógica garante ao iniciante conhecimentos suficientes para
aprender qualquer linguagem de programação, seja ela C, C++, Java, Object Pascal (Delphi),
PHP, VB, C#, etc.
Noções de lógica
Lógica de programação
Pode ser definida como o emprego de raciocínio lógico para expressar, por meio de
uma linguagem própria, instruções que compõe um programa a ser executado por um
computador.
Este procedimento visa resolver um determinado problema ou obter um produto final, isto
é, um programa. Antes de começar a programar, é necessário caracterizar clara e
completamente
o problema e o objetivo almejado, devendo-se ter em mente os seguintes passos [1]:
a) entender o problema proposto;
b) verificar todos os dados disponíveis para resolvê-lo;
c) se o problema for complexo, dividi-lo em partes menores;
d) ter bem definido seu objectivo. Qual resultado se deseja alcançar? Trace os passos
necessários pra chegar lá!
e) se não conseguir chegar ao seu objectivo, reflicta a esse respeito e reveja os passos aqui
mencionados.
Assim como o pensamento humano pode se
manifestar em diferentes línguas, a lógica de programação
pode ser expressa em uma das várias linguagens de
programação existentes. Estas linguagens compreendem
detalhes e peculiaridades próprias que pouco tem a ver
com a lógica de programação propriamente dita. Por este
motivo, para se atentar ao raciocínio sem se perder nos
detalhes, usa-se os algoritmos.
Formalismo
Implementação
Analise de Algoritmo
Classificação
Lógico - um algoritmo pode ser visto como uma dedução lógica controlada. O componente
lógico expressa os axiomas usados na computação e o componente de controle determina a
maneira como a dedução é aplicada aos axiomas. Tal conceito é base para a programação
lógica.
Serial ou paralelo - algoritmos são geralmente assumidos por serem executados instrução à
instrução individualmente, como uma lista de execução, o que constitui um algoritmo serial.
Tal conceito é base para a programação imperativa. Por outro lado existem algoritmos
executados paralelamente, que levam em conta arquitecturas de computadores com mais de
um processador para executar mais de uma instrução ao mesmo tempo. Tais algoritmos
dividem os problemas em sub-problemas e o delegam a quantos processadores estiverem
disponíveis, agrupando no final o resultado dos sub-problemas em um resultado final ao
algoritmo. Tal conceito é base para a programação paralela. De forma geral, algoritmos
iterativos são paralelizáveis; por outro lado existem algoritmos que não são paralelizáveis,
chamados então problemas inerentemente seriais.
Determinístico ou não-determinístico - algoritmos determinísticos resolvem o problema
com uma decisão exacta a cada passo enquanto algoritmos não-determinísticos resolvem
o problema ao deduzir os melhores passos através de estimativas sob forma de
heurísticas.
Exacto ou aproximado - enquanto alguns algoritmos encontram uma resposta exata,
algoritmos de aproximação procuram uma resposta próxima a verdadeira solução, seja
através de estratégia determinística ou aleatória. Possuem aplicações práticas sobretudo
para problemas muito complexos, do qual uma resposta correta é inviável devido à sua
complexidade computacional.
Programação linear
Cada campo da ciência possui seus próprios problemas e respectivos algoritmos, adequados para
resolvê-los. Exemplos clássicos são algoritmos de busca, de ordenação, de análise numérica, de
teoria de grafos, de manipulação de cadeias de texto, de geometria computacional, de análise
combinatória, de aprendizagem de máquina, de criptografia, de compressão de dados e de
interpretação de texto.
Ver artigo principal: Complexidade computacional. Alguns algoritmos são executados em tempo
linear, de acordo com a entrada, enquanto outros são executados em tempo exponencial ou até
mesmo nunca terminam de serem executados. Alguns problemas possuem múltiplos algoritmos
enquanto outros não possuem algoritmos para resolução.
Programação lógica
Elementos de um programa
Proposição (fato)
Zé Carioca é um papagaio.
Regra de inferência
Todo papagaio é uma ave.
Consulta
Zé Carioca é uma ave?
Solução/resposta/resultado
Sim.
Elementos de um programa: exemplo
Proposições (fatos)
João é pai de José.
João é pai de Maria.
Consulta
João é pai de quem?
Solução/resposta/resultado
José
Maria
Proposição (fato)
O fatorial de 0 é 1.
Regra
O fatorial de um número N (N > 0) é igual a N*fatorial(N-1).
Consultas/Respostas:
O fatorial de 2 é 200?
Resposta: Não
Consulta: Quanto é o fatorial de 3?
Resposta: 6
Lógica matemática
Álgebra de Boole
Descrição de proposições e verificação quanto à validade das mesmas
Cálculo de predicados
Lógica simbólica
Proposições envolvem símbolos e operadores lógicos
Cláusulas de Horn: proposições com forma restrita, 2 partes.
Origens da programação lógica
Vantagens e Desvantagens
Vantagens
Até aqui, nada parece justificar o investimento de ter duas pessoas realizando a mesma tarefa,
afinal, desenvolvimento de software não envolve tantos riscos quanto aviação.
Compartilhamento do conhecimento
Como todo o código produzido é visto por, pelo menos, duas pessoas é menor o risco de existir a
figura do “responsável pelo código do produto X”. O conhecimento pode ser ainda mais
compartilhado, principalmente se os pares forem revezados com frequência.
Isso é, obviamente, bom para o projeto. Mas também é muito bom para os desenvolvedores.
Afinal de contas, é comum desenvolvedores que não podem tirar férias pois caso contrário o
projeto onde eles trabalham não pode ser mantido.
Ser o responsável único por determinado projeto, ou parte dele, quase sempre é um fardo pesado
demais que faz com que o desenvolvedor seja levado ao esgotamento.
Desvantagens
Eficiência
Baixa expressividade para certas aplicações.
Conclusão
Neste trabalho abordamos acerca de Lógicas de Programação e dentro do tema fora destacados
alguns subtemas de forma uma forma resumida . E concluímos que apesar do tema e dos
subtemas serem novos, tentamos apresentar e aprofundar mais, aprofundando tivemos alguns
conhecimentos acerca do tema cima referido ou citado mas com isso agente não parou de ter
mais monte de conhecimentos consoante o tema, uma vez que o tema foi gostoso.
Não cumprimos todos os objetivos que nos tínhamos proposto, e cabe ao docente dizer algo a
nós a cerca do trabalho. Este trabalho foi muito importante para o nosso conhecimento,
compreensão e aprofundamento de mais conhecimento de Programação usando a Lógica,uma
vez que deu-nos alguns conhecimentos que não tínhamos acerca de Programação Lógicas e
espera-se que haja ais desenvolvimento do docente acerca do tema para a melhor compreensão.
Referencias Bibliográficas
https://pt.wikibooks.org/