• Nenhum resultado encontrado

Ferramenta multimédia de apoio à programação Algoritmia e programação Pascal

N/A
N/A
Protected

Academic year: 2021

Share "Ferramenta multimédia de apoio à programação Algoritmia e programação Pascal"

Copied!
217
0
0

Texto

(1)

Escola de Ciências e Tecnologia

Departamento de Engenharias

Ferramenta Multimédia de Apoio à Programação

Algoritmia e Programação Pascal

Dissertação de Mestrado em Tecnologias de Informação e Comunicação apresentada por

Maria Júlia Martins Borges

Sob orientação do

Professor Doutor José Benjamim Ribeiro da Fonseca

(2)
(3)

Escola de Ciências e Tecnologia

Departamento de Engenharias

Ferramenta Multimédia de Apoio à Programação

Algoritmia e Programação Pascal

Dissertação de Mestrado em Tecnologias de Informação e Comunicação apresentada por

Maria Júlia Martins Borges Sob orientação do

Professor Doutor José Benjamim Ribeiro da Fonseca Composição do Júri:

Presidente: Doutor Ramiro Manuel Ramos Moreira Gonçalves Vogal: Doutora Maria Micaela Gonçalves Pinto Dinis Esteves Vogal: Doutor José Benjamim Ribeiro da Fonseca

(4)
(5)

Dissertação apresentada por Maria Júlia Martins Borges à Universidade de Trás-os-Montes e Alto Douro para cumprimento dos requisitos necessários à obtenção do grau de Mestre em Tecnologias de Informação e Comunicação, sob orientação do Professor Doutor José Benjamim Ribeiro da Fonseca, Professor Auxiliar com Agregação do Departamento de Engenharias, da Escola de Ciências e Tecnologia da Universidade de Trás-os-Montes e Alto Douro.

(6)
(7)

i

Esta dissertação resultou do trabalho e dedicação da autora e teve a colaboração e apoio de muitas pessoas que de uma forma direta ou indireta, contribuíram para a sua construção. Consequentemente, não posso neste momento, deixar de endereçar a todos, os meus agradecimentos pela ajuda prestada e pelo incentivo e motivação.

Ao Dr. Benjamim Fonseca por todo o apoio e disponibilidade dispensados ao longo deste trabalho, pois sem ele, esta aventura não seria certamente possível.

Aos meus colegas, que com a sua paciência me ajudaram na concretização desta dissertação. Aos alunos do 12º ano de escolaridade, do Agrupamento de Escola Morgado de Mateus, pela sua dedicação ao projeto.

Aos amigos e familiares pela compreensão e pelo incentivo dado ao longo deste trabalho. Finalmente, os meus agradecimentos a todos aqueles que das mais variadas formas ofereceram contributos para que o desenvolvimento deste trabalho fosse possível.

(8)
(9)

iii

Esta dissertação apresenta o trabalho desenvolvido pela autora, cujo objetivo principal consistiu numa primeira fase, na análise ao modo como o ensino e a aprendizagem da lógica de programação pode ser feita a alunos que frequentem disciplinas ligadas à programação, utilizando para isso, ferramentas multimédia. Numa segunda fase, foi implementada uma ferramenta multimédia de apoio à programação, que foi testada e avaliada posteriormente em sala de aula.

Para a concretização da primeira fase, foi feita uma revisão à literatura, discutindo-se questões sobre as etapas a ter em conta na elaboração de um problema, passando pela elaboração de algoritmos e técnicas utilizadas para a sua representação, bem como a problemática da aprendizagem da programação, dificuldades detetadas nos alunos e soluções implementadas, com o objetivo de minorar essas dificuldades.

A segunda fase, desenvolvimento do projeto “Ferramenta Multimédia de Apoio à Programação”, surgiu pela necessidade de avaliar a pertinência da utilização de uma ferramenta interativa em contexto de sala de aula e fora dela, com intencionalidade educativa e usando apenas o computador, servindo como estratégia no ensino e aprendizagem da lógica de programação. Este projeto foi desenvolvido para facilitar o estabelecimento de relações entre os conhecimentos que os alunos vão desenvolvendo ao longo das aulas, com novos conhecimentos que poderão adquirir usando a ferramenta.

A metodologia utilizada inclui a utilização da ferramenta em contexto de sala de aula, para lecionar conteúdos ligados à algoritmia e à programação de computadores, sendo posteriormente complementada com a aplicação de um questionário para verificação dos resultados obtidos a partir da aplicação desta estratégia de ensino. Após a análise dos questionários preenchidos pelos alunos, constatou-se a eficiência da estratégia adotada. Foi identificada pelos alunos, que a utilização da Ferramenta Multimédia de Apoio à Programação aplicada ao estudo da linguagem algorítmica/programação foi um agente facilitador no processo de ensino e aprendizagem.

Palavras-chave: algoritmia; aprendizagem da programação; ferramentas multimédia; ferramenta multimédia de apoio à programação.

(10)
(11)

v

This thesis presents the work of the author , whose main objective was a first step in analyzing the way the teaching and learning of logic programming can be made to students attending courses related to programming , using this, multimedia tools. In a second stage, a multimedia tool was implemented to support the programming, which was subsequently tested and evaluated in the classroom.

In implementing the first phase, a review of literature was undertaken, discussing issues about the steps to take into account when preparing a problem, through the development of algorithms and techniques used for their representation as well as the problem of learning programming, difficulties detected in students and solutions implemented in order to alleviate these difficulties.

The second phase development of the project " Multimedia Programming Support Tool " , came the need to assess the relevance of using an interactive tool in the context of the classroom and beyond, with educational intentions and using only the computer serving as strategy in teaching and learning of logic programming . This project was developed to facilitate the establishment of relationships between the knowledge that students are developing during the lessons, with new knowledge that may acquire using the tool.

The methodology includes the use of the tool in the context of the classroom, to teach content related to algorithms and computer programming, and later complemented with the application of a questionnaire to check the results obtained from the application of this teaching strategy. After the analysis of questionnaires completed by students, we found the efficiency of the strategy adopted. Was identified by the students, that the use of Multimedia Support Tool applied to the study of algorithmic / programming language programming was a facilitator in the teaching and learning process

Keywords: algorithms; learning programming; multimedia tools; multimedia tool support for programming.

(12)
(13)

vii

Agradecimentos ... i

Resumo ... iii

Abstract ... v

Índice Geral ... vii

Índice de Figuras ... xi

Índice de Gráficos ... xvii

Índice de Tabelas ... xxi

Acrónimos e Abreviaturas ... xxiii

CAPÍTULO I – Introdução ... 1

1.1. Fundamentação da escolha do tema ... 1

1.2. Objetivos e contributos fundamentais ... 2

1.3. Estrutura da dissertação ... 4

CAPÍTULO II – Utilização de Ferramentas Multimédia no Estudo da Programação de Computadores ... 7

2.1. Programação de computadores ... 7

2.1.1. O Ensino de algoritmos ... 10

2.1.1.1. O uso de fluxogramas ... 13

2.1.1.2. O uso do pseudocódigo ... 16

2.2. O ensino das linguagens de programação... 18

2.3. As competências básicas de programação ... 18

2.4. Causas e dificuldades dos alunos no estudo da programação de computadores ... 19

2.5. Propostas para a solução das dificuldades detetadas no estudo da programação de computadores ... 26

2.6. Ferramentas de apoio à aprendizagem da programação de computadores ... 27

2.6.1. Ferramentas de animação ... 29

2.6.1.1. Ferramentas de animação de algoritmos ... 29

2.6.1.2. Ferramentas de animação de programas ... 32

2.6.2. Mundos programáveis ... 32

(14)

viii

2.6.4.2. ASA (animação e simulação de algoritmos) ... 35

2.6.4.3. CIFLUXPROG (construtor e interpretador de algoritmos para programação)36 2.6.4.4. BALSA (sistema interativo de animação de algoritmos) ... 39

2.6.4.5. TANGO (Transition-based ANimation GeneratiOn) ... 39

2.6.4.6. ASTRAL (Animation of Data Structures and Algorithms) ... 39

2.6.4.7. TBC-AED/WEB ... 40

2.6.4.8. AWTM (aplicação web para realizar teste de mesa em algoritmos) ... 41

2.6.4.9. ATMUF (ambiente para teste de mesa utilizando fluxogramas) ... 42

2.6.4.10. O VisuAlg ... 44

