Você está na página 1de 2

1

ATAD 2019/20
Algoritmos e Tipos Abstratos de Dados

Enunciado de Laboratório

Linguagem de Programação C

Objetivos
▪ Consolidação da sintaxe de programas em linguagem C.
▪ Utilização dos tipos de dados composto da linguagem de programação C.
▪ Documentação Doxygen.
▪ Utilização do Debug.
▪ Utilização de Módulos.

Pré-requisitos:
▪ Conhecimento da anatomia de um programa em C.

Nível I
a) Crie um projeto no IDE;
b) Crie um módulo time onde defina o tipo Time para armazenar uma medida de
tempo composto pelos seguintes atributos: horas, minutos e segundos;
c) Adicione a função void timePrint(Time t) que imprime o parâmetro no formato
"HH:MM:ss";
d) Teste no main (obs: O processo de compilação deve fazer uso de um makefile);
e) Adicione ao módulo a função Time timeCreate(int h, int m, int s) que devolve
uma instância do tipo Time;
a) Teste no main.

Nível II
a) Adicione ao módulo a função Time timeUpdate(Time t). A semântica da função
consiste em incrementar em uma unidade de segundo o valor de tempo passado
por parâmetro;
b) Teste no main com a seguinte instância Time t={5,34,59} passada por parâmetro.

Nível III
a) Adicione ao módulo a função Time convertSecondsToTime(int s) que converte s
segundo em Time;
b) Teste no main.

1|2
Algoritmos e Tipos Abstratos de Dados 2019/20

Nível IV
a) Adicione ao módulo a função void printSecondsToDayandTime(int s) que
imprime no formato DD:HH:MM:SS, (i.e., dias, horas, minutos e segundos) a partir de
um valor s (em segundos), passado por parâmetro. Utilize o código da função
fornecida de seguida, mas que apresenta vários erros sintáticos e erros semânticos;

void printSecondsToDayandTime(int n){


int day = n / (12 * 3000)

n = n % (12 * 3000);
int hour = n / 3000;

n %= 3000;
int minutes = n / 30 ;

n %= 30;
int seconds = n

printf("%f days %d hours %d minutes %d seconds\n", seconds, day, hour, minutes);


}

b) Através do uso do Debug analise o código, encontre os erros e faça as respetivas


correções.

Nível V
a) Adicione ao módulo a função Time diffTime(Time t1, Time t2) que devolve
uma instância de Time com o cálculo da diferença de tempo entre t2 e t1;
b) Faça um programa para testar a função;
c) Utilize a ferramenta Doxygen para gerar a documentação das funções que foram
desenvolvidas. Utilize o seguinte template de cabeçalho para todas as funções que
implementou:

/**
* @brief breve descrição da função
*
* @param <nome1> descrição do parâmetro <nome1>
* @param <nome2> descrição do parâmetro <nome2>
* @param <nomen> descrição do parâmetro <nomen>
*
* @return <return1> descrição do valor de retorno <return1>
*/

2|2

Você também pode gostar