Veja neste artigo as principais informações sobre a Lógica de Programação, seus conceitos, usos e aplicações. E tudo isso é muito importante para o aprendizado de algoritmo, uma sequência de instruções que visa resolver problemas práticos do dia a dia ou de grandes corporações, auxiliando em resultados de pesquisas e muitos outros tipos de soluções lógicas. Se formos pensar, veremos que tudo o que fazemos é um algoritmo, é um procedimento que recebe uma entrada e envia uma saída. Não só no computador, mas na vida. Podem existir vários algoritmos diferentes para resolver o mesmo problema. Em resumo, o algoritmo é como uma receita de bolo, ou seja, um conjunto de instruções para a realização de uma tarefa específica.

Lógica de Programação

O objetivo deste artigo é mostrar como a lógica de programação facilita o raciocínio na construção e entendimento do algoritmo, mostrando que ele está muito mais presente em nosso cotidiano do que imaginamos. Na computação o algoritmo é essencial.

À princípio, um algoritmo nada mais é do que uma receita que mostra passo a passo os procedimentos necessários para resolução de uma tarefa. Ele não responde a pergunta: "o que fazer?", mas sim "como fazer". Em termos mais técnicos, um algoritmo é uma sequencia lógica, finita e definida de instruções que devem ser seguidas para resolver um problema ou executar uma tarefa. Embora não percebemos, utilizamos algoritmo de forma intuitiva e auto diariamente quando executamos tarefas comuns, passando totalmente despercebido, porém estando presente o tempo todo, como é o caso de trocar uma lâmpada.

Mostraremos logo mais detalhes sobre o algoritmo e como ele é feito. A lógica de programação é fundamental na criação de um algoritmo, pois tem, por objeto de estudo, as leis gerais do pensamento, e as formas de aplicar essas leis corretamente na investigação da verdade.

Sua origem vem de Aristóteles (filósofo grego - 342 a.C) que sistematizou os conhecimentos existentes, elevando-os à categoria de ciência. Em sua obra chamada Organum ("ferramenta para o correto pensar"), estabeleceu princípios tão gerais e tão sólidos que até hoje são considerados válidos. Aristóteles se preocupava com as formas de raciocínio que, a partir de conhecimentos considerados verdadeiros, permitiam obter novos conhecimentos. A partir dos conhecimentos tidos como verdadeiros, caberia à Lógica de Programação a formulação de leis gerais de encadeamentos lógicos que levariam à descoberta de novas verdades. Essa forma de encadeamento é chamada, em Lógica de Programação, de Argumento.

A base da estruturação de um algoritmo e/ou programação é o Argumento usado, ou seja, a "busca da verdade" e seus fundamentos lógicos.

Um argumento é uma sequência de proposições que nada mais é que as sentenças afirmativas que podem ser verdadeiras ou falsas, na qual uma delas é a conclusão e as demais são premissas. As premissas justificam a conclusão.

O objetivo de um argumento é justificar uma afirmação que se faz, ou dar as razões para certa conclusão obtida. Pode-se dizer que é uma reconstrução explícita do raciocino efetuado

É necessário expor todas as razões que levaram a conclusão lógica como forma de convencimento, ou seja, mostrar o fundamento do argumento.

Quando se fala em Validade de um Argumento, as premissas são consideradas provas evidentes da verdade da conclusão, caso contrário não é válido. Considera-se válido quando, podemos dizer que a conclusão é uma consequência lógica das premissas, ou ainda que a conclusão seja uma inferência decorrente das premissas.

Vale ressaltar que há uma grande diferença em argumentos validos e verdadeiros. Se numa frase as premissas estão bem específicas e de forma que as frases tenham alguma conclusão, não necessariamente o resultado é verdadeiro.

Como exemplo de um Argumento Válido e a conclusão verdadeira, pode-se usar: toda baleia é um mamífero. Todo mamífero tem pulmões, logo toda baleia é um mamífero.

Mas, se utilizado um exemplo como: Toda aranha tem seis pernas. Todo ser de seis pernas tem asas. Logo, toda aranha tem asas. Percebe-se que a lógica de programação foi utilizada, o argumento tem validade, mas não é um argumento verdadeiro, ou seja, a conclusão é falsa.

A Lógica Informal formula os argumentos em linguagem natural, mas enfrenta problemas de ambigüidade e de construções confusas.

A Lógica Simbólica ou Lógica Matemática utiliza símbolos de origem matemática para formular os argumentos. "Trabalho iniciado pelo matemático inglês George Boole (1815 – 1864) – Álgebra Booleana; e consolidado pelo filósofo e matemático alemão Goottlob Frege (1848 – 1895) – Regras de Demonstração Matemática."

