Nazwa modułu: Programowanie proceduralne Rok akademicki: 2017/2018 Kod: JFM-1-307-s Punkty ECTS: 6 Wydział: Fizyki i Informatyki Stosowanej Kierunek: Fizyka Medyczna Specjalność: Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne Język wykładowy: Polski Profil kształcenia: Ogólnoakademicki (A) Semestr: 3 Strona www: https://orion.fis.agh.edu.pl/~gawronski/ Osoba odpowiedzialna: dr hab. inż. Gawroński Przemysław (gawron@newton.ftj.agh.edu.pl) Osoby prowadzące: dr inż. Kawecka-Magiera Barbara (Barbara.Kawecka@fis.agh.edu.pl) dr hab. inż. Gawroński Przemysław (gawron@newton.ftj.agh.edu.pl) dr inż. Rachwał Bartłomiej (brachwal@agh.edu.pl) Krótka charakterystyka modułu Praktyczne przedstawienie proceduralnego paradygmatu tworzenia oprogramowania z wykorzystaniem języka C, z uwzględnieniem dynamicznego i statycznego modelu zarządzania pamięcią. Opis efektów kształcenia dla modułu zajęć Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Powiązania z EKK Sposób weryfikacji efektów kształcenia (forma zaliczeń) Wiedza M_W005 Student zna i rozumie zasady tworzenia oprogramowania z wykorzystaniem proceduralnego języka C. FM1A_W06, FM1A_W05 Udział w dyskusji M_W006 Student zna zasady zarządzania pamięcią w języku C. FM1A_W06, FM1A_W05 Udział w dyskusji Umiejętności M_U005 Student potrafi tworzyć zmienne proste i złożone statycznie oraz dynamicznie. FM1A_U08 Egzamin, Kolokwium, Wykonanie ćwiczeń laboratoryjnych M_U006 Student potrafi rozwiązać prosty problem programistyczny korzystając z instrukcji języka C oraz zdefiniowanych przez siebie funkcji. FM1A_U08 Kolokwium, Wykonanie ćwiczeń laboratoryjnych Kompetencje społeczne 1 / 5
M_K003 Student potrafi w sposób przejrzysty zaprezentować rozwiązanie problemu programistycznego. FM1A_K02 Udział w dyskusji, Wykonanie ćwiczeń laboratoryjnych Matryca efektów kształcenia w odniesieniu do form zajęć Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Forma zajęć Wykład audytoryjne laboratoryjne projektowe Konwersatori um seminaryjne praktyczne terenowe warsztatowe Inne E-learning Wiedza M_W005 M_W006 Umiejętności M_U005 M_U006 Student zna i rozumie zasady tworzenia oprogramowania z wykorzystaniem proceduralnego języka C. Student zna zasady zarządzania pamięcią w języku C. Student potrafi tworzyć zmienne proste i złożone statycznie oraz dynamicznie. Student potrafi rozwiązać prosty problem programistyczny korzystając z instrukcji języka C oraz zdefiniowanych przez siebie funkcji. + - - - - - - - - - - + - - - - - - - - - - + - + - - - - - - - - + - + - - - - - - - - Kompetencje społeczne M_K003 Student potrafi w sposób przejrzysty zaprezentować rozwiązanie problemu programistycznego. - - + - - - - - - - - Treść modułu zajęć (program wykładów i pozostałych zajęć) Wykład Wyrażenia i instrukcje Struktura programu, typy danych, stałe, zmienne lokalne, zmienne globalne, inicjalizacja zmiennych, blok kodu, zasięg widzialności zmiennej, kwalifikatory i specyfikatory typów, operatory, instrukcje warunkowe, iteracyjne, skoku, etykiety. Funkcje, wskaźniki, tablice oraz łańcuchy Definicja funkcji, przekazywanie parametrów do funkcji, zwracanie wartości przez funkcje, funkcje o zmiennej liście parametrów, funkcje rekurencyjne, deklarowanie i inicjalizowanie tablic oraz wskaźników, operator pobierania adresu, operator 2 / 5
dereferencji, arytmetyka wskaźników, Tablice znaków i operacje na łańcuchach, wskaźniki do funkcji, argumenty wiersza poleceń. Struktury Deklarowanie struktur, operatory dostępu do składowych struktury, przekazywanie struktur do funkcji, wskaźniki do struktur. Preprocesor Dyrektywy preprocesora, makrodefinicje z parametrami. Abstrakcyjne typy danych w języku C Lista jednokierunkowa, stos, kolejka, drzewo. Biblioteka standardowa Funkcje matematyczne, funkcje wejścia/wyjścia, funkcje dynamicznej alokacji pamięci. Standardy języka C Standard C89, C99, C11 Elementy inżynierii oprogramowania Kompilacja, konsolidacja, make i makefile, biblioteka statyczna, biblioteka dynamiczna laboratoryjne Wyrażenia i instrukcje - student potrafi zadeklarować i zainicjalizować zmienne całkowite, rzeczywiste, i znakowe, - student potrafi zadeklarować zmienne lokalne oraz globalne, - student potrafi utworzyć blok kodu i wykorzystać go do ograniczenia zakresu widzialności zmiennych. - student potrafi zaimplementować program z użyciem instrukcji warunkowych, iteracyjnych oraz skoku. - student potrafi skonstruować poprawne wyrażenie przy użyciu operatorów arytmetycznych, logicznych, bitowych, relacyjnych. - student potrafi określić wartość wyrażenia i na podstawie priorytetów odpowiednich operatorów. Funkcje, wskaźniki, tablice oraz łańcuchy - student potrafi zadeklarować tablicę jednowymiarową i wielowymiarową oraz łańcuch. - student potrafi zadeklarować wskaźnik oraz pobrać adres zmiennej. - student potrafi użyć wskaźnika do indeksowania tablicy. - student potrafi zdefiniować i wywołać funkcję. - student potrafi przekazać zmienną do funkcji przez wartość oraz adres. - student potrafi zwrócić wartość zmiennej przy pomocy instrukcji return. Struktury - student potrafi zadeklarować i zainicjalizować strukturę oraz wskaźnik do struktury. - student potrafi manipulować zawartością struktur przy pomocy operatorów bezpośredniego i pośredniego dostępu do pola struktury. - student potrafi przekazać do funkcji i zwrócić strukturę przez wartość i adres. Preprocesor - student potrafi wykorzystać dyrektywę 1. include, - student potrafi zdefiniować makro z parametrami, Abstrakcyjne typy danych w języku C - student potrafi zaimplementować prosty interfejs listy jednokierunkowej, 3 / 5
- student potrafi zaimplementować prosty interfejs drzewa, Biblioteka standardowa - student potrafi skompilować program z użyciem funkcji matematycznych, - student potrafi biegle operować funkcjami wejścia/wyjścia, - student potrafi używać funkcji dynamicznej alokacji pamięci, - student potrafi wykorzystać w programie funkcje biblioteczne qsort i bsearch oraz przekazywać funkcje do funkcji przy użyciu wskaźnika do funkcji. Standardy języka C - student potrafi skompilować program w standardzie C89 jak również C99. - student potrafi wykorzystać praktycznie rozszerzenia zdefiniowane w standardzie C99. Elementy inżynierii oprogramowania - student potrafi zautomatyzować proces tworzenia oprogramowania przy pomocy pliku makefile. Sposób obliczania oceny końcowej Ocena końcowa to ocena z ćwiczeń laboratoryjnych. Warunkiem koniecznym uzyskania zaliczenia z ćwiczeń laboratoryjnych jest uzyskanie 50 procent sumy punktów z trzech kolokwiów. Kolokwia oceniane są w skali od 0 do 100. Aktywność na każdych zajęciach oceniana jest w skali od 0 do 100. Pojęcie aktywności na zajęciach definiuje prowadzący zajęcia. W trakcie semetru odbędzie się 5 którtkich testów, które będą stanowić 20 procent aktywności na danych zajęciach. Pierwsze cztery zajęcia nie są oceniane. Ocena z ćwiczeń laboratoryjnych = 1/4 (Średnia z aktywności na zajęciach + Pierwsze kolokwium + Drugie kolokwium + Trzecie kolokwium). Ocena końcowa i oceny cząstkowe ustalane będą zgodnie ze skalą ocen obowiązującą w regulaminie AGH, przyporządkowującą procent opanowania materiału konkretnej ocenie. Wymagania wstępne i dodatkowe brak Zalecana literatura i pomoce naukowe 1. Stephen Prata, Język C. Szkoła programowania, ISBN 83-87150-06-1 2. Herbert Schildt, Programowanie C, ISBN 83-7243-258-9 3. Kenneth Reek, Język C wskaźniki, ISBN 83-7361-198-3 4. Kyle Loudon, Algorytmy w C, ISBN 83-7197 912-6 5. Brian Kernighan i Dennis Ritchie, Język ANSI C, ISBN 83-204-1693-0 Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu Lista publikacji, w kórych dane zostały wygenerowane przy pomocy porgramów napisanych w języku C: 1. F. Hassanibesheli, L. Hedayatifar, P. Gawronski, M. Stojkow, D. Żuchowska-Skiba, Krzysztof Kułakowski, Gain and loss of esteem, direct reciprocity and Heider balance, Physica A, 268 (2017), 334 2.. P. Gawronski, M. J. Krawczyk, K. Kułakowski, Emerging communities in networks a flow of ties, Acta Phys. Pol. B, 46, (2015), 911 3. P. Gawronski, M. Nawojczyk, and K. Kułakowski, Opinion Formation in an Open System and the Spiral of Silence, Acta Phys. Pol. A, 127, (2015), A-45 4. P. Gawroński, K. Malarz, M.J. Krawczyk, J. Malinowski, A. Kupczak, W. Sikora, K. Kułakowski, J. Wąs, and J.W. Kantelhardt, Strategies in Crowd and Crowd Structure, Acta Phys. Pol. A, 123, (2013), 522 5. A. Jarynowski, P. Gawroński, K. Kułakowski, How the competitive altruism leads to bistable homogeneous states of cooperation or defection, LNCS, 7204 (2012) 543 6. P. Gawroński, K. Kułakowski, M. Kampf and J.W. Kantelhardt, Evacuation in the Social Force Model is 4 / 5
not Stationary, Acta Phys. Pol. A, 121, (2012), B-77 7. P. Gawroński, K. Kułakowski, Crowd dynamics being stuck, Comp. Phys. Comm., 9, (2011), 1924-1927 Informacje dodatkowe Sposób i tryb wyrównania zaległości powstałych wskutek nieobecności studenta na zajęciach: laboratoryjne: Nieobecność na jednych ćwiczeniach/zajęciach wymaga od studenta samodzielnego opanowania przerabianego na tych zajęciach materiału. Nieobecność na więcej niż jednych 20% zajęć wymaga od studenta samodzielnego opanowania przerabianego na tych zajęciach materiału i jego zaliczenia w formie pisemnej w wyznaczonym przez prowadzącego terminie lecz nie później jak w ostatnim tygodniu trwania zajęć. Student, który bez usprawiedliwienia opuścił więcej niż 20% zajęć i jego cząstkowe wyniki w nauce były negatywne może zostać pozbawiony, przez prowadzącego zajęcia, możliwości wyrównania zaległości. Obecność na wykładzie: zgodnie z Regulaminem Studiów AGH. Zasady zaliczania zajęć: laboratoryjne: Podstawowym terminem uzyskania zaliczenia jest koniec zajęć w danym semestrze. Student może dwukrotnie przystąpić do poprawkowego zaliczania. Kolokwia zaliczeniowe są wspólne dla wszystkich grup a zadania przygotowywane wspólnie przez wszystkich prowadzących zajęcia laboratoryjne. Student, który bez usprawiedliwienia opuścił więcej niż 20% zajęć i jego cząstkowe wyniki w nauce były negatywne może zostać pozbawiony, przez prowadzącego zajęcia, możliwości poprawkowego zaliczania zajęć. Od takiej decyzji prowadzącego zajęcia student może się odwołać do prowadzącego przedmiot (moduł) lub Dziekana Nakład pracy studenta (bilans punktów ECTS) Forma aktywności studenta Samodzielne studiowanie tematyki zajęć Udział w wykładach Udział w ćwiczeniach laboratoryjnych Przygotowanie do zajęć Sumaryczne obciążenie pracą studenta Punkty ECTS za moduł Obciążenie studenta 30 godz 30 godz 45 godz 45 godz 150 godz 6 ECTS 5 / 5