Uniwersytet Mikołaja Kopernika w Toruniu - Centralny punkt logowania
Strona główna

Programowanie proceduralne

Informacje ogólne

Kod przedmiotu: 0800-PRPROC
Kod Erasmus / ISCED: (brak danych) / (0613) Tworzenie i analiza oprogramowania i aplikacji Kod ISCED - Międzynarodowa Standardowa Klasyfikacja Kształcenia (International Standard Classification of Education) została opracowana przez UNESCO.
Nazwa przedmiotu: Programowanie proceduralne
Jednostka: Wydział Fizyki, Astronomii i Informatyki Stosowanej
Grupy:
Strona przedmiotu: https://www.fizyka.umk.pl/~grochu/pp
Punkty ECTS i inne: 5.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.
Język prowadzenia: polski
Wymagania wstępne:

- wiedza z zakresu matematyki na poziomie maturalnym

- umiejętność obsługi komputera działającego w środowisku Windows lub UNIX/GNU Linux


Rodzaj przedmiotu:

przedmiot obowiązkowy

Całkowity nakład pracy studenta:

Godziny realizowane z udziałem nauczycieli ( 62 godz.):

- udział w wykładach - 30 godz.

- udział w laboratoriach – 30 godz.

- konsultacje z nauczycielem akademickim- 2 godz.


Czas poświęcony na pracę indywidualną studenta ( 78 godz.):

- przygotowanie do wykładu - 15 godz.

- przygotowanie do ćwiczeń – 15 godz.

- pisanie prac, projektów- 16 godz.

- czytanie literatury- 16 godz.

- przygotowanie do kolokwium - 16 godz.


Łącznie: 140 godz. (5 ECTS)

Efekty uczenia się - wiedza:

W1 - zna zasady programowania proceduralnego i strukturalnego oraz potrafi wymienić korzyści wynikające ze stosowania tych paradygmatów (Informatyka stosowana: K_W06, K_W10, Automatyka i robotyka: K_W04, K_W06)

W2 - zna składnię języka C: typy danych, instrukcje sterujące, operatory (Informatyka stosowana: K_W06, Automatyka i robotyka: K_W04, K_W06)

W3 - zna definicję pojęć: kompilacja, kod maszynowy, assembler, plik źródłowy, plik nagłówkowy, dyrektywy preprocesora (Informatyka stosowana: K_W05, K_W06, K_W11, Automatyka i robotyka: K_W04, K_W06)

W4 - posiada podstawową wiedzę teoretyczną oraz praktyczną dotyczącą opisu i analizy algorytmów oraz rozumie pojęcie złożoności obliczeniowej algorytmów (Informatyka stosowana: K_W04, Automatyka i robotyka:K_W04, K_W06)

W5 - posiada podstawową wiedzę dotyczącą ograniczeń dotyczących reprezentacji symboli i liczb w komputerze (nadmiar, niedomiar, precyzja obliczeń) (Informatyka stosowana: K_W03, K_W06, Automatyka i robotyka: K_W04, K_W06)

W6 - zna najczęściej wykorzystywane pliki nagłówkowe i funkcje z biblioteki standardowej C: stdio.h, stdlib.h, math.h (Informatyka stosowana: K_W06, Automatyka i robotyka: K_W04, K_W06)

W7 - zna przynajmniej jedno środowisko programistyczne zawierające kompilator języka C działające w środowisku Windows lub UNIX/Linux (Informatyka stosowana: K_W06, Automatyka i robotyka: K_W04, K_W06, K_W07)

Efekty uczenia się - umiejętności:

U1 - potrafi formować algorytmy i programować je w języku C z zachowaniem zasad programowania proceduralnego (Informatyka stosowana: K_U01, K_U08, Automatyka i robotyka: K_U11)

U2 - potrafi posługiwać się wybranymi narzędziami programistycznymi (kompilator, IDE) w celu stworzenia prostych aplikacji konsolowych oraz wyszukiwania błędów w ich działaniu (debugger) (Informatyka stosowana: K_U08, Automatyka i robotyka: K_U09, K_U11)

U3 - potrafi napisać program, który komunikuje się z użytkownikiem za pomocą terminala oraz potrafi wczytać/zapisać dane z pliku (Informatyka stosowana: K_U08, Automatyka i robotyka: K_U11)

U4 - potrafi ocenić złożoność obliczeniową typowych zagadnień algorytmicznych (Informatyka stosowana: K_U08)

U5 - potrafi samodzielnie poszerzać swoją wiedzę z zakresu programowania w oparciu o literaturę i dokumentację techniczną (Informatyka stosowana: K_U04, Automatyka i robotyka: K_U01)

Efekty uczenia się - kompetencje społeczne:

K1 - rozumie potrzebę ciągłego dokształcania powodowanego pojawianiem się nowych osiągnięć, nowych technologii, etc. rozumie potrzebę wymiany informacji w grupach osób zajmujących się informatyką, rozumie możliwości jakie daje edukacja akademicka, zna wartość innych form edukacji, tj. kursy, egzaminy/certyfikaty, warsztaty, które związane są ze szczegółowymi obszarami wiedzy wokół informatycznej (Informatyka stosowana: K_K06, Automatyka i robotyka: K_K01, K_K02)

