











Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
PROPOSTA DE “FRAMEWORK” CONCEITUAL PARA O ENSINO DE ALGORITMOS EM CURSOS TECNOLÓGICOS
Tipologia: Esquemas
1 / 19
Esta página não é visível na pré-visualização
Não perca as partes importantes!












_________________________ 1 Bacharel em Matemática Aplicada pela Fundação Santo André-SP, Mestre em Ciências pela Universidade São Marcos-SP, Doutor em Ciências Tecnologia Nuclear Aplicações pelo IPEN-USP-SP, Docente do Centro Paula Souza de São Paulo. Av. Antonia Rosa Fioravante, 804. Vila Fausto Morelli. Fatec-Mauá. Mauá. CEP 09751-000. Fone: 011- 4543-3221. Fax: 011-4519-5899. www.fatecmaua.com.br. e-mail: [email protected] Fone: 011-99747-
Recebido em Janeiro de 2013. Aceito em Março de 2013.
Docentes de disciplinas de cursos de Tecnologias de Informação (T.I.) cujos objetivos são apresentar conceitos referentes a algoritmos e lógica de programação enfrentam com frequência dificuldades em suas atividades por não existir um framework conceitual para a abordagem dessas disciplinas, que tenha sido testado, seja relativamente simples de implementar, esteja ao alcance do entendimento dos discentes e que seja um roteiro prático para utilização pelos docentes. Este artigo propõe a criação e aplicação de um framework conceitual a ser seguido pelos docentes e discentes nas atividades presenciais dessas disciplinas, proporcionando-lhes melhores condições para desenvolverem suas atividades durante a abordagem desses assuntos. O framework se baseia na combinação de três fatores: 1) princípios das teorias cognitivas de Inteligências Múltiplas, de Howard Gardner, e Mindful Learning , de Ellen Langer; 2) utilização de conceitos heurísticos sobre como resolver problemas propostos por George Pólya; e 3) nas experiências em docência do autor deste artigo em combinar os primeiros dois fatores com técnicas de desenvolvimento de programas, tais como fluxogramas, testes de mesa, pseudocódigo e código-fonte em linguagem “C” em sala de aula e laboratórios.
PALAVRAS-CHAVE: Algoritmos. Lógica de Programação. Framework Conceitual. Metodologia de Ensino de Programação. Ensino Superior Tecnológico.
A noção de algoritmo está presente na história do pensamento humano e em quase tudo o que se faz cotidianamente. Um algoritmo é, segundo Barbosa (2001), uma descrição passo a passo de como um problema computacional deve ser solucionado. O bom aproveitamento das atividades de ensino e de aprendizagem referentes às disciplinas de cursos de T.I., em geral, denominadas Algoritmos, Lógica de Programação ou Linguagem de Programação I , constitui-se em um pré-requisito essencial para as disciplinas subsequentes que abordam linguagens de programação, e enfrentam algumas especificidades e dificuldades que necessitam ser analisadas e superadas para que se possa otimizar sua abordagem e preparar melhor discentes para a continuidade de seus estudos nesse ramo essencial das Ciências da Computação. Muitos processos cognitivos complexos estão envolvidos no desenvolvimento de algoritmos, tais como: comunicar, analisar, sintetizar, avaliar, deduzir, induzir e, aqui, para resumir, optou-se por destacar que o desenvolvimento de algoritmos envolve vários tipos de tarefas epistêmicas , que tendem a ocorrer de modo mais completo quando realizadas pelos discentes se esses trabalham colaborativamente e executando-as em pequenos grupos supervisionados pelos docentes. De acordo com Goodyear (2001), são sete as tarefas epistêmicas envolvidas em processos de aprendizagem colaborativa, agrupadas na “Taxonomia de Ohlsson”, resumidas no Quadro 1:
Quadro 1 – Taxonomia de Ohlsson Tarefa epistêmica Significado
Descrevendo
Desenvolvendo um discurso referenciando um objeto ou evento tal que uma pessoa que participe do discurso adquira uma concepção acurada do objeto ou evento. Explanando Desenvolvendo um discurso em relação a um evento tal que uma pessoa que participe do discurso entenda por que aquele evento aconteceu.
Prevendo
Desenvolvendo um discurso tal que uma pessoa que participe dele entenda que tal evento acontece ou acontecerá sob determinadas circunstâncias, ou seja, entenda as relações de causa e efeito envolvidas no evento.
Arguindo
Argumentando a favor (ou contra) uma posição ou questão em particular, portanto aumentando (ou diminuindo) no receptor a certeza de que a posição ou questão esteja certa. Criticando Desenvolvendo um discurso sobre algo (especialmente um produto cultural) tal
(avaliando) que uma pessoa que participe do discurso fique ciente dos aspectos positivos e negativos envolvidos no assunto. Explicando Explicar um conceito é desenvolver um discurso que participe do discurso adquira um claro entendimento de seu significado.^ sobre ele^ tal que uma pessoa
Definindo Definir um termo é propor um uso para ele. Fonte: Goodyear, 2001, adaptado pelo autor.
Partindo-se das tarefas epistêmicas citadas, e buscando construir o framework conceitual que se propõe, tem-se, dentre as especificidades e dificuldades a serem enfrentadas no ensino de algoritmos, que a primeira delas é o docente compreender e utilizar nas práticas do dia a dia os princípios propostos em duas das mais destacadas teorias cognitivas das últimas décadas: a teoria das Inteligências Múltiplas, de Howard Gardner, mundialmente conhecida, e a teoria Mindful Learning ( até agora sem tradução para o português), de Ellen Langer, também perspicaz e profunda, porém menos conhecida do que a primeira tanto no meio acadêmico quanto fora dele. A segunda das especificidades e dificuldades a ser superada pelo docente é fazer com que os discentes assimilem um “modo de pensar algorítmico”, imprescindível para que eles entendam problemas computacionais e depois desenvolvam algoritmos e programas de computador para solucioná-los. Um esquema conceitual que se considera adequado a ser usado para esse fim é o proposto no trabalho clássico “How to Solve Problems”, de Pólya (1957). A terceira e última das especificidades e dificuldades é capacitar os discentes na utilização de meios práticos e objetivos para realizar o projeto, a criação e a implementação de programas de computador necessários para testar as soluções que criaram, e que são compostos por sete ações: 1) especificar as variáveis envolvidas na solução do problema, 2) desenhar fluxograma, 3) desenvolver teste de mesa, 4) escrever pseudocódigo, 5) escrever o código-fonte na linguagem “C”, 6) compilar e executar o módulo resultante do programa fonte “C” criado, e 7) examinar os resultados obtidos. Essa sequência de ações práticas não tem a abrangência e nem pretende substituir os paradigmas ou métodos de desenvolvimento de software amplamente utilizados atualmente, mas pode encaixar-se neles, em especial nas fases denominadas “implementação” e “testes” dos métodos (ou modelos) denominados “Clássicos (ou cascata ou waterfall )” e “Interativo”. A junção de todas as especificidades mencionadas constitui-se no que se denomina aqui “framework conceitual”, a ser aplicado nas atividades de ensino e aprendizagem, na forma proposta.
INTRAPESSOAL
Reconhecer pontos fortes e pontos fracos, estabelecer metas, compreender- se.
Trabalhar sozinho, refletir interesses.
Trabalhando sozinho, refletindo, criando projetos.
Lugares secretos, tempo sozinho, projetos próprios, escolhas.
NATURALÍSTICA
Compreender a natureza, fazer distinções, identificar fauna e flora.
Estar envolvido com a natureza, tomar decisões.
Trabalhando com a natureza, explorando coisas vivas.
Ordem, padrões de iguais ou diferentes, conexões com a vida real. Fonte: Gardner, 1995, adaptado pelo autor.
Três dentre as inteligências apontadas por Gardner aparentam estar mais diretamente ligadas a características envolvidas na resolução de problemas algorítmicos: Verbal/Linguística, Lógico/Matemática e Visual/Espacial. E três outros tipos de inteligência também apresentam potencial de poder auxiliar na implementação e testes das soluções encontradas: Corpóreo- cinestésica, Interpessoal e Intrapessoal. (Sendo assim, em princípio, parece que somente os tipos de inteligências Musical e Naturalística não ajudariam diretamente a entender, projetar e resolver algoritmos). O docente das disciplinas Algoritmos e suas correlatas, mediante o reconhecimento das características desses seis tipos de inteligências, pode/deve utilizar os pontos fortes e preferências de cada grupo para planejar o modo de ministrar e maximizar o aproveitamento dessas disciplinas. Outra teoria cognitiva, essa de repercussão menor do que a teoria das Inteligências Múltiplas junto a profissionais de educação nas últimas décadas, mas igualmente profunda e perspicaz em sua percepção e seus conceitos, é a teoria Mindful Learning , de Ellen Langer. Nela propõe-se a existência de sete mitos penetrantes ( pervasive , no original) prejudiciais às atividades cognitivas, frequentemente presentes nas atividades de ensino e de aprendizagem de todos os níveis, e que precisam ser combatidos. O Quadro 3 relaciona os sete mitos penetrantes prejudiciais à cognição propostos por Langer:
Quadro 3 – Sete mitos penetrantes prejudiciais à cognição Mito Característica 1 Os assuntos básicos têm que ser aprendidos tão bem a ponto de tornarem para a pessoa. -se automáticos 2 Prestar atenção significa permanecer focado em uma coisa de cada vez. 3 É importante retardar as gratificações. 4 Memorizar é necessário em educação. 5 Esquecer é um problema. 6 Inteligência é conhecer “o que já existe”. 7 Só há respostas corretas ou erradas. Fonte: Langer, 1997, adaptado pelo autor.
A teoria também destaca que há formas desatentas de pensar ( mindlessness ), que prevalecem na maioria das pessoas e que são caracterizadas pela presença de três fatores observáveis nos indivíduos, apontados no Quadro4:
Quadro 4 – Fatores do pensamento desatento ( mindlessness ) Fator mindlessness Característica 1 Comprometimento com categorias pré comprometidos com categorias criadas no passado.-existentes. Ficam-se^ rigidamente
2 Comportamento automático. Compreende a tendência em repetir as mesmas ações na presença dos mesmos estímulos.
3 Agir a partir de uma perspectiva única. Compreende responder somente à causa apresentada, sem considerar outras variáveis que possam enriquecê-la. Fonte: Langer, 1989, adaptado pelo autor.
E a teoria também aponta que há formas atentas de pensar ( mindfulness ), cujo desenvolvimento é desejável na maioria das pessoas, e que são caracterizadas pela presença de três fatores observáveis nos indivíduos, indicados no Quadro 5:
Outro conceito frequentemente presente quando se trata de resolução de algoritmos é a denominada abordagem top-down , que consiste em se efetuar refinamentos sucessivos da solução obtida e de evidenciá-la de diferentes formas tão logo seja obtido o refinamento. Vários modos de raciocínios são importantes para a resolução de problemas computacionais, sendo dois dos principais a dedução (forma lógica que garante que uma conclusão é verdadeira quando as premissas forem verdadeiras) e a indução (processo de descoberta de leis gerais por meio da observação e da combinação de exemplos particulares), mas também é vital para o sucesso do elaborador de um algoritmo que ele conheça minimamente a arquitetura do computador aonde seu algoritmo/programa será processado. Pólya (1957) propôs um conjunto de ações lógicas a serem usadas na resolução de problemas computacionais, e as denominou de “Estratégias Heurísticas”. Heurística é uma palavra grega que encerra um conceito amplo, significa “descubro” ou “encontro”. Como substantivo significa “arte ou ciência do descobrimento”; já como adjetivo, como em “estratégias heurísticas” ou “regras heurísticas”, refere-se à aplicação prática de procedimentos visando descobrir soluções para os problemas sob estudo. Heurística é mais do que simplesmente a adoção do pensamento cartesiano de se dividir um problema complexo em várias partes menores; vai além do raciocínio do tipo “entrada- processamento-saída”, tentando-se obter cada parte de resolução mais simples. Até porque, quase sempre, além da dificuldade de realizar-se a priori essa segmentação, essa subdivisão, quando realizada, não ajuda o discente a efetivamente resolver os problemas envolvidos na etapa de “processamento”. Como é essencial haver uma visão metódica, devem-se utilizar as ações propostas por Pólya, mas apenas como o passo inicial de um framework conceitual a ser usado para atingir os objetivos envolvidos na resolução de algoritmos. E outras ações devem ser tomadas na sequência. As estratégias heurísticas propostas por ele, resumidas no Quadro 6, dividem-se em quatro grandes fases. Quadro 6 – As quatro fases propostas por Pólya Fase Objetivo 1 Entender o problema 2 Criar um plano de ataque 3 Executar o plano de ataque 4 Analisar os resultados Fonte: Pólya, 1957, adaptado pelo autor.
Ao mesmo tempo em que apontou esses passos para resolver problemas computacionais, ele alertou para o fato de que eles representam guias gerais (ou guidelines ) e não regras rígidas, e defendeu que é inerente à natureza de guidelines que eles podem não funcionar se forem seguidos literalmente. E, ele alerta, deve-se interpretá-los (e, por extensão, a qualquer conjunto de regras) por meio do que ele classifica como “olhos da experiência”. Dentre os problemas computacionais, a resolução de algoritmos ocupa um lugar de destaque, uma vez que ele envolve aspectos bastante claros e importantes da área de T.I. ou de Ciência da Computação, tais como: compreensão abstrata de problemas, raciocínio lógico, dedução, indução, análise, síntese, avaliação, capacidade de planejamento, capacidade de projeção e criação de soluções, sua implementação e testes quanto ao seu funcionamento. O Quadro 7 resume características essenciais das quatro fases propostas por Pólya para a resolução de problemas computacionais e que se propõe utilizar e transmitir aos discentes das disciplinas de Algoritmos e suas congêneres. (Na coluna “Ação dos Métodos e Meios Práticos” faz- se uma correlação entre o que foi proposto por Pólya e os passos indicados dentro da terceira etapa do “framework conceitual” esboçado aqui).
Quadro 7 – As quatro fases para resolver um problema Fase Título O que fazer nela (perguntas, respostas e ações) Ação dos^ Práticos“Métodos e Meios”
1 ENTENDENDO O PROBLEMA
O que é desconhecido? Quais são os dados? Qual é a condição? É possível satisfazer a condição? A condição é suficiente para se determinar o que é desconhecido? Ou é insuficiente? Ou é redundante? Ou é contraditória? Desenhe uma figura. Introduza uma notação adequada. Separe as várias partes da condição. Você pode escrevê-las?
2 CRIANDO UM PLANO
Você já resolveu problema parecido antes? Você conhece um problema semelhante a esse? Em havendo um problema semelhante já resolvido antes, você pode usá-lo agora? Você pode usar seu método? Pode fazer adaptações agora para usar um método anterior? Pode reformular o problema?
3 EXECUTANDO^ Execute o plano em busca de soluções. 6)^ COMPILAR E EXECUTAR
Figura 1 – As sete ações para resolver um problema propostas
Fonte: Elaborado pelo autor.
Cada ação proposta está detalhada a seguir:
b) Variáveis de saída: A maior altura encontrada; A média das alturas dos alunos; c) Variáveis auxiliares (ou de “controle”): I (controlador de repetições, já que essa solução precisa das estruturas de repetição existentes. Para ou For , nesse caso.) d) Variáveis de cálculo (ou de “meio”): após identificar a média das alturas como sendo um dos resultados solicitados, tem-se que obter o somatório das alturas encontradas – cujo valor será dividido pela quantidade de alunos para se obter a média procurada. O Quadro 8 resume as variáveis necessárias para a resolução do enunciado acima.
Quadro 8 – Especificação das variáveis envolvidas na solução. Tipo da variável Nome da variável Significado ENTRADA RM É o RM de cada aluno ENTRADA ALT É a ALTURA de cada aluno SAIDA MALT É a maior altura encontrada entre as alturas informadas SAIDA MED É a média das alturas informadas CALCULO I É o controlador de repetições (e o contador de alunos) CALCULO SALT É a soma das alturas informadas Fonte: elaborado pelo autor.
tabela na qual cada variável do fluxo ocupa uma (ou mais) colunas da tabela, cada variável é colocada na tabela na ordem exata em que aparece no fluxograma, e cada linha da tabela representa uma execução (da estrutura de repetição usada no fluxo que controla o “grande looping” do programa). O desenvolvedor então simula a entrada de dados, executando rigorosamente cada instrução do fluxo, e estabelecendo com o fluxograma um “diálogo” - no qual o fluxo “faz as perguntas e o desenvolvedor as responde” – e vai preenchendo a tabela de valores. (Os valores rejeitados pela consistência obviamente não aparecem na versão final do teste de mesa.) Para o fluxograma apontado, tem-se o teste de mesa conforme consta no Quadro 9:
Quadro 9 – Exemplo de teste de mesa. I RM ALT SALT=0 MALT MED 0 123 170 170 170 1 124 180 350 180 2 125 160 510 3 211 175 685 4 212 165 850 5 213 185 1035 185 6 321 165 1200 7 322 155 1355 8 0 185 169, Fonte: elaborado pelo autor.
ENQUANTO (RM<0) FAÇA { EXIBIR “RM NÃO PODE SER NEGATIVO.”; LER RM; } EXIBIR “INFORME ALTURA: “; LER ALT; ENQUANTO (ALT>210) {EXIBIR “ALT.NÃO PODE SER MAIOR QUE 210:”; LER ALT;} SALT = SALT + ALT; SE (I=0) MALT = ALT; SENÃO SE (ALT>MALT) MALT=ALT; } // fim do “para” SE (I>0) {MEDALT=(SALT)/I; EXIBIR “MEDIA DAS ALTURAS = “ MED “MAIOR ALT=”MALT;} SENÃO EXIBIR “NÃO HÁ DADOS.”; FIM.
maioria dos programadores, porque tem a característica de abordar métodos e meios objetivos a serem utilizados durante a resolução de um problema/algoritmo computacional. Além dos métodos e meios práticos usados durante a resolução dos problemas, propõem-se aqui adotar ações visando capacitar tanto docentes quanto discentes no conhecimento de duas teorias cognitivas que podem suportar todo o processo, bem como se aponta a necessidade de se manter atenção a aspectos heurísticos para se atingir tal objetivo. Há alternativas para a ação 6 dos “métodos e meios práticos” aqui proposta (compilar e executar o módulo do programa “C” criado). Uma delas é utilizar a pseudolinguagem de programação VisualG, que permite simular a elaboração e o teste de programas. Outra alternativa é o ASA – Ambiente de Simulação e Animação de Algoritmos, ferramenta que auxilia na criação de fluxogramas e na sua tradução para algumas linguagens de programação reais, mas acredita-se que é mais objetivo, e viável, desde o início, o uso de um ambiente real e profissional de programação, como é o Dev-C++.
REFERÊNCIAS
BARBOSA, L.M. Ensino de algoritmos em cursos de computação. São Paulo: Editora EDUC,
GARDNER, H. E. Frames of mind, the theory of Multiple Intelligences. New York: Basic Books, 1983.
GARDNER, H. E. Inteligências múltiplas : a teoria na prática. Trad. Maria A. V. Veronese. Porto Alegre: Editora Artes Médicas, 1995.
GOODYEAR, P. Psychological foundations for networked learning. In: Networked learning ., New York, USA: Springer books, 2001.
LANGER, E.J. Mindfulness. Massachusetts, USA: Perseus Books Reading, 1989.
_______. The power of mindful learning. Massachusetts, USA: Perseus Books Reading, 1997 PÓLYA, George. How to solve it? New York: Penguin Books, 1957.
SCHILDT, H_._ C completo e total. São Paulo: Makron books, 1996.
YNOGUTI, C. A. Uma metodologia para o ensino de algoritmos. GCETE – Global Congress on Engineering and Technology Education. São Paulo, Brasil. 2005.