Tópicos

  • Tipos de dados abstractos em C e em C++.
  • Comparação entre estruturas de dados C e estruturas de dados C++.
  • Tipos de dados abstractos e objectos. 
  • Reutilização de conceitos.

Exercício 1: Animal simples

Modele e implemente em C (ficheiros .h e .c) uma estrutura de dados que represente uma versão simples do conceito "animal". Um animal tem como características o nome ( _name), a idade ( _age) e o peso ( _weight). Implemente a função newAnimal que reserva memória suficiente para representar um animal e permite inicializar os seus campos (através dos argumentos da função). Por simplicidade, assuma que o campo _name tem comprimento fixo máximo de 16 caracteres (incluindo o terminador). Implemente também a função destroyAnimal, que liberta os recursos associados ao animal.

  1. Implemente a função de comparação - equalsAnimal -, por forma a considerar que dois animais são iguais se as suas características forem iguais.
  2. Implemente funções de acesso às variáveis de um animal: getAnimalName, getAnimalAge, getAnimalWeight (dado um animal, retornam um dos seus campos).
  3. Implemente a função printAnimal que, quando aplicada a um animal, apresenta os seus dados (use printf para apresentar cada campo do animal).
  4. Implemente um programa - main - que ilustre a utilização das funções anteriores.

[ resolução: procurar resolver antes de consultar ]

Exercício 2: Gato simples

Modele e implemente em C (ficheiros .h e .c) uma estrutura de dados que represente uma versão simples do conceito "gato". Um gato tem como características o nome ( _name), a idade ( _age), o peso ( _weight), o volume do ronronar ( _purrLevel) e o grau de suavidade do pêlo ( _fluffiness). Implemente a função newCat que reserva memória suficiente para representar um gato e permite inicializar os seus campos (através dos argumentos da função). Por simplicidade, assuma que o campo _name tem comprimento fixo máximo de 16 caracteres (incluindo o terminador). Implemente também a função destroyCat, que liberta os recursos associados ao gato.

  1. Implemente a função de comparação - equalsCat -, por forma a considerar que dois gatos são iguais se as suas características forem iguais.
  2. Implemente funções de acesso às variáveis de um gato: getCatName, getCatAge, getCatWeight, getCatPurrLevel, getCatFluffiness (dado um gato, retornam um dos seus campos).
  3. Implemente a função printCat que, quando aplicada a um gato, apresenta os seus dados (use printf para apresentar cada campo do gato).
  4. Implemente um programa - main - que ilustre a utilização das funções anteriores.

[ resolução: procurar resolver antes de consultar ]

Exercício 3: Gato menos simples

Modele e implemente em C (ficheiros .h e .c) uma estrutura de dados que represente uma nova versão do conceito "gato". Um gato é um animal caracterizado pelo volume do ronronar ( _purrLevel) e pelo grau de suavidade do pêlo ( _fluffiness). Implemente a função newCat que reserva memória suficiente para representar um gato e permite inicializar os seus campos (através dos argumentos da função). Implemente também a função destroyCat, que liberta os recursos associados ao gato.

  1. Implemente a função de comparação - equalsCat -, por forma a considerar que dois gatos são iguais se as suas características forem iguais.
  2. Implemente funções de acesso às variáveis internas de um gato: getCatName, getCatAge, getCatWeight, getCatPurrLevel, getCatFluffiness (dado um gato, retornam um dos seus campos). Note que algumas destas características são fornecidas pelo conceito "animal".
  3. Implemente a função printCat que, quando aplicada a um gato, apresenta os seus dados (use printf para apresentar cada campo do gato).
  4. Implemente um programa - main - que ilustre a utilização das funções anteriores.

Reutilize os resultados do Exercício 1 na resolução deste exercício.

[ resolução: procurar resolver antes de consultar ]

Exercício 4: Discussão

Compare e discuta os resultados obtidos em 2. e 3.