• No results found

Antes de escrever um algoritmo para a solução de um problema em particular, é essencial que o programador possua uma compreensão profunda do problema e utilize uma abordagem cuidadosamente planejada para resolvê-lo (DEITEL E DEITEL, 2001). Esta abordagem planejada é influenciada pelo conhecimento do programador a respeito dos recursos (instruções e suas combinações) disponíveis em um paradigma de programação. Como exemplo, ao analisar o paradigma estruturado (ou imperativo) de programação percebem-se três tipos de instruções que regem o fluxo de execução de um algoritmo (o tipo sequencial, o condicional e o de repetição). Assim, apenas esses três tipos de instruções (em termos de fluxo de execução) podem ser utilizados para se construir programas estruturados. Através da combinação de instruções desses três tipos, é possível desenvolver algoritmos para a maioria dos problemas passíveis de solução computacional.

O primeiro tipo de instrução (o sequencial) configura-se como o mais comum de todos (inclusive, todos os algoritmos construídos pelos alunos até o momento usaram, exclusivamente, instruções do tipo sequencial). As instruções desse tipo são executadas sequencialmente na ordem em que foram escritas no algoritmo, enquanto as instruções condicionais e de repetição permitem alterar o fluxo de controle sequencial para outro fluxo determinado de acordo com a instrução utilizada.

Até então foram propostos diversos exercícios práticos para a solução de problemas simples. É importante destacar que o nível de complexidade dos algoritmos solicitados irá aumentar consideravelmente deste ponto em diante. Por este motivo, definiu-se este como o momento ideal para introdução da técnica de Programação em Duplas. É importante que o professor defina as regras para o trabalho em duplas que será implantado na disciplina. Os alunos devem ler artigos propostos pelo professor sobre Programação em Duplas e o texto “Como Agir Durante o Emparelhamento de Programadores?” – disponível no Apêndice C.

A presente seção descreve o que deve ser feito para que o aluno transpasse a fase inicial (“Vejo, Escuto e Compreendo”), intermediária (“Discuto, Aplico e Reflito”) e final

(“Pratico, Faço e Crio”) do conteúdo programático “Conhecer os Tipos de Estruturas de Controle e Entender as Estruturas de Sequência” (Tabelas 5.17, 5.18 e 5.19 respectivamente).

Tabela 6.17 – Objetivos e Habilidades da Fase “Vejo, Escuto e Compreendo” para o Objetivo Específico “Conhecer os Tipos de Estruturas de Controle e Entender as Estruturas de Sequência”

Como Encaminhar o Aluno ao

Conhecimento e Compreensão? Como Levar o Aluno ao Acolhimento? Habilidade(s) a Ser(em) Adquirida(s) - Descrever os conceitos de

estruturas de controle. - Descrever os conceitos de estruturas de controle sequenciais. - Descrever o conceito de blocos de instruções (escopo).

- Descrever os conceitos de fluxograma e seus símbolos. - Demonstrar a construção de fluxogramas sequenciais.

- Solicitar que os alunos (em duplas) discutam e descrevam o máximo de instruções já utilizadas que são categorizadas como estruturas sequenciais.

- Solicitar que os alunos (em duplas) construam algoritmos como solução de uma lista de problemas (como, por exemplo, problemas de matemática).

- Solicitar que os alunos (em duplas) construam fluxogramas para uma lista de enunciados de problemas.

- Capacidade de relacionar o tipo de estrutura sequencial com todas as instruções já vistas até o presente momento. - Capacidade de compreender que existem situações que irão exigir mudança no fluxo de controle de execução do algoritmo.

- Capacidade de compreender e construir fluxogramas.

Tabela 6.18 – Objetivos e Habilidades da Fase “Discuto, Aplico e Reflito” para o Objetivo Específico “Conhecer os Tipos de Estruturas de Controle e Entender as Estruturas de Sequência”

Como Encaminhar o Aluno à

Aplicação e Análise? Como Levar o Aluno à Resposta e Valorização? Habilidade(s) a Ser(em) Adquirida(s) - Descrever situações em que um

bloco de instruções pode ser substituído por uma instrução ou bloco de instruções mais resumido (independente de eficiência). - Descrever macro atividades (por exemplo, atividades de leitura de dados, atividades de cálculo de uma soma, atividades de exibição de dados processados) e os blocos de instruções que comumente dão forma a elas.

- Disponibilizar uma lista com diversos enunciados de problemas (que necessitam única e

exclusivamente de instruções sequenciais) e solicitar que os alunos (em duplas) construam algoritmos para resolvê-los.

- Disponibilizar algoritmos prontos para a solução de problemas específicos e solicitar que os alunos (em duplas) identifiquem os possíveis escopos (blocos de instruções dependentes ou complementares).

- Disponibilizar algoritmos semiprontos para a solução de problemas específicos e solicitar que os alunos (em duplas) os completem de acordo com o enunciado de cada problema.

- Capacidade de identificar blocos de instruções que são utilizados na maioria dos algoritmos (por exemplo, instrução de escrita na tela solicitando digitação seguida de instrução de leitura). - Capacidade de separar um algoritmo em diversos blocos de instruções que formam macro atividades distintas (por exemplo, blocos de instruções que culminam na entrada de dados, blocos de instruções que culminam em algum processamento matemático nos dados, blocos de instruções que culminam em saída de dados, etc.).

conjunto de instruções que devem formar um escopo específico para resolver uma determinada tarefa.

Tabela 6.19 – Objetivos e Habilidades da Fase “Pratico, Faço e Crio” para o Objetivo Específico “Conhecer os Tipos de Estruturas de Controle e Entender as Estruturas de Sequência”

Como Encaminhar o Aluno à

Síntese e Avaliação? Organização e Caracterização por Como Levar o Aluno à um Valor ou Complexo de

Valores?

Habilidade(s) a Ser(em) Adquirida(s)

- Comparar blocos de instruções com outros blocos equivalentes. - Descrever situações em que um bloco de instruções pode ser substituído por uma instrução ou bloco de instruções mais eficientes.

- Solicitar que os alunos (em duplas) desenvolvam algoritmos para problemas mais complexos não demonstrados em sala de aula até o presente momento.

- Disponibilizar algoritmos prontos e solicitar que os alunos (em duplas) os avaliem em termos de eficiência e sugiram melhorias (quando

possível).

- Disponibilizar algoritmos prontos para a solução de um mesmo problema e solicitar que os alunos (em duplas) elaborem um resumo de comparação entre os algoritmos em termos de eficiência de código.

- Capacidade de avaliar que conjuntos de instruções são mais eficientes que outros. - Capacidade de propor melhorias em conjuntos de instruções que formam macro atividades.

- Capacidade de desenvolver algoritmos para problemas ainda não demonstrados em sala de aula.

Exemplos de exercícios para este conteúdo programático podem ser encontrados no Apêndice A.6.