Uma vez que a Lógica Simbólica tem sua própria linguagem técnica, é um instrumento poderoso para a análise e a dedução dos argumentos, especialmente com o uso do computador (Prova Automática de Teoremas).

Tradicionalmente a Lógica tem sido estudada para orientações filosóficas e matemáticas. Na computação, ela é utilizada para representar problemas e para obter suas soluções.

A lógica de programação e a construção de algoritmos são conhecimentos fundamentais para programar. Construído o algoritmo, você pode, então, codificar seu programa de computação em qualquer linguagem.

Um pouco de história sobre Lógica de Programação

Existem muitos trabalhos desenvolvidos que podem ser considerados como ferramentas de apoio ao ensino, as quais podem ser consideradas como trabalhos correlatos a esse.

Um desses trabalhos é Tagliari (1996), onde é desenvolvido o protótipo de um software para o auxílio ao aprendizado de algoritmos. Esta é uma ferramenta que se propõe a permitir a visualização e o funcionamento de algoritmos pré-definidos de maneira mais palpável do que o teste de mesa normalmente utilizado pelos professores.

Outros dois outros trabalhos de Conclusão de Curso foram desenvolvidos. O primeiro deles é o do acadêmico André Iraldo Gluber que consiste na criação de um sistema especialista, baseado no trabalho de Mattos (1999) a ser utilizado no ensino de Lógica de Programação. Já o acadêmico Gilson Klotz está desenvolvendo um Sistema Especialista que auxilie os alunos que apresentam dificuldades de redação.

Pode-se citar ainda o trabalho de Heffernan III (2001). Neste trabalho o autor desenvolve um tutor inteligente de álgebra cujo objetivo é facilitar o aprendizado desta matéria. A questão principal trabalha pelo autor é fazer com que o aluno, ao ler um problema de álgebra, consiga transformar as sentenças do problema em expressões algébricas.

Em Schank (1999) são encontradas várias ferramentas (Creanimate, Dustin, Yello, entre outras) de apoio à verificação da lógica nos programas de computação. Essas ferramentas são voltadas não somente para estudantes e universitários, mas também para crianças nos primeiros anos de escola. A visão contida nestes trabalhos é interessante, dentro do contexto do presente trabalho, uma vez que o homem que coordena o desenvolvimento dessas ferramentas, Roger C. Schank, é autor que desenvolveu as teorias que deram origem a técnica de Raciocínio Baseado em casos.

Todas as pessoas citadas nessa referência estão objetivadas a desenvolver maneiras de facilitar o dia a dia na vida das pessoas. Pois para resolver um problema no computador é necessário que seja primeiramente encontrada uma maneira de descrever este problema de uma forma clara e precisa. É preciso que encontremos uma seqüência de passos que permitam que o problema possa ser resolvido de maneira automática e repetitiva. Além disto, é preciso definir como os dados que serão processados serão armazenados no computador. Portanto, a solução de um problema por computador é baseada em dois pontos: a seqüência de passos e a forma como os dados serão armazenados no computador. Esta seqüência de passos é chamada de algoritmo. Um exemplo simples e prosaico, de como um problema pode ser resolvido caso forneçamos uma seqüência de passos que mostrem a solução, é uma receita para preparar um bolo.

Um maior detalhamento sobre como a informática pode ser aplicada à educação, uma discussão sobre os erros e acertos decorrentes do uso de informática pode-se encontram na leitura de Bianchi (2000), Komosinski (2000), Nascimento (2001) e Schank (2002).

Diante do que foi exposto, cabe salientar que a informática está cada dia mais presente em nosso cotidiano, principalmente das crianças. Alguns softwares são extremamente lentos e adormecem as mentes do aluno. Porém muita coisa vem sendo desenvolvida para que o raciocínio lógico seja fortalecido e com isso os algoritmos sejam conseqüência para novos desenvolvedores.

A noção de algoritmo é central para toda a computação. A criação de algoritmos para resolver os problemas é uma das maiores dificuldades dos iniciantes em programação em computadores. Isto porque não existe um conjunto de regras, ou seja, um algoritmo, que nos permita criar algoritmos. Caso isto fosse possível a função de criador de algoritmos desapareceria. Claro que existem linhas mestras e estruturas básicas, a partir das quais podemos criar algoritmos, mas a solução completa depende em grande parte do criador do algoritmo. Geralmente existem diversos algoritmos para resolver o mesmo problema, cada um segundo o ponto de vista do seu criador.