2.6.4.11. PROGUIDE ... 46

2.6.4.12. SICAS/SICAS-COL ... 48

2.6.4.13. A4 (ambiente de aprendizagem adaptado para algoritmos) ... 53

2.6.4.14. Jeliot ... 56

2.6.4.15. JavaTool ... 56

2.6.4.16. BlueJ ... 58

2.6.4.17. O Ambiente Visual 3D Alice ... 58

2.7. Mundos virtuais ... 60

2.7.1. SL (Second Life) e a programação ... 61

2.8. Jogos educacionais como ferramentas para o ensino da lógica da programação ... 62

2.9. Conclusões ... 64

CAPÍTULO III – Conceção e Desenvolvimento da Ferramenta Multimédia de Apoio à Programação ... 67

3.1. Metodologia presente na conceção e avaliação da ferramenta multimédia de apoio à programação ... 67

3.1.1. Especificação do tipo de estudo ... 68

3.2. Fundamentos da ferramenta multimédia de apoio à programação ... 69

3.3. Fases do processo de conceção ... 71

3.3.1. Definição do público-alvo... 72

3.3.2. Definição e planeamento da ferramenta multimédia ... 73

3.3.2.1. Competências a desenvolver nos alunos ... 73

(15)

ix

3.3.3. Análise de requisitos ... 76

3.3.4. Arquitetura da informação ... 77

3.3.5. Desenvolvimento da interface gráfica ... 78

3.3.6. Conceção do projeto ... 80

3.3.6.1. Criação da interface gráfica ... 80

3.3.6.2. Codificação e animação da interface gráfica ... 84

3.3.6.3. Conclusão ... 85

3.4. Desenvolvimento da ferramenta multimédia de apoio à programação ... 87

3.4.1. Visita guiada a ferramenta multimédia de apoio à programação ... 87

3.4.2. Conclusões ... 87

CAPÍTULO IV – Experimentação e Avaliação da Ferramenta Multimédia ... 91

4.1. Contexto de uso da ferramenta multimédia de apoio à programação... 91

4.1.1. Caraterização da escola ... 92

4.1.2. Caraterização dos recursos tecnológicos da escola ... 93

4.2. Estratégias de recolha de dados ... 93

4.3. Procedimentos na recolha de dados ... 95

4.4. Caraterização geral dos participantes ... 96

4.5. Limitações da avaliação ... 96

4.6. Considerações finais ... 97

CAPÍTULO V – Apresentação, Análise e Interpretação dos Resultados ... 99

5.1. Resultados da interface gráfica ... 100

5.2. Resultados da aplicação da ferramenta multimédia de apoio à programação ... 100

5.2.1. Resultados obtidos pela observação direta e participante ... 101

5.3. Resultados obtidos com o questionário final ... 104

5.4. Conclusão ... 127

CAPÍTULO VI – Conclusões Finais e Estudos Futuros ... 129

Referências Bibliográficas ... 131

ANEXO A – Visita Guiada à Ferramenta Multimédia de Apoio à Programação ... 143

(16)
(17)

xi

Figura 2.1: Funcionamento geral de um computador ... 8

Figura 2.2: Fases da programação ... 9

Figura 2.3: Fases de construção de um programa ... 12

Figura 2.4: Algoritmo versus programa ... 12

Figura 2.5: Simbologia de um fluxograma ... 13

Figura 2.6: Representação de um fluxograma ... 13

Figura 2.7: Estrutura de seleção ... 14

Figura 2.8: Estrutura de decisão ... 14

Figura 2.9: Estrutura de repetição ... 14

Figura 2.10: Representação de um problema em pseudocódigo ... 16

Figura 2.11: Pseudocódigo utilizando uma estrutura de decisão ... 17

Figura 2.12: Programa em linguagem de programação Pascal ... 17

Figura 2.13: Exemplo da animação de um algoritmo no sistema Algorithma 98 ... 30

Figura 2.14: Exemplo da animação de um algoritmo no sistema ANIMAL ... 31

Figura 2.15: Exemplo do sistema MatrixPRO ... 31

Figura 2.16: Interface do ambiente CIFluxProg, no módulo de pseudocódigo ... 38

Figura 2.17: Módulo de pseudocódigo, executando um algoritmo que calcula fatorial ... 38

Figura 2.18: Ambiente de desenvolvimento de fluxogramas, com destaque na barra de ferramentas ... 39

Figura 2.19: Ecrã principal do TBC-AED ... 41

Figura 2.20: Ecrã de busca binária ... 41

Figura 2.21: Ambiente do AWTM (aplicação web para realizar teste de mesa) ... 42

Figura 2.22: Ambiente do ATMUF (ambiente para teste de mesa utilizando fluxograma) ... 43

Figura 2.23: Barra de escolha da estrutura ... 44

Figura 2.24: Ecrã principal do VisuAlg ... 45

Figura 2.25: Simulação de um programa no PROGUIDE ... 47

Figura 2.26: Ambiente de trabalho do SICAS ... 52

Figura 2.27: Interface do espaço de discussão do SICAS-COL ... 53

Figura 2.28: Ecrã de abertura do A4 ... 54

Figura 2.29: Ecrã de apresentação do A4 ... 55

(18)

xii

Figura 2.33: Ambiente de trabalho do Jeliot 3 ... 56

Figura 2.34: Interface do JavaTool ... 57

Figura 2.35: O Ambiente de trabalho do BlueJ ... 58

Figura 2.36: Ecrã principal do ambiente Alice ... 60

Figura 2.37: Desenvolvimento de programas no SL ... 62

Figura 3.1: A estrutura hierárquica semi-linear da ferramenta multimédia ... 77

Figura 3.2: Interface do ecrã principal ... 78

Figura 3.3: Caixa de tópicos do botão fases de programação ... 79

Figura 3.4: Botão iniciar e sair da aplicação do ecrã_principal ... 79

Figura 3.5: Interface geral do botão conceitos ... 80

Figura 3.6: Seta de direção para avançar nas páginas ... 80

Figura 3.7: Setas de direção para avançar/recuar nas páginas ... 80

Figura 3.8: Fundo dos ecrãs da aplicação ... 81

Figura 3.9: Interface do ecrã_principal ... 82

Figura 3.10: Caixa para inserção dos tópicos ... 82

Figura 3.11: Botão Iniciar para aceder aos restantes ecrãs ... 82

Figura 3.12: Identificação da ferramenta e do ecrã ... 83

Figura 3.13: Página do botão conceitos com a seta para a avançar nas páginas ... 83

Figura 3.14: Página do botão conceitos com a seta para a avançar ou recuar nas páginas ... 84

Figura 4.1: Escola Secundária Morgado de Mateus ... 92

Figura 3.15: Ecrã principal ... 143

Figura 3.16: Tópicos e botão iniciar do ecrã principal ... 143

Figura 3.17: Menu das aulas das estruturas de controlo ... 143

Figura 3.18: Fases da programação ... 144

Figura 3.19: Botão para reiniciar as fases de programação ... 144

Figura 3.20: Linguagem top-down ... 145

Figura 3.21: Funcionamento geral de um computador ... 145

Figura 3.22: Botões top-down/análise do problema ... 145

Figura 3.23: Exemplos da linguagem top–down ... 146

Figura 3.24: Exemplos da análise do problema ... 146

(19)

xiii

Figura 3.28: Dica dos exercícios análise do problema ... 147

Figura 3.29: Correção do exercício análise do problema ... 147

Figura 3.30: Operações básicas de um computador ... 148

Figura 3.31: Instruções de entrada e de saída ... 148

Figura 3.32: Identificadores ... 148

Figura 3.33: Sintaxe das instruções de entrada e de saída ... 148

Figura 3.34: Declaração e sintaxe de uma constante ... 148

Figura 3.35: Declaração e sintaxe de uma variável ... 148

Figura 3.36: Instrução de atribuição ... 149

Figura 3.37: Operadores aritméticos ... 149

Figura 3.38: Operadores relacionais e lógicos ... 149

Figura 3.39: Prioridade dos operadores ... 149

Figura 3.40: Tipos de dados ... 149

Figura 3.41: Enunciados de exercícios de aplicação ... 150

Figura 3.42: Resolução de exercícios de aplicação ... 150

Figura 3.43: Distinção em algoritmo e programa ... 150

Figura 3.44: Técnicas de representação de algoritmos ... 150

