Lekcja 6: Tablice – Organizuj Dane Jak Prawdziwy Profesjonalista


Lekcja 6

Lekcja 6: Tablice – Organizuj Dane Jak Prawdziwy Profesjonalista


Witaj ponownie, śmiały odkrywco kodu! 👋

Dziś zanurzymy się w świat tablic — bo, bądźmy szczerzy, czasami jedna zmienna po prostu nie wystarcza. Wyobraź sobie, że jesteś na imprezie i próbujesz zapamiętać imiona wszystkich gości. Zamiast tworzyć osobną zmienną dla każdej osoby (co doprowadziłoby do kompletnego chaosu), używasz tablicy — poręcznej listy imion, pięknie uporządkowanych w jednym miejscu.

Tablica to jak twój cyfrowy notatnik, w którym możesz przechowywać mnóstwo powiązanych ze sobą danych. Czy to lista twoich ulubionych dodatków do pizzy, czy wyniki w ostatniej grze, tablice uratują ci skórę!

Chwyć kubek kawy (lub dwa, na wszelki wypadek), i ruszamy w drogę!


Czym Jest Tablica?

Tablica to w zasadzie zbiór zmiennych tego samego typu, przechowywanych w jednym ciągłym bloku pamięci. Wyobraź sobie to jako rząd szafek w szkole, gdzie każda szafka może przechować tylko jedną rzecz (na przykład plecak albo lunch). Kluczowe jest to, że wszystkie szafki są w jednym korytarzu (czyli w tablicy) i mogą przechowywać tylko ten sam typ przedmiotu.

Oto podstawowa składnia deklaracji tablicy:

typ_danych nazwa_tablicy[rozmiar_tablicy];

Załóżmy, że chcemy przechowywać wyniki 5 graczy w grze. Możemy utworzyć tablicę w taki sposób:

#include <stdio.h>

int main() {
    int wyniki[5]; // Tablica do przechowywania 5 liczb całkowitych

    // Przypisujemy wartości
    wyniki[0] = 85;
    wyniki[1] = 92;
    wyniki[2] = 78;
    wyniki[3] = 99;
    wyniki[4] = 88;

    // Drukujemy wyniki
    for(int i = 0; i < 5; i++) {
        printf("Wynik Gracza %d: %d\n", i + 1, wyniki[i]);
    }

    return 0;
}

Wyjaśnienie: Utworzyliśmy tablicę wyniki, która może przechowywać 5 liczb całkowitych. Następnie przypisaliśmy każdemu elementowi wartość i wydrukowaliśmy je za pomocą pętli for. Łatwizna, prawda?


Dostęp do Elementów Tablicy

Każdy element w tablicy ma indeks — jak numer szafki w naszym przykładzie. Pierwszy element tablicy ma indeks 0, drugi ma indeks 1, i tak dalej. Aby uzyskać dostęp do elementu lub go zmodyfikować, używasz jego indeksu.

Na przykład, jeśli chcemy zmienić wynik Gracza 3 na 80, robimy to tak:

wyniki[2] = 80; // Pamiętaj, indeksy tablic zaczynają się od 0!

A jeśli chcesz wydrukować konkretny element, na przykład wynik Gracza 4, robisz to tak:

printf("Wynik Gracza 4: %d\n", wyniki[3]);

Inicjalizacja Tablic

Nie musisz przypisywać wartości tablicy element po elemencie. Możesz zainicjować ją od razu:

int wyniki[5] = {85, 92, 78, 99, 88};

W tym przypadku deklarujemy tablicę i od razu wypełniamy ją wartościami. Możesz nawet pozwolić kompilatorowi automatycznie określić rozmiar:

int wyniki[] = {85, 92, 78, 99, 88}; // Kompilator automatycznie ustawi rozmiar na 5

Tablice i Pętle: Idealne Duo

Tablice i pętle to jak kawa i ciastko: idealne połączenie. Gdy masz kolekcję danych, pętle są doskonałym sposobem na przetwarzanie każdego elementu. Oto przykład obliczania średniej wyników naszych graczy:

#include <stdio.h>

int main() {
    int wyniki[] = {85, 92, 78, 99, 88};
    int suma = 0;
    int liczba_graczy = 5;

    for(int i = 0; i < liczba_graczy; i++) {
        suma += wyniki[i];
    }

    float srednia = suma / (float)liczba_graczy; // Obliczamy średnią
    printf("Średnia wyników: %.2f\n", srednia);

    return 0;
}

Wyjaśnienie: Używamy pętli, aby zsumować wyniki, a następnie obliczamy średnią. Zwróć uwagę, jak rzutujemy liczba_graczy na float, aby uzyskać precyzyjną średnią z miejscami po przecinku.


Tablice i Funkcje

Możesz także przekazywać tablice do funkcji! Oto prosty przykład, w którym przekazujemy naszą tablicę wyników do funkcji, aby znaleźć najwyższy wynik:

#include <stdio.h>

int znajdz_najwyzszy(int wyniki[], int liczba_graczy) {
    int najwyzszy = wyniki[0];
    for(int i = 1; i < liczba_graczy; i++) {
        if(wyniki[i] > najwyzszy) {
            najwyzszy = wyniki[i];
        }
    }
    return najwyzszy;
}

int main() {
    int wyniki[] = {85, 92, 78, 99, 88};
    int liczba_graczy = 5;
    int najwyzszy_wynik = znajdz_najwyzszy(wyniki, liczba_graczy);

    printf("Najwyższy wynik: %d\n", najwyzszy_wynik);
    return 0;
}

Wyjaśnienie: Definiujemy funkcję znajdz_najwyzszy, która przyjmuje tablicę wyników i liczbę graczy jako argumenty. Przechodzi przez tablicę i zwraca najwyższy wynik.


Wielowymiarowe Tablice: Tablice Na Sterydach!

Dotychczas pracowaliśmy z tablicami jednowymiarowymi (prosta lista). Ale co, jeśli trzeba przechowywać siatkę lub tabelę danych? Oto, gdzie przydają się wielowymiarowe tablice. Oto jak można zadeklarować i używać tablicy dwuwymiarowej (wyobraź sobie to jako tabelę):

#include <stdio.h>

int main() {
    int macierz[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    // Drukujemy macierz
    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 3; j++) {
            printf("%d ", macierz[i][j]);
        }
        printf("\n");
    }

    return 0;
}

Wyjaśnienie: Stworzyliśmy macierz o wymiarach 3x3 (tablica 2D). Pętle for przechodzą przez każdy element tablicy i drukują go w formie tabeli.


Zadanie Domowe: Rejestrator Temperatur!

Stwórz program, który:

  1. Deklaruje tablicę do przechowywania temperatur przez tydzień (7 dni).
  2. Prosi użytkownika o wprowadzenie temperatur na każdy dzień.
  3. Znajduje i wyświetla najwyższą, najniższą oraz średnią temperaturę.

Ostatnie Myśli

Teraz dodałeś tablice do swojego programistycznego arsenału, opanowując sztukę zarządzania wieloma danymi w uporządkowany sposób. Tablice to potężne narzędzie, a my dopiero zaczęliśmy odkrywać ich możliwości. Na Lekcji 7 zajmiemy się łańcuchami znaków — tak, tymi magicznymi tablicami symboli! Do zobaczenia! 🎉✨


Zobacz też