- Nazwa przedmiotu:
- Zasady programowania strukturalnego I
- Koordynator przedmiotu:
- dr inż. Maciej Przybylski
- Status przedmiotu:
- Obowiązkowy
- Poziom kształcenia:
- Studia I stopnia
- Program:
- Automatyka Robotyka i Informatyka Przemysłowa
- Grupa przedmiotów:
- Obowiązkowe
- Kod przedmiotu:
- ZAP
- Semestr nominalny:
- 1 / rok ak. 2019/2020
- Liczba punktów ECTS:
- 5
- Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
- 1) Liczba godzin bezpośrednich - 52 godz., w tym:
• wykład - 15 godz.
• zajęcia laboratoryjne - 30 godz.
• egzamin - 2 godz.
• konsultacje – 5 godz.
2). Praca własna: 85 godz., w tym:
• studia literaturowe - 20 godz.
• przygotowanie do zajęć laboratoryjnych - 15 godz.
• rozwiązywanie zadań domowych - 30 godz.
• przygotowanie do sprawdzianów - 10 godz.
• przygotowanie do egzaminu - 10 godz.
Razem: 137 godz. (5 ECTS)
- Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
- 2 punkty ECTS - liczba godzin bezpośrednich - 52 godz., w tym:
• wykład - 15 godz.
• zajęcia laboratoryjne - 30 godz.
• egzamin - 2 godz.
• konsultacje – 5 godz.
- Język prowadzenia zajęć:
- polski
- Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
- 3 punkty ECTS - 75 godz., w tym:
• zajęcia laboratoryjne - 30 godz.
• przygotowanie do zajęć laboratoryjnych - 15 godz.
• rozwiązywanie zadań domowych - 30 godz.
- Formy zajęć i ich wymiar w semestrze:
-
- Wykład15h
- Ćwiczenia0h
- Laboratorium30h
- Projekt0h
- Lekcje komputerowe0h
- Wymagania wstępne:
- Z wyjątkiem matematyki w zakresie szkoły średniej, przedmiot nie wymaga od studentów wiadomości z innych przedmiotów.
- Limit liczby studentów:
- 15 osób w grupie laboratoryjnej
- Cel przedmiotu:
- Uzyskana wiedza pozwala studentom na konstruowanie algorytmów i tworzenie programów komputerowych. Implementacja algorytmów w trakcie ćwiczeń i realizacja indywidualnych projektów pozwoli na nabycie praktycznych umiejętności.
- Treści kształcenia:
- ===WYKŁAD===
CZĘŚĆ 1. Podstawowe pojęcia: algorytm i program. Proste instrukcje i wyrażenia, instrukcje warunkowe. Pętle while, do-while i pętla for. Tablice jednowymiarowe i algorytmy ich sortowania. Tablice dwuwymiarowe. Uzupełnienia: zapis wyrażeń, formaty wydruku. Struktury i rekordy. Definiowanie plików tekstowych, operacje wejścia - wyjścia.
CZĘŚĆ 2. Funkcje - definicja, wywołanie, wiązanie parametrów. Zasięg zmiennych. Rekurencja - zasada działania, przykłady algorytmów. Zmienne dynamiczne i wskaźniki. Tablice dynamiczne jedno- i dwuwymiarowe. Listy dynamiczne jednokierunkowe: tworzenie, wstawianie i usuwanie elementów.
CZĘŚĆ 3. Drzewa binarne i drzewa BST. Drzewa zrównoważone (AVL i czerwono-czarne), kopce, B-drzewa, złożoność obliczeniowa. Grafy i algorytmy grafowe: Floyda, Dijkstry i Kruskala. Przegląd rodzajów i zasad konstruowania algorytmów. Modułowa budowa programów. Podstawowe pojęcia programowania obiektowego jako wprowadzenie do aplikacji okienkowych. Przykłady zadań egzaminacyjnych. ===LABORATORIUM=== Pierwsze programy w wersji konsolowej. Środowisko kompilatora (Qt Creator): edycja, kompilacja i wykonanie programu. Pętle i zaawansowane rozgałęzienia. Tablice - operacje na wektorach i tablicach dwuwymiarowych. Struktury, rekordy i tablice rekordów. Pliki tekstowe, operacje wejścia wyjścia. Funkcje - deklaracja i wywołanie, parametry formalne i aktualne. Wskaźniki i tablice dynamiczne. Listy jednokierunkowe i podstawowe operacje na nich. Funkcje rekurencyjne. SPRAWDZIAN NR 1 - opracowanie w rękopisie dwóch prostych programów (if-y, pętle, tablice, rekordy) - 45 min, opracowanie i uruchomienie trzeciego programu z tego zakresu na komputerze - 45 min. SPRAWDZIAN NR 2 - opracowanie w rękopisie dwóch programów z użyciem funkcji i list jednokierunkowych - 45 min, opracowanie i uruchomienie trzeciego programu z tego zakresu na komputerze - 45 min.
- Metody oceny:
- Wykład - egzamin złożony z części zadaniowej (18 pkt - 5 zadań wymagających napisania funkcji lub całych programów) oraz części testowej (8 pkt) z zakresu algorytmów i struktur danych.
Laboratorium - dwa sprawdziany (24 pkt) polegające na samodzielnym napisaniu i uruchomieniu programów w trakcie zajęć.
- Egzamin:
- tak
- Literatura:
- 1 Paweł Wnuk, Barbara Putz: Programowanie. Wersja w języku C/C++. OKNO PW, Warszawa 2005, dostępny online w wydziałowym systemie SKS.
2 Barbara Putz, Andrzej Putz jr, Paweł Wnuk: Algorytmy i Struktury Danych. OKNO PW, Warszawa 2008, dostępny online w wydziałowym systemie SKS.
3 Stephen Prata: Język C++. Szkoła programowania. Wydanie V. Helion 2006.
4.Jerzy Grębosz: Symfonia C++ standard. Tom I. Edition 2000 Kraków, 2005-2008
5 Niklaus Wirth: Algorytmy+struktury danych=programy. WNT 2002.
6 Piotr Wróblewski: Algorytmy, struktury danych i techniki programowania. Wyd. IV, Helion 2010.
7 Thomas H. Cormen et al.: Wprowadzenie do algorytmów. WNT 2007, PWN 2012 (nowe wydanie).
- Witryna www przedmiotu:
- http://iair.mchtr.pw.edu.pl/studenci/witryna/index.php (wydziałowy system SKS, wymaga logowania)
- Uwagi:
Efekty uczenia się
Profil ogólnoakademicki - wiedza
- Charakterystyka ZAP1_W01
- ma uporządkowaną wiedzę ogólną obejmującą kluczowe zagadnienia z zakresu konstrukcji języka strukturalnego i programowania strukturalnego w języku C/C++
Weryfikacja: sprawdzian 1, sprawdzian 2, egzamin
Powiązane charakterystyki kierunkowe:
K_W05, K_W04
Powiązane charakterystyki obszarowe:
I.P6S_WG.o, P6U_W
- Charakterystyka ZAP1_W02
- ma uporządkowaną wiedzę ogólną obejmującą zagadnienia konstruowania algorytmów dla prostych zadań przetwarzania danych
Weryfikacja: sprawdzian 1, sprawdzian 2, egzamin
Powiązane charakterystyki kierunkowe:
K_W04, K_W05
Powiązane charakterystyki obszarowe:
P6U_W, I.P6S_WG.o
- Charakterystyka ZAP1_W03
- ma uporządkowaną wiedzę ogólną z zakresu klasyfikacji algorytmów i doboru struktur danych
Weryfikacja: egzamin
Powiązane charakterystyki kierunkowe:
K_W04, K_W05
Powiązane charakterystyki obszarowe:
P6U_W, I.P6S_WG.o
Profil ogólnoakademicki - umiejętności
- Charakterystyka ZAP1_U01
- ma praktyczną umiejętność opracowania algorytmu i wynikającego stąd programu strukturalnego w języku C/C++ (z wykorzystaniem struktur dynamicznych włącznie) dla prostego zadania programistycznego
Weryfikacja: sprawdzian 1, sprawdzian 2, egzamin
Powiązane charakterystyki kierunkowe:
K_U01, K_U05, K_U09
Powiązane charakterystyki obszarowe:
P6U_U, I.P6S_UW.o, I.P6S_UK, I.P6S_UO, I.P6S_UU, III.P6S_UW.o
- Charakterystyka ZAP1_U02
- ma praktyczną umiejętność napisania i uruchomienia w trakcie 45 min. zajęć programu w środowisku C/C++ na podstawie otrzymanego zadania
Weryfikacja: sprawdzian 1, sprawdzian 2
Powiązane charakterystyki kierunkowe:
K_U01, K_U05, K_U09
Powiązane charakterystyki obszarowe:
P6U_U, I.P6S_UW.o, I.P6S_UK, I.P6S_UO, I.P6S_UU, III.P6S_UW.o
- Charakterystyka ZAP1_U03
- ma umiejętność posługiwania się kompilatorem i debuggerem
Weryfikacja: sprawdzian 1, sprawdzian 2
Powiązane charakterystyki kierunkowe:
K_U09, K_U01, K_U05
Powiązane charakterystyki obszarowe:
I.P6S_UW.o, III.P6S_UW.o, P6U_U, I.P6S_UK, I.P6S_UO, I.P6S_UU
Profil ogólnoakademicki - kompetencje społeczne
- Charakterystyka ZAP1_K01
- ma nawyk ustawicznego kształcenia się i wyszukiwania nowych informacji, aby radzić sobie z rozwiązywaniem nowych, nietypowych zadań
Weryfikacja: sprawdzian 1, sprawdzian 2, egzamin
Powiązane charakterystyki kierunkowe:
K_K01
Powiązane charakterystyki obszarowe:
P6U_K, I.P6S_KK, I.P6S_KO