Figura 3.45: Simbologia utilizada nos fluxogramas ... 151

Figura 3.46: Estrutura geral de um pseudocódigo e de um fluxograma ... 151

Figura 3.47: Resolução em linguagem natural, pseudocódigo e fluxograma ... 151

Figura 3.48: Resolução em linguagem de programação Pascal ... 151

Figura 3.49: Setas de deslocamento em fluxograma e pseudocódigo ... 152

Figura 3.50: Enunciados de exercícios ... 152

Figura 3.51: Dica para resolução de exercícios ... 152

Figura 3.52: Resolução em pseudocódigo e em fluxograma ... 153

Figura 3.53: Resolução em linguagem de programação Pascal ... 153

Figura 3.54: Setas de deslocamento no fluxograma ... 153

Figura 3.55: Esquema das estruturas de controlo Se… Então… Senão ... 154

Figura 3.56: Definição da estrutura de controlo Se… Então… Senão ... 154 Figura 3.57: Sintaxe em pseudocódigo e em fluxograma, da estrutura Se… Então… Senão 154

(20)

xiv

Figura 3.59: Resolução em linguagem de programação Pascal, utilizando a estrutura de

controlo Se… Então… Senão ... 155 Figura 3.60: Setas de deslocamento em pseudocódigo e em fluxograma ... 155 Figura 3.61: Enunciado de exercícios, utilizando a estrutura de controlo Se… Então …Senão ... 156 Figura 3.62: Dica para a resolução de exercícios, utilizando a estrutura Se… Então… Senão ... 156 Figura 3.63: Resolução em pseudocódigo e em fluxograma, utilizando a estrutura de controlo Se… Então… Senão ... 156 Figura 3.64: Resolução na linguagem de programação Pascal, utilizando a estrutura de

controlo Se… Então… Senão ... 156 Figura 3.65: Esquema da estrutura de controlo Caso… Seja ... 157 Figura 3.66: Definição e sintaxe da estrutura Caso… Seja ... 157 Figura 3.67: Resolução em pseudocódigo e em fluxograma, utilizando a estrutura de controlo Caso… Seja ... 158 Figura 3.68: Resolução em linguagem de programação Pascal, utilizando a estrutura de

controlo Caso… Seja ... 158 Figura 3.69: Enunciados de exercícios, utilizando a estrutura de controlo Caso… Seja ... 158 Figura 3.70: Dica para a resolução de exercícios, utilizando a estrutura de controlo Caso… Seja ... 158 Figura 3.71: Resolução em pseudocódigo e em fluxograma, utilizando a estrutura de controlo Caso… Seja ... 159 Figura 3.72: Resolução em linguagem de programação Pascal, utilizando a estrutura de

controlo Caso… Seja ... 159 Figura 3.73: Esquema da estrutura de controlo Repetir… Até ... 159 Figura 3.74: Definição e sintaxe da estrutura Repetir… Até ... 159 Figura 3.75: Resolução em pseudocódigo e em fluxograma, utilizando a estrutura Repetir… Até ... 160 Figura 3.76: Resolução em linguagem de programação Pascal, utilizando a estrutura

Repetir… Até ... 160 Figura 3.77: Enunciado de exercícios, utilizando a estrutura Repetir… Até ... 161

(21)

xv

Até ... 161 Figura 3.80: Resolução em linguagem de programação Pascal, utilizando a estrutura

Repetir… Até ... 161 Figura 3.81: Esquema da estrutura de controlo Enquanto… Fazer ... 162 Figura 3.82: Definição e sintaxe da estrutura de controlo Enquanto… Fazer ... 162 Figura 3.83: Resolução em pseudocódigo e em fluxograma, utilizando a estrutura Enquanto… Fazer ... 162 Figura 3.84: Resolução em linguagem de programação Pascal, utilizando a estrutura

Enquanto… Fazer ... 162 Figura 3.85: Enunciados de exercícios, utilizando a estrutura Enquanto… Fazer ... 163 Figura 3.86: Dica para a resolução de exercícios, utilizando a estrutura Repetir… Até ... 163 Figura 3.87: Resolução em pseudocódigo e em fluxograma, utilizando a estrutura Enquanto… Fazer ... 163 Figura 3.88: Resolução em linguagem de programação Pascal, utilizando a estrutura

Enquanto… Fazer ... 163 Figura 3.89: Esquema da estrutura de controlo Para… Até… Fazer ... 164 Figura 3.90: Definição e sintaxe da estrutura Para… Até… Fazer ... 164 Figura 3.91: Resolução em pseudocódigo e em fluxograma, utilizando a estrutura Para… Até… Fazer ... 165 Figura 3.92: Resolução em linguagem de programação Pascal, utilizando a estrutura Para… Até… Fazer ... 165 Figura 3.93: Enunciado de exercícios, utilizando a estrutura Para… Até… Fazer ... 165 Figura 3.94: Dica para a resolução de exercícios, utilizando a estrutura Para… Até… Fazer ... 165 Figura 3.95: Resolução em pseudocódigo e em fluxograma, utilizando a estrutura Para… Até… Fazer ... 166 Figura 3.96: Resolução em linguagem de programação Pascal, utilizando a estrutura Para… Até… Fazer ... 166

(22)
(23)

xvii

Gráfico 5.1 e Gráfico 5.2: Caraterização dos alunos por género ... 105 Gráfico 5.3 e Gráfico 5.4: Caraterização dos alunos por idade ... 105 Gráfico 5.5 e Gráfico 5.6: Utilização das TIC em sala de aula ... 106 Gráfico 5.7 e Gráfico 5.8: Melhor compreensão das matérias quando o professor utiliza as TIC ... 106 Gráfico 5.9 e Gráfico 5.10: Indiferente à utilização do computador e da internet em sala de aula ... 107 Gráfico 5.11 e Gráfico 5.12: Índices de motivação e empenho dos alunos ... 107 Gráfico 5.13 e Gráfico 5.14: Uso do computador para lecionar os conteúdos programáticos ... 108 Gráfico 5.15 e Gráfico 5.16: Utilização do computador e a Internet como estratégia de ensino para melhor perceber as matérias ... 108 Gráfico 5.17 e Gráfico 5.18: O recurso ao computador melhora a concentração dos alunos, nas atividades a realizar em sala de aula ... 109 Gráfico 5.19 e Gráfico 5.20: O computador e a internet facilitam a aprendizagem dos alunos ... 109 Gráfico 5.21 e Gráfico 5.22: A utilização do computador tem uma influência positiva no relacionamento entre os alunos ... 110 Gráfico 5.23 e Gráfico 5.24: A utilização do computador tem uma influência positiva no relacionamento entre alunos e professor. ... 110 Gráfico 5.25 e Gráfico 5.26: O computador facilita a exposição e apresentação dos conteúdos ... 111 Gráfico 5.27 e Gráfico 5.28: Não aprendo quando o professor utiliza para a exposição e apresentação dos conteúdos, o computador ... 111 Gráfico 5.29 e Gráfico 5.30: O computador e a internet permitem que a minha atenção nas aulas seja… ... 112 Gráfico 5.31 e Gráfico 5.32: O computador e a internet permitem que a minha motivação para as aulas seja… ... 112 Gráfico 5.33 e Gráfico 5.34: Ferramentas que apoiam na aprendizagem em sala de aula .... 113 Gráfico 5.35 e Gráfico 5.36: O recurso a ferramentas educativas multimédia melhora

(24)

xviii

Gráfico 5.39 e Gráfico 5.40: O recurso a ferramentas educativas multimédia facilita a

aprendizagem ... 114 Gráfico 5.41 e Gráfico 5.42: Alguns alunos continuam indiferentes às atividades em sala de aula, mesmo quando se utilizam ferramentas educativas multimédia ... 115 Gráfico 5.43 e Gráfico 5.44: Os professores deviam utilizar mais as ferramentas educativas multimédia, para lecionarem os conteúdos programáticos ... 115 Gráfico 5.45 e Gráfico 5.46: Percebo melhor as matérias, quando o professor utiliza

ferramentas educativas multimédia ... 116 Gráfico 5.47 e Gráfico 5.48: O recurso a ferramentas educativas multimédia contribui para a melhoria dos resultados na avaliação dos alunos ... 116 Gráfico 5.49 e Gráfico 5.50: O uso de ferramentas educativas multimédia facilita a

