• No results found

Os tipos de dados estudados no conteúdo programático da seção 6.1.4 representam os dados na sua forma mais primitiva. Esses dados primitivos são usados para abstrair atributos ou características simples de objetos, lugares, fatos, pessoas, etc. Quando o objetivo de um algoritmo envolve o processamento de dados compostos (como, por exemplo, o armazenamento de todas as informações pessoais de um cliente) é necessário que o programador construa estruturas capazes de representá-los. Essas estruturas são conhecidas como tipos abstratos de dados.

Tipos abstratos de dados podem ser compostos por valores de um mesmo tipo primitivo (como, por exemplo, vetores ou matrizes de inteiros), também conhecidos como tipos abstratos homogêneos, ou por valores de tipos diferentes (como, por exemplo, vetores ou matrizes de uma estrutura que armazena dados compostos como nome, endereço, telefone, etc.), também conhecidos como tipos abstratos heterogêneos.

O conhecimento sobre a construção dos tipos abstratos de dados homogêneos e heterogêneos é adquirido na fase inicial de aprendizado (“Vejo, Escuto e Compreendo”) do presente conteúdo programático e é primordial para a produção de algoritmos que processam informações comerciais (sistemas de informação, sistemas de apoio à decisão, entre outros) e

de algoritmos destinados a processamentos matemáticos (planilhas eletrônicas, calculadoras, entre outros).

A tabela 6.14 descreve o que fazer para que o aluno transpasse a fase inicial do conteúdo programático “Construir Tipos Abstratos de Dados”.

Tabela 6.14 – Objetivos e Habilidades da Fase “Vejo, Escuto e Compreendo” para o Objetivo Específico “Construir Tipos Abstratos de Dados”

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

abstração.

- Descrever os conceitos de tipos abstratos de dados homogêneos (Vetores e Matrizes).

Descrever os conceitos de tipos abstratos de dados heterogêneos (Vetores e Matrizes).

- Demonstrar a transferência de valores para dados abstratos homogêneos (Vetores e Matrizes). - Demonstrar a transferência de valores para dados abstratos heterogêneos (Vetores e Matrizes). - Demonstrar a entrada e saída de valores em dados abstratos homogêneos (Vetores e Matrizes). - Demonstrar a entrada e saída de valores em dados abstratos heterogêneos (Vetores e Matrizes).

- Solicitar que os alunos construam tipos abstratos de dados homogêneos para representar vetores e matrizes de inteiros, reais e caracteres com tamanho pré-definido pelo professor. - Solicitar que os alunos construam tipos abstratos de dados

heterogêneos para representar vetores e matrizes que armazenam, por exemplo, dados pessoais, dados de veículos, etc., com características e tamanho pré-definidos pelo professor.

- Solicitar que os alunos produzam algoritmos para ler e mostrar informações armazenadas em variáveis dos tipos de dados construídos nos dois exercícios propostos anteriormente.

- Solicitar que os alunos realizem cálculos aritméticos diversos nos dados numéricos das variáveis dos tipos de dados construídos nos exercícios propostos anteriormente.

- Capacidade de construir tipos abstratos de dados

homogêneos a partir de uma modelagem de dados pré- definida em um enunciado de um problema.

- Capacidade de construir tipos abstratos de dados heterogêneos a partir da modelagem de dados pré- definida em um enunciado de um problema. - Capacidade de realizar operações de entrada e saída, operações de atribuição e aritméticas em variáveis de tipos abstratos de dados homogêneos.

- Capacidade de realizar operações de entrada e saída, operações de atribuição e aritméticas em variáveis de tipos abstratos de dados heterogêneos.

O conhecimento sobre a construção de tipos abstratos de dados deve ser considerado ainda mais importante quando o programador se torna capaz de: (1) identificar as situações em que existe tal necessidade; (2) modelar os tipos abstratos necessários ao contexto em questão. A tabela 6.15 descreve o que fazer para que o aluno transpasse a fase intermediária (“Discuto, Aplico e Reflito”) do presente conteúdo programático, em que o aprendiz se capacita a realizar essas duas atividades.

Tabela 6.15 – Objetivos e Habilidades da Fase “Discuto, Aplico e Reflito” para o Objetivo Específico “Construir Tipos Abstratos de Dados”

Como Encaminhar o Aluno à

Aplicação e Análise? Como Levar o Aluno à Resposta e Valorização? Habilidade(s) a Ser(em) Adquirida(s) - Demonstrar casos reais em que o

