Apresentação da disciplina.
Revisão dos apontadores em C. As seis situações práticas em que se usam apontadores em C.
Discussão inicial sobre a metodologia de programação baseada em TADs.
Em AED, precisaremos de explorar o uso de apontadores em C até ao limite.
Por isso, aqui vai uma revisão do tema dos apontadores:
Pretende-se um programa que implemente a parte da avaliação contínua das notas de AED.
O programa deve ser desenvolvido usando a nossa Metodologia de programação Baseada em TADs
O programa recebe as notas do projeto e dos testes dum aluno. Depois de receber o input, o programa pode dar duas respostas diferentes: (1) se o aluno foi aprovado, o programa mostra a nota final; (2) se o aluno reprovou, o programa diz isso, e neste caso não há nota.
O programa introduz o conceito de Aluno, através do TAD Aluno, que é definido neste ficheiro ".h".
Cada TAD é implementado num módulo, que é constituído por dois ficheiros, neste caso "Aluno.h" e "Aluno.c".
O nome dum TAD deve ser sempre um substantivo que começa por letra maiúscula, por exemplo "Aluno".
Este ficheiro "Aluno.h" apresenta a visão pública do TAD Aluno. Declara o tipo público Aluno, assim como todas as funções públicas.
Para se conseguir definir publicamente um TAD ao mesmo tempo escondendo a sua representação interna, usamos sempre a técnica nº 6, descrita na secção dos apontadores.
|
|
O ficheiro "Aluno.c" apresenta a visão privada do TAD Aluno e implementa este TAD.
Define a representação interna do tipo Aluno, e implementa todas as suas funções.
Neste exemplo aparecem algumas constantes privadas e algumas funções privadas, que ajudam a organizar a implementação.
Em C, as funções privadas dum módulo são anotadas com a palavra static. Ficam indisponíveis no exterior, mesmo que façamos o erro grave de divulgar os seus protótipos no ficheiro ".h".
|
|
Seria perfeitamente legítimo incluir outros ficheiros ".h", por exemplo "stdio.h" e "stdlib.h". Mas também é legítimo aproveitar o facto de "Aluno.h" já ter precisado de incluir esses ficheiros e de não valer a pena repetir a inclusão. Note que o ficheiro "Aluno.h" inclui o ficheiro "Util.h", que por sua vez inclui os ".h" dos módulos mais importantes da biblioteca do C.
Os módulos de biblioteca e os TADs são criados para poderem ser reutilizados em programas diversos. Por isso devem ser escritos com bastante ambição, seguindo algumas regras rígidas: por exemplo os protótipos nos ficheiros ".h" devem estar perfeitamente documentados, e as funções privadas nos ficheiros ".c" devem ter anotadas com static.
Pelo contrário, o programa principal não se destina a ser reutilizado. Neste caso, é normal a nossa atitude ser um pouco menos rígida: por exemplo, apesar das funções auxiliares do programa principal serem tecnicamente privadas, é comum omitir a anotação static.
|
|
O módulo mais básico da biblioteca chama-se Util e contém um pequeno número de funcionalidades básicas úteis.
O TAD aluno usa a função "semMemoria" para tratar a situação em que o resultado de malloc indica que a memória se esgotou.
|
|
|
|