aprendizagem de conteúdos novos. ... 117 Gráfico 5.51 e Gráfico 5.52: A utilização de ferramentas educativas multimédia tem uma influência positiva no relacionamento entre os alunos ... 117 Gráfico 5.53 e Gráfico 5.54: A utilização de ferramentas educativas multimédia tem uma influência positiva na relação entre os alunos e o professor ... 118 Gráfico 5.55 e Gráfico 5.56: A utilização de ferramentas educativas multimédia facilita a exposição/apresentação dos conteúdos programáticos ... 118 Gráfico 5.57 e Gráfico 5.58: Não aprendo quando o professor utiliza para a exposição e apresentação dos conteúdos ferramentas educativas multimédia ... 119 Gráfico 5.59 e Gráfico 5.60: Avaliação dos conhecimentos acerca dos assuntos tratados na ferramenta multimédia de apoio à programação ... 119 Gráfico 5.61 e Gráfico 5.62: De que forma a adoção da ferramenta multimédia de apoio à programação, contribuiu, na compreensão dos assuntos tratados ... 120 Gráfico 5.63 e Gráfico 5.64: A metodologia de ensino utilizada pela professora foi modificada quando da utilização da ferramenta multimédia de apoio à programação ... 120 Gráfico 5.65 e Gráfico 5.66: A utilização da ferramenta multimédia de apoio à programação afetou a sua motivação, no que diz respeito aos assuntos tratados ... 121 Gráfico 5.67 e Gráfico 5.68: Conteúdo apresentado nos textos ... 121 Gráfico 5.69 e Gráfico 5.70: Conteúdo das animações ... 122 Gráfico 5.71 e Gráfico 5.72: Importância dos tópicos abordados nos textos ... 122

(25)

xix

Gráfico 5.77 e Gráfico 5.78: Avaliação geral das animações ... 123 Gráfico 5.79 e Gráfico 5.80: Disposição do conteúdo ... 124 Gráfico 5.81 e Gráfico 5.82: Navegação ... 124 Gráfico 5.83 e Gráfico 5.84: Tamanho das fontes ... 124 Gráfico 5.85 e Gráfico 5.86: Tipo de fontes utilizadas ... 125 Gráfico 5.87 e Gráfico 5.88: Utilização da ferramenta de apoio à programação fora da sala de aula, para consolidar conhecimentos sobre a matéria ... 126 Gráfico 5.89 e Gráfico 5.90: Utilização da ferramenta interativa fora do contexto de sala de aula, para estudo individual/autónomo ... 126

(26)
(27)

xxi

Tabela 5.1: Plano geral das aulas ... 102 Tabela 5.2: Relatório das aulas 1 e 2 ... 167 Tabela 5.3: Relatório das aulas 3 e 4 ... 167 Tabela 5.4: Relatório das aulas 5 e 6 ... 168 Tabela 5.5: Relatório das aulas 7 e 8 ... 169 Tabela 5.6: Relatório das aulas 9 e 10 ... 170 Tabela 5.7: Relatório das aulas 11 e 12 ... 171 Tabela 5.8: Relatório das aulas 13 e 14 ... 172 Tabela 5.9: Relatório das aulas 15 e 16 ... 173 Tabela 5.10: Relatório das aulas 17 e 18 ... 173 Tabela 5.11: Relatório das aulas 19 e 20 ... 174 Tabela 5.12: Relatório das aulas 21 e 22 ... 174 Tabela 5.13: Relatório das aulas 23 e 24 ... 175 Tabela 5.14: Relatório das aulas 25 e 26 ... 176 Tabela 5.15: Relatório das aulas 27 e 28 ... 176 Tabela 5.16: Relatório das aulas 29 e 30 ... 177 Tabela 5.17: Relatório das aulas 31 e 32 ... 177 Tabela 5.18: Relatório das aulas 33 e 34 ... 178 Tabela 5.19: Relatório das aulas 35 e 36 ... 179 Tabela 5.20: Relatório das aulas 37 e 38 ... 179 Tabela 5.21: Relatório das aulas 39 e 40 ... 180 Tabela 5.22: Relatório das aulas 41 e 42 ... 180 Tabela 5.23: Relatório das aulas 43 e 44 ... 180 Tabela 5.24: Relatório das aulas 45 e 46 ... 181 Tabela 5.25: Relatório das aulas 47 e 48 ... 181 Tabela 5.26: Relatório das aulas 49 e 50 ... 181 Tabela 5.27: Relatório das aulas 51 e 52 ... 181 Tabela 5.28: Relatório das aulas 53 e 54 ... 182

(28)
(29)

xxiii

A4 Ambiente de Aprendizagem Adaptado para Algoritmos AMBAP Association for Computer Machinery

ANIMAL A New Interactive Modeller for Animations in Lectures ASTRAL Animation of Data Structures and Algorithms

ATMUF Ambiente para Teste de Mesa utilizando Fluxogramas AWTM Aplicação Web para realizar teste de Mesa em Algoritmos BALSA Brown ALgorithm Simulator and Animator

CIFLUXPROG construtor e interpretador de algoritmos para programação CAT Collaborative Active Textbook

IDSV Interactive Data Structure Visualization

JHAVÉ Java-Hosted Algorithm Visualization Environment 3INF1 Sala de informática 1

3INF2 Sala de informática 2

PILOT Platform-Independent Learning Online Tool SL Second Life

(30)
(31)

1

CAPÍTULO I – INTRODUÇÃO

Neste primeiro capítulo, faz-se uma introdução ao tema desenvolvido nesta dissertação, fundamentando o problema em questão, identificando-se os objetivos a alcançar e os contributos resultantes deste trabalho.

Apresenta-se, ainda, a estrutura da dissertação. 1.1. Fundamentação da escolha do tema

A autora desta dissertação, desde que iniciou a sua carreira profissional, tem estado sempre ligada a lecionação no ensino secundário, de Cursos Tecnológicos, Cursos de Educação e Formação e Profissionais, na área da informática, nomeadamente de disciplinas ligadas à programação de computadores.

Ao longo destes vinte e um anos de carreira, tem vindo a observar os problemas e dificuldades manifestadas pelos alunos no estudo da lógica de programação, bem como as dificuldades que professores enfrentam no seu dia-a-dia, razão pela qual se dedicou à sua investigação.

O aparecimento nas escolas de disciplinas ligadas à programação de computadores e a utilização das Tecnologias da Informação e Comunicação (TIC), de uma forma cada vez mais expressiva, colocou sobre as mesmas e principalmente sobre os professores, a necessidade de fazerem uma mudança adaptativa, ou seja, a introdução de ferramentas interativas no ensino e no desenvolvimento de práticas pedagógicas e nomeadamente no ensino da programação. A professora tem constatado ao longo da sua vida profissional, que o ensino da linguagem algorítmica e da programação propriamente dita, costuma apresentar índices elevados de reprovação, pois exige dos alunos altos níveis de abstração. Por este facto, tem vindo a observar que a utilização de recursos computacionais ou seja, a utilização de programas de animação de algoritmos ou de programas utilizando recursos multimédia, pode ajudar alunos e professores a tornarem o processo de ensino e aprendizagem mais fácil, rápido, eficiente e mais aliciante.

O desenvolvimento, integração e aplicação de tecnologia multimédia na educação, nomeadamente em contexto de sala de aula, pode configurar-se como condição fundamental

(32)

2

no desenvolvimento do processo de ensino e aprendizagem de alunos e professores, pois os alunos têm demonstrado estarem mais motivados para a aprendizagem de conceitos mais complexos.

É então essencial saber utilizar ferramentas que permitam criar nos alunos uma maior motivação, planificar de uma forma mais eficiente a atividade docente e elaborar recursos multimédia que potenciem o ensino dos conteúdos programáticos.

Sabe-se que a aprendizagem é melhor sucedida quando os alunos participam de forma empenhada e voluntária. Cabe aos professores o desafio de serem os construtores do currículo, usando para isso e em contexto de sala de aula, boas ferramentas, conduzindo assim os alunos a intervenções críticas, capazes de lançar e desenvolver desafios.

As tecnologias multimédia aplicadas ao ensino têm vindo a obter resultados bastante positivos, pois têm o potencial de gerar uma nova forma de aprendizagem, uma nova dimensão ao ensino, uma vez que com o uso das TIC e utilizando recursos multimédia, pode-se obter conhecimento, possibilitando a assimilação dos conceitos de maneira mais eficiente. Isto é sustentado pela experiência que a professora tem ao longo da sua vida profissional, com alunos em sala de aula.

