13 października 2013 -------------------- Przygotować metodę o sygnaturze static long Silnia(byte argument) obliczającą silnię liczby podanej w argumencie. Silnia z liczby 3 to 3!=1*2*3. Silnia z liczby n to n!=1*2*...*(n-1)*n. Przetestować czy wartości zwracane przez metodę są prawidłowe oraz ustalić dla jakich wartości argumentów wartość tej metody pozostaje w zakresie liczby long (maks. wartość to 9 223 372 036 854 775 807). Dodać do metody warunek sprawdzający, czy argument jest z prawidłowego zakresu (w przeciwnym przypadku zgłosić wyjątek ArgumentOutOfRangeException). 21 października 2013 -------------------- 1. Korzystając z wielokrotnej pętli for i instrukcji Console.Write wyświetl w konsoli następujące wzory: **** 54321 121212 12233 *** 65432 212121 223334444 ** 76543 121212 333444455555 * 87654 212121 444455555666666 2. Napisz metodę zgłaszającą wyjątek. Uruchom ją bez obsługi wyjątków, a następnie uruchom korzystając z konstrukcji try..catch. 3. Korzystając z pętli do..while napisz program-zabawę w zgadywanie liczby „pomyślanej” przez komputer (z zakresu 1-10). 4. Napisz program proszący użytkownika o napisanie liczby z zakresu od 1 do 10. Wyświetl kwadrat tej liczby. W razie liczby spoza zakresu wyświetl komunikat i umożliw ponowne wpisanie liczby. 5. Program z poprzedniego punktu wyposaż w menu pozwalające na 1) Dodanie do liczby 10, 2) Pomnożenie liczby przez 2, 3) Odejmij od liczby 1, 4) Wyjdź z programu. Wybór menu poprzez liczbę. Skorzystaj z instrukcji switch. 6. Przygotuj program wyświetlający na ekranie konsoli wskazany w linii poleceń plik tekstowy. 7. W aplikacji konsolowej przygotuj słownik (kolekcja Dictionary - b. podobna do SortedList) o następujących elementach: klucz wartość ------------------ jest is ma has lubi likes oglądać to watch kot cat włosy hair filmy movies bardzo very rudy red rude red Korzystając z tego słownika przetłumacz zdania (wyszukuj wyrazy-kluczy i zastępuj je wyrazanu-wartościami): Ala ma kota. Bartek jest bardzo wysoki. Kasia ma rude włosy. Karolina lubi oglądać filmy. Jacek lubi C#. Spróbuj przygotować kod tłumaczący zdania z powrotem na polski. 8. W aplikacji konsolowej zdefiniuj tablicę łańcuchów: string[] slowa = { "czereśnia", "jabłko", "borówka", "wiśnia", "jagoda", "gruszka", "śliwka", "malina" }; Korzystając z metod-rozszerzeń LINQ wyświetl: a) najdłuższy i najkrótszą długość słowa (Min i Max z odpowiednimi wyrażeniami Lambda), b) średnią długość słów (Average), c) całkowitą liczbę liter we wszystkich słowach (Sum). Przygotuj zapytania LINQ, które: a) zwraca wszystkie słowa o długości większej niż 6 liter posortowane alfabetycznie, b) zwraca wszystkie słowa o długości większej niż 6 liter posortowane według ich długości, c) zwraca wszystkie słowa kończące się na "a" posortowane według ostatniej litery, d) zwraca długości poszczególnych słów posortowane według alfabetycznej kolejności tych słów, e) jak w podpunkcie d), ale tylko dla słów, które zawierają literę "o", f) zwraca słowa z tablicy ze zmienionymi literami na duże. 27 października 2013 -------------------- 1. W nowym projekcie zdefiniować klasę Nagrywarka, która posiada następujące pola - miejsceNagrywania (typ wyliczeniowy o wartościach DVD i HDD), - stan (typ wyliczeniowy, możliwe wartości Wyłączone, Zatrzymane, Nagrywanie, Odtwarzanie). Własność stan niech będzie udostępniana przez własność tylko do oczytu, a miejsceNagrywania przez własność umożliwiającą zapis i odczyt. Klasa Nagrywarka powinna mieć metody: - Włącz, - Odtwarzaj, - Nagrywaj, - Zatrzymaj. Odtwarzanie i nagrywanie są czynnościami wzajemnie wykluczającymi się tzn. nie można włączyć nagrywania, gdy włączone jest odtwarzania i odwrotnie. Obie czynności możliwe są dopiero po włączeniu urządzenia (przełączenie ze stanu Wyłączone do Zatrzymane). 2. Przygotować klasę Nagranie, które opisuje nagrany przez nagrywarkę film (numer nagrania oraz data i czas rozpoczęcia i zakonczenia nagrywania), a następnie użyć je w klasie NagrywarkaZPamięcią (dziedziczącą z klasy Nagrywarka z zad. 1), w której przechowywana jest lista nagrań (List). Dodać funkcjonalność pozwalającą na odtwarzanie wybranego nagrania i jego usuwanie. 3. Zdefiniować rozszerzenie dla klasy NagrywarkaZPamięcią, które wyświetla jej pełen stan z listą nagrań. 3. W projekcie Kadry (plik 2013-10-26_b_KlasaOsoba_Linq.zip) zdefiniować kolekcję (tablica lub lista) elementów typu OsobaZameldowana inicjując obiekty z użyciem nawiasów klamrowych {} (osoby ze swojej rodziny). 4. Dla kolekcji przygotowanej w zad. 3 zredagować zapytania LINQ zwracające: - osoby pełnoletnie mieszające w Toruniu, posortować wg. wieku malejąco - kobiety mające więcej niż 40 lat i mieszkające w tym samym wojewódzctwie (pierwsza część kodu pocztowego) - mężczyżni pełnoletni nie mieszkający w Toruniu, sortowanie kodem pocztowym - kobiety, których nazwisko nie kończy się na literę "a". - łańcuch zawierający imię i nazwisko oraz wiek w nawiasie dla osób z pierwszego i drugiego zapytania - wiek (liczba int) osób niepełnoletnich, posortowane wg. kodu pocztowego Wartości z wyrażeń filtrujących są przykładowe i można je zmieniać. 5. Przygotować klasę LiczbaZespolona implementującą liczby zespolone. Własności (auto-implemented): Real i Imag typu double (część rzeczywista i urojona). Metody: Conj (sprzężenie zespolone zmieniające znak części urojonej), ToString. Stałe: Zero (0,0), Jeden (1,0), I (0,1). Operatory: +,-,* (nie trzeba definiować dzielenia). Więcej informacji (m.in. definicje działań dla liczb zespolonych) na stronie: http://pl.wikipedia.org/wiki/Liczby_zespolone 6. Zdefiniować rozszerzenie klasy LiczbaZespolona, które oblicza normę liczby zespolonej (suma kwadratów części rzeczywistej i urojonej). 16 listopada 2013 ----------------- 1. Klasę LiczbaZespolona z wcześniejszego zadania przenieść do bibliteki PCL i przygotować dla niej przynajmniej dziesięć testów jednostkowych. 2. Przygotować testy jednostkowe dla klas KursyWalutNBP i KursyWalutKantor z zadania 2 dla 16 listopada 2013 z kursu Windows Forms. 3. Napisz i przetestuj metodę szukającą największego wspólnego dzielnika int NWD(int a, int b) (zob. http://pl.wikipedia.org/wiki/NWD) korzystając z algorytmu Euklidesa (zob. http://pl.wikipedia.org/wiki/Algorytm_Euklidesa). Przygotuj testy jednostkowe sprawdzające poprawność metody dla wybranych wartości i dla losowo wybranych. Porównaj szybkość tego algorytmu z algorytmem z metody Ulamek.Uprosc. 14 grudnia 2013 --------------- 1. W projekcie Notatnika używamy metod pozwalających na zapis i odczyt plików tekstowych z dysku. Przygotuj ich wersje asynchroniczne, czyli tworzące zadania: public static Task CzytajPlikTekstowyAsync(string nazwaPliku) public static Task ZapiszDoPlikuTekstowego(string nazwaPliku,string[] tekst) Użyj ich w programie korzystając z operatora await. Postaraj się na poziomie interfejsu zapobiec próbie jednoczesnego wczytania i zapisania tekstu do tego samego pliku (przełączając własność Enabled kontrolek). Spróbuj w podobny sposób przygotować kod służący do drukowania zawartości notatnika. 2. Korzystając z Platform Invoke zaimportuj funkcję MessageBoxW z biblioteki User32.dll (zob. http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx). Rozważ przygotowanie typu wyliczeniowe dla parametru uType określającego wygląd okna komunikatu. Przygotuj przykładowe wywołania tej funkcji z różnymi zestawami przycisków i różnymi ikonami. 11 stycznia 2014 ---------------- 1. W projekcie SortowanieBabelkowe zmień metody zamieńWartości i wyświetlWartości tak, aby były metodami parametrycznymi działającymi dla dowolnego parametru T: static void zamienWartosci(ref T i, ref T j); static void wyswietlWartosciTablicy(T[] tablica) Zdefiniuj metody sortujące w dwóch wersjach: static void SortowanieBabelkowe(IComparable[] tablica); static void SortowanieBabelkowe(IComparable[] tablica); 2. Zdefiniuj klasę o nazwie KlasaZLicznikiem, która w statycznym prywatnym polu przechowuje liczbę utworzonych instancji. Udostępnik tę liczbę w publicznej własności. 3. Zdefiniuj klasę A i dziedziczącą z niej klasę B. W klasie A zdefiniuj dwie metody wirtualne o nazwach M1 i M2. W klasie potomnej nadpisz metodę M1 i ukryj metodę M2. We wszystkich metodach umieść polecenia wyświetlające łańcucha postaci NazwaKlasy.NazwaMetody. Następnie utwórz instancje klas A i B w następujący sposób: A aa = new A(); A ab = new B(); B bb = new B(); B ba = new A(); i wywołaj na ich rzech metody M1 i M2. Sprawdź jakie komunikaty będą wyświetlane. 4. W klasie A i B zdefiniuj konstruktory domyślne oraz konstruktory pozwalające na określenie koloru w jakim w konsoli wyświetlane są napisy w metodach M1 i M2 (konieczne będzie zdefiniowanie pola, który będzie przechowywał ów kolor). W klasie B konstruktor z argumentem powinien wywoływać konstruktor z argumentem z klasy A (bez samodzielnego modyfikowania nowego pola). 5. Napisz program przeszukujący tysiącelementową tablicę w poszukiwaniu minimalnej i maksymalnej wartości. Przyspiesz działanie owego programu, korzystając z wielu wątków w najprostszy sposób, tj. dzieląc zakres przeszukiwanych komórek równo pomiędzy wątki. Wykorzystaj tylko tyle wątków, ile jest dostępnych rdzeni procesora. 6. Napisz klasę Timer z auto-implemented własnościami Interval typu int i Enabled typu bool. Jeżeli własność Enabled równa jest true, co liczbę milisekund określoną przez własność Interval wywołuj metodę przekazaną przez konstruktor z delegacją jako argumentem. 25 stycznia 2014 ---------------- 1. W klasie RownanieKwadratowe (wersja C# i VB) zgłoś błąd, jeżeli współczynnik a = 0. Uwzględnij tę sytuację w aplikacji konsolowej i WinForms. 2. Do rozwiązania RownaniaKwadratowe_CS_VB dodaj projekt WinForms przygotowany w VB odtwarzający projekt z wersji C#. 2. Do rozwiązania RownaniaKwadratowe_CS_VB dodaj projekt testów jednostkowych przygotowany w VB odtwarzający projekt w wersji VB.