No seu livro Fundamental Algorithms vol. 1 Donald Knuth apresenta uma versão para a origem desta palavra. Ela seria derivada do nome de um famoso matemático persa chamado Abu Ja´far Maomé ibn Mûsâ al-Khowârism (825) que traduzido literalmente quer dizer Pai de Ja'far, Maomé, filho de Moisés, de Khowârizm. Khowârizm é hoje a cidade de Khiva, na ex União Soviética. Este autor escreveu um livro chamado Kitab al jabr w'al-muqabala (Regras de Restauração e Redução). O título do livro deu origem também a palavra Álgebra.

O significado da palavra é muito similar ao de uma receita, procedimento, técnica, rotina. Um algoritmo é um conjunto finito de regras que fornece uma seqüência de operações para resolver um problema específico. Segundo o dicionário do prof. Aurélio Buarque de Holanda um algoritmo é um: "Processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, regras formais para a obtenção de resultado ou de solução de problema."

Com base em tudo temos a lógica que pode ser expressa como a arte de pensar de forma a atingir a solução dos problemas. A lógica tem sido definida como a ciência do raciocínio, que vem a ser uma modalidade especial do ato de pensar; a forma na qual se obtêm conclusões a partir de evidências. É a arte de colocar ordem no pensamento (FOR93,CER79).

Assim a lógica é entendida como sendo o estudo das leis do raciocínio e do modo de aplicá-las corretamente na demonstração da verdade (VEN97). A utilização da lógica na vida do indivíduo é constante, visto que é por meio dela que se obtém a ordenação do pensamento humano (FOR93).

Etapas da Lógica de Programação

Nossa metodologia é constituída por 5 etapas: a primeira compreende o que é um algoritmo, mostrando que é uma seqüência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema. Além de mostrar exemplos de algoritmos instruções de montagem, receitas, manuais de uso, etc.

A segunda etapa mostrará exemplos de constantes e variáveis e aprofundando mais sobre o assunto (sendo dado que não sofre nenhuma variação durante todo o algoritmo).

A terceira etapa falará sobre os operadores aritméticos que são empregados com muita freqüência em programação. É com o seu uso (muitas vezes da combinação de vários deles) é que são feitas as tarefas mais comuns de processamento de dados.

A quarta etapa será exemplificada através de comandos de estruturas básicas, demonstrando que todo algoritmo como um todo é um bloco de instruções, então deve ser delimitado pelos comandos início e fim.

A pesquisa utilizada através dos livros relacionados na bibliografia, como também as pesquisas feitas através da internet nos levaram a identificar o tema principal do trabalho, como também analisar todos os algoritmos básicos utilizados nos programas de computação utilizados em nosso dia a dia.

Estudo de caso

Dificuldades no ensino-apredizagem de algoritmos e lógica de programação

A tarefa de desenvolvimento de algoritmos está intimamente relacionada com as habilidades de resolver problemas e descrever processos de resolução de problemas. Essas habilidades colocam em funcionamento atividades cognitivas conceituais, de raciocínio, compreensão e representação. A competência para resolver problemas vai muito além da capacidade de buscar soluções em um repertório de soluções pré-definido. Por isso, podemos observar que muitos alunos são capazes de reproduzir algoritmos prontos, mas são incapazes de efetuar modificações para adequá-los a pequenas alterações nas condições do problema e, também, não conseguem minimamente começar o desenvolvimento de um algoritmo para resolver problemas considerados fáceis do ponto de vista de estruturas lógicas envolvidas. Essas observações são indícios de dificuldades com a resolução de problemas em si, com o entendimento do problema e o delineamento dos passos para resolvê-lo.

Dificuldades e desafios de natureza Didática

Existem dificuldades que não são particulares do aluno ou do professor, mas são inerentes à disciplina de Algoritmos em si ou ao ensino geral. Entre elas são:

  • O grande número de alunos
  • Dificuldade do professor em compreender a lógica do aluno: uma vez desenvolvido o raciocínio lógico, torna-se difícil pensar as soluções de outra forma. Como consequência o professor tem dificuldade em compreender a lógica individual de cada aluno que os leva a construir soluções equivocadas de algoritmos. Isso acaba tomando mais tempo do professor em correções e requer mais cautela na elaboração de provas e projetos
  • Turmas heterogêneas: sempre há diferença de experiência e ritmo de aprendizagem entre os alunos de uma turma. Tornar a aula interessante para ambos os grupos é sempre um desafio. Além disso, mesmo os alunos aparentemente com o mesmo nível têm estilos distintos de raciocínio que são tão individuais como uma assinatura
  • Ambiente de realização das provas: a realização das provas é normalmente onde o aluno percebe a diferença entre observar e fazer. Isto é determinante na disciplina onde muitos alunos têm a sensação de estar entendendo tudo, mas não percebem sua incapacidade de iniciar um algoritmo sozinho.
  • Pouca procura dos monitores ou tutores da disciplina: os alunos com dificuldades de aprendizagem procuram muito pouco a ajuda dos monitores ou tutores da disciplina.
  • Ausência de bons materiais: existem muitos livros de algoritmos, mas geralmente estes apresentam o conteúdo com o conteúdo com nível muito alto ou de forma sucinta, tornando difícil para o aluno iniciante aprender.
  • Alunos desorientados na escolha do curso: muitos alunos não têm a visão correta sobre o perfil do curso e acabam descobrindo isso durante a disciplina.
  • Problemas com os recursos computacionais dos laboratórios: Tem muitos computadores sem funcionar ou desatualizados. Isso é um grande problema para os que necessitam ter uma abordagem prática.