K2 - ma świadomość skutków wadliwie działających systemów informatycznych, które mogą doprowadzić do strat moralnych i finansowych, a nawet utraty zdrowia czy zagrożenia życia (Informatyka stosowana: K_K01, Automatyka i robotyka: K_K03)

K3 - rozumie potrzebę zachowań profesjonalnych i przestrzegania zasad etyki (Informatyka stosowana: K_K02, Automatyka i robotyka: K_K03)

Metody dydaktyczne:

- wykład informacyjny

- analiza problemów (use case)

- demonstracje i symulacje komputerowe

- laboratoria

Metody dydaktyczne podające:

- wykład informacyjny (konwencjonalny)
- wykład problemowy

Metody dydaktyczne poszukujące:

- laboratoryjna
- studium przypadku

Skrócony opis:

Wykład stanowi wprowadzenie do zasad poprawnego formułowania zadań dla komputera, ze szczególnym uwzględnieniem strukturyzacji algorytmu (proceduralność) i kodu (strukturalność); stanowi także wstęp do szczegółowej nauki języków programowania. Wprowadzane pojęcia ilustrowane są przykładami programów w języku C.

Pełny opis:

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.

  1. 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

  2. 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.
  3. 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
  4. 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
  5. 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
  6. 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?
  7. 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
    • podmiary, nadmiary, NaNy;
    • niedokładności przy obliczeniach zmiennopozycyjnych
    • reprezentacja znaków, kod ASCII
    • strony kodowe cp1250, latin2, UTF-8
    • łańcuchy znakowe
  8. Pliki i strumienie.
    • Plik i format pliku
    • Systemy plików
    • Strumienie
    • Podstawowe operacje na strumieniach w C
  9. 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

ĆWICZENIA (laboratorium - pracownia komputerowa) realizują praktyczną naukę programowania w języku C i rozpoczynają się z opóźnieniem w stosunku do wykładu, w okolicach 10 godz. 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.

Literatura:

Literatura podstawowa:

  1. Brian W. Kernighan, Dennis M. Ritchie, Język ANSI C, WNT Warszawa 2000.
  2. David Griffiths, Dawn Griffiths, Rusz głową! C, Helion, Gliwice, 2013.
  3. Programowanie C, WikiBooks, 2010.
    https://upload.wikimedia.org/wikibooks/pl/6/6a/C.pdf,
    https://pl.wikibooks.org/wiki/C,

Literatura uzupełniająca:

  1. D. Harel, Rzecz o istocie informatyki. Algorytmika,WNT, Warszawa 1992.
  2. 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

Metody i kryteria oceniania:

Ocena z wykładu na podstawie egzaminu w formie testu weryfikuje osiągnięcie efektów: W1-W6, U1, U4, K1-K3

Student kierunku Informatyka Stosowana uzyskuje zaliczenie z wykładu na podstawie testu zaliczeniowego:

0-50% brak zaliczenia (NZAL)

50-100% zaliczenie (ZAL)

Student kierunku Automatyka I Robotyka uzyskuje ocenę z wykładu na podstawie egzaminu w formie testu:

0-50% ocena 2

50-60% ocena 3

60-70% ocena 3+

70-80% ocena 4

80-90% ocena 4+

90-100% ocena 5

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

Zajęcia w cyklu "Semestr zimowy 2021/22" (zakończony)

Okres: 2021-10-01 - 2022-02-20
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Marek Grochowski
Prowadzący grup: Marek Grochowski, Łukasz Pepłowski, Jakub Rydzewski, Paweł Tecmer
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Zaliczenie
Laboratorium - Zaliczenie na ocenę
Wykład - Zaliczenie

Zajęcia w cyklu "Semestr zimowy 2022/23" (zakończony)

Okres: 2022-10-01 - 2023-02-19
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Marek Grochowski
Prowadzący grup: Marek Grochowski, Łukasz Pepłowski, Paweł Tecmer
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Zaliczenie
Laboratorium - Zaliczenie na ocenę
Wykład - Zaliczenie

Zajęcia w cyklu "Semestr zimowy 2023/24" (zakończony)

Okres: 2023-10-01 - 2024-02-19
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Marek Grochowski
Prowadzący grup: Marek Grochowski, Andrzej Kędziorski, Łukasz Pepłowski, Paweł Tecmer, Katarzyna Walczewska-Szewc
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Zaliczenie
Laboratorium - Zaliczenie na ocenę
Wykład - Zaliczenie
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Mikołaja Kopernika w Toruniu.
ul. Jurija Gagarina 11, 87-100 Toruń tel: +48 56 611-40-10 https://usosweb.umk.pl/ kontakt deklaracja dostępności USOSweb 7.0.3.0-1 (2024-04-02)