Strona główna » Kursy » Kurs C++ » Biblioteki
 

Biblioteki

Wstęp

Większość rozwiązań algorytmów jest bardzo krótkich i zwykle pisze się je w jednym pliku. W przypadku dłuższych projektów kod staje się mało czytelny. Im dłuższy plik tym coraz mniejszy jest uchwyt paska do przewijania strony. Ponadto ciężko znaleźć określoną funkcję, ponieważ w trakcie pisania programu została otoczona funkcjami dotyczącymi innej części programu. Przykładowo funkcja sumująca listę liczb znalazła się pomiędzy funkcjami formatującymi ciągi znaków. Rozwiązaniem tego problemu jest utworzenie biblioteki.

Biblioteki

Definicja i cel

Bibliotekę można określić jako zbiór funkcji. Zwykle wszystkie funkcje zawarte w tej samej bibliotece dotyczą pewnej funkcjonalności programu, dlatego podany wcześniej przykład programu można by rozpisać do dwóch bibliotek: dotyczącej analizy listy liczb oraz drugą, która będzie formatować określone ciągi znaków. Utworzenie biblioteki rozwiązuje inny problem pisania wielu projektów - przenośność. Bardzo często utworzona biblioteka może zostać użyta podczas pisania innego programu. Przeniesienie biblioteki jest bardzo proste: wystarczy skopiować ją, albo ustalić jeden folder na dysku, gdzie będą przechowywanie wszystkie napisana biblioteki.

Budowa

Budowa biblioteki nie różni się niczym od normalnie napisanego programu: tworzenie funkcji, określanie ich argumentów czy ciąg instrukcji jest identyczny. W bibliotece tak samo jak w przypadku programu można dołączać inne biblioteki. Może się to okazać bardzo ważne, ponieważ jak wiadomo bez bibliotek funkcjonalność jest mocno ograniczona.

Przykładowo biblioteka

Funkcje

Jedną z prostszych bibliotek, które warto napisać jest biblioteka matematyczna. Jej funkcjonalność będzie pokrywać się z wbudowanymi operatorami arytmetycznymi języka, ale jest to bardzo dobry start. Na początek należy utworzyć nowy plik o rozszerzeniu .cpp i nazwie właściwej matematyka. Nadawana nazwa pliku może być dowolna. Należy jednak pamiętać, że najlepiej, aby w jakiś sposób opisywała swoją zawartość. W ten sposób o wiele łatwiej będzie zapamiętać co się w niej znajduje i jak nazywa się plik do dołączenia do programu.

Początkowo wewnątrz pliku matematyka.cpp dopisujemy dwie funkcje: suma() i roznica(). Obydwie przyjmują dwa argumenty całkowite typu int i zwracają wynik odpowiedniej operacji. Przykładowo biblioteka wygląda następująco:

  1. int suma(int a, int b) {
  2.   return a + b;
  3. }
  4. int roznica(int a, int b) {
  5.   return a - b;
  6. }

Plik nagłówkowy

Podczas dołączania biblioteki nie dołącza się pliku cpp, a plik nagłówkowy h, który powinien mieć taką samą nazwę właściwą co plik cpp. Wewnątrz takiego pliku nie umieszcza się funkcji razem z ich ciałami tj. ciągiem instrukcji, ale jedynie protoypy tych funkcji.

  1. int suma(int a, int b);
  2. int roznica(int a, int b);

Jak widać każdy prototyp to tylko deklaracja funkcji. Zamiast ciągu instrukcji stawia się średnik. Jego niepostawienie skutkuje wypisaniem na ekranie błędu kompilacji.

Uruchamiania programu

Przejdźmy teraz do pliku main.cpp. Napiszemy teraz funkcję main(), która będzie testować napisane funkcje. Kod będzie przedstawiał się następująco:

  1. int main () {
  2.   int a, b;
  3.   cin >> a >> b;
  4.   cout << suma(a, b) << endl;
  5.   system("pause");
  6.   return 0;
  7. }

Program nie potrafi się skompilować. Kompilator twierdzi, że w (4.) linijce funkcja suma() nie istnieje. (W różnych środowiskach błąd jest różnie zaznaczany.) Błąd można rozwiązać poprzez dołączanie do programu napisanej wcześniej biblioteki matematyka.

Dołączenie biblioteki

Dotychczas biblioteki podczas pisania programu dołączało się poprzez dyrektywę #include <[nazwa ]>. Chcąc dołączyć bibliotekę też należy użyć polecenie preprocesora #include, ale nazwę zapisać w cudzysłowach "", a na końcu dopisać rozszerzenie .h. Kod przyjmie postać:

  1. #include "matematyka.h"

Jeśli po dopisaniu dyrektywy program dalej się nie kompiluje należy upewnić się, że pliki cpp i h mają tą samą część właściwą tj. bez rozszerzenia napisy są zgodne. Ponadto obydwa pliki powinny być umieszczone w tym samym folderze co plik main.cpp.

Ponowne uruchomienie

Jeśli wszystkie kroki zostały wykonane program to po uruchomieniu programu program powinien oczekiwać wpisania dwóch liczb całkowitych. Następnie na konsole zostanie wypisana suma wprowadzonych liczb.

Zadania

Zadanie 1

Napisz bibliotekę, która będzie zawierała następujące funkcje:

Funkcje umieść w plikach matematyka2.cpp i matematyka2.h. Pamiętaj o tym gdzie co powinno się znajdować. Po napisaniu biblioteki napisz funkcję main(), która przetestuje napisane funkcje. Na podstawie wczytanych wartości program powinien wypisać na ekran wynik (a + 1) * b + 1. Wyrażenie oblicz przy pomocy funkcji zwieksz() i mnozenie(). Nie używaj żadnego operatora arytmetycznego.