Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Nowa wersja
Poprzednia wersja
pl:dydaktyka:jimp2:2016:start [2016/02/17 11:28]
127.0.0.1 edycja zewnętrzna
pl:dydaktyka:jimp2:2016:start [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
-====== Języki i Metody Programowania 2 - Semestr letni 2014/2015 ======+====== Języki i Metody Programowania 2 - Semestr letni 2015/2016 ======
   * **Kierunek**:​ Informatyka   * **Kierunek**:​ Informatyka
   * **Rok**: I   * **Rok**: I
-  * **Prowadzący**: ​mgr inż. Krzysztof Kutt, http://​home.agh.edu.pl/​~kkutt/​ +  * **Prowadzący**:​ 
-  * Terminy zajęć ​(w pierwszej ​połowie semestru): +    * [[http://​home.agh.edu.pl/​~kkutt/​|mgr inż. Krzysztof Kutt]] ​(połowa semestru) 
-    * poniedziałki 9:30-11:00, UCI 406 +    * [[http://​home.agh.edu.pl/​~mslaz/​|mgr inż. Mateusz Ślażyński]] (II połowa semestru)
-    * poniedziałki 11:​00-12:​30,​ UCI 406 +
-    * poniedziałki 12:​30-14:​00,​ UCI 406 +
-    * poniedziałki 14:​00-15:​30,​ UCI 406+
  
-  * Aktualne informacje o punktacji znajdują się na stronie: http://​home.agh.edu.pl/​~kkutt/​wiki/​teaching:​start 
-    * login i hasło można uzyskać od prowadzącego zajęcia 
 ===== Organizacja zajęć i zasady zaliczenia ===== ===== Organizacja zajęć i zasady zaliczenia =====
  
   * Ogólne zasady, które Państwa **obowiązują**:​ [[http://​geist.agh.edu.pl/​pub:​teaching:​gris|GRIS]] - proszę przeczytać,​ zrozumieć, ew. wątpliwości zgłosić na 1.-2. zajęciach   * Ogólne zasady, które Państwa **obowiązują**:​ [[http://​geist.agh.edu.pl/​pub:​teaching:​gris|GRIS]] - proszę przeczytać,​ zrozumieć, ew. wątpliwości zgłosić na 1.-2. zajęciach
     * Proszę zwrócić uwagę na sposób informowania Państwa o aktualnościach,​ tryb konsultacji,​ zasady dotyczące kolokwiów i obecności.     * Proszę zwrócić uwagę na sposób informowania Państwa o aktualnościach,​ tryb konsultacji,​ zasady dotyczące kolokwiów i obecności.
 +
 +  * Zajęcia w **pierwszej** części semestru prowadzi mgr inż. Krzysztof Kutt. \\ Zajęcia w **drugiej** części semestru poprowadzi mgr inż. Mateusz Ślażyński.
 +  * **Ocena końcowa** jest średnią ocen z pierwszej i drugiej części semestru. Każdą z nich trzeba niezależnie od siebie zaliczyć.
 +
 +===== WYNIKI =====
 +
 +Poniższy {{:​pl:​dydaktyka:​jimp2:​2016:​jimp2-ok.pdf|arkusz}} zawiera punktację z drugiej części laboratorium oraz podsumowanie:​ liczbę zdobytych punktów (procentowo) na obu częściach laboratorium oraz ich średnią wartość. Na tej podstawie wpisane są tam oceny końcowe z laboratorium.
 +===== I część: Podstawy programowania obiektowego w C++ =====
 +
 +==== Harmonogram ====
 +^L.p.^ Termin ^ Laboratorium ^
 +^1.|25.02.2016|[[.:​labs:​wprowadzenie|Wprowadzenie do programowania w C++]]|
 +^2.|03.03.2016|[[.:​labs:​pamiec-i-pliki|Dynamiczne zarządzanie pamięcią i operacje na plikach]]|
 +^3.|10.03.2016|[[.:​labs:​klasy1|Klasy i obiekty I]]|
 +^4.|17.03.2016|[[.:​labs:​klasy2|Klasy i obiekty II]]|
 +^5.|31.03.2016|[[.:​labs:​operatory|Przeciążanie operatorów]]|
 +^6.|07.04.2016|[[.:​labs:​dziedziczenie|Dziedziczenie i polimorfizm]]|
 +^7.|14.04.2016|Kolokwium|
 +
 +Laboratoria uzupełniające - **obowiązują na kolokwium!**
 +  - [[.:​labs:​wskazniki|Wskaźniki i referencje]] - powtórka z C przed laboratorium [[.:​labs:​pamiec-i-pliki|Dynamiczne zarządzanie pamięcią i operacje na plikach]]
 +  - [[http://​home.agh.edu.pl/​~gjn/​dydaktyka/​UGLX/​node10.html|Makefile]] - opis budowania programów w środowisku UNIX, potrzebne do laboratorium [[.:​labs:​klasy1|Klasy i obiekty I]]
 +
 +==== Zasady zaliczenia ====
  
   * Na zaliczenie pierwszej części semestru składają się:   * Na zaliczenie pierwszej części semestru składają się:
     * Ćwiczenia na laboratoriach:​ 6 lab * 5 pkt = 30 pkt     * Ćwiczenia na laboratoriach:​ 6 lab * 5 pkt = 30 pkt
-    * [[#​kolokwium|Kolokwium]]: 30 pkt+    * Kolokwium: 30 pkt
   * Powyższe punkty stanowią 100% maksymalnej łącznej liczby punktów (MAX).   * Powyższe punkty stanowią 100% maksymalnej łącznej liczby punktów (MAX).
   * Zgodnie z GRIS do wartości MAX nie wliczają się plusy za aktywność przyznawane za wykonanie odpowiednich ćwiczeń.   * Zgodnie z GRIS do wartości MAX nie wliczają się plusy za aktywność przyznawane za wykonanie odpowiednich ćwiczeń.
Linia 24: Linia 43:
  
   * Rozwiązania zadań na **plusy** można przedstawić **TYLKO na zajęciach**.   * Rozwiązania zadań na **plusy** można przedstawić **TYLKO na zajęciach**.
-  * Rozwiązania zadań na **punkty** można przedstawić **na zajęciach albo przesłać mailem** na [[kkutt@agh.edu.pl]] przed kolejnymi zajęciami (najpóźniej minutę przed rozpoczęciem kolejnych zajęć; np. jeżeli jest się zapisanym do grupy w poniedziałek ​11:00, zadania można wysłać do 10:59 w dniu kolejnych zajęć). **Nie ma** żadnych negatywnych konsekwencji przesłania zadania na maila (o ile jest w terminie).+  * Rozwiązania zadań na **punkty** można przedstawić **na zajęciach albo przesłać mailem** na [[kkutt@agh.edu.pl]] przed kolejnymi zajęciami (najpóźniej minutę przed rozpoczęciem kolejnych zajęć; np. jeżeli jest się zapisanym do grupy w czwartek ​08:00, zadania można wysłać do 07:59 w dniu kolejnych zajęć). 
 +  ​Na laboratorium można pracować ​**pojedynczo lub w parach**
  
-  * Zajęcia w drugiej części semestru poprowadzi dr inż. Krzysztof Kaczor. +=== Kolokwium ===
-  * **Ocena końcowa** jest średnią ocen z pierwszej i drugiej części semestru. Każdą z nich trzeba niezależnie od siebie zaliczyć. +
- +
-==== Kolokwium ​====+
  
   * Kolokwium rozwiązywane jest na kartkach (nie trzeba nic przynosić poza długopisem).   * Kolokwium rozwiązywane jest na kartkach (nie trzeba nic przynosić poza długopisem).
Linia 40: Linia 57:
   * **Na kolokwium należy przyjść na grupę do której jest się zapisanym, zgodnie z listami ocen udostępnianymi przez prowadzącego**. Gdyby ktoś chciał przyjść na inną grupę,​ musi to zgłosić do prowadzącego najpóźniej **tydzień** przed kolokwium!   * **Na kolokwium należy przyjść na grupę do której jest się zapisanym, zgodnie z listami ocen udostępnianymi przez prowadzącego**. Gdyby ktoś chciał przyjść na inną grupę,​ musi to zgłosić do prowadzącego najpóźniej **tydzień** przed kolokwium!
  
-==== Zaliczenia poprawkowe ​====+=== Zaliczenia poprawkowe ===
  
-  * Kolokwia poprawkowe organizowane są **niezależnie** dla I i II części semestru. Poniżej znajdują się informacje dotyczące I części semestru. 
   * Do zaliczenia poprawkowego **mogą przystąpić** osoby które:   * Do zaliczenia poprawkowego **mogą przystąpić** osoby które:
     * Nie mają zaliczenia lub     * Nie mają zaliczenia lub
Linia 52: Linia 68:
  
  
-===== Harmonogram ​===== +===== II część: Szablony i kontenery w C++ =====
-^L.p.^ Termin ^ Laboratorium ^ +
-^1.|02.03.2015|[[.:​labs:​wprowadzenie|Wprowadzenie do programowania w C++]]| +
-^2.|09.03.2015|[[.:​labs:​pamiec-i-pliki|Dynamiczne zarządzanie pamięcią i operacje na plikach]]| +
-^3.|16.03.2015|[[.:​labs:​klasy1|Klasy i obiekty I]]| +
-^4.|23.03.2015|[[.:​labs:​klasy2|Klasy i obiekty II]]| +
-^5.|30.03.2015|[[.:​labs:​operatory|Przeciążanie operatorów]]| +
-^6.|13.04.2015|[[.:​labs:​dziedziczenie|Dziedziczenie i polimorfizm]]| +
-^7.|20.04.2015|Kolokwium| +
-^8.|  //Kolejne zajęcia prowadzi dr inż. Krzysztof Kaczor// ​ ||+
  
-Laboratoria uzupełniające - **obowiązują na kolokwium!** +==== Sprawy Organizacyjne ====
-  - [[.:​labs:​wskazniki|Wskaźniki i referencje]] - powtórka z C przed laboratorium [[.:​labs:​pamiec-i-pliki|Dynamiczne zarządzanie pamięcią i operacje na plikach]] +
-  - [[http://​home.agh.edu.pl/​~gjn/​dydaktyka/​UGLX/​node10.html|Makefile]] - opis budowania programów w środowisku UNIX, potrzebne do laboratorium [[.:​labs:​klasy1|Klasy i obiekty I]]+
  
-Laboratoria dodatkowe ​opcjonalneich znajomość nie jest wymagana ​do kolokwiumTematyka nie będzie poruszana przez dra KaczoraJust for fun :-) +Nie zmieściłyby się tutaj, więc proszę zajrzeć na [[.:​part2:​org:​start|oddzielną stronę]]. 
-  - [[.:labs:​wyjatki|Wyjątki]] + 
-  - [[.:labs:dziedziczenie-ex|Dziedziczenie i polimorfizm ​-- przykłady]] +==== Ćwiczenia ==== 
-  - [[.:labs:stl|Biblioteka standardowa]]+ 
 +Zanim zaczniesz pisać program zapoznaj się z [[.:​part2:​org:​codepolicy|wymaganymi konwencjami]] 
 + 
 +^ L.p. ^ Tytuł ^ Czas trwania ^ Grupa ^ Deadline ^ 
 +^ 1. | [[.:​part2:​ex:​ex1|Szablony funkcji]] ​             | 1 tydzień | 2 os. | 28.04 | 
 +^ 2. | [[.:​part2:​ex:​ex2|Szablony klas]] ​                | 1 tydzień | 2 os. | 05.05 | 
 +^ 3. | [[.:​part2:​ex:​ex3|Szablony + dziedziczenie]] ​     | 1 tydzień | 2 os. | 12.05 | 
 +^ 4. | [[.:​part2:​ex:​ex4|Kontenery,​ cd.]]                | 1 tydzień | 2 os. | 02.06 |  
 +^ 5. | [[.:​part2:​ex:​ex5|Iteratory]] ​                    | 1 tydzień | 2 os. | 09.06 | 
 +^ 6. | [[.:​part2:​ex:​ex6|Drzewa]] ​                       | Poprawa czerwcowa | 1 os | 29.06 | 
 +==== Jak wysyłać wyniki ==== 
 + 
 +  ​Przetestować kod: <code bash>g++ -std=c++11 *.cpp -o test && ./​test</​code>​ 
 +    * :!: proszę użyć kompilatora ''​gcc''​ w wersji ''​4.8.x''​ (tak jak na serwerze borg) 
 +    * :!: proszę używać oryginalnego i niezmienionego pliku ''​main''​np. ''​ex1main.cpp'',​ ''​ex2main.cpp'',​ etc. 
 +  - Jeżeli kod się nie kompiluje:​ 
 +    * proszę go **nie** wysyłaćnie ma po co 
 +  - Jeżeli kod się kompiluje:​ 
 +    - proszę stworzyć katalog o nazwie <​numer_grupy>​_<​nazwisko1>​_<​nazwisko2>,​ gdzie numer grupy ''​0''​ oznacza grupę o 08:00, a ''​1''​ grupę o 09:30, np. <code bash>​mkdir 0_Slazynski_Kutt</​code>​ 
 +    - skopiować istotne pliki do tego katalogu, np<code bash>cp *.cpp *.h ./​0_Slazynski_Kutt</​code>​ 
 +    - proszę spakować folder do archiwum zip, rar, 7z, lub tar.gz, np. <code bash>tar -zcf 0_Slazynski_Kutt.tar.gz 0_Slazynski_Kutt</​code>​ 
 +    - wysłać paczkę na mail [[mailto:mslaz@agh.edu.pl|mslaz@agh.edu.pl]] z tematem: ''​[JIMP2] Ćwiczenie nr <numer ćwiczenia>'',​ np. ''​[JIMP2] Ćwiczenie nr 1''​ 
 +    - w treści wpisać imiona i nazwiska osób wykonujących ćwiczenie, np. ''​Mateusz Ślażyński & Krzysztof Kutt''​ 
 +    - :!: załączyć archiwum z ćwiczeniem,​ to ważne :!: 
 +    - :!: nacisnąć przycisk wyślij i odczekać chwilę nie przerywając połączenia z internetem :!: 
 +    - dostać punkty z dobrze wykonaną robotę 8-) 
 +  - inne formy wysyłania zadań spotkają się z moją niechybną dezaprobatą i niekonstruktywną krytyką m( 
 +    * przewidywane kary w postaci składania własnoręcznie spisanej miażdżącej samokrytyki  
 +    * wizyta w worku pokutnym w dziekanacie pro  
 +    * no i brak punktów 
 + 
 +==== Automatyczne formatowanie kodu ==== 
 + 
 +W celu uniknięcia braku punktów za dobry styl kodu, polecamy stosować narzędzia automatycznie formatujące kod. Większość profesjonalnych IDE, np. Eclipse, ma je wbudowane bądź dostępne w formie wtyczki. Jeżeli ktoś preferuje narzędzia konsolowe, to polecamy ​[[http://​astyle.sourceforge.net/​install.html|AStyle]], które jest dostępny na wszystkie wiodące systemy operacyjne. Narzędzi w użyciu jest bardzo proste: ''​astyle <opcje stylu> <​ścieżki do plików>'',​ np. 
 +<code bash> 
 +astyle ​--style=1tbs *.cpp *.h 
 +</​code>​ 
 +sformatuje wszsytkie pliki ''​.cpp''​ i ''​.h''​ używając stylu One True Brace Style. Więcej dostępnych stylów i opcji można poznać czytając stronę ​[[http://​astyle.sourceforge.net/​astyle.html]]. 
 + 
 +Na potrzeby ćwiczeń polecamy stosować styl: 
 +<code bash> 
 +astyle -s4 -xG -S -O -n -o -k3 -H -p -j *.cpp *.h 
 +</​code>​ 
 +Jeżeli kogoś przeraża wpisywanie tak wielu opcji, wystarczy zapisać konfigurację jako domyślną: 
 +<code bash> 
 +echo "-s4 -xG -S -O -n -o -k3 -H -p -j" > ~/​.astylerc 
 +</​code>​ 
 + 
 +=== Alternatywy === 
 + 
 +  * [[http://​uncrustify.sourceforge.net/​|uncrustify]] - bardzo popularne narzędzie do formatowania kodu 
 +  ​* [[http://​clang.llvm.org/​docs/​ClangFormat.html|clang-format]] - oparte o llvm narzędzie wspierane przez wiele narzędzi programistycznych. ​[[http://​clangformat.com/|http://​clangformat.com/​]] pozwala generować dla niego konfiguracje. 
 +  * [[http://​universalindent.sourceforge.net/​|universalindent]] - graficzne narzędzie do formatowania kodu
 ===== Przydatne materiały ===== ===== Przydatne materiały =====
 +
   * [[http://​www.cppreference.com/​wiki/​start|C++ Reference]]   * [[http://​www.cppreference.com/​wiki/​start|C++ Reference]]
   * Harvey M. Deitel, Paul J. Deitel, //Arkana C%%++%%// - dla początkujących   * Harvey M. Deitel, Paul J. Deitel, //Arkana C%%++%%// - dla początkujących
Linia 78: Linia 136:
  
   * [[https://​fffaraz.github.io/​awesome-cpp/​|Awesome C/C++]] - A curated list of awesome C/C%%++%% frameworks, libraries, resources, and shiny things   * [[https://​fffaraz.github.io/​awesome-cpp/​|Awesome C/C++]] - A curated list of awesome C/C%%++%% frameworks, libraries, resources, and shiny things
-===== Narzędzia ​=====+ 
 +Laboratoria dodatkowe - opcjonalne, ich znajomość nie jest wymagana do kolokwium. Just for fun :-) 
 +  - [[.:​labs:​wyjatki|Wyjątki]] 
 +  - [[.:​labs:​dziedziczenie-ex|Dziedziczenie i polimorfizm -- przykłady]] 
 +  - [[.:​labs:​stl|Biblioteka standardowa]] 
 + 
 +==== Narzędzia ====
   * Uniksowy kompilator **g%%++%%** ​   * Uniksowy kompilator **g%%++%%** ​
   * [[http://​www.eclipse.org/​|Eclipse IDE for C/C++]]   * [[http://​www.eclipse.org/​|Eclipse IDE for C/C++]]
   * [[http://​www.microsoft.com/​express/​Windows/​|MS Visual Studio Express Edition]]   * [[http://​www.microsoft.com/​express/​Windows/​|MS Visual Studio Express Edition]]
 +==== Platformy online z zadaniami do ćwiczenia programowania ====
  
 +  * https://​www.hackerrank.com/​domains 
 +  * https://​www.topcoder.com/​login/?​next=%252Fmy-dashboard%252F 
 +  * https://​leetcode.com 
 +  * https://​projecteuler.net 
 +  * http://​pl.spoj.com/​problems/​latwe/​
pl/dydaktyka/jimp2/2016/start.1455704919.txt.gz · ostatnio zmienione: 2019/06/27 15:52 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0