Języki i Metody Programowania 2 - Semestr letni 2015/2016

Organizacja zajęć i zasady zaliczenia

  • Ogólne zasady, które Państwa obowiązują: 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.
  • 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 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.2016Wprowadzenie do programowania w C++
2.03.03.2016Dynamiczne zarządzanie pamięcią i operacje na plikach
3.10.03.2016Klasy i obiekty I
4.17.03.2016Klasy i obiekty II
5.31.03.2016Przeciążanie operatorów
6.07.04.2016Dziedziczenie i polimorfizm
7.14.04.2016Kolokwium

Laboratoria uzupełniające - obowiązują na kolokwium!

  1. Makefile - opis budowania programów w środowisku UNIX, potrzebne do laboratorium Klasy i obiekty I

Zasady zaliczenia

  • Na zaliczenie pierwszej części semestru składają się:
    • Ćwiczenia na laboratoriach: 6 lab * 5 pkt = 30 pkt
    • Kolokwium: 30 pkt
  • 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ń.
    • 5 plusów = 1 pkt
  • 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 czwartek o 08:00, zadania można wysłać do 07:59 w dniu kolejnych zajęć).
  • Na laboratorium można pracować pojedynczo lub w parach

Kolokwium

  • Kolokwium rozwiązywane jest na kartkach (nie trzeba nic przynosić poza długopisem).
  • Kolokwium trwa 60 minut.
  • Obowiązuje na nim materiał ze wszystkich laboratoriów (instrukcje + zadania na plusy i punkty).
  • Jest 18 pytań za 1,2,3 punkty – w sumie 30 pkt za całe kolokwium.
    • Pytania za 1 pkt to pytania krótkiej odpowiedzi (min. 1 słowo, zwykle ok. 1 zdanie), np.: „Jakie znasz typy prymitywne (wbudowane) języka C++? Wymień co najmniej 8.”
    • Pytania za 2 pkt zawierają kawałek kodu w C++. Należy w nich albo odpowiedzieć na pytanie „co zostanie wyświetlone po uruchomieniu tego kodu” albo znaleźć błąd i go naprawić (błędy są w większości zaczerpnięte z programów oddawanych na laboratorium i przesyłanych na maila ;-) )
    • Pytania za 3 pkt związane są z napisaniem kilku (ok. 5) linii kodu, np.: „Napisz ciało funkcji: void show(char[] filename); która wypisuje na ekranie cały plik o nazwie filename. Białe znaki nie muszą być zachowane w oryginalnej formie (np. zamiast trzech spacji obok siebie może być tylko jedna spacja na ekranie).
  • 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

  • Do zaliczenia poprawkowego mogą przystąpić osoby które:
    • Nie mają zaliczenia lub
    • nie pisały kolokwium i posiadają usprawiedliwienie (osoby takie mogą pisać tylko zaległe kolokwium/a).
  • Do wyników uzyskanych z zaliczenia poprawkowego nie wlicza się:
    • plusów/minusów - w 1. terminie poprawkowym,
    • plusów/minusów i nieusprawiedliwionych nieobecności - w 2. terminie poprawkowym.
  • W 2. terminie poprawkowym można uzyskać co najwyżej ocenę 3.0.

II część: Szablony i kontenery w C++

Sprawy Organizacyjne

Nie zmieściłyby się tutaj, więc proszę zajrzeć na oddzielną stronę.

Ćwiczenia

Zanim zaczniesz pisać program zapoznaj się z wymaganymi konwencjami

L.p. Tytuł Czas trwania Grupa Deadline
1. Szablony funkcji 1 tydzień 2 os. 28.04
2. Szablony klas 1 tydzień 2 os. 05.05
3. Szablony + dziedziczenie 1 tydzień 2 os. 12.05
4. Kontenery, cd. 1 tydzień 2 os. 02.06
5. Iteratory 1 tydzień 2 os. 09.06
6. Drzewa Poprawa czerwcowa 1 os 29.06

Jak wysyłać wyniki

  1. Przetestować kod:
    g++ -std=c++11 *.cpp -o test && ./test
    • :!: 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.
  2. Jeżeli kod się nie kompiluje:
    • proszę go nie wysyłać, nie ma po co
  3. Jeżeli kod się kompiluje:
    1. 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.
      mkdir 0_Slazynski_Kutt
    2. skopiować istotne pliki do tego katalogu, np.
      cp *.cpp *.h ./0_Slazynski_Kutt
    3. proszę spakować folder do archiwum zip, rar, 7z, lub tar.gz, np.
      tar -zcf 0_Slazynski_Kutt.tar.gz 0_Slazynski_Kutt
    4. wysłać paczkę na mail mslaz@agh.edu.pl z tematem: [JIMP2] Ćwiczenie nr <numer ćwiczenia>, np. [JIMP2] Ćwiczenie nr 1
    5. w treści wpisać imiona i nazwiska osób wykonujących ćwiczenie, np. Mateusz Ślażyński & Krzysztof Kutt
    6. :!: załączyć archiwum z ćwiczeniem, to ważne :!:
    7. :!: nacisnąć przycisk wyślij i odczekać chwilę nie przerywając połączenia z internetem :!:
    8. dostać punkty z dobrze wykonaną robotę 8-)
  4. 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 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.

astyle --style=1tbs *.cpp *.h

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:

astyle -s4 -xG -S -O -n -o -k3 -H -p -j *.cpp *.h

Jeżeli kogoś przeraża wpisywanie tak wielu opcji, wystarczy zapisać konfigurację jako domyślną:

echo "-s4 -xG -S -O -n -o -k3 -H -p -j" > ~/.astylerc

Alternatywy

Przydatne materiały

  • Harvey M. Deitel, Paul J. Deitel, Arkana C++ - dla początkujących
  • Jerzy Grębosz, Symfonia/Pasja C++ - dla każdego
  • Bjarne Stroustrup, Język C++ - dla zainteresowanych
  • Awesome C/C++ - A curated list of awesome C/C++ frameworks, libraries, resources, and shiny things

Laboratoria dodatkowe - opcjonalne, ich znajomość nie jest wymagana do kolokwium. Just for fun :-)

Narzędzia

Platformy online z zadaniami do ćwiczenia programowania

pl/dydaktyka/jimp2/2016/start.txt · ostatnio zmienione: 2019/06/27 15:50 (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