Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
isi_pp2 [2021/06/22 01:06]
pszwed [Egzamin]
isi_pp2 [2024/03/19 22:38] (current)
pszwed [Wykłady]
Line 1: Line 1:
 ====== Podstawy programowania 2 ====== ====== Podstawy programowania 2 ======
 +
 +===== Wykłady =====
 +
 +Wykłady odbywają się w środy o 19:00 na platformie MS Teams.
 +
 +[[https://teams.microsoft.com/l/team/19%3AVB_hmfafz560jilREju7ucJGcBPFfGcOUJcotJ6lNKQ1%40thread.tacv2/conversations?groupId=feffb47e-61c4-4e7f-a59c-8e7da40d7929&tenantId=80b1033f-21e0-4a82-bbc0-f05fdccd3bc8|Link do zespołu]]
 +
 +Kod do zespołu zostanie przekazany staroście
 +
 +
 +  -{{ ::01-isi-cpp-intro-wsk.pdf | Wprowadzenie. Wskaźniki - przypomnienie}} [>>28.02.2024]
 +  -{{ ::02-isi-cpp-ref-skladow-klas.pdf | Referencje, składowe klas. Wprowadzenie do standardowej biblioteki}} [06.03.2024, 13.03.2024]
 +  -{{ :03-isi-cpp-kompozycja-dziedziczenie.pdf |Kompozycja i dziedziczenie}} [>>20.03.2024]
 +  -{{ ::04-isi-cpp-funkcje-wirtualne.pdf |Funkcje wirtualne (polimorfizm)}} []
 +  -{{ ::05-isi-cpp-konstruktory-destruktory.pdf |Konstruktory, destruktory}} [05.04.2023]
 +  -{{ ::06-isi-cpp-przeciazanie-fun-op.pdf |Przeciążanie funkcji i operatorów}} [12.04.2023, 26.04.2023]
 +  -{{ ::07-isi-cpp-cast-rtti.pdf |Operatory rzutowania w C++}} [26.04.2023]
 +  -{{ ::08-isi-cpp-exceptions.pdf| Wyjątki}} [10.05.2023]
 +  -{{ ::09-isi-cpp-kontenery.pdf  | Kontenery i iteratory}} [10.05.2023(wektor) + ]
 +  -{{ ::10-isi-cpp-przenoszenie.pdf | Semantyka przenoszenia}} [%30.05.2022]
 +  -{{ ::11-isi-cpp-szablony.pdf | Wielokrotne użycie, szablony}} [%06.06.2022]
 +  -{{ ::12-isi-cpp-stl.pdf | Standardowa biblioteka. Kontenery, algorytmy, wyrażenia lambda}} [>> 07.06.2021,14.06.2021]
 +
  
 ===== Egzamin ===== ===== Egzamin =====
  
-  * I termin   19.06.2021, 10:00 +  * I termin   10.07.2023 15:30-17:30 sala H24 w B1 
-  * II termin  26.06.2021, 13:00 +  * II termin  16.07.2023 14:00-16:00 sala C2 224 
-  * III termin 3.09.2021,  13:00+  * III termin 05.09.2023,  12:00-14:00 C2 431
  
 +Podczas egzaminu:
 +* można korzystać z dowolnych materiałów w formie fizycznej (podręczników, notatek, itp.)
 +* nie można wymieniać się materiałami, podawać notatek sąsiadom, itp.
 +* nie można korzystać z telefonów
 +
 +Proszę przynieść własne kartki formatu A4, np. 3 na odpowiedzi oraz 3 na brudnopis i 2 długopisy.   
 +==== Uwagi 2023 ====
 +
 +  *Nie trzeba pisać 
 +<code>
 +trg.a=towary[i].a;
 +trg.b=towary[i].b;
 +trg.c=towary[i].c;
 +trg.d=towary[i].d;
 +</code>
 +
 +Wystarczy ''trg=towary[i]''
 ==== Uwagi ==== ==== Uwagi ====
  
 +=== Uwaga 1 ===
 +Jeżeli tematem było napisanie szablonów klas typu ''Set<T>'' lub ''Wielozbiór<T>'' z zastrzeżeniami dotyczącymi dostępnych operatorów dla klasy będącej parameterem szablonu, to zapewne nie można było użyć ''std::set<T>'' lub ''std::map<T>''.
 +
 +=== Uwaga 2 ===
 +
 +Szablony ''unordered_set'' lub ''unordered_map'' działają na klasach "haszowalnych", tzn. takich dla których da się obliczyć wartość indeksu w tablicy na podstawie zawartości. 
 +
 +Proszę spróbować skompilować:
 +
 +<code cpp>
 +
 +class A{
 +public:
 +    A(int _v):v(_v){}
 +    int v;
 +    bool operator==(const A&a)const{
 +        return v==a.v;
 +    }
 +};
 +
 +int main(){
 +    std::unordered_set<A> set;
 +    set.insert(A(1));
 +    std::cout<<(set.find(A(1))!=set.end())<<std::endl;
 +}
 +
 +</code>
 +
 +Dla nietypowej własnej klasy należy dostarczyć własny obiekt funkcyjny do obliczania "hasza" (czyli położenia w tablicy)...
 +
 +<code cpp>
 +class A{
 +public:
 +    A(int _v):v(_v){}
 +    int v;
 +    bool operator==(const A&a)const{
 +        return v==a.v;
 +    }
 +};
 +
 +class MyHashForA{
 +public:
 +    size_t operator()(const A&a)const{
 +        return std::hash<int>{}(a.v);
 +    }
 +};
 +int main(){
 +    std::unordered_set<A,MyHashForA> set;
 +    set.insert(A(1));
 +    std::cout<<(set.find(A(1))!=set.end())<<std::endl;
 +}
 +
 +</code>
 +
 +
 +
 +=== Uwaga 3 ===
 Funkcja nie może zwracać wskaźnika po dereferencji do obiektu, dla którego pamięć przydzielono na stercie.  Funkcja nie może zwracać wskaźnika po dereferencji do obiektu, dla którego pamięć przydzielono na stercie. 
 Jak zwolnić tę pamięć? Memory leak... Jak zwolnić tę pamięć? Memory leak...
Line 78: Line 175:
   * Za iterację po zbiorze ''set<T>'', aby sprawdzić czy zawiera element - O(n) zamiast O(log n)   * Za iterację po zbiorze ''set<T>'', aby sprawdzić czy zawiera element - O(n) zamiast O(log n)
   * Za niezwalnianie pamięci, jeżeli kontener zawiera wskaźniki do obiektów, dla których zaalokowano pamięć na stercie   * Za niezwalnianie pamięci, jeżeli kontener zawiera wskaźniki do obiektów, dla których zaalokowano pamięć na stercie
-===== Wykłady ===== 
- 
-  -{{ ::01-isi-cpp-intro-wsk.pdf | Wprowadzenie. Wskaźniki - przypomnienie}} [01.03.2021] 
-  -{{ ::02-isi-cpp-ref-skladow-klas.pdf | Referencje, składowe klas. Wprowadzenie do standardowej biblioteki}} [08.03.2021, 15.03.2021] 
-  -{{ :03-isi-cpp-kompozycja-dziedziczenie.pdf |Kompozycja i dziedziczenie}} [22.03.2021] 
-  -{{ ::04-isi-cpp-funkcje-wirtualne.pdf |Funkcje wirtualne (polimorfizm)}} [29.03.2021+12.04.2021] 
-  -{{ ::05-isi-cpp-konstruktory-destruktory.pdf |Konstruktory, destruktory}} [12.04.2021] 
-  -{{ ::06-isi-cpp-przeciazanie-fun-op.pdf |Przeciążanie funkcji i operatorów}} [19.04.2021, 26.04.2021] 
-  -{{ ::07-isi-cpp-cast-rtti.pdf |Operatory rzutowania w C++}} [26.04.2021] 
-  -{{ ::08-isi-cpp-exceptions.pdf| Wyjątki}} [10.05.2021] 
-  -{{ ::09-isi-cpp-kontenery.pdf  | Kontenery i iteratory}} [17.05.2021] 
-  -{{ ::10-isi-cpp-przenoszenie.pdf | Semantyka przenoszenia}} [24.05.2021] 
-  -{{ ::11-isi-cpp-szablony.pdf | Wielokrotne użycie, szablony}} [31.05.2021] 
-  -{{ ::12-isi-cpp-stl.pdf | Standardowa biblioteka. Kontenery, algorytmy, wyrażenia lambda}} [>> 07.06.2021,14.06.2021] 
- 
 ===== Laboratoria, grupy 2a i 2b ===== ===== Laboratoria, grupy 2a i 2b =====
  
Line 391: Line 473:
 void Fibo1::destroy() void Fibo1::destroy()
 { {
-    delete [] tab; // IF TAB+    delete [] tab; 
 } }
  
Line 421: Line 503:
  
 Fibo::~Fibo(){ Fibo::~Fibo(){
-    if(n>0) delete []tab; // TO JEST POPRAWNE, ale proponuję idiom if(tab) delete []tab;+    if(n>0) delete []tab; // TO JEST POPRAWNE, ale proponuję raczej idiom if(tab) delete []tab;
 } }
  
isi_pp2.1624316804.txt.gz · Last modified: 2021/06/22 01:06 by pszwed
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0