1.2. Objetivos e contributos fundamentais

Os alunos iniciantes no estudo da lógica de programação possuem grandes dificuldades em compreender a forma e os caminhos que levam à solução dos problemas (lógica). A compreensão dos problemas e a abstração dos dados provocam dificuldades nos alunos. O objetivo principal deste trabalho é explorar as possibilidades e dificuldades da utilização de ferramentas de apoio ao ensino e aprendizagem da programação de computadores.

Pretende-se analisar as caraterísticas e potencialidades das ferramentas multimédia, quando utilizadas no ensino e aprendizagem da programação, estudando e analisando algumas delas, como apareceram e com que objetivo, como funcionam e que limitações e vantagens apresentam, tendo sempre em vista uma melhoria na aprendizagem dos conteúdos.

Para além disso houve a necessidade de criar uma ferramenta de apoio à programação que compilasse toda a informação necessária para o estudo da linguagem algorítmica (conceitos,

(33)

3

exemplos e exercícios). Esta ferramenta tem como objetivo principal, fornecer mais opções de estudo e treino direcionado, possibilitando ainda a supervisão das atividades realizadas em sala de aula. Este sistema visa apresentar, de forma textual e exemplificada o funcionamento e técnicas de aprendizagem da lógica de programação, por meio do uso de algoritmos, além de mostrar o funcionamento das principais técnicas de construção de algoritmos, utilizando Pseudocódigo e Fluxograma. Os exercícios apresentados permitem testar os conhecimentos dos alunos, pois irão ser resolvidos em contexto de sala de aula, em relação à teoria apresentada em cada momento, seguindo uma sequência crescente e ordenada de conteúdos, conforme o avanço no estudo dos algoritmos.

A ferramenta multimédia desenvolvida tem como principal objetivo reforçar o estímulo e a motivação dos alunos e, consequentemente criar condições para o processo de ensino e aprendizagem da lógica de programação.

Foi também objetivo dar aos alunos, uma alternativa no estudo de algoritmos, e ao professor uma ferramenta de suporte de ensino.

Este projeto foi desenvolvido, com o intuito de alcançar os seguintes objetivos:

 permitir ao aluno ser ele o construtor da sua própria aprendizagem;

 poder analisar, avaliar e aplicar recursos multimédia selecionados com conteúdos ligados à programação de computadores;

 estabelecer com eles uma correspondência a conteúdos específicos do programa;

 criar uma nova dinâmica de aprendizagem, aplicada em contexto de sala de aula;

 procurar promover novas práticas que levem a uma política de renovação pedagógica nas escolas;

 desenvolver uma aplicação multimédia interativa na área da programação;

 desenvolver uma aplicação segundo uma perspetiva pedagógico – didática;

 utilizar as Novas Tecnologias para uma aplicabilidade prática da aprendizagem da programação;

 apresentar uma ferramenta interativa como recurso alternativo/complementar do ensino da programação;

(34)

4

 projetar uma ferramenta multimédia de ensino dos conceitos da programação de forma fácil, e que mantenha os alunos motivados;

 realizar um conjunto de testes com alunos e avaliar a preferência da utilização da ferramenta multimédia sobre outros sistemas existentes.

Na procura de repostas aos objetivos propostos, o recurso à multimédia, surgiu como a melhor solução, tendo sido fatores determinantes a essa escolha:

 a possibilidade de integração de diferentes media (imagens, texto, animação, som, etc.), potenciando uma melhor compreensão dos conteúdos apresentados;

 a possibilidade de interatividade, que para além de permitir um processo de aprendizagem auto ritmado, estimula a exploração do tema e pode promover um elevado nível de interesse;

 a facilidade de acesso à informação visto os computadores estarem cada vez mais presentes nas escolas e no nosso quotidiano.

A ferramenta desenvolvida serve como modelo de suporte às atividades de ensino e aprendizagem da programação de computadores. Pretende contribuir, para melhorar a aprendizagem da lógica de programação, procurando ajudar alunos e professores a tirar partido da utilização de ferramentas multimédia em sala de aula, para contextualizar o ensino da programação, com a ambição de poder eventualmente minorar, desta forma, o insucesso que atualmente se verifica.

Ao utilizar estas ferramentas, podemos concluir ou não, se servem para superar as dificuldades detetadas e como, servindo como base de estudo qualitativo e quantitativo, determinando o impacto da sua utilização na motivação dos alunos, na aprendizagem da programação de computadores.

1.3. Estrutura da dissertação

Esta dissertação encontra-se organizada em seis capítulos. Neste primeiro capítulo foi feita a fundamentação da escolha do problema, sendo especificados os objetivos do estudo e do projeto desenvolvido e ainda é apresentada a estrutura da dissertação.

No segundo capítulo, referente ao ensino da programação de computadores, faz-se uma pequena introdução ao tema, seguindo-se a descrição das técnicas utilizadas para a elaboração

(35)

5

de algoritmos, causas e dificuldades dos alunos no estudo da programação de computadores, e conclui-se com a descrição de algumas das ferramentas criadas para superar as dificuldades dos alunos na área da programação.

No terceiro capítulo aborda-se de uma forma pormenorizada as formas de conceção e desenvolvimento da Ferramenta Multimédia de Apoio à Programação, bem como a metodologia adotada na sua implementação.

No quarto capítulo é feita a avaliação da ferramenta multimédia, aborda-se a seleção da população e da amostra, a técnica de recolha de dados, a descrição de processos de conceção e validação do instrumento e descreve-se o processo de recolha e tratamento de dados.

No quinto capítulo apresentam-se os resultados obtidos, fazendo-se uma reflexão e discussão dos mesmos.

No sexto capítulo apresentam-se as conclusões do estudo, fazendo-se algumas recomendações com base na revisão bibliográfica e na investigação realizada, e termina-se com diversas reflexões sobre a continuidade desejada para este trabalho.

(36)
(37)

7

CAPÍTULO II – UTILIZAÇÃO DE FERRAMENTAS MULTIMÉDIA NO

ESTUDO DA PROGRAMAÇÃO DE COMPUTADORES

Neste segundo capítulo, apresenta-se a situação atual do ensino introdutório da programação de computadores, a alunos que frequentam durante o seu percurso escolar, cursos ou disciplinas ligadas à informática, nomeadamente no que diz respeito ao estudo da lógica de programação e das linguagens de programação.

Começa-se por apresentar a definição de programação de computador e as etapas a ter em conta na elaboração de um programa. Apresentam-se técnicas de representação de algoritmos, sua definição e importância para o estudo da lógica da programação. É feita uma análise às dificuldades relatadas na literatura científica sobre a aprendizagem da programação, seguindo-se uma referência a algumas das ferramentas existentes para o ensino e aprendizagem da lógica de programação e da programação de computadores.

2.1. Programação de computadores

O termo programar significa de uma forma geral planear algo. Todos nós, sem darmos por isso, planeamos os nossos dias, realizando um conjunto de tarefas com o objetivo de obtermos uma determinada solução. Chegar à definição de programação de computadores não é assim tão fácil, pois requer o conhecimento de alguns termos ligados aos computadores e à lógica de programação.

Quando se trata de formular programas de computador precisamos de ter algumas noções básicas acerca da estrutura e do funcionamento de um computador, ou seja, como ele de uma forma geral funciona e quais são os principais tipos de operações que um sistema informático pode efetuar.

Um computador é uma máquina constituída por componentes eletrónicos e eletromecânicos, responsáveis pelo processamento de dados e execução de conjuntos de instruções dadas pelo utilizador, através de dispositivos de entrada de dados. Podemos então dizer que um computador é uma máquina com um agregado de unidades essencialmente eletrónicas, capaz de trabalhar sobre informação digital codificada em formato binário, sob controlo de um processador central, que pode realizar uma vasta gama de tarefas de processamento. Em (Rocha, 2008), um computador é uma máquina que processa dados e executa sobre eles, de

(38)

8

uma forma muito rápida, sequências de operações elementares, a partir de informação inserida através de dispositivos de entrada, geralmente o teclado, quando essa informação provém diretamente de seres humanos (Figura 2.1).

Figura 2.1: Funcionamento geral de um computador

Um computador é por isso uma máquina programável, em que as tarefas a serem desempenhadas são fornecidas através de um programa.

Sendo assim, um programa de computador não é mais que um conjunto de operações elementares, que permitem levar à solução de um determinado problema. No contexto das linguagens de programação é um conjunto de instruções ou operações, que conduzem à solução de um dado problema.

A elaboração de um programa de computador não se limita à escrita ou codificação de um determinado conjunto de instruções numa linguagem de programação.

Antes de começar a escrever um programa numa linguagem de programação, há algumas ações a ter em conta, por outro lado após a escrita desse programa, a atividade de programar não termina pois são necessárias outras tarefas.

Podemos então dizer que a atividade de programar é um processo constituído por um conjunto de fases ou etapas distintas: definição do problema; planificação da resolução; codificação; teste e depuração; documentação e manutenção.

Para resolver um determinado problema começa-se por compreender e analisar o problema em questão. Nesta primeira fase é necessário definir o problema que se pretende resolver, da forma mais clara e completa possível de maneira a esboçar a melhor solução para o problema. Não se pode partir para a fase seguinte de resolução de um problema, sem se ter um

(39)

9

enunciado preciso de todos os aspetos da situação problema a resolver, desfazendo assim todas as dúvidas ou ambiguidades que possam existir. Depois de ter a noção exata da situação problema, deve-se recorrer a uma estratégia de abordagem do problema que seja o mais adequado possível à obtenção de uma solução, podendo nesta fase serem utilizadas várias estratégias e métodos de representação de problemas, que denominamos de algoritmo. Está é a fase de escrita de um conjunto finito, preciso e ordenado de passos que executados por uma determinada ordem resolvem, um problema. Numa terceira fase faz-se a codificação do algoritmo numa linguagem de programação, ou seja, é necessário transpor as indicações do algoritmo para instruções numa dada linguagem de programação. Podemos nesta fase referir que um programa pode consistir num só algoritmo ou num conjunto de algoritmos ou subalgoritmos. Depois da obtenção do código do programa, é necessário testar o mesmo com diversos tipos de dados e em diferentes situações, de modo a se puderem detetar eventuais erros, falhas ou omissões, verificando-se assim, se cumpre as regras sintáticas da linguagem de programação em causa e por fim deve - se testar o programa para verificar se faz o pretendido, ou seja, se resolve o problema em questão. Depois da obtenção do código é necessário elaborar a documentação que para os programadores poderá ser incluída no código do programa, facilitando a sua compreensão e a sua eventual retoma para alterações ou melhoramentos. Para os utilizadores a documentação visa facilitar a aprendizagem relativa ao modo de operar com o programa. A última fase diz respeito á manutenção e possíveis alterações que sejam necessárias fazer ou a aperfeiçoamentos que se revelem úteis de ser introduzidos (Figura 2.2).

(40)

10

Podemos então dizer que a programação de computadores é uma ciência, constituída por um conjunto de regras orientadoras, porque é necessário o uso da lógica e porque existem alguns métodos rigorosos de programação que asseguram a eficiência e utilidade dos programas gerados (Gomes, Henriques e Mendes, 2008)

2.1.1. O Ensino de algoritmos

O ensino de Algoritmos, em disciplinas ligadas á programação de computadores, tem por objetivo ordenar o pensamento do aluno, fazendo com que o mesmo aprenda a pensar na mesma sequência lógica utilizada pelo computador.

Para quem se inicia na aprendizagem da programação de computadores o uso de termos lógica de programação e algoritmia, passam a fazer parte do vocabulário. A lógica de programação é o mais importante quando se quer aprender a programar computadores. Entretanto para que a lógica de programação seja assimilada é necessária a prática contínua da mesma.

A 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 (FORBELONE, 1993). Para FORBELLONE (2000, p. 1) a lógica é a “arte do bem pensar”. O raciocínio é a forma mais complexa do pensamento e a lógica estuda a correção do raciocínio, colocando coerência e ordem no pensamento.

A maneira como a lógica é assimilada tem implicações no aproveitamento de alunos no estudo da programação.

Por esse motivo para o estudo da lógica de programação é importante a utilização de ferramentas confiáveis e que proporcionem uma aprendizagem prática.

O pensamento lógico é facilmente representado através do uso de algoritmos.

Segundo Farrer (1999), ele é uma sequência finita de instruções bem definidas em que não há ambiguidade, sendo que as instruções podem ser executadas mecanicamente numa quantidade de tempo e esforço.

Para Medina et al. (2005), o conceito de algoritmo é facilmente ilustrado através do exemplo de uma receita de bolo, embora muitos algoritmos possam ser mais complexos.

(41)

11

Para Cormen et al. (1999), um algoritmo consiste num procedimento composto por uma série de passos utilizados para resolver um problema computacional específico, que a partir do processamento de dados de entrada irá gerar dados de saída.

Para DELGADO et al. (2005) as competências para a atividade de construção de algoritmos são: (1) Interpretação e compreensão de texto; (2) Resolução de problemas; (3) Formalização da solução proposta e (4), a Construção de algoritmos.

Como pode ser percebido em Medina et al. (2005), o algoritmo é uma ferramenta muito importante para a computação, uma vez que a implementação de Software faz uso de algoritmos. Eles podem existir das mais variadas formas, tanto como escrita textual ou como figuras representativas.

Um algoritmo consiste em um procedimento, composto por uma série de passos utilizados para resolver problemas computacionais específicos, que a partir do processamento com dados de entradas irá gerar dados de saídas (CORMEN et al., 1999).

Podemos então dizer de uma forma geral, que um algoritmo pode ser definido como um conjunto de regras bem determinadas para a resolução de um problema, através de um número finito de operações, ou seja, é uma sequência finita e logicamente ordenada de ações, para se chegar à solução de um problema.

Num algoritmo os passos podem ser repetidos por meio de iterações ou ainda decisões podem ser tomadas a partir de comparações, com o objetivo do cumprimento da tarefa.

Como fator de aprendizagem da lógica de programação é necessário que o aluno pratique consecutivamente exercícios que contenham algoritmos.

O conceito de algoritmo pode ser relacionado com o de programação de computadores, mas distingue-se dele. O conceito de algoritmos aplica-se a muitas outras áreas além da informática, como a Matemática ou a Física, mas também a atividades práticas da nossa vida quotidiana.

Por outro lado os programas de computador podem basear-se num determinado algoritmo ou consistirem num conjunto complexo de algoritmos ou subalgoritmos. A formulação de um algoritmo permite separar duas fases distintas na resolução de um problema: a fase de

(42)

12

formulação do algoritmo e a fase da sua implementação numa linguagem ou ferramenta de programação (Figura 2.3 e Figura 2.4).

Figura 2.3: Fases de construção de um programa

Figura 2.4: Algoritmo versus programa

Em algoritmia para além das linguagens de programação, são usadas outras linguagens e formas de representação das instruções ou operações que foram indicadas nos algoritmos, ou seja, para melhor desenvolvimento e aplicação da lógica em algoritmos, utilizam-se Fluxogramas e Pseudocódigos, que são as formas mais divulgadas para apresentação ou representação de algoritmos de computador.

Um algoritmo para um programa de computador pode ser representado por meio de fluxogramas, ou então escrito num linguagem convencional, com termos numa linguagem natural, representativa das ações específicas das linguagens de programação, chamando-se a este tipo de escrita de Pseudocódigo.

Mais à frente, apresentam-se estas duas ferramentas desenvolvidas para auxiliar nesse processo de desenvolvimento do raciocínio lógico para programação normalmente usadas durante a lecionação de conteúdos ligados programação.

Para verificar a funcionalidade e integridade de um algoritmo é necessário testá-lo verificando o conteúdo das variáveis passo a passo. Para efetuar esta tarefa costuma-se utilizar a traçagem, a qual executa, para cada instrução, a verificação do conteúdo das variáveis utilizadas no algoritmo, permitindo que se visualize o comportamento em todo o processo.

(43)

13

Esta abordagem permite não apenas a comprovação do correto funcionamento mas também detetar e corrigir com facilidade eventuais erros.

2.1.1.1. O uso de fluxogramas

Para a aprendizagem da lógica de programação e representação de algoritmos é utilizada o uso dos fluxogramas, que não são mais que uma apresentação da solução lógica de um problema sob a forma gráfica. São diagramas representativos do fluxo das ações de um programa, através de símbolos que representam os diferentes tipos de ações e o seu encadeamento na sequência de um programa.

Com o Fluxograma pretende-se desenvolver o raciocínio lógico para a programação.

Por ser uma ferramenta visual, facilita a compreensão do sentido do fluxo de processamento, uma vez que este é demonstrado claramente através do uso de setas de direção, que ligam as estruturas utilizadas. A simbologia utilizada para as estruturas também facilita a assimilação dos significados das ações no decorrer de uma solução.

Os Fluxogramas são diagramas que representam os fluxos das ações contidas num programa, utilizando para tal símbolos (Figura 2.5). Estes, representam os diversos tipos de ações e o seu inter-relacionamento na sequência de um programa, como representado na figura 2.6.

Figura 2.5: Simbologia de um fluxograma Figura 2.6: Representação de um fluxograma

Os Fluxogramas, quando usados para descrever a lógica da solução, sem levar em consideração os detalhes da linguagem de programação ou da interface, costumam gerar bons resultados, pois os alunos conseguem direcionar os seus esforços apenas para os passos que

(44)

14

levarão à solução do problema. Só depois disso é que vem a preocupação com os restantes detalhes para gerar o respetivo programa.

Um Fluxograma é constituído por um conjunto de estruturas de programação, cada qual com uma representação distinta. Com a utilização de figuras geométricas, os fluxogramas representam estruturas lógicas de sequência (Figura 2.7) desvio condicional (Figura 2.8) e repetição condicional (Figura 2.9), sendo o fluxo da sequência representado por setas direcionais, o que facilita sensivelmente a visualização da solução (SOUZA, 2000).

Figura 2.7: Estrutura de seleção Figura 2.8: Estrutura de decisão Figura 2.9: Estrutura de repetição

Adotando a ideia principal de estruturar a programação através de um Fluxograma e adicionando posteriormente mais detalhes em português estruturado - Pseudocódigo, fazendo com que ambos utilizem as mesmas estruturas de controlo, pode-se facilitar o processo de aquisição do conhecimento e principalmente a sua consolidação.

Ambas as técnicas utilizam uma representação semelhante:

 estruturas de controlo: de decisão ou seleção e ciclos de repetição;

 tipos de dados: os tipos de valores que serão inseridos nas variáveis;

 atribuições: atribuir um valor a uma variável;

 operações aritméticas: utilizadas para cálculos entre números e variáveis;

 operações relacionais: usadas para estabelecer uma relação entre duas variáveis;

 variáveis: usadas para armazenar valores na memória principal;

 vetores: conjuntos de variáveis com o mesmo nome, recorrendo a um índice para as diferenciar.

(45)

15

Com esta ferramenta gráfica pode-se desenvolver a lógica inicial de maneira bastante simples e visual, o que facilita a compreensão da maioria dos alunos.

Utilizando a multimédia, é possível criar um modelo que explique sequencialmente o que se vai passando, sincronizando o áudio com a sequência de imagens e levando deste modo o aluno a compreender e interiorizar o processo que se pretende transmitir.

Por este facto, a elaboração de uma ferramenta de apoio para o ensino de programação tem por objetivo o desenvolvimento do aluno no que se refere à capacidade de análise e resolução de problemas descrevendo-os em algoritmos.

O Fluxograma é um tipo de diagrama e pode ser entendido como uma representação esquemática de um processo, muitas vezes feito utilizando-se gráficos que ilustram de forma descomplicada a transição de informações entre os elementos que o compõem. Podemos entendê-lo, na prática, como a documentação dos passos necessários para a execução de um processo qualquer.

O Fluxograma serve para demonstrar os seguintes aspetos:

 quais operações a serem realizadas;

 onde são realizadas as operações;

 quem as executa;

 quais as entradas e saídas;

 qual o fluxo das informações;

 quais os recursos empregados;

 quais os custos totais e parciais;

 qual o volume de trabalho;

 qual o tempo de execução: parcial e total.

Atualmente os Fluxogramas não são muito utilizados, eles têm interesse mais do ponto de vista didático do que na própria prática de programação. Os Fluxogramas são úteis para ajudar a visualizar melhor determinadas estruturas típicas de programação, mas para representarem programas de média ou grande dimensão, tornam-se difíceis de concretizar, pois exigem muito espaço, o que os torna de difícil leitura e manuseamento.

(46)

16 2.1.1.2. O uso do pseudocódigo

O Pseudocódigo é uma linguagem algorítmica dita formal, muito utilizada na descrição de algoritmos, destaca-se por usar comandos em português, facilitando a aprendizagem da lógica de programação, e desta forma habituando o aluno com o formalismo da programação.

O Pseudocódigo, não possui uma gramática formal, tendo sido criado para representação de algoritmos no ensino da lógica de programação estruturada, porém segundo Saliba (1992), a aceitação desta forma de representação é muito alta, pois ela é rica em detalhes, ou seja, possui as estruturas básicas encontradas nas linguagens de programação formais, como definição de variáveis, por exemplo, aproximando o aluno, da forma como os programas de computador são escritos.

Um Pseudocódigo é uma forma de representar os algoritmos, utilizando a linguagem escrita. Utiliza termos convencionais para representar as ações a desempenhar pelo programa. Os termos utilizados são normalmente uma mistura da linguagem corrente com notações e palavras inerentes às linguagens de programação (Figura 2.10)

Figura 2.10: Representação de um problema em pseudocódigo

O Pseudocódigo é uma linguagem que permite representar um algoritmo fazendo uso da língua portuguesa. Entende-se como um código de escrita em que se utilizam termos convencionais para indicar as instruções do programa. Esses termos são, usualmente, um misto de palavras da nossa linguagem natural com palavras e notações típicas das linguagens de programação.

Através de estruturas básicas (sequência, seleção ou repetição), é possível construir Pseudocódigo, usando uma sintaxe que se aproxima das linguagens de programação usuais (Figura 2.11e Figura 2.12).

(47)

17 Figura 2.11: Pseudocódigo utilizando uma estrutura de

decisão

Figura 2.12: Programa em linguagem de programação Pascal

O Pseudocódigo tem-se revelado mais prático e vantajoso na estruturação do raciocínio e dos elementos (ações, dados) a incluir num programa.

A utilização de Pseudocódigo tem a vantagem de se poder utilizar texto escrito como base de trabalho para a escrita de um programa, não apenas numa linguagem de programação, mas em qualquer outra, sem ter de elaborar outro algoritmo.

Esta forma de abordagem de algoritmos presta-se a uma aproximação sucessiva à versão final de um programa, ou seja, pode-se ir progredindo por fases, revendo o Pseudocódigo e substituindo-o progressivamente por termos próprios de uma linguagem de programação. Segundo MANZANO e OLIVEIRA (1996), é mais fácil escrever que desenhar (na grande maioria dos casos), e a codificação acaba por se tornar uma simples transcrição de palavras-chave.

ESMIN (2000) aponta o fato do Pseudocódigo ser uma linguagem simples e permitir o detalhamento dos algoritmos. A tradução de um algoritmo em Pseudocódigo para um programa computacional através de uma linguagem de programação é muito fácil e clara, o que facilita muito o ensino/aprendizagem da própria linguagem de programação.

Outro destaque, de acordo com ASCÊNSIO (2002), é o fato de a passagem para qualquer linguagem de programação ser quase imediata, bastando ao aluno saber as palavras reservadas da respetiva linguagem de programação.

(48)

18 2.2. O ensino das linguagens de programação

Uma linguagem de programação é um sistema de escrita formal para enunciar a execução de operações de um computador. Ao falar em formal, quer dizer-se que obedece a um conjunto de normas ou regras.

Uma linguagem de programação é constituída por uma terminologia ou um conjunto de termos, palavras, sinais, que assumem determinado significados e um conjunto de regras que estipulam o uso correto dos termos, para constituir enunciações válidas.

As linguagens de programação têm como finalidade fundamental proporcionar os meios para a resolução de problemas, mediante um processamento computorizado.

No ensino de linguagens de programação, normalmente, temos como objetivo geral conseguir que os alunos desenvolvam os seus próprios programas aplicando os conhecimentos necessários de forma a resolver problemas reais.

Uma das atividades mais importantes no processo de ensino e aprendizagem de linguagens de programação é a prática no computador. Em termos presenciais, temos o aluno, o computador e o professor para supervisionar e apoiar nas operações. As observações do docente, através da sua experiência, poderão ajudar o aluno e deste modo servir como reforço no processo de ensino e aprendizagem.

2.3. As competências básicas de programação

