Programowanie w .NET

laboratorium

Informatyka
Prowadzący dr hab. inż. Krzysztof Zatwarnicki, prof. PO


Uwagi ogólne

W ramach przedmiotu zajmować się będziemy zagadnieniami programowania w środowisku .NET. W ramach zajęć w określonych terminach podanych poniżej należy oddać do oceny poszczególne etapy pracy. Za zadanie oddane z opóźnieniem o tydzień można otrzymać co najwyżej ocenę 3, zadania oddane w terminie późniejszym nie będą oceniane . Ocena końcowa będzie średnią ocen cząstkowych.

Zakres oraz terminy oddania poszczególnych etapów pracy

  1. Proszę napisać program w konsoli wyświetlający tabelę 40x40 znaków.
    Tabela ma być wypełniona w jednej czwartej gwiazdkami * (górna lewa część tabeli), plusami + (dolna prawa część), a w pozostałych częściach znakami # i @.
    Termin oddania zadania:

  2. Proszę napisać program ankietę, który będzie zbierał dane o umiejętnościach zawodowych użytkownika (co najmniej 10 pytań) i w zależności od zebranych informacji przydzieli użytkownika do jednej z pięciu oferowanych w programie prac.

  3. Proszę napisać program pracujący w konsoli umożliwiający rysowanie przedmiotów domowego użytku.
    Program powinien zawierać kilka definicji klas (umożliwiających rysowanie trzech przedmiotów) posiadających co najmniej trzy atrybuty różnego typu oraz metody (co najmniej 2 metody na klasę).
     
  4. Proszę napisać program typu windows forms.
    Program powinien zawierać ankietę dotyczącą nastroju, w jakim znajduje się użytkownik.
    Po naciśnięciu guzika „podsumuj ankietę” powinno otworzyć się nowe okno zawierające rysunek obrazujący nastrój użytkownika (muszą być różne obrazki dla różnych nastrojów) oraz nazwę tego nastroju.
    W przypadkach uzasadnionych możliwe jest samodzielne zaproponowanie tematu ankiety.
     
  5. Proszę napisać program w konsoli zawierający dwie klasy opisujące wybrane sprzęty rtv/agd (inne niż w zadaniu 3).
    - klasy powinny zawierać atrybuty z różnymi modyfikatorami dostępu, dwa różne konstruktory w tym konstruktor kopiujący oraz kilka medod umożliwiających pracę z obiektami;
    - argumenty w metodach mają być przekazywane przez wartość, referencję i wyjście - należy pokazać różnice w sposobie przekazywania wartości.
    Program powinien umożliwiać prezentację działania metod (np. menu).
     
  6. Proszę, kontynuując poprzednie zadanie, uzupełnić klasy o następujące elementy:
    - jedna z klas musi zawierać funkcję statyczną oraz atrybut statyczny;
    - odwołanie do atrybutów wszystkich klas powinno się odbywać z wykorzystaniem właściwości;
    - proszę przeciążyć operatory dodawania (+) dla klasy sprzątu rtv tak, by możliwe było dodanie dwóch sprzętów do siebie;
    - proszę przeciążyć operator większości i mniejszości tak, by możliwe było porównanie zużycia prądu;
    Wszystkie wymienione zadania szczegółowe muszą zostać odpowiednio zaprezentowane w programie.
     
  7. Proszę napisać nowy program zawierający dwie klasy opisujące urządzenia/pojazdy umożliwiające przemieszczanie się człowieka (nie może być samochód).
    - proszę stworzyć bazową klasę dla wszystkich pojazdów;
    - proszę stworzyć zdarzenie umożliwiające poinformowanie wszystkich obiektów pojazdów o wystąpieniu wypadku jednego z pojazdów i wywołać zdarzenie. Należy przygotować delegatę oraz w zdarzenia (event), do którego podepną się ze swoimi medodami inne obiekty;
     
  8. Proszę, kontynuując poprzednie zadanie, uzupełnić klasy o następujące elementy:
    - przerobić klasę bazową na klasę abstrakcyjną;
    - dodać do klasy bazowej abstrakcyjną metodę związaną z przemieszczeniem się pojazdów;
    - proszę stworzyć interfejs, po którym dziedziczyć będą wszystkie klasy pojazdów. Interfejs powinien definiować metodę umożliwiającą serwisowanie pojazdu;
    - proszę samodzielnie przygotować w programie przykład obsługi wyjątku (exeption), należy utworzyć własną klasę wyjątku, wygenerować wyjątek oraz go obsłużyć;
    Wszystkie wymienione zadania szczegółowe muszą zostać odpowiednio zaprezentowane w programie.
     
  9. Proszę napisać nowy program realizujący następujące zadania:
    - proszę utworzyć tablicę zawierającą elementy typu integer i wypełnić tablicę wykorzystując listę inicjacyjną, proszę wyświetlić tablicę;
    - proszę utworzyć prostą klasą zawierającą dwa atrybuty, proszę utworzyć tablicę obiektów utworzonej klasy i zaprezentować dowolne operacje na elementach tablicy (np. zmianę wartości atrybutów itp.);
    - proszę wykonać i pokazać przykład użycia funkcji, w której argumentem jest tablica, podobnie proszę pokazać przykład funkcji zwracającej tablicę;
    - proszę pokazać przykłady zmiennej typu string, utworzonej po dodaniu dwóch tekstów i usunięciu fragmentu tekstu;
    - proszę pokazać przykłady użycia klasy StringBuilder (co najmniej na 4 różne sposoby proszę zmodyfikować tekst);

     
  10. Proszę napisać nowy program realizujący następujące zadania:
    - proszę pokazać użycie kolekcji typu Hashtable;
    - proszę wykonać program umożliwiający utworzenie pliku tekstowego oraz zapisanie i odczytanie danych z pliku;
    - proszę dodać do programu możliwość tworzenia pliku binarnego, zapisanie do pliku danych różnych formatów oraz odczytanie tych danych z pliku.

     
  11. Proszę napisać aplikację Windows Forms lub WPF umożliwiającą otwieranie i edytowanie plików tekstowych:
    - do otwarcia pliku należy zastosować okno dialogowe OpenFileDialog z odpowiednimi maskami dla plików (np. otwieranie jedynie plików txt);
    - w aplikacji musi istnieć możliwość tworzenia nowego dokumentu tekstowego i zapisywania tekstu do pliku (musi być miejsce gdzie plik będzie edytowany);
    - należy zastosować odpowiednio obsługę błędów tak by aplikacja działała niezależnie od popełnionych przez użytkownika błędów.
     

Oceny z egzaminu

Oceny 1 termin 2020

Oceny 2 termin 2020

Wykłady

Wykład 1

Wykład 2

Wykład 3

Wykład 4

Wykład 5

Wykład 6


Dodatkowe źródła informacji

https://www.udemy.com/c-net-od-podstaw-do-tworzenia-aplikacji-w-wpf-i-xaml/

https://mva.microsoft.com/pl/training-courses/podstawy-jzyka-c-14509?l=UlSPiieoB_1005192797#

http://csharp.net-tutorials.com/basics/introduction/

http://www.tutorialsteacher.com/csharp/csharp-tutorials

https://mva.microsoft.com/en-us/training-courses/c-fundamentals-for-absolute-beginners-16169?l=Lvld4EQIC_2706218949