Nazwa przedmiotu:
Podstawy programowania
Koordynator przedmiotu:
Marek Niewiński
Status przedmiotu:
Obowiązkowy
Poziom kształcenia:
Studia I stopnia
Program:
Elektronika
Grupa przedmiotów:
Przedmioty techniczne
Kod przedmiotu:
PRM
Semestr nominalny:
1 / rok ak. 2018/2019
Liczba punktów ECTS:
4
Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
Język prowadzenia zajęć:
polski
Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
Formy zajęć i ich wymiar w semestrze:
  • Wykład30h
  • Ćwiczenia0h
  • Laboratorium30h
  • Projekt0h
  • Lekcje komputerowe0h
Wymagania wstępne:
Podstawowe umiejętności w zakresie obsługi komputera. Umiejętność abstrakcyjnego myślenia. Umiejętność dostosowania się do regulaminu przedmiotu.
Limit liczby studentów:
120
Cel przedmiotu:
Celem przedmiotu jest zapoznanie studentów z paradygmatem programowania strukturalnego. W ramach przedmiotu przekazywana będzie dobra praktyka programowania strukturalnego oraz umiejętność abstrakcji problemów i ich zapisu w języku programowania. W ramach laboratorium studenci nabywać będą sprawności w posługiwaniu się narzędziami wspomagającymi pracę programisty, a także ze środowiskiem systemu operacyjnego. Kontynuacją przedmiotu jest programowanie obiektowe.
Treści kształcenia:
Treść wykładu Podstawowe pojęcia: algorytm, program, informatyka, programowanie. Narzędzia wspomagające programowanie. Pojęcie typu i wartości. Pierwszy program w języku C. System operacyjny. System plików. Zasoby i ich ochrona. Procesy. Praca zdalna. Narzędzia ftp, telnet. Poczta elektroniczna. Stałe: typ i wartość. Zmienne: typ, wartość, nazwa. Typy podstawowe języka C. Niejawne rzutowanie typów. Pojecie deklaracji i definicji zmiennej. Wyrażenia i instrukcje. Operatory arytmetyczne i przyrównania. Operator podstawienia. L-wartości. Funkcja jako nazwany blok kodu. Pojęcie zmiennej lokalnej i globalnej. Przysłanianie zmiennych. Parametry formalne i aktualne: Instrukcja return. Niejawne rzutowania podczas uzgadniania parametrów formalnych i aktualnych oraz przy ustalaniu wartości zwracanej. Funkcje typu void. Bloki kodu. Instrukcja if/else. Instrukcja switch - wielowejściowy blok kodu. Instrukcja break. Pojęcie iteracji. Instrukcje pętli: for, while, do/while. Instrukcja continue. Operatory post- i pre- inkrementacji/dekrementacji. Wyodrębnianie atomów leksykalnych. Priorytety i łączność operatorów. Operatory bitowe i ich relacja z opeatorami logicznymi.Tablica jako ponumerowany zbiór wartości tego samego typu. Pojęcie wskaźnika. Tablice a wskaźniki. "Typ" łańcuchowy. Operatory referencji i dereferencji. Arytmetyka wskaźników. Rzutowanie wskaźników. Przekazywanie argumentu funkcji przez wskazanie. Przekazywanie tablicy do funkcji. Funkcja main z argumentami wywołania. Zasięg i "żywotność" zmiennych. Klasy zmiennych: static, auto, register, zmienne globalne. Deklaracja zmiennej jako extern. Dynamiczna alokacja pamięci. Funkcje malloc i free. Patologie z użyciem dynamicznego przydziału pamięci: lokalna zmienna wskaźnikowa, podstawienie nowej wartości zmiennej wskaźnikowej Sterta. Stos (kolejka LIFO). Przykład alokacji tablicy wielowymiarowej. Struktura (struct) jako zbiór wartości z dostępem przez nazwę. Wejście i wyjście w C. Pojęcie strumienia. Strumień jako kolejka FIFO. Demony. Strumienie plikowe. Tryby otwarcia: tekstowy i binarny. Synchronizacja zawartości strumienia i zawartości pliku. Preprocesor. Elementy algorytmiki na podstawie metod sortowania. Rekurencja: zastosowanie, sposób działania, ślad w pamięci operacyjnej. Przekazywanie argumentów przez zmienną w innych językach programowania. Organizacja pamięci na stosie. Mechanizmy wywołań funkcji. Zakres laboratorium Laboratorium wprowadza umiejętność samodzielnego pisania, uruchamiania, testowania i dokumentacji oprogramowania.. System plików, procesy, sposób uruchomiania programów (2h). Edycja tekstu (2h). Praca w sieci: narzędzia ftp, telnet, mail (2h). Pierwszy program (2h). Środowisko uruchomieniowe (2h). Rozdanie tematów zadań i ich analiza; zakres tematyczny: podstawowe instrukcje sterujące i dekompozycja na funkcje (2h). Implementacja programów (2h). Testowanie i odbiór programów (2h). Rozdanie tematów zadań i ich analiza; zakres tematyczny: złożone algorytmy i struktury danych (2h). Weryfikacja specyfikacji wstępnej programu (2h). Dekompozycja na funkcje i struktury danych (2h). Implementacja funkcji (2h). Podział kodu źródłowego na pliki (2h). Uruchamianie i testowanie programów (2h). Odbiór programów i dokumentacji (2h).
Metody oceny:
kolokwia i laboratoria
Egzamin:
nie
Literatura:
Wirth, N.: Algorytmy + struktury danych = programy. Kernighan, B., Ritche, D.: Język ANSI C. Silvester, P.: System operacyjny unix.
Witryna www przedmiotu:
brak
Uwagi:
przedmiot prowadzony wspólnie przez IMiO, IRiTM oraz ISE

Efekty uczenia się

Profil ogólnoakademicki - wiedza

Charakterystyka PRM_W01
znajomość języka C
Weryfikacja: kolokwia i laboratoria
Powiązane charakterystyki kierunkowe: K_W03, K_W04
Powiązane charakterystyki obszarowe:

Profil ogólnoakademicki - umiejętności

Charakterystyka PRM_U01
umiejętność pisania i uruchamiania programów
Weryfikacja: laboratoria
Powiązane charakterystyki kierunkowe: K_U18
Powiązane charakterystyki obszarowe: