Programowanie Proceduralne

W semestrze zimowym 2019/2020 wykład odbywa się w każdy wtorek g. 8-10 w auli COK.

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

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

Ściąga dotycząca programowania w C w Visual Studio
C reference
Programming C (wikibook) (wersja polska)
Alfabetyczny spis funkcji biblioteki standardowej ANSI C (tzw. libc) w wersji C89
ANSI C for Programmers on UNIX Systems
The International Obfuscated C Code Contest

Visual Studio Express (MS Windows)
Visual Studio - wystarczy darmowe Visual Studio Community 2017 Eclipse z wtyczką CDT (GNU Linux, MS Windows)
NetBeans IDE C and C++ Development
Bloodshed Software - Dev-C++ (MS Windows) Nie rozwijany od 2005 !!
Rozwijana nieoficjalna wersja DevC++ Orvel DevC++
Code::Blocks (GNU Linux, MS Windows, Mac OS X)
Kdevelop KDE Development Environment (GNU Linux)
Anjuta DevStudio IDE for C and C++, written for GTK/GNOME (GNU Linux)
Relo (MS Windows)
Turbo C version 2.01 (MS Windows)
CodeLitle - A Free, open source, cross platform C,C++,PHP and Node.js IDE

Ideone - Kompilator online
OnlineGDB
jdoodle
Compile and Execute C Online
paiza.io Online C Compiler