Programowanie obiektowe Informatyka Stosowana Inżynieria Obliczeniowa - Zajęcia 1 zasady zaliczenia przedmiotu Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica Kraków, rok akademicki 2016/2017
Prowadzący: mgr inż. Grzegorz Smyk KATEDRA INFORMATYKI STOSOWANEJ I MODELOWANIA PRACOWNIA MODELOWANIA SYMULACJI PROCESÓW www.isim.agh.edu.pl B5 p. 605 grzegorz.smyk@agh.edu.pl www.galaxy.agh.edu.pl/~gsmyk/ http://skos.agh.edu.pl
1 godzina zegarowa dla wszystkich poniedziałek 14:00 15:00
Zajęcia PROGRAMOWANIE OBIEKTOWE Typ: LABORATORIA Podział na grupy: GR. 1: ŚR. 15:15 16:45 B5*601 GR. 3: PN. 08:00 9:30 B5*601 GR. 5: WT. 13:15 14:45 B5*601 GR. 7: WT. 16:45-18:15 B5*601
Egzamin z przedmiotu Prowadzący: Prof. dr hab. inż. Mirosław Głowacki WYDZIAŁ INŻYNIERII METALI I INFORMATYKI PRZEMYSŁOWEJ KATEDRA INFORMATYKI STOSOWANEJ I MODELOWANIA PRACOWNIA INFORMATYKI HTTP://HOME.AGH.EDU.PL/~IP/INDEX.PHP?LANG=PL&GO=3&ID=2 Zasady przystąpienia: - pozytywne zaliczenie ćwiczeń laboratoryjnych
Polecane materiały Materiały online: http://www.cplusplus.com http://cpp0x.pl/ Literatura Symfonia C++ Tom II, III - Jerzy Grębosz Pasja C++ Jerzy Grębosz Thinking in C++ Bruce Eckel
Zasady zaliczenia laboratoria Obecność na zajęciach obecność na zajęciach jest obowiązkowa, możliwa jest jedna nieobecności nieusprawiedliwione, nieobecność nieusprawiedliwiona wymaga pisemnego zwolnienia lekarskiego na następnych zajęciach, STUDENT, MUSI MIEĆ CO NAJMNIEJ 80% OBECNOŚCI USPRAWIEDLIWIONYCH W SKALI SEMESTRU
Zasady zaliczenia laboratoria Praca na laboratoriach studentów obejmuje harmonogram przedstawiony przez prowadzącego, student jest oceniany indywidualnie na każdych zajęciach, student musi przygotować pisemny konspekt na każde zajęcia odnośnie omawianego zagadnienia, ocena końcowa jest procentowym wynikiem punktów uzyskanych przez studenta z wagami 1/3 zajęcia, 2/3 kolokwia, uzyskane oceny są przekazywane prowadzącemu przedmiot 0 BRAK PRZYGOTOWANIA DO ZAJĘĆ +1 PRZYGOTOWANIE TYLKO KONSPEKTU +2 PRACA NA ZAJĘCIACH NA PODSTAWIE KONSPEKTU
Kolokwia Zasady zaliczenia laboratoria w czasie semestru odbędą się trzy kolokwia w czasie wykładu, niezaliczone kolokwia nie będą poprawiane w trakcie semestru, kolokwia liczone są podwójnie do oceny końcowej z laboratoriów, możliwe jest dodatkowe kolokwium w trakcie ćwiczeń, ocena końcowa jest pozytywna, jeśli średnia jest równa lub większa od 3.0. Student, który uzyskał ocenę średnią niższą niż 3.0 może w czasie sesji dwukrotnie przystąpić do kolokwium poprawkowego (kolokwium poprawkowe obejmuje materiał z całego semestru), pod warunkiem, ze uczęszczał na zajęcia.
Zasady zaliczenia laboratoria Laboratoria Zakaz spożywania jedzenia oraz napojów, Kurtki, płaszcze oraz parasole zostawiamy w szatni na parterze budynku B5 (jeśli szatnia jest otwarta), Dopuszczalne spóźnienie wynosi maksymalnie 15 min, Zakaz modyfikowania istniejącej sieci Ethernet, Zakaz instalowania oprogramowania niezwiązanego z tematyką zajeć, Możliwa jest praca na własnym sprzęcie komputerowym uwzględniając w/w ograniczenie (można korzystać tylko z wolnych gniazdek zasilających), W trakcie semestru korzystamy z tego samego stanowiska komputerowego (wyjątkiem są grupy powyżej 15 osób), Wszelkie usterki i nieprawidłowości w funkcjonowaniu sprzętu i oprogramowania natychmiast zgłaszamy prowadzącemu.
MetalSoft - informatyczne koło naukowe SEKCJA INFORMATYKI I miejsce - Paweł Wal Temat: Działalność FRONTALNY SOLWER METODY koła: ELEMENTÓW SKOŃCZONYCH DLA HETEROGENICZNYCH ARCHITEKTUR SPRZĘTOWYCH Jak do nas dotrzeć: Opiekun: dr inż. Łukasz Rauch III miejsce - Sławomir Kwaśniewski Temat: OPRACOWANIE ALGORYTMU REPREZENTACJI GEOMETRII Z WYKORZYSTANIEM METODY NURBS NA POTRZEBY ANALIZY IZOGEOMETRYCZNEJ Opiekun: mgr inż. Daniel Bachniak Wyróżnienie - Marcin Gulik Temat: OPEN AGH E-PODRĘCZNIKI OTWARTE CYFROWE PODRĘCZNIKI AKADEMICKIE Opiekun: prof. dr hab. inż. Jan Kusiak Sekcja Metaloznawstwa i Inżynierii Powierzchni III miejsce - Ivan Milenin Temat: OCENA MOŻLIWOŚCI ZASTOSOWANIA TEORII STEROWANIA DO MODELOWANIA KINETYKI PRZEMIANY AUSTENIT-FERRYT Opiekun: prof. dr hab. inż. Maciej Pietrzyk Zacieśnianie więzów współpracy z pracownikami możesz wysłać naukowymi ms@agh.edu.pl katedry ISIM do nas. Stworzenie grup projektowych SEKCJA studentów PRZERÓBKI PLASTYCZNEJ różnych III miejsce - Kamil Sikora przyjść roczników, na zebranie w celu rozwiązywania koła Temat: OPRACOWANIE złożonych MODELU TARCIAW OPARCIU O ANALIZĘ ODWROTNĄ PRÓBY SPĘCZANIA PIERŚCIENIA DLA problemów SPOTKANIA naukowych. WYBRANYCH i STOPÓW WYJAZDY (informacje Podnoszenie odnośnie specjalistycznych terminów Opiekun: spotkań kwalifikacji dr inż. Tomasz znajdują Rec się w gablotce Koła: zawodowych B-4 1 piętro poprzez obok nawiązanie sali 101 kontaktów lub na stronie z :) ) przedsiębiorstwami różnych sektorów. Wyróżnienie - Krzysztof Bednarski, Piotr Rogowski Temat: PROPOZYCJA KOMPUTEROWEGO SYSTEMU WSPOMAGAJĄCEGO PROJEKTOWANIE TECHNOLOGII WALCOWANIA BLACH NA GORĄCO Opiekun: prof. dr hab. inż. Maciej Pietrzyk zapytać się o nas w laboratoriach komputerowych (B-4 s.101 i B-5 s.601)
Zajęcia I zaczynamy! Nazwa projektu: IS_GRXX_ImięNazwisko File -> New -> Project Visual C++ -> Empty Procject Dodajemy plik: main.cpp
Zajęcia I Hello World! Nagłówek: Standard Input/Output Library Typ zwracany przez funkcję #include <iostream> using namespace std; Przestrzeń nazw Zakres funkcji int main() { Funkcja main cout<< Hello World! <<endl; } Console-output stream Znak nowej linii oraz czyszczenie strumienia
Czysty kod! Robert C. Martin
Dobre nazwy w kodzie przedstawiają intencje bez mylących i fałszywych wskazówek bez zbyt subtelnych różnic są spójne i dobrze się sortują w IDE można je wymówić! łatwo je wyszukać bez kodowania typów bez przedrostków składników bez kodowania interfejsów bez jedno-literówek nazwy klas mają rzeczowniki nazwy metod mają czasowniki zamiast przeciążonych konstruktorów stosujemy metody fabryk dowcipne nazwy mogą nie być zrozumiane spójny leksykon bez przesady ze spójnością używamy terminologii informatycznej w drugiej kolejności używamy terminologii klienta dodajemy znaczący kontekst bez nadmiarowego kontekstu zmiana nazwy na czytelniejszą to nic złego
Nazwy zmiennych Przedstawiają intencje int c; int studentscount; List<int> list1 = new List<int>(); List<int> temperaturevalues = new List<int>();
Nazwy zmiennych Brak mylących i fałszywych wskazówek int hp; // hiperprzelicznik Student[] studentlist; List<Student> studentlist; List<Student> students; Student[] students;
Nazwy zmiennych Brak zbyt subtelnych różnic w nazewnictwie Student VeryGoodStudentInThisCourseOfPhysics; Student VeryGoodStudentInThatCourseOfPhysics; void copystudents(student[] a1, Student[] a2) void copystudents(student[] source, Student[] destination) Student student; Student astudent; Student thestudent;
Nazwy zmiennych Zrozumiałe dla mózgu Umożliwiają dyskusję o kodzie Nowe osoby w zespole szybciej zrozumieją kod class SdntRcrd126 { private DateTime admymdhms; private const string pszqint = "126"; } class Student { private DateTime admissiontimestamp; private const string recordid = "126"; }
Nazwy zmiennych Łatwość wyszukania Wartości stałe zamiast liczb Brak kodowania typów if (s.count > 9) const int MAX_STUDENTS_PER_YEAR = 9; if (students.count > MAX_STUDENTS_PER_YEAR) int securitycodestring; //kiedyś ta zmienna może i była typu string
Nazwy zmiennych Brak jedno-literówek Profesjonalny kod to czytelny i zrozumiały kod Wyjątkiem są liczniki pętli Uri r = new Uri("http://www.agh.edu.pl"); for (int i = 0; i < 4; i++) for (int j = 0; j < 4; j++) for (int k = 0; k < 4; k++)
Nazewnictwo w obrębie klas Nazwy klas mają rzeczowniki Nazwy metod mają czasowniki get przed akcesorami, set przed mutatorami, is przed predykatami class CourseAdvisor counter.submit(); class Advise class Advice if (course.iscompleted()) totalcompletedhours += course.gettotalhours(); counter.settotal(totalcompletedhours);
Terminologia Możemy swobodnie stosować terminy informatyczne takie jak: nazwy algorytmów wzorców) bo czytelnicy kodu programiści je znają! Zmiana nazwy na czytelniejszą to nic złego!! (refactoring)
Zajęcia I 1. Napisz program, który umożliwi na wczytanie dwóch zmiennych typu całkowitego z przedziału <10,90>, a następnie wyświetli liczby od mniejszej do większej z krokiem 0.5 przy pomocy pętli: for, while, do while 2. Napisz program, w którym zaalokowana będzie tablica dynamiczna o rozmiarze zadanym przez użytkownika. Przekaż tablicę uzupełnioną losowymi wartościami z przedziału <5, 15> do funkcji. Funkcja oblicza sumę elementów w tablicy i ją zwraca. 3. Napisz strukturę student, w której będą przechowywane informacje: 1. Imię 2. Nazwisko 3. Kierunek 4. Rok studiów Stwórz i uzupełnij tablicę pięcioelementową typu student.