Programowanie Proceduralne
W semestrze zimowym 2024/25 wykład odbywa się w poniedziałki w godz. 12-14 w Audytorium Aleksandra Jabłońskiego WFAiIS
Wykład
Slajdy do wykładu (całość 6.5MB)
Uwaga: slajdy moga być aktualizowane w trakcie postępów wykładu
Kody źródłowe prezentowane na wykładzie dostepne są w repozytorium GitHub
https://github.com/IS-UMK/pp_wyklad
-
Trochę historii komputerów i programowania.
Podstawowe pojęcia,
Języki programowania - historia, klasyfikacja.
Środowiska programistyczne.
-
-
Algorytmy i ich cechy.
Zadanie algorytmiczne, specyfikacja.
Formy zapisu algorytmów - np. schematy blokowe.
Przykłady algorytmów: alg. Euclidesa
Pliki źródłowe:
-
-
Struktura kodu.
Zmienne - deklaracja i inicjalizacja.
Najważniejsze operatory: arytmetyczne, relacji i logiczne
Funkcje: printf()
, scanf()
.
Instrukcje sterujące: if, else, while
Przykłady programów: pole koła, silnia
Komentarze w C
Standardy C (ANSI C vs. C99)
Graficzna postać kodu: wcięcia
Pliki źródłowe:
-
-
kompilator GCC i jego opcje
lintery (cppcheck), 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 vs. while
Instrukcja switch
Instrukcja goto i zasady programowania strukturalnego
continue i break
Przykłady programów: pierwiastek kwadratowy (alg. 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)) vs. iteracja
Przykłady algorytmów: alg. Euklidesa (NWD), wyznaczanie liczb pierwszych, wzór Herona (pole trójkąta), wyznaczanie silni, elementy ciągu Fibonacciego
Pliki źródłowe:
-
-
heron2.c - pole trójkąta o bokach
a
,
b
,
c
globalne.c - demonstracja różnic pomiędzy zm. globalnymi i lokalnymi
silnia2.c - wyznaczanie silni za pomocą f. rekurencyjnej
-
-
-
Tablice - deklaracja, inicjowanie, indeksowanie, operator []
.
Tablice jako argumenty funkcji.
Typowe przykłady użycia tablic: wczytywanie wartości, kopiowanie
Struktury - deklaracja, operator dostępu .
, inicjowanie struktur
Typ struct
jako argument funkcji
Struktura jako wartość zwracana z funkcji
Przykłady algorytmów:
Pliki źródłowe:
-
-
Adresy, wskaźniki, zmienne wskaźnikowe, typ wskaźnikowy.
Deklaracje zmiennych wskaźnikowych.
Operator referencji &
i dereferencji *
Wskaźniki jako argumenty funkcji.
Wskaźniki jako wartość zwracana z funkcji.
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
Limity typów liczbowych.
Niedokładności przy obliczeniach zmiennopozycyjnych
Przykłady algorytmów:
Pliki źródłowe:
dec2all.c zamiana do innego systemu liczbowego
-
-
-
Operatory bitowe, przesunięcie bitowe
Operator rzutowania
Operator warunkowy ?:
Wszystkie operatory i ich priorytety
Przykład: szyfrowanie XOR, maski bitowe
Pliki źródłowe:
-
-
Typ wyliczeniowy enum
Struktury, unie, pola bitowe
Instrukcja typedef i jej użycie w deklaracji struktur
Pliki źródłowe:
-
-
-
Co było a czego nie było na wykładzie?
Wstęp do inżynierii oprogramowania.
Kilka dobrych rad
O stylu i standardach kodowania
Obsługa błędów w C
Zaliczenie wykładu
Warunkami uzyskania zaliczenia z wykładu są:
Literatura
Brian W. Kernighan, Dennis M. Ritchie, Język ANSI C
-
Maciej M. Sysło, „Algorytmy”, WSiP, Warszawa, 2002.
David Griffiths, Dawn Griffiths, „Rusz głową! C”, Helion, Gliwice, 2013.
(prawie) wszystkie książki na temat języka C
-
Kilka przydatnych odnośników
Zintegrowane środowiska programistyczne (IDE)
Visual Studio (Windows) wystarczy darmowe Visual Studio Community z kompilatorem Visual C++
-
-
-
-
-
Kdevelop KDE Development Environment (GNU Linux)
-
CodeLitle - A Free, open source, cross platform C,C++,PHP and Node.js IDE
-
Kompilatory C Online