uso de tipos abstratos de dados homogêneos é necessário (por exemplo: “Programa que lê os valores das idades de cada aluno da sala, calcule a idade média entre os alunos e mostre todos alunos cuja idade se apresenta abaixo da média”; “Programa que lê os valores das notas de matemática de cada aluno da sala, calcule a nota média e mostre todos alunos cuja nota se apresenta acima da média”). - Demonstrar casos reais em que o uso de tipos abstratos de dados heterogêneos é necessário (por exemplo: “Programa que lê os dados de um veículo e emite o CRV – Certificado de Registro do Veículo”; “Programa que lê os dados pessoais dos clientes e emite uma lista de clientes com seus respectivos endereços para produção de uma mala direta promocional de produtos”).

- Disponibilizar algoritmos produzidos por alunos para solução dos enunciados do exercício anterior e solicitar que os alunos analisem a corretude e a necessidade dos tipos criados e sugiram alterações (justificadas).

- Disponibilizar enunciados de problemas em que sejam necessários tipos abstratos de dados homogêneos e solicitar que os alunos construam algoritmos para efetuar operações de entrada e saída nesses dados. O aluno deverá ser capaz de identificar, sozinho, a estrutura básica de cada tipo abstrato necessário.

- Disponibilizar enunciados de problemas em que sejam necessários tipos abstratos de dados

heterogêneos e solicitar que os alunos construam algoritmos para efetuar operações de entrada e saída nesses dados. O aluno deverá ser capaz de identificar, sozinho, a estrutura básica de cada tipo abstrato necessário.

- Disponibilizar enunciados de problemas com tipos abstratos de dados pré-definidos (criados) pelo professor e solicitar que os alunos analisem a corretude e a necessidade dos tipos criados e sugiram

alterações (justificadas).

- Capacidade de identificar as situações em que existe a necessidade de construir tipos abstratos de dados para a solução de um problema. - Capacidade de modelar os tipos abstratos necessários ao contexto de um problema específico.

- Capacidade de analisar a corretude ou necessidade de tipos abstratos de dados previamente propostos por outros indivíduos para a solução de um problema específico.

Em algumas ocasiões, o programador pode se deparar com situações em que nenhuma informação pré-definida lhe é conferida. Ao invés, pode ser necessário realizar uma análise minuciosa do funcionamento de um sistema no intuito de identificar as abstrações de dados ideais e suas regras de processamento. Programadores aptos a realizar essas atividades se encontram na fase final de conhecimento denominada “Pratico, Faço e Crio”. A tabela 6.16 descreve o que é necessário para que o aluno transpasse essa fase.

Tabela 6.16 – Objetivos e Habilidades da Fase “Pratico, Faço e Crio” para o Objetivo Específico “Construir Tipos Abstratos de Dados”

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)

- Demonstrar, a partir de um simples enunciado de problema, como levantar informações sobre um domínio (sistema), modelar os tipos abstratos de dados necessários e construir o algoritmo que solucione o problema proposto no enunciado. - Demonstrar estruturas de dados construídas para problemas específicos e como é possível otimizá-las em relação ao consumo de recurso de memória (Por

exemplo, descrever um tipo de dado construído para armazenar um CPF que possui o tamanho de “15” caracteres. Em seguida, demonstrar que o CPF necessita de apenas “11” caracteres para ser armazenado, embora sua representação em tela aparente o tamanho de 14 caracteres – “999.999.999-99”.).

- Disponibilizar enunciados de problemas (para domínios específicos como, por exemplo: “Programa para um sistema de controle de Vídeo Locadora”) que exigem construção de tipos abstratos de dados e solicitar que os alunos construam, além dos tipos necessários, os algoritmos para manipulação destes dados de acordo com as funções dispostas nos enunciados.

- Disponibilizar algoritmos prontos para solucionar problemas

previamente definidos e solicitar que os alunos avaliem a corretude dos tipos de dados homogêneos encontrados. A avaliação deve ser justificada e as estruturas de dados consideradas incorretas devem ser reescritas corretamente.

- Disponibilizar algoritmos prontos para solucionar problemas

previamente definidos e solicitar que os alunos avaliem a corretude dos tipos de dados heterogêneos encontrados. A avaliação deve ser justificada e as estruturas de dados consideradas incorretas devem ser reescritas corretamente.

- Disponibilizar enunciados de problemas específicos com estruturas de dados já definidas e solicitar que os alunos reescrevam as estruturas no sentido de otimizá-las.

- Capacidade de construir modelos de tipos abstratos de dados para problemas ainda não vistos em sala de aula. - Capacidade de avaliar a corretude de estruturas de dados (homogêneas e/ou heterogêneas) propostas para solução de um algoritmo. - Capacidade de avaliar a possibilidade de otimização de estruturas de dados homogêneas e heterogêneas já construídas. - Capacidade de construir estruturas de dados homogêneas e heterogêneas otimizadas.

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

6.1.6 Conhecer os Tipos de Estruturas de Controle e Entender as