Pierwsze spotkanie z platformą .NET i językiem C#. Omówienie składni, typów finansowych oraz struktur danych.
Student demonstruje umiejętność posługiwania się typem precyzyjnym decimal w obliczeniach finansowych oraz operatorami specyficznymi dla języka C#. Zadanie ma na celu pokazanie mechanizmów formatowania wyjścia konsolowego oraz struktury instrukcji switch w nowoczesnej formie. Student potrafi zarządzać prostymi tablicami i pętlami do generowania raportów tekstowych.
Przygotowujesz system do wstępnej weryfikacji koszyka zakupowego w sklepie wielobranżowym. Program musi przetworzyć listę produktów, gdzie każdy produkt posiada cenę oraz opcjonalną kategorię. Niektóre produkty mogą nie mieć przypisanej kategorii w bazie danych, co należy obsłużyć za pomocą operatorów bezpiecznego dostępu. Algorytm musi poprawnie naliczyć podatek VAT w zależności od przypisanej grupy towarowej, stosując różne stawki procentowe. Finalnie system generuje czytelny raport, w którym każda linia jest precyzyjnie wyrównana do kolumn. Musisz zadbać o to, aby kwoty pieniężne były wyświetlane z odpowiednim symbolem waluty zgodnie z lokalnymi ustawieniami. Raport kończy się podsumowaniem całkowitej wartości brutto wszystkich zakupionych towarów. Całość musi być wykonana jako pojedyncza, spójna aplikacja konsolowa o wysokiej czytelności kodu.
using System; class Program { static void Main() { // Typ decimal z przyrostkiem m zapewnia precyzję decimal[] ceny = { 19.99m, 1200.00m, 5.50m, 299.99m, 89.00m }; string[] kategorie = { "Spożywcze", "Elektronika", "Spożywcze", "RTV", null }; decimal sumaBrutto = 0; // Nagłówek z formatowaniem stałopozycyjnym Console.WriteLine("{0,-15} | {1,-12} | {2,-10} | {3,-10}", "Towar", "Kategoria", "Netto", "VAT"); Console.WriteLine(new string('-', 55)); for (int i = 0; i < ceny.Length; i++) { // Operator ?? obsługuje brak kategorii string kat = kategorie[i] ?? "Inne"; decimal stawka; switch (kat) { case "Spożywcze": stawka = 0.05m; break; case "Elektronika": case "RTV": stawka = 0.23m; break; default: stawka = 0.08m; break; } decimal vat = ceny[i] * stawka; decimal brutto = ceny[i] + vat; sumaBrutto += brutto; // Interpolacja stringów z formatowaniem walutowym :c Console.WriteLine($"Pozycja {i + 1,-7} | {kat,-12} | {ceny[i],10:c} | {vat,10:c}"); } Console.WriteLine(new string('-', 55)); Console.WriteLine($"RAZEM DO ZAPŁATY (BRUTTO): {sumaBrutto:c}"); } }
Głównym celem zadania jest przećwiczenie obsługi tablic jednowymiarowych oraz implementacja prostych algorytmów obliczeniowych. Student uczy się iteracji po danych oraz interakcji z użytkownikiem poprzez konsolę.
Zostałeś poproszony o przygotowanie małego narzędzia dla stacji meteorologicznej do analizy tygodniowych pomiarów. Użytkownik powinien mieć możliwość wprowadzenia dokładnie siedmiu wartości temperatury, reprezentujących kolejne dni tygodnia. Program musi zapisać te wartości w odpowiedniej strukturze danych, która umożliwi ich późniejszą obróbkę. Po zebraniu kompletu danych, algorytm oblicza średnią arytmetyczną temperatur z całego okresu. Dodatkowo system musi odnaleźć i wskazać dzień, w którym zanotowano najwyższą temperaturę. Wyświetlone wyniki powinny być czytelne i sformatowane tak, aby ułatwić odczyt badaczowi. Program powinien informować użytkownika o tym, który konkretnie dzień jest aktualnie wpisywany do bazy. Finalny raport ma zawierać pełną listę wprowadzonych wartości oraz wyliczone statystyki.
Poznanie działania operatora null-coalescing (??) w praktycznym zastosowaniu biznesowym. Student uczy się zarządzać danymi tekstowymi i liczbowymi, sprawnie obsługując brakujące informacje wprowadzane przez użytkownika.
Budujesz moduł do zarządzania arkuszem ocen dla szkoły wyższej, gdzie nie każdy przedmiot musi mieć jeszcze wystawioną notę końcową. Twoim zadaniem jest stworzenie aplikacji, która przyjmuje nazwy kursów oraz odpowiadające im oceny. System musi być na tyle elastyczny, aby w przypadku, gdy użytkownik nie wprowadzi żadnej oceny dla danego wiersza, automatycznie przypisywana była wartość domyślna oznaczająca "3.0" (jako wariant bezpieczny). Program powinien przetworzyć listę trzech przedmiotów pobranych sekwencyjnie z klawiatury. Po zakończeniu wprowadzania danych, system generuje przejrzysty wykaz wszystkich kursów wraz z ich statusami punktowymi. Musisz zwrócić szczególną uwagę na to, jak program reaguje na całkowicie puste ciągi znaków w polu oceny. Wynik powinien być wyświetlony jako estetycznie wyrównana tabela w oknie konsoli. Dzięki takiemu podejściu aplikacja jest odporna na błędy użytkownika i nie powoduje awarii przy braku opcjonalnych danych. Całość służy jako przykład poprawnego projektowania logiki tzw. "fail-safe" w kodzie.
Wykorzystanie typu decimal oraz rozbudowanej instrukcji switch do sterowania logiką obliczeniową. Student uczy się precyzyjnego modelowania algorytmów podatkowych oraz formatowania wyników finansowych.
Tworzysz prosty kalkulator dla działu kadr, który ma szybko przeliczać kwoty brutto na kwoty netto dla różnych form zatrudnienia. Program po uruchomieniu prosi o podanie miesięcznego wynagrodzenia brutto, które powinno być obsłużone z precyzją finansową. Następnie użytkownik wybiera jeden z trzech kodów umów: 'UOP' dla umowy o pracę, 'UZ' dla umowy zlecenia oraz 'UD' dla umowy o dzieło. Na podstawie wybranego kodu, program stosuje odpowiednie procentowe odliczenia kosztów uzyskania przychodu i ubezpieczeń. Przyjmij uproszczone wskaźniki: 70% wartości dla UOP, 80% dla UZ i 85% dla UD. Jeśli użytkownik poda nieznany kod umowy, system powinien zgłosić błąd i uniemożliwić wykonanie błędnych obliczeń. Finalnie wyświetlane jest pełne podsumowanie zawierające kwotę wejściową, naliczony podatek i kwotę netto. Całość musi być wykonana z dbałością o detale wizualne, takie jak separatory tysięcy i właściwa waluta. Kalkulator ten ma za zadanie zminimalizować błędy przy ręcznym wyliczaniu wypłat przez młodszych księgowych.
Praktyczne zrozumienie struktury i zastosowania tablic poszarpanych (jagged arrays) w sytuacjach o nieregularnej liczbie danych. Student uczy się alokacji pamięci dla podtablic oraz operowania na nich za pomocą zagnieżdżonych struktur pętli.
Jako programista uczelniany budujesz system do ewidencji obecności na zajęciach laboratoryjnych dla wielu grup. Każda z grup ma inną liczbę zarejestrowanych studentów, co sprawia, że standardowa macierz prostokątna byłaby nieefektywna pamięciowo. Musisz stworzyć strukturę, która pozwoli przechować liczbę godzin obecności dla każdego studenta w trzech różnych grupach (np. 3 osoby w pierwszej, 5 w drugiej, 2 w trzeciej). Twoim zadaniem jest wypełnienie tej struktury przykładowymi danymi wprowadzonymi ręcznie lub wygenerowanymi w kodzie. Algorytm musi następnie przejść przez listę wszystkich grup i dla każdej z nich osobno obliczyć średnią frekwencję. Wyniki powinny być zaprezentowane w formie czytelnej listy, która wskazuje numer grupy i jej statystyczne wyniki. Musisz zadbać o poprawne indeksowanie tablic, aby uniknąć błędów wyjścia poza zakres przy nieregularnej długości wierszy. System ten symuluje realne bazy danych, gdzie wiersze często mają różną liczbę powiązanych ze sobą rekordów. Finalnie program powinien wyświetlić łączną liczbę studentów we wszystkich grupach objętych analizą.
Opanowanie pracy z tablicami wielowymiarowymi regularnymi oraz metodami GetLength do zarządzania ich wymiarami. Student uczy się mapowania rzeczywistych struktur tabelarycznych na kod programistyczny.
Pracujesz w dziale IT fabryki, która produkuje trzy rodzaje komponentów na czterech różnych liniach produkcyjnych. Musisz zapisać w systemie raport wydajnościowy z ostatniej zmiany, przedstawiający liczbę sztuk wyprodukowanych na każdej linii dla każdego produktu. Najlepszym rozwiązaniem będzie użycie macierzy o stałych wymiarach 3x4, gdzie wiersze reprezentują typy produktów, a kolumny konkretne maszyny. Twoim zadaniem jest stworzenie algorytmu, który wczyta te dane i pozwoli na przeprowadzenie szybkiej analizy. Po zebraniu informacji, program musi obliczyć całkowitą liczbę sztuk wyprodukowanych dla każdego typu komponentu (suma w każdym wierszu macierzy). Dodatkowo Twoim celem jest wskazanie, która maszyna (kolumna) była statystycznie najbardziej efektywna w trakcie zmiany. Wynik musi być zaprezentowany w formie tabeli tekstowej, z czytelnym opisem co oznacza każda wartość. Taka analiza pozwala kadrze zarządzającej na szybką identyfikację ewentualnych przestojów lub awarii na konkretnych liniach produkcyjnych. Program musi być stabilny i poprawnie obsługiwać granice zadeklarowanej macierzy.
Zastosowanie pętli foreach oraz operacji na ciągach znaków do filtrowania zbiorów danych. Student uczy się metod optymalnego przeszukiwania tablic oraz transformacji wielkości liter w celu zwiększenia skuteczności wyszukiwania.
W dużym magazynie logistycznym potrzebne jest proste narzędzie do błyskawicznego sprawdzania dostępności towarów według podanej części nazwy. System ma przechowywać statyczną tablicę kilkunastu produktów, takich jak elektronika, meble biurowe i akcesoria. Użytkownik wpisuje w konsoli wyszukiwaną frazę, a program musi przeszukać całą bazę pod kątem wystąpienia tego ciągu znaków w dowolnym miejscu nazwy produktu. Twoim zadaniem jest zapewnienie, aby wyszukiwanie nie brało pod uwagę wielkości wpisanych liter (tzw. case-insensitive search). Algorytm po przeanalizowaniu tablicy powinien wyświetlić listę wszystkich trafień oraz podsumować całkowitą liczbę znalezionych pozycji. Jeśli żadna nazwa nie pasuje do wzorca, system musi o tym wyraźnie poinformować użytkownika stosownym komunikatem. Taka funkcjonalność znacznie przyspiesza pracę magazynierów przy obsłudze dużych partii towaru o skomplikowanych nazwach katalogowych. Musisz również zadbać o to, aby program po wyświetleniu wyników oczekiwał na reakcję użytkownika przed zamknięciem okna. Jest to świetny przykład zastosowania iteracji po kolekcjach typu string w codziennych zadaniach programistycznych.