Funções em linguagem C, Bibliotecas e Libc – Parte 2

Tempo de leitura: 2 minutos

Finalmente está no ar a segunda parte do conteúdo de funções e bibliotecas!

Se você ainda não assistiu a primeira parte, o post anterior está aqui neste link.

Hoje vamos aprender como utilizar algumas funções matemáticas fornecidas pela glibc através da “math.h” e algumas funções de uso geral da “stdlib.h”.

De quebra vamos aprender rapidamente o tipo de variável “double”, que nos permite representar um número “real” (com casas decimais), e veremos como pedir para o printf() formatar este tipo de valor adequadamente quando impresso na tela.

Talvez você perceba que o ritmo da aula foi meio acelerado, mas logo voltamos à nossa “programação normal” 🙂

Caso tenha curiosidade de olhar tudo o que a Glibc oferece para você usar no seu programa, vou deixar o link da documentação abaixo. Não se assuste com a quantidade de informação. Realmente é bastante coisa, mas de passo em passo a gente chega lá.

Como exercício você pode procurar no documento as funções que aprendemos hoje na aula, e talvez descobrir outras funções semelhantes.

https://www.gnu.org/software/libc/manual/html_mono/libc.html

Eu sei que olhar documentação nem sempre é um processo divertido, mas pense assim: Melhor gastar 2 minutos do seu tempo olhando e entendendo a documentação de algo que já existe do que gastar 1 hora programando algo do zero e que já havia sido feito por outra pessoa.

Para finalizar, tenho dois avisos:

  1. Nos dias 18, 19 e 20 de Agosto de 2017 estará acontecendo a primeira QtCon do Brasil em São Paulo. Farei uma palestra sobre o que aprendemos no desenvolvimento do Ubuntu Phone usando o framework Qt. A programação do evento está muito legal e terá diversas palestras interessantes. Algumas pessoas que acompanham aqui já me avisaram que comparecerão e será um prazer conversar pessoalmente com vocês.
  2. Para os alunos do curso de terminal: Neste domingo lançamos o Curso de Shell Script e alunos do curso anterior recebem 50% de desconto. Um cupom foi enviado no mesmo e-mail utilizado no cadastro do EAD. Se por qualquer motivo você não recebeu o seu, por favor entre em contato com o EAD do Diolinux. Caso ainda deseje fazer o curso anterior, ao final você também receberá o desconto para prosseguir no de Shell Script.

Um abraço e até mais.

  • Renato Oliveira

    Muito bom Tiago, parabéns pela aula.

    Você pode me tirar uma dúvida? Se eu estiver usando uma biblioteca que não existe nativamente no sistema, eu preciso instalar ela ou só colocar os arquivos .h na pasta do projeto?

    Obrigado

    • Oi Renato!

      Neste caso você precisa instalar no sistema e indicar para o compilador aonde estão os arquivos .h.
      O arquivo .h (header) somente tem um descrição das funções, mas não contém as implementações das funções em si. As implementações estão dentro de arquivos “.so” ou “.a”, que abordarei mais pra frente. Estes arquivos são fornecidos juntamente com os pacotes de bibliotecas. Dá uma olhada nesse pacote por exemplo: https://packages.debian.org/pt-br/sid/amd64/libsqlite3-dev/filelist

      Ali você encontra todos os arquivos necessários para utilizar a libsqlite3 (acesso a banco de dados sqlite) no seu programa.
      Cada um destes arquivos tem um papel no processo de compilação.

      Portanto este procedimento que mostrei nesta aula só funciona desta forma para a glibc, pois é a biblioteca padrão da linguagem C, e o GCC já sabe aonde encontrar as coisas (tanto os arquivos .h quanto os .so).

      Para se usar uma biblioteca externa é necessário entender o processo de “linking”, que também vou abordar nos próximos posts.

      Mas se quiser um atalho, neste caso da libsqlite3, bastaria incluir sqlite3.h no seu código, e executar
      $ gcc -o app $(pkg-config –cflags –libs sqlite3) arquivo.c

      E então o seu programa já poderia acessar funções de banco de dados. 🙂

      Abraço!

  • Lisandro Gomes

    Parabéns, perfeito! aula de fácil entendimento didática excelente.

    Quanto ao livro, vai sair mesmo?? hehehe

    Obrigado!!!

    • Opa! Muito obrigado, Lisandro!

      Olha, estou avaliando escrever o livro ainda 🙂

      Eu tenho vontade, agora só falta tempo hehe

      Um abraço!

  • Luis Cafori

    Fala Tiago!
    Ótima aula como sempre.
    Tenho que ver as duas ultimas novamente para “encaixar” as coias no cerebro, mas por agora estou seguindo o curso de shell, muito bom por sinal.
    Obrigado

    • Fala Luis!
      Que bom que está gostando do curso de shell! Obrigado pelo feedback.
      Isso, faça com calma o outro curso e depois siga por aqui. É mais tranquilo aprender uma coisa por vez. 🙂
      Abraço!