Desenvolva um TAD para um cilindro. Inclua as funções de inicializações necessárias e as operações que retornem sua altura e raio, a sua área e o seu volume.

Passo 1

O enunciado pede para criarmos um TAD (Tipo Abstrato de Dados) para representar um cilindro, fornecendo funções de inicialização e operações que retornem o raio, a altura, a área e o volume do cilindro. Na matéria de programação estruturada (por exemplo em C), vamos precisar definir uma estrutura para armazenar os atributos e depois implementar as funções que operam sobre ela.

Passo 2

Um TAD em C pode ser implementado usando uma struct para manter o encapsulamento dos dados (raio e altura) e um conjunto de funções que operam sobre essa struct, simulando métodos.

Passo 3

Primeiro, definimos a struct que representa o cilindro e uma função de inicialização que recebe o raio e a altura, armazenando-os em uma instância de Cylinder.
Em seguida, criamos as funções de acesso (getters) para o raio e a altura, que simplesmente retornam os valores armazenados na struct.

Passo 4

Para a área do cilindro, usamos a fórmula
Área = 2pi r h + 2pi r^2 Á
onde a primeira parcela é a área lateral e a segunda parcela é a área das duas bases.

Passo 5

Para o volume do cilindro, usamos a fórmula
Volume = pi r^2 h
que é o produto da área da base pelo comprimento (altura).

Passo 6

Por fim, reunimos tudo num único bloco de código em C, apresentando o TAD completo com as funções de inicialização, getters, area e volume.

Resposta

// TAD Cilindro em C
#include <math.h>
// Definição do tipo abstrato “Cylinder”
typedef struct {
double radius;
double height;
} Cylinder;
// Inicializa um cilindro com raio r e altura h
typedef struct Cylinder Cylinder;
Cylinder cylinder_init(double r, double h) {
Cylinder c;
c.radius = r;
c.height = h;
return c;
}
// Retorna o raio do cilindro
double cylinder_get_radius(const Cylinder *c) {
return c->radius;
}
// Retorna a altura do cilindro
double cylinder_get_height(const Cylinder *c) {
return c->height;
}
// Calcula a área total do cilindro
// Área = 2πrh + 2πr²
double cylinder_area(const Cylinder *c) {
return 2.0 * M_PI * c->radius * c->height
+ 2.0 * M_PI * c->radius * c->radius;
}
// Calcula o volume do cilindro
// Volume = πr²h
double cylinder_volume(const Cylinder *c) {
return M_PI * c->radius * c->radius * c->height;
}

Exercícios relacionados