Co powinniśmy zapamiętać
Z danego modułu należy zapamiętać, że tablice jednowymiarowe i wielowymiarowe są kluczowym elementem zarządzania danymi w programach. Tablice jednowymiarowe pozwalają na przechowywanie zbioru elementów tego samego typu w zorganizowany sposób. Są użyteczne, gdy chcemy przechowywać sekwencję danych, takich jak liczby czy napisy. Napisy (ciągi znaków) w wielu językach są reprezentowane jako tablice jednowymiarowe typu znakowego, gdzie każdy znak odpowiada jednej komórce tablicy, a na końcu znajduje się znak null ('\0') oznaczający koniec napisu.
Tablice wielowymiarowe, szczególnie tablice dwuwymiarowe, to rozszerzenie tablic jednowymiarowych, które pozwala na przechowywanie danych w formie macierzy. Mogą one być wykorzystywane do przechowywania danych o złożonej strukturze, takich jak plansze do gier czy macierze matematyczne. Generowanie liczb losowych to częsta operacja w programach, w której stosuje się odpowiednie funkcje do losowania wartości. Jest to przydatne w symulacjach, grach i programach testowych. Formatowanie wydruków umożliwia kontrolowanie sposobu wyświetlania danych, co jest szczególnie ważne, gdy chcemy prezentować wyniki w czytelny i uporządkowany sposób.
Pliki tekstowe pozwalają na zapisywanie i odczytywanie danych z dysku w formie tekstowej. Mogą być używane do przechowywania trwałych danych, które są dostępne po zakończeniu działania programu. Operacje na plikach obejmują otwieranie plików, czytanie, zapisywanie oraz zamykanie ich po zakończeniu pracy. Dzięki plikom tekstowym możemy przechowywać dane w sposób uporządkowany, np. w formie raportów, wyników obliczeń czy logów.
Struktury to typy złożone, które pozwalają na grupowanie różnych typów danych pod jedną nazwą. Każdy element struktury (pola) może mieć różny typ, co umożliwia przechowywanie powiązanych informacji w bardziej uporządkowany sposób. Struktury są szczególnie przydatne, gdy dane mają logicznie powiązane elementy, takie jak dane o pracowniku (np. imię, wiek, wynagrodzenie). Tablice struktur pozwalają na przechowywanie wielu egzemplarzy struktury, co jest przydatne w bardziej złożonych programach.
Funkcje to bloki kodu, które można wywołać w różnych miejscach programu w celu wykonania określonej operacji. Funkcje zwracające wartość mogą przekazać wynik swojego działania z powrotem do miejsca, z którego zostały wywołane, co jest bardzo przydatne przy obliczeniach. Funkcje void, w odróżnieniu od tych zwracających wartość, wykonują określoną operację, ale nie zwracają wyniku. Funkcje mogą również przyjmować parametry, które pozwalają na przekazywanie danych do funkcji podczas jej wywołania, co umożliwia elastyczne wykorzystanie tych samych bloków kodu z różnymi danymi.
Funkcje mogą przyjmować parametry przez wartość lub przez referencję. Funkcje z referencjami jako parametrami pozwalają na bezpośrednie modyfikowanie zmiennych przekazanych do funkcji, co jest szczególnie użyteczne w programach wymagających zmiany wartości zmiennych poza zakresem funkcji. Funkcje przeciążone to takie, które mają taką samą nazwę, ale różnią się liczbą lub typem parametrów. Przeciążanie funkcji pozwala na bardziej intuicyjne programowanie, umożliwiając wywoływanie tej samej funkcji w różnych kontekstach. Funkcje rekurencyjne to funkcje, które wywołują same siebie, co pozwala na rozwiązywanie problemów w sposób iteracyjny lub podzieleniowy, takich jak obliczanie silni lub rozwiązywanie zadań związanych z drzewami.
Funkcje inline (funkcje wbudowane) to funkcje, które zamiast tradycyjnego wywołania mogą być „wstawiane” bezpośrednio w miejscu ich wywołania w celu zredukowania narzutu związanego z wywołaniem funkcji. Są one często używane w prostych operacjach, gdzie kluczowa jest optymalizacja wydajności. Dzięki funkcjom inline możemy poprawić szybkość działania programu, eliminując zbędne operacje związane z wywoływaniem funkcji.