Podczas szkolenia uczestnicy zdobędą umiejętności w zakresie programowania w języku C na poziomie zaawansowanym. Agenda obejmuje tematy takie jak operatory logiczne, wskaźniki, tablice, zarządzanie pamięcią, struktury, funkcje oraz obsługa plików i strumieni. W praktyce opanują także techniki programowania rekurencyjnych kolekcji danych.
Wprowadzenie
języki: naturalne i sztuczne
języki maszynowe
języki programowania wysokiego poziomu
uzyskiwanie kodu maszynowego: proces kompilacji
pisanie prostych programów
zmienne
wartości całkowite w życiu codziennym i w C
literały całkowitoliczbowe
Typy danych
wartości zmiennoprzecinkowe w życiu codziennym i w C
literały float
operatory arytmetyczne
priorytet i wiązanie
post- i preinkrementacja i dekrementacja
operatory typu op=
typ char i kod ASCII
literały typu char
równoważność danych int i char
operatory porównania
wykonywanie warunkowe i instrukcja if
funkcje printf() i scanf()
Kontrola przepływu
wykonywanie warunkowe: gałąź "else"
typy int i float
konwersje
rzutowanie typów i jego operatory
pętle - while, do i for
kontrola wykonania pętli - instrukcje break i continue
operatory logiczne i bitowe
Tablice
instrukcja switch: różne oblicza "if"
tablice (wektory)
sortowanie w życiu codziennym i w pamięci komputera
inicjatory
wskaźniki
adres, referencja, dereferencja i operator sizeof
wskaźnik prosty i wskaźnik na nic (NULL)
operator &
arytmetyka wskaźników
wskaźniki kontra tablice: różne formy tego samego zjawiska
korzystanie ze stringów
podstawowe funkcje do manipulacji łańcuchami znaków
Zarządzanie pamięcią i struktury
instrukcja switch: różne oblicza "if"
tablice (wektory)
sortowanie w życiu codziennym i w pamięci komputera
inicjatory
wskaźniki
adres, referencja, dereferencja i operator sizeof
wskaźnik prosty i wskaźnik na nic (NULL)
operator &
arytmetyka wskaźników
wskaźniki kontra tablice: różne formy tego samego zjawiska
korzystanie ze stringów
podstawowe funkcje do manipulacji łańcuchami znaków
Zarządzanie pamięcią i struktury
indeksowanie tablic
wykorzystanie wskaźników: zagrożenia i wady
typ void
tablice tablic i tablice wielowymiarowe
alokacja i zwalnianie pamięci: funkcje malloc() i free()
tablice wskaźników kontra tablice wielowymiarowe
struktury
deklarowanie, używanie i inicjalizowanie struktur
wskaźniki do struktur i tablic struktur
podstawy rekurencyjnych kolekcji danych
Funkcje
funkcje
jak deklarować, definiować i wywoływać funkcję
zakres zmiennych, zmienne lokalne i parametry funkcji
wskaźniki, tablice i struktury jako parametry funkcji
wynik funkcji i instrukcja return
typ void jako parametr, wskaźnik i wynik
parametryzacja funkcji main
funkcja zewnętrzna i deklarator extern
pliki nagłówkowe i ich rola
Pliki i strumienie
pliki kontra strumienie,
pliki nagłówkowe potrzebne do operacji na strumieniach,
struktura FILE,
otwieranie i zamykanie strumienia, tryby otwarcia, zmienna errno,
czytanie i zapisywanie do/z strumienia,
predefiniowane strumienie: stdin, stdout i stderr,
manipulacja strumieniem: funkcje fgetc(), fputc(), fgets() i fputs(),
surowe wejście/wyjście: funkcje fread() i fwrite().
Preprocesor i złożone deklaracje
preprocesor
#include: jak korzystać z pliku nagłówkowego
#define: proste i parametryzowane makra
dyrektywa #undef
predefiniowane symbole preprocesora
makrooperatory: # i ##
kompilacja warunkowa: dyrektywy #if i #ifdef
unikanie wielokrotnego kompilowania tego samego pliku nagłówkowego
zakresy deklaracji, klasy pamięci
typy zdefiniowane przez użytkownika
wskaźniki do funkcji
analiza i tworzenie złożonych deklaracji