Dificuldades e desafios enfrentados pelo professor

Raciocínios diferenciados: por pensarem diferente, cada aluno pode ter a sua própria solução. Mesmo que não seja a melhor, o docente deve ter muito cuidado ao dizer que ela não funciona. Tem que se assegurar dessa informação.

Rastreamento de programas: devido os raciocínios diferenciados, na grande maioria das vezes não vai existir um gabarito de correção que possa ser seguido. Todo algoritmo deverá ser, cuidadosamente testado, rastreado, para verificar sua corretude. Apresentar diferenciadas técnicas para solução dos problemas.

Entre alguns autores não há consenso de qual melhor formalismo para ser utilizado na apresentação de algoritmos, como também o nível de detalhamento que esse formalismo deve apresentar.

Diante disso, foi apresentado que o Profissional precisa desenvolver habilidades de raciocínio lógico-matemático, capacidade de abstração e de construção de soluções de problemas, além de outras para exercer mais efetivamente suas atribuições. O algoritmo assume um papel fundamental uma vez que representa uma disciplina base na qual muitas outras dependem, dentre elas, as de linguagem de programação.

Conclusão

Analisando e comparando os exemplos e suas devidas explicações á montagem de um algoritmo, conclui-se que, por mais simples que seja é extremamente importante a atenção e um bom conhecimento no assunto. É inútil criar um algoritmo/programação com estruturação perfeita, mas que não traga um resultado real.

E o conhecimento inicial sobre lógica é que dá todo embasamento para que se possam criar algoritmos que mostre os resultados reais de determinadas situações, sendo assim o algoritmo ficaria muito mais complexo sem a lógica matemática.

Com o advento tecnológico em que o tratamento das informações ocorre em tempo real e com múltiplos usuários, a aplicação de linguagens de programação têm se tornado cada vez mais importante. Portanto, é fundamental que os futuros engenheiros tenham esse conhecimento para que possam explorar de maneira mais efetiva todos os recursos disponíveis com as novas tecnologias.

Em virtude disso as disciplinas de Algoritmos e Programação desempenham um papel estratégico na formação dos profissionais, configurando-se como uma ferramenta essencial de trabalho.

Algoritmo é a base da ciência da computação e da programação. Quando falamos em programar, falamos basicamente em construir algoritmos. Todo programa de computador é montado por algoritmos que resolvem problemas matemáticos lógicos com objetivos específicos. Mesmo pessoas que usam uma linguagem de programação para fazer seus programas de computadores, estão, na realidade, elaborando algoritmos computacionais em suas mentes.

Referências

  • Apostila de Introdução à Lógica Matemática; Prof. Antônio de Almeida Pinho; Rio de Janeiro, 1999; Registro MEC 19124.
  • Copy, Irving M., Introdução à Lógica, Ed. Mestre Jou , São Paulo, SP, 1974.
  • Mortari, Cezar A.; Introdução à Lógica; Imprensa OFICIAL; Ed. UNESP
  • Monografias - Brasil Escola
  • Lógica de Programação – A Construção de Algoritmos e Estruturas de Dados São Paulo: Forbellone, André Luiz Villar - MAKRON, 1993

Links Úteis


Saiba mais sobre Lógica de Programação ;)

  • Programação: O que é Algoritmo? - Nesse DevCast você vai aprender o que é algoritmo de uma forma leve e divertida. E ainda veremos como criar um primeiro algoritmo usando pseudocódigo.
  • Programação: O que é uma variável? - Neste DevCast conversamos sobre o que é uma variável e qual o seu papel, permitindo assim que você crie o seu primeiro programa: um aplicativo que recebe um nome e imprime na tela uma mensagem de boas vindas.
  • Lógica de Programação - Neste curso veremos uma introdução a algoritmos, utilizando como linguagem de apoio o Portugol.