Programowanie Proceduralne

W semestrze zimowym 2023/24 wykład odbywa się w poniedziałki w godz. 12-14 w Audytorium Aleksandra Jabłonskiego WFAiIS

Wykład w całości - plik będzie aktualizowany na bieżąco w trakcie postępów wykładu

    • Trochę historii komputerów i programowania.
    • Podstawowe pojęcia,
    • Języki programowania - historia, klasyfikacja.
    • Środowiska programistyczne.
    • Pliki źródłowe: hello.c
    • 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:
    • 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:
    • 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:
      • przeszukiwanie liniowe
      • przeszukiwanie liniowe z wartownikiem
      • wyznaczanie środka masy układu punktów materialnych
    • Pliki źródłowe:
      • przeszukiwanie.c - przeszukiwanie liniowe
      • przeszukiwanie2.c - przeszukiwanie liniowe z wartownikiem
      • wyznaczanie środka masy układu punktów:
        • sm1.c - punkt materialny reprezentowany jako tablica float punkt[4]
        • sm2.c - punkt materialny reprezentowany przez strukturę struct punkt
        • sm3.c - punkt materialny reprezentowany przez strukturę zawierającą tablicę struct punkt
        • sm4.c - układ punktów reprezentowany przez tablicę struktur float punkt[]
        • sm6.c - układ punktów reprezentowany przez strukturę z tablicą punktów struct chmura
    • 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:
      • jednoczesne znajdowanie elementu największego i najmniejszego w ciągu
      • wyznaczanie najczęściej występującego elementu w ciągu
    • Pliki źródłowe:
      • wyznaczanie największej i najmniejszej liczby całkowitej:
      • wyznaczanie dominanty w ciągu liczb całkowitych
    • 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:
      • zapis liczby w innym systemie pozycyjnym
    • Pliki źródłowe:
      • dec2all.c zamiana do innego systemu liczbowego
    • Reprezentacja znaków, kod ASCII
    • Łańcuchy znakowe
    • Formatowanie za pomocą printf() i scanf()
    • Przykłady algorytmów:
      • wyszukiwanie wzorca
    • Pliki źródłowe:
      • strindex.c wyszukiwanie wzorca metodą naiwną i Boera-Moore'a
    • Operatory bitowe, przesunięcie bitowe
    • Operator rzutowania
    • Operator warunkowy ?:
    • Wszystkie operatory i ich priorytety
    • Przykład: szyfrowanie XOR, maski bitowe
    • Pliki źródłowe:
      • szyfr-xor.c szyfrowanie tekstu za pomocą operacji XOR
    • Plik i format pliku
    • Systemy plików
    • Strumienie
    • Podstawowe operacje na strumieniach w C
    • 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

Warunkami uzyskania zaliczenia z wykładu są:

  • pozytywna ocena z laboratorium
  • zaliczenie testu z wynikiem > 50%

Zagadnienia do testu

  • 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