As disciplinas de programação surgiram nas escolas, com a criação dos cursos de educação e formação e cursos profissionais na área de informática e são a base de muitos dos cursos criados, nestes últimos anos, no ensino secundário.

Nestas disciplinas de programação o estudo começa por centrar-se, como acontece no ensino superior, no desenvolvimento de algoritmos, na aprendizagem de alguns conceitos básicos da programação, utilizando linguagens de programação procedimentais e orientadas a objetos. (McCracken et al., 2001; Goldman et al., 2010).

(49)

19

Segundo diretrizes do ministério da educação, os alunos nesta fase inicial de estudo da programação devem desenvolver as seguintes competências:

 conceber algoritmos através da divisão dos problemas em componentes;

 desenvolver, distribuir, instalar e efetuar a manutenção de aplicações informáticas, utilizando ambientes e linguagens de programação orientadas a objetos, procedimentais e visuais;

 estimular o raciocínio lógico;

 saber escolher e adequar as soluções tecnológicas aos problemas a resolver;

 saber fazer a gestão do desenvolvimento de projetos;

 estimular a reflexão, a observação e autonomia.

Segundo (Goldman et al., 2010), as competências-base que os alunos devem adquirir nos primeiros anos de aprendizagem são as seguintes:

 os alunos devem ser capazes, a partir da especificação de enunciados de problemas, de extrair os seus aspetos mais relevantes, ou seja, resumir o problema a partir da sua descrição;

 os alunos devem conseguir desenvolver uma solução para o (s) problema (s) em causa, ou seja, gerar o(s) algoritmo(s). Esta solução pode ser efetuada por módulos, isto é, a partir do problema inicial, os alunos devem ser capazes de decompô-lo em subproblemas e gerar soluções para cada um deles, construindo assim uma solução global para o problema em causa;

 a partir da solução encontrada, os alunos devem ser capazes de codifica-la numa linguagem de programação, testá-la e corrigir os erros de sintaxe e lógicos que possa conter. Devem também ser capazes de ler e compreender o código de programas existentes, ou seja, passar à fase de codificação da solução anteriormente encontrada. 2.4. Causas e dificuldades dos alunos no estudo da programação de computadores

Os elevados níveis de insucesso nas disciplinas introdutórias de programação, em qualquer grau e sistema de ensino, é um tema que tem sido alvo de variadas discussões e pesquisas, ao longo dos tempos, resultando também em muitas propostas de metodologias e ferramentas de suporte.

(50)

20

Aprender a programar é complexo e requer esforço, perseverança e uma abordagem especial no que concerne à forma de estudo e de ensino.

O ensino das linguagens de programação tem como propósito conseguir que alunos desenvolvam um conjunto de competências necessárias para conceber programas e sistemas computacionais capazes de resolver problemas reais.

Porém, experiência da professora tem demonstrado que existe, em termos gerais, uma grande dificuldade em compreender e aplicar certos conceitos abstratos de programação, por parte de uma percentagem significativa dos alunos que frequentam disciplinas introdutórias nesta área. Autores como RAABE e SILVA (2005) citam a abstração como um dos principais fatores da desmotivação e do elevado grau de desistência dos alunos.

Uma das grandes dificuldades reside precisamente na compreensão e, em particular, na aplicação de noções básicas, como as estruturas de controlo, à criação de algoritmos que resolvam problemas concretos.

Diversos estudos apontam um conjunto de causas que estão na origem deste problema, Tobar (2001), Jenkins (2002) e Lahtinen et al. (2005) são alguns exemplos.

A literatura apresenta diversas justificações para a dificuldade inerente ao aprender a programar.

Dijkstra (1989) argumenta que este tipo de aprendizagem é um processo lento e gradual. Almeida et al. (2002) refere que se observa, neste tipo de matérias, falta de interesse por parte dos alunos. Refere adicionalmente que esta desmotivação está associada a uma forte carga de conceitos abstratos que intervêm em todo o conhecimento envolvido na atividade de programação, onde as características próprias das linguagens e ambiente de programação, cada vez mais sofisticados e da máquina em si, tendem a dificultar a programação.

De acordo com Dijkstra (1989) e Perkins et al. (1988) a aprendizagem de programação requer um treino intensivo na resolução de problemas, envolvendo competências de diversas áreas para obter um pequeno retorno. Os autores afirmam ainda que, em simultâneo, se exige uma precisão e atenção a detalhes muito mais elevada do que a requerida pela maioria das outras disciplinas.

(51)

21

Porém, autores como Byrne e Lyons (2001) referem que não há nada inerentemente difícil no assunto mas, simplesmente, existem alunos que não têm as aptidões necessárias para programar, nomeadamente de resolução de problemas e de matemática. Igual opinião é manifestada em Júnior e Rapkiewicz (2004, 2005).

Jenkins (2002) refere várias causas do insucesso generalizado em disciplinas de programação, como sejam o baixo nível de abstração, a falta de competências de resolução de problemas, a inadequação dos métodos pedagógicos aos estilos de aprendizagem dos alunos, referindo ainda que as linguagens de programação possuem sintaxes adequadas para profissionais mas não para aprendizes inexperientes.

Sloane e Linn (1988) referem que algumas das capacidades exigidas são óbvias, considerando como essenciais a capacidade de resolução de problemas e alguma ideia da matemática subjacente ao processo. Consideram também que um programador deverá ser capaz de usar o computador eficientemente, tem de saber criar um programa num ficheiro, compilá-lo e encontrar os resultados gerados. O programa produzido deverá então ser testado, os bugs encontrados e corrigidos. Porém, segundo estes autores, estas são as competências fáceis de identificar. Consideram também que existem competências menos óbvias, classificadas como “competências de vida”. Os mesmos autores referem ainda que programar não consiste apenas numa única capacidade, não se trata apenas de um conjunto de aptidões mas antes de uma hierarquia de aptidões e um programador necessitará de muitas delas em algum momento da sua vida.

Bereiter (1991), refere que um aluno que se depare com a aprendizagem de uma hierarquia de competências, geralmente começa pelas de mais baixo nível progredindo gradualmente até às mais exigentes.

Os autores concretizam que, no caso da codificação (uma pequena parte de uma competência de programação), implica que os alunos aprendam a sintaxe básica e gradualmente aprendam a semântica, estrutura e finalmente o estilo. O que sugere que aprender a programar é um processo que exige tempo e maturidade.

Jenkins (2002), argumenta que a programação é normalmente ensinada como assunto fundamental no início de um curso ligado à informática, O mesmo autor refere-se também à falta de motivação devido à imagem negativa apresentada pelos programadores. Existe a

Imagem

Figura 2.7: Estrutura de seleção  Figura 2.8: Estrutura de decisão  Figura 2.9: Estrutura de repetição
Figura 2.13: Exemplo da animação de um algoritmo no sistema Algorithma 98
Figura 2.14: Exemplo da animação de um algoritmo no sistema ANIMAL
Gráfico 5.7 e Gráfico 5.8: Melhor compreensão das matérias quando o professor utiliza as TIC
+7

Referências

Documentos relacionados

É um conjunto formal de regras de descrição, sintáticas e semânticas, usadas para definir um programa de computador.. A sintaxe é o conjunto de regras que definem quais

Isto acontece porque programas escritos em linguagens de programação são traduzidos para o código de máquina do computador em vez de ser diretamente executado.. Uma meta ambiciosa

Python ´ e uma linguagem de alt´ıssimo n´ıvel (VHLL – very high level language), interpretada, de c´ odigo fonte aberto e dispon´ıvel para v´ arios sistemas operacionais..

Vamos voltar ao formulário (basta clicar na sua barra de título ou pressionar a tecla F12, ou ainda, menu View, comando Toggle Form/Unit) e efetuar o mesmo procedimento para o

O aluno deve entender, neste momento, que Java é apenas uma outra linguagem de programação, mas possuindo de sintaxe diferente da linguagem vista em Programação I (Python,

Apesar de existirem diversas ferramentas computadorizadas de apoio ao ensino de programação, como foram citadas algumas, nenhuma delas oferece um processo de

Permitem inspecionar linha por linha do programa Permitem inspecionar linha por linha do programa Outra forma, freqüentemente utilizada, é comentar partes do código para

Na informática, o algoritmo é o "projeto do programa“, ou seja, antes de se fazer um programa (software) na Linguagem de Programação desejada (Pascal, Java, C, Delphi,