Programowanie proceduralne 0800-PRPROC
Wykład stanowi wprowadzenie do sztuki programowania komputerów. Zasadnicza konstrukcja wykładu oparta jest na koncepcji "case study": problem -> algorytm jego rozwiązania -> program, rozumiany jako zapis algorytmu przy wykorzystaniu środków oferowanych przez konkretny język programowania.
- Wprowadzenie
- elementy historii: od liczenia do przetwarzania informacji
- języki programowania - historia, klasyfikacja
- warsztat programisty: środowiska programistyczne.
- podstawowe pojęcia: kompilator, interpretator, programowanie proceduralne i strukturalne
- elementy historii: od liczenia do przetwarzania informacji
- Podstawy formułowania algorytmów
- algorytmy w życiu codziennym;
- algorytmy i ich cechy.
- zadanie algorytmiczne, specyfikacja, cechy algorytmów (skończoność, określoność)
- formy zapisu algorytmów: schematy blokowe, pseudo-języki.
- podejście zstępujące i wstępujące, hierarchiczne a modularne podejście do tworzenia algorytmu
- uwagi o złożoności algorytmów.
- algorytmy w życiu codziennym;
- Narzędzie programistyczne
- środowiska programistyczne IDE, kompilatory
- systemy kontroli wersji, git, GitHub
- statyczna analiza kodu, "lintery"
- środowiska programistyczne IDE, kompilatory
- Nie za krótkie wprowadzenie do języka C
- ogólna struktura kodu: część deklaracyjna i operacyjna
- zmienne - deklaracja i inicjalizacja.
- operatory arytmetyczne i logiczne.
- funkcje: printf(), scanf().
- instrukcje sterujące: warunki i pętle (if, else, do, while)
- instrukcja skoku, czyli o istocie programowania strukturalnego
- ogólna struktura kodu: część deklaracyjna i operacyjna
- Funkcje, czyli programowanie proceduralne
- anatomia funkcji.
- deklaracja a definicja funkcji.
- parametry formalne i aktualne.
- zmienne na stosie.
- zmienne globalne i lokalne.
- funkcje a procedury.
- biblioteki standardowe
- biblioteka math.h
- rekurencja vs. iteracja
- anatomia funkcji.
- Tablice i struktury, czyli złożone typy danych
- tablice - deklaracja, indeksowanie, operator [].
- tablice jako argumenty funkcji.
- struktury - deklaracja, operator dostępu .
- typ struct jako argument funkcji
- struktura jako wartość zwracana z funkcji
- tablice - deklaracja, indeksowanie, operator [].
- Wskaźniki.
- 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?
- adresy, wskaźniki, zmienne wskaźnikowe, typ wskaźnikowy.
- Reprezentacja symboli w komputerze
- bit, bajt i kody bitowe, pojemność informacyjna ciągu bitów
- pozycyjne systemy liczbowe
- reprezentacja liczby całkowitej i rzeczywistej w komputerze
- niedomiar, nadmiar NaN, Inf
- niedokładności przy obliczeniach zmiennopozycyjnych
- reprezentacja znaków, kod ASCII
- strony kodowe cp1250, latin2, UTF-8
- łańcuchy znakowe
- bit, bajt i kody bitowe, pojemność informacyjna ciągu bitów
- Pliki i strumienie.
- Plik i format pliku
- Systemy plików
- Strumienie
- Podstawowe operacje na strumieniach w C
- Plik i format pliku
- Elementy inżynierii oprogramowania.
- o stylu i standardach kodowania, statyczna analiza kodu
- obsługa błędów w C
- testowanie programów
- cykl życia programu
- zasady dokumentowania programów
- o stylu i standardach kodowania, statyczna analiza kodu
ĆWICZENIA (laboratorium - pracownia komputerowa) realizują praktyczną naukę programowania w języku C. Laboratoria rozpoczynają się z miesięcznym opóźnieniem w stosunku do wykładu, w momencie, w którym wiedza przekazana na wykładzie będzie wystarczająca do realizacji zadań na laboratoriach. Zajęcia odbywają się w cyklu 10 bloków po 3 godziny.
Na laboratorium studenci poznają narzędzia programistyczne niezbędne w pracy programisty: środowisko programistyczne IDE, kompilator, debbuger
Całkowity nakład pracy studenta
Efekty uczenia się - wiedza
Efekty uczenia się - umiejętności
Efekty uczenia się - kompetencje społeczne
Metody dydaktyczne
Metody dydaktyczne podające
- wykład informacyjny (konwencjonalny)
Metody dydaktyczne poszukujące
- studium przypadku
Rodzaj przedmiotu
Wymagania wstępne
Koordynatorzy przedmiotu
Kryteria oceniania
Zaliczenie z wykładu na podstawie pozytywnego wyniku z laboratorium oraz zdanie testu weryfikującego osiągnięcie efektów: W1-W6, U1, U4, K1-K3
Student uzyskuje zaliczenie z wykładu na podstawie testu zaliczeniowego:
0-50% brak zaliczenia (NZAL)
50-100% zaliczenie (ZAL)
Ocena z laboratorium komputerowego na podstawie realizacji zadań laboratoryjnych, kolokwiów lub projektów zaliczeniowych, weryfikujących osiągnięcie efektów W1-W7, U1-U5, K1-K3 wyznaczana jest wg. przelicznika:
0-50% ocena 2
50-60% ocena 3
60-70% ocena 3+
70-80% ocena 4
80-90% ocena 4+
90-100% ocena 5
Literatura
Literatura podstawowa:
- Brian W. Kernighan, Dennis M. Ritchie, Język ANSI C, WNT Warszawa 2000.
- David Griffiths, Dawn Griffiths, Rusz głową! C, Helion, Gliwice, 2013.
- Programowanie C, WikiBooks, 2010.
https://upload.wikimedia.org/wikibooks/pl/6/6a/C.pdf,
https://pl.wikibooks.org/wiki/C,
Literatura uzupełniająca:
- D. Harel, Rzecz o istocie informatyki. Algorytmika,WNT, Warszawa 1992.
- N. Wirth, Algorytmy + struktury danych = programy, WNT, Warszawa 1989,
Dodatkowe materiały oraz odnośniki do stron internetowych związanych z zajęciami znajdują się pod adresem: https://www.fizyka.umk.pl/~grochu/pp
Więcej informacji
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: