Programowanie Proceduralne

W semestrze zimowym 2014/2015 wykład odbywa się w każdy poniedziałek g. 10-12 w sali 20.

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.
    • Funkcje: printf(), scanf().
    • Instrukcje sterujące: if, else, do, while
    • Przykłady programów: pole koła, silnia, 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
    • Przykłady programów: alg. Euklidesa (NWD), liczby pierwsze, wzór Herona (pole trójkąta)
    • Pliki źródłowe:
      • euclid3.c - wyznaczanie pierwiastka kwadratowego
      • pierwsza.c - sprawdzanie czy liczba jest pierwsza
      • heron2.c - pole trójkąta o bokach a, b, c
      • globalne.c - demonstracja różnic pomiędzy zm. globalnymi i lokalnymi
    • Tablice - deklaracja, indeksowanie, operator [].
    • Tablice jako argumenty funkcji.
    • Typowe przykłady użycia tablic: wczytywanie wartości, kopiowanie
    • Struktury - deklaracja, operator dostępu .
    • 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
    • Niedokładności przy obliczeniach zmiennopozycyjnych
    • Przykłady algorytmów:
      • zapis liczby w innym systemie pozycyjnym
      • miejsca zerowe równania kwadratowego
    • Pliki źródłowe:
    • Reprezentacja znaków, kod ASCII
    • Strony kodowe cp1250, latin2, UTF-8
    • Łańcuchy znakowe
    • Przykłady algorytmów:
      • wyszukiwanie wzorca metodą naiwną
      • wyszukiwania wzorca (uproszczonym) algorytmem Boyera-Moore'a
    • Pliki źródłowe:
      • strindex.c wyszukiwanie wzorca metodą naiwną i Boera-Moore'a
    • Plik i format pliku
    • Systemy plików
    • Strumienie
    • Podstawowe operacje na strumieniach w C
    • Pliki źródłowe:
    • Co było a co nie było omówione na wykładzie?
    • Wstęp do inżynierii oprogramowania.
    • Kilka dobrych rad
    • O stylu i standardach kodowania
    • Obsługa błędów w C
  • 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
Notatki do wykładu z języka C (dr N. Jankowski)

Visual Studio Express (MS Windows)
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)
Borland C++ Builder 6 Personal

Ideone - Kompilator online