Slajdy do wykładu (całość: 6,5 MB)
Uwaga: slajdy mogą być aktualizowane w trakcie wykładu. Data ostatniej aktualizacji znajduje się na pierwszej stronie slajdów.
Kody źródłowe prezentowane na wykładzie są dostępne w repozytorium GitHub:\\n*** End Patch
https://github.com/IS-UMK/pp_wyklad
-
Trochę historii komputerów i programowania.
Podstawowe pojęcia.
Języki programowania - historia i klasyfikacja.
Środowiska programistyczne.
-
-
Algorytmy i ich cechy.
Zadanie algorytmiczne, specyfikacja.
Formy zapisu algorytmów, np. schematy blokowe.
Przykład algorytmu: algorytm Euklidesa.
Pliki źródłowe:
-
-
Struktura kodu.
Zmienne - deklaracja i inicjalizacja.
Najważniejsze operatory: arytmetyczne, relacyjne i logiczne.
Funkcje: printf(), scanf().
Instrukcje sterujące: if, else, while.
Przykłady programów: obliczanie pola koła i silni.
Komentarze w języku C.
Standardy języka C (ANSI C i C99).
Graficzna postać kodu - wcięcia.
Pliki źródłowe:
-
-
Kompilator GCC i jego opcje.
Lintery (cppcheck) i narzędzia poprawiające czytelność kodu (astyle).
Systemy kontroli wersji (Git, GitHub).
-
Powtórzenie: if, while
Pętla sterowana z dołu: do while
Pętla for a while.
Instrukcja switch.
Instrukcja goto i zasady programowania strukturalnego.
Instrukcje continue i break.
Przykład programu: obliczanie pierwiastka kwadratowego (algorytm Herona).
Pliki źródłowe:
-
-
Anatomia funkcji.
Deklaracje i definicje funkcji.
Parametry formalne i aktualne.
Zmienne na stosie.
Zmienne globalne i lokalne.
Funkcje i procedury.
Biblioteki standardowe.
Biblioteka math.h
Rekurencja (rekurencja (rekurencja)) a iteracja.
Przykłady algorytmów: algorytm Euklidesa (NWD), sprawdzanie, czy liczba jest pierwsza, wzór Herona (obliczanie pola trójkąta), obliczanie silni i wyznaczanie elementów ciągu Fibonacciego.
Pliki źródłowe:
euclid3.c - wyznaczanie największego wspólnego dzielnika
-
heron2.c - obliczanie pola trójkąta o bokach
a,
b i
c
globalne.c - demonstracja różnic między zmiennymi globalnymi i lokalnymi
silnia2.c - wyznaczanie silni za pomocą funkcji rekurencyjnej
-
-
-
Tablice - deklaracja, inicjalizacja, indeksowanie i operator [].
Tablice jako argumenty funkcji.
Typowe przykłady użycia tablic: wczytywanie i kopiowanie wartości.
Struktury - deklaracja, inicjalizacja i operator dostępu ..
Typ struct jako argument funkcji.
Struktura jako wartość zwracana przez funkcję.
Przykłady algorytmów:
Pliki źródłowe:
-
-
Adresy, wskaźniki, zmienne wskaźnikowe i typ wskaźnikowy.
Deklaracje zmiennych wskaźnikowych.
Operatory pobrania adresu & i dereferencji *.
Wskaźniki jako argumenty funkcji.
Wskaźniki jako wartości zwracane przez funkcję.
Co wspólnego mają wskaźniki i tablice?
Przykłady algorytmów:
Pliki źródłowe:
-
-
Bit, bajt i kody bitowe
Pozycyjne systemy liczbowe
Reprezentacja liczby całkowitej i rzeczywistej w komputerze
Zakresy typów liczbowych.
Niedokładności obliczeń zmiennoprzecinkowych.
Przykład algorytmu:
Pliki źródłowe:
dec2all.c - zamiana liczby na zapis w innym systemie liczbowym
-
-
-
Operatory bitowe i przesunięcia bitowe.
Operator rzutowania.
Operator warunkowy ?:.
Wszystkie operatory i ich priorytety.
Przykład: szyfrowanie za pomocą XOR i maski bitowe.
Pliki źródłowe:
szyfr-xor.c - szyfrowanie tekstu za pomocą operacji XOR
-
-
-