Znowu skoncentruję się na języku C jeśli chodzi o premierowy artykuł na mojej stronce. Na podstawie wielu spostrzeżeń w internecie zauważyłem, że wiele razy był poruszany jeden istotny temat kręcący się wokół tekstów, czyli łańcuch znaków w C. Tutaj sprawa robi się dużo bardziej mozolna niż przy dzisiejszych abstrakcyjnych rozwiązaniach operujących na łańcuchach. Dowiedzcie się jaki najczęściej popełniany błąd jest przez początkujących w języku C, a na który ja sam również wpadłem kilka razy. Chodzi o literał znakowy.

Na dzisiejszy dzień malutka dawka nowej porcji wiedzy odnośnie języka C. Analizując co już napisałem a czego jeszcze nie, postanowiłem sięgnąć wstecz do dużo prostszych zagadnień i zająć się omawianiem modyfikatora funkcji "printf" i "scanf", który jest mało znany. Modyfikator to coś innego niż specyfikator. Oznacza on możliwość wywierania wpływu na formatowanie danych wyjściowych w miejsce wprowadzonego specyfikatora, który podlega zmianie na odpowiedni parametr. Cała lista specyfikatorów znajduje się tutaj zarówno jednej funkcji, jak i drugiej, a dzisiaj poruszę wątek modyfikatora w postaci znaku gwiazdki (ang. "asterisk"), który jest na tyle wyjątkowy, że oznacza on coś zupełnie innego zarówno u jednej, jak i u drugiej funkcji. Zweryfikujcie ponownie swoje twierdzenie czy rzeczywiście znacie już wszystkie modyfikatory.

Dawno nie było żadnego artykułu na temat samego programowania więc macie ode mnie kolejny wpis dotyczący tym razem prostej rzeczy, którą można wykonać na kilka sposobów zarówno klasycznie, jak i wyjątkowo. Chodzi mi o często spotykany manewr jakim jest zamiana wartości dwóch zmiennych. Zdecydowana większość posługuje się metodą polegającą na użyciu zmiennej tymczasowej (pomocniczej) do tymczasowego przechowania jednej z dwóch liczb tuż przed operacją zamiany. To jak najbardziej logiczne podejście, bo podczas zamiany trzeba gdzieś przechować na chwilę jedną z dwóch wartości. Czy rzeczywiście to jest konieczne?

Czas na sfinalizowanie tablic w języku C! Oto Waszym oczom ukazują się ostatnie akapity odnośnie różnorodności tablic. Sam jestem zaskoczony, że jest tego aż tyle. Okazuje się po tym wszystkim, że tablica w języku C nie kończy się na jednym sposobie budowania. Zaprezentowałem Wam już wiele metod, a teraz czas na tę ostatnią odmianę jaką jest literał złożony. Co prawda, to nie dotyczy stricte tablic bo w ten sposób można definiować również struktury, aczkolwiek skoro nadal przy tym jesteśmy, załatwmy to raz-dwa i zamknijmy za sobą drzwi.

Mamy sobotę więc czas wrócić do niedokończonego epizodu na temat tablic w języku C! Zakończmy te dwa artykuły o których była mowa. Teraźniejszy temat to będzie tablica o zmiennym rozmiarze (ang. "variable length array" w skrócie "VLA"), kolejny dodatek standardu C99 z 1999 roku wprowadzony przez organizację ISO. Patrząc na termin to trochę może być dziwne rozumowanie czym konkretnie jest "zmienny rozmiar". Czyżby język C oferował jakąś prototypową rewolucję w postaci tablicy dynamicznej? A może chodzi o możliwość wprowadzania do funkcji tablic o różnych rozmiarach, nie tylko sztywno ustawionych w kodzie? Rozwiejmy te wątpliwości raz na zawsze.

Na dzisiejszy wieczór mam kolejną małą porcję wiedzy. Pisałem już o tym parę razy w ostatnim czasie jednak występowało to jedynie w roli "epizodycznej". Teraz chcę to osadzić w roli głównej i opisać dokładnie ze szczegółami. Mianowicie, poświęcę artykuł na wyjaśnienie czym jest dereferencja wskaźnika, zatem o języku C raz kolejny i na pewno nie ostatni!

Słyszeliście o terminie "kompilacja warunkowa"? Działa bardzo podobnie jak zwykła instrukcja warunkowa z tą różnicą, że tłumaczy odpowiedni fragment kodu źródłowego w zależności od spełnienia warunku. Wynik warunku jest zależny od stałych preprocesora! W ten sposób staje się możliwe tworzenie o wiele bardziej przenośnych programów na różne platformy bez duplikowania kodów źródłowych! O tym, jak z tego korzystać i jak to wygląda w praktyce piszę w środku.

Gotowi na ostatnią część wyjątkowo "logicznego" rozdziału? Poprzednie części są tutaj i tutaj. Mogłem co prawda od razu to pokazać, aczkolwiek chciałem iść zgodnie z historią rozwoju tego potężnego języka (bo język C jest potężny nad wyraz) i przedstawić najpierw radzenie sobie bez typu "bool" w C przez 1999 rokiem, a potem pokazać jak wyglądała pierwsza wersja "booleana". W tym momencie chcę zademonstrować kolejny zapis a właściwie bibliotekę, która pozwala pisać tak samo jak w językach wyższej abstrakcji czyli z podziałem na "true" i "false". Biblioteka o której mowa nosi nazwę "stdbool". Dołączacie ją do swojego programu i już o nic nie musicie się martwić w tym zakresie.

Z dużym opóźnieniem po zajęciach mogę wreszcie Wam okazać dalszą część tematu rozpoczętego wczoraj. Mówiliśmy o tym, że w języku C nie było możliwości korzystania z logicznego typu danych. Mam dla Was kolejną wiadomość. Od 1999 roku wraz z wprowadzeniem standardu C99, niemożliwe stało się możliwe! "bool" w C zaczął istnieć! Bez żadnych bibliotek, wspomagaczy zewnętrznych czy haczyków! Przejdźmy do szczegółowego omówienia.

Zanim rozpoczniemy czytankę, chcę powiedzieć o małej zmianie tematów artykułów. Z powodu ponownego wtrącenia się zajęć zdalnych u mnie na uczelni, nie dam rady w chwili obecnej kontynuować materiału o tablicach. Zostały jeszcze dwa wątki, które z przyczyn ode mnie niezależnych (nie wyrobię się po prostu) przesunę na ten weekend. Aby dać sobie nieco odetchnąć, postanowiłem w takim razie rozpocząć kolejny rozdział dotyczący wartości logicznych w języku C. Opowiem Wam jak sobie radzić w niektórych sytuacjach mających związek z wyrażeniami logicznymi jeśli typ "bool" w C nie istnieje! To jest część pierwsza, czyli wyjaśnienie jaką wartością i jakim typem danych charakteryzuje się "prawda" i "fałsz" bez typu logicznego.