INF1010 - Mapas de Bits

Utilização do Ambiente Linux

  1. Abra um terminal onde você irá interagir com o sistema através de linha de comando.

  2. Na interação por linha de comando, existe o conceito de diretório corrente, que é a pasta de arquivos onde você está "posicionado''. Escreva pwd e dê enter para descobrir quem é o diretório corrente. Use o comando ls para listar o conteúdo desse diretório.

  3. Crie um diretório para seus programas de inf1010. Use o comando mkdir inf1010 para isso. Em seguida, dê cd inf1010 e volte a usar o comando pwd para verificar qual é, agora, o diretório corrente.

    Para criar um programa, abra um editor de texto (por exemplo, gedit), escreva seu programa, e salve o programa em um arquivo, por exemplo, ex1.c, na pasta inf1010. Volte ao terminal e execute o comando abaixo:
    gcc -Wall -o ex1 ex1.c
    Para executar o resultado, use:
    ./ex1 

    Obs: A opção -Wall diz ao gcc para gerar warnings (avisos) e o argumento -o o instrui a colocar o resultado da compilação, o programa executável, no arquivo cujo nome vem a seguir: ex1 Você irá usar isso durante o curso inteiro, então por favor tente entender essa linha de comando.

    Para criar um programa que tem mais de um módulo, basta escrever:
    gcc -Wall -o meuprograma modulo1.c modulo2.c

    Mapas de bits para representar conjuntos

    Operações bit a bit

    As operações bit a bit de C permitem que manipulemos bits individuais de um inteiro sem sinal (unsigned).

    Podemos utilizar esses operadores para implementar, através de um array de bits, representações de conjuntos com número de elementos limitados. Podemos representar um conjunto por um array de char ou int contendo um número suficiente de bits para que cada bit indique se o elemento correspondente está ou não no conjunto.

    Nesta aula, vamos considerar conjuntos de inteiros de 0 a 31. Vamos construir uma representação para a interface set.h. O arquivo set.c contém um esboço de implementação. A função SetShow, que mostra os elementos de um conjunto, já está implementada, para facilitar seus testes, e a função setIsMember também. Use o arquivo testset.c como base para seus testes.

    1. Implemente as funções setCreate, setDestroy e setInsert. Teste-as usando o arquivo de testes.
    2. Implemente as funções setCopy e setIsEqual. Teste-as.
    3. Implemente as funções setUnion e setIntersection. Teste-as.
    4. Implemente as funções setRemove e setDifference. Teste-as.

    Observações:

    • Crie suas funções pouco a pouco e vá testando-as.
    • Copie e cole seu código para a área de entrega de tarefas no ead independentemente do número de fçs que vc tiver implementado! Copie e cole também as linhas do terminal que mostram a execução de seus testes.