Uniwersytet Mikołaja Kopernika w Toruniu - Centralny punkt logowaniaNie jesteś zalogowany | zaloguj się
katalog przedmiotów - pomoc

Programowanie proceduralne

Informacje ogólne

Kod przedmiotu: 0800-PRPROC Kod Erasmus / ISCED: (brak danych) / (0613) Tworzenie i analiza oprogramowania i aplikacji
Nazwa przedmiotu: Programowanie proceduralne
Jednostka: Wydział Fizyki, Astronomii i Informatyki Stosowanej
Grupy:
Strona przedmiotu: http://www.fizyka.umk.pl/~grochu/pp
Punkty ECTS i inne: 5.00
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 Linix

Rodzaj przedmiotu:

przedmiot obowiązkowy

Całkowity nakład pracy studenta:

- godziny realizowane z udziałem nauczycieli: 60h (30h wykład + 30h laboratorum komputerowe),

- czas poświęcony na pracę indywidualną potrzebny do pomyślnego zaliczenia przedmiotu: 45h

- czasy wymagany do przygotowania się i uczestnictwa w procesie oceniania: 20 h

- czas wymagany do odbycia obowiązkowych praktyk: 0 h

Efekty uczenia się - wiedza:

W1 - rozumie zasady programowania proceduralnego i strukturalnego oraz potrafi wymienić korzyści wynikające ze stosowania tych paradygmatów (K_W03)

W2 - zna składnię języka C: typy danych, instrukcje sterujące, operatory (K_W02)

W3 - zna definicję pojęć: kompilacja, kod maszynowy, assembler, plik źródłowy, plik nagłówkowy, dyrektywy preprocesora (K_W02)

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 (K_W02)

W5 - posiada podstawową wiedzę dotyczącą ograniczeń dotyczących reprezentacji symboli i liczb w komputerze (nadmiar, niedomiar, precyzja obliczeń) (K_W02)

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

W7 - zna przynajmniej jedno środowisko programistyczne zawierające kompilator języka C działające w środowisku Windows lub UNIX/Linux (K_W06)

Efekty uczenia się - umiejętności:

U1 - potrafi formować algorytmy i programować je w języku C z zachowaniem zasad programowania proceduralnego (K_U01, K_U04)

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 (debbuger) (K_U04)

U3 - potrafi napisać program, który komunikuje się z użytkownikiem za pomocą terminala oraz potrafi wczytać/zapisać dane z pliku (K_U04)

U4 - potrafi ocenić złożoność obliczeniową typowych zagadnień algorytmicznych (K_U09)

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 (K_K01)


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 (K_K02)


K3 - rozumie potrzebę zachowań profesjonalnych i przestrzegania zasad etyki (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) prowadzone są w języku C w oparciu o środowisko programistyczne Visual Studio. Jest bardzo wskazane, żeby zajęcia laboratoryjne startowały nieco później niż wykład i były realizowane jako np. 10 bloków po 3 godziny

Literatura:

  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. D. Harel, Rzecz o istocie informatyki. Algorytmika,WNT, Warszawa 1992.
  4. 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: http://www.fizyka.umk.pl/~grochu/pp

Metody i kryteria oceniania:

Zaliczenie wykładu odbywa się na podstawie testu.

Ocena końcowa z laboratorium wystawiana jest na podstawie kolokwiów, sprawdzianów bądź wykonanego projektu. Na ocenę końcową dodatkowo mają wpływ frekwencja oraz aktywność na zajęciach.

Test zaliczeniowy z wykładu weryfikuje osiągnięcie efektów: W1, W2, W3, W4, W5, W6, U4

Kolokwia, sprawdziany oraz projekt sprawdzają osiągnięcie efektów W1-W7, U1-U4

Zajęcia w cyklu "Semestr zimowy 2017/18" (zakończony)

Okres: 2017-10-01 - 2018-02-25
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Marek Grochowski
Prowadzący grup: Marek Grochowski, Miriam Kosik, Miłosz Michalski, Łukasz Pepłowski, Piotr Różański, Rafał Sarniak
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Zaliczenie
Laboratorium - Zaliczenie na ocenę
Wykład - Zaliczenie

Zajęcia w cyklu "Semestr zimowy 2018/19" (zakończony)

Okres: 2018-10-01 - 2019-02-24
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Marek Grochowski
Prowadzący grup: Marek Grochowski, Miłosz Michalski, Łukasz Pepłowski, Piotr Różański, Jakub Rydzewski
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Zaliczenie
Laboratorium - Zaliczenie na ocenę
Wykład - Zaliczenie

Zajęcia w cyklu "Semestr zimowy 2019/20" (zakończony)

Okres: 2019-10-01 - 2020-02-28
Wybrany podział planu:


powiększ
zobacz plan zajęć
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, Tomasz Piotrowski, 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 2020/21" (zakończony)

Okres: 2020-10-01 - 2021-02-21
Wybrany podział planu:


powiększ
zobacz plan zajęć
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
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Mikołaja Kopernika w Toruniu.