Różnice
Różnice między wybraną wersją a wersją aktualną.
Poprzednia rewizja po obu stronach Poprzednia wersja Nowa wersja | Poprzednia wersja | ||
zajecia:cs:dev:struct [2022/11/05 00:36] – [Tablica struktur] marek | zajecia:cs:dev:struct [Unknown date] (aktualna) – usunięto - edycja zewnętrzna (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Linia 1: | Linia 1: | ||
- | ===== Typ pusty ===== | ||
- | |||
- | Typy wartościowe mają wersję typu umożliwiającą przypisanie wartości '' | ||
- | |||
- | Deklaracja: | ||
- | |||
- | typ? nazwa = null; | ||
- | |||
- | Przykład: | ||
- | <code C#> | ||
- | int? a = null; | ||
- | int? b = 42; | ||
- | double? x = null; | ||
- | bool? czy_prawda = null; | ||
- | |||
- | //int k = null; // ta deklaracja nie jest dozwolona | ||
- | </ | ||
- | |||
- | ===== Typ wyliczeniowy ===== | ||
- | |||
- | Typ wyliczeniowy to odmiana typu całkowitego, | ||
- | |||
- | Deklaracja typu: | ||
- | |||
- | enum nazwa_typu | ||
- | { | ||
- | element1, element2, ... | ||
- | }; | ||
- | |||
- | Przykład: | ||
- | <code C#> | ||
- | enum Kolory { Czerwony , Niebieski , Zielony , Czarny } | ||
- | </ | ||
- | |||
- | ===== Cechy ===== | ||
- | |||
- | * słowo '' | ||
- | * deklaracja typu umieszczana jest w zakresie przestrzeni nazw lub klasy | ||
- | * lista elementów reprezentuje kolejne wartości całkowite od 0 | ||
- | |||
- | <code C#> | ||
- | internal class Program | ||
- | { | ||
- | enum Kolory { Czerwony, Niebieski, Zielony, Czarny } | ||
- | |||
- | static void Main(string[] args) | ||
- | { | ||
- | // deklaracja zmiennej | ||
- | Kolory kolor1; | ||
- | |||
- | // przypisanie wartości | ||
- | kolor1 = Kolory.Czerwony; | ||
- | |||
- | Console.WriteLine(" | ||
- | Console.WriteLine(" | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | ===== Przykład użycia ===== | ||
- | |||
- | Na zmiennych typu wyliczeniowego można wykonywać wszystkie operacje poprawne dla typu całkowitego. | ||
- | |||
- | <code C#> | ||
- | enum Kolory { Czerwony, Niebieski, Zielony, Czarny } | ||
- | |||
- | static void Main(string[] args) | ||
- | { | ||
- | Kolory kolor1 = Kolory.Zielony; | ||
- | kolor1++; | ||
- | Console.WriteLine(" | ||
- | | ||
- | for (var k = Kolory.Czerwony; | ||
- | { | ||
- | Console.WriteLine($" | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | Wyjście | ||
- | < | ||
- | Następny kolor to Czarny | ||
- | Kolor: Czerwony o wartości 0 | ||
- | Kolor: Niebieski o wartości 1 | ||
- | Kolor: Zielony o wartości 2 | ||
- | Kolor: Czarny o wartości 3 | ||
- | </ | ||
- | |||
- | ===== Przypisanie wartości ===== | ||
- | |||
- | Wartościom wyliczeniowym możemy przypisać własne wartości liczbowe | ||
- | |||
- | <code C#> | ||
- | enum Kolory | ||
- | { | ||
- | Zielony = 5, | ||
- | Czerwony, | ||
- | Czarny = 10 | ||
- | } | ||
- | |||
- | static void Main(string[] args) | ||
- | { | ||
- | for (var k = Kolory.Zielony; | ||
- | { | ||
- | Console.WriteLine($" | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | Wyjście | ||
- | < | ||
- | Kolor: Zielony o wartości 5 | ||
- | Kolor: Czerwony o wartości 6 | ||
- | Kolor: 7 o wartości 7 | ||
- | Kolor: 8 o wartości 8 | ||
- | Kolor: 9 o wartości 9 | ||
- | Kolor: Czarny o wartości 10 | ||
- | </ | ||
- | ===== Struktury ===== | ||
- | |||
- | * Struktura to typ wartościowy przechowujący elementy różnego typu. | ||
- | * **pola** - elementy struktury identyfikowane nazwami | ||
- | * ułatwiają organizację danych - struktura jest obiektem | ||
- | * struktura może być argumentem metody oraz typem zwracanym metody | ||
- | |||
- | {{ zajecia: | ||
- | |||
- | |||
- | ===== Deklaracja typu strukturalnego ===== | ||
- | |||
- | Składnia | ||
- | <code C#> | ||
- | struct nazwa_typu | ||
- | { | ||
- | | ||
- | | ||
- | ... | ||
- | }; | ||
- | </ | ||
- | |||
- | Przykład: | ||
- | <code C#> | ||
- | struct Osoba | ||
- | { | ||
- | public string Imię; | ||
- | public int Wiek; | ||
- | } | ||
- | </ | ||
- | ===== Definicja zmiennej typu strukturalnego ===== | ||
- | |||
- | <code C#> | ||
- | Osoba student; | ||
- | Osoba pracownik = new Osoba(); | ||
- | </ | ||
- | |||
- | Dostęp do pól za pomocą kropki | ||
- | <code C#> | ||
- | student.imię = " | ||
- | int x = pracownik.Wiek; | ||
- | </ | ||
- | |||
- | |||
- | ===== Dostęp do pól ===== | ||
- | |||
- | <code C#> | ||
- | s.średnia = 5.0; | ||
- | string s = s.nazwisko; | ||
- | </ | ||
- | |||
- | |||
- | ===== Przykład ===== | ||
- | |||
- | <code C#> | ||
- | struct Osoba | ||
- | { | ||
- | public string Imię; | ||
- | public int Wiek; | ||
- | } | ||
- | |||
- | static void Main(string[] args) | ||
- | { | ||
- | Osoba student; | ||
- | |||
- | student.Imię = " | ||
- | student.Wiek = 33; | ||
- | |||
- | Console.WriteLine(student.Imię); | ||
- | Console.WriteLine(student.Wiek); | ||
- | } | ||
- | </ | ||
- | |||
- | ===== Struktury a klasy ====== | ||
- | |||
- | * struktury maja wiele podobnych mechanizmów jak klasy: konstruktory, | ||
- | * struktury to typ wartościowy a klasy referencyjny | ||
- | * struktury nie wspierają dziedziczenia (ale to już inny temat) | ||
- | |||
- | <code C#> | ||
- | Osoba student = new Osoba(); | ||
- | student.Imię = " | ||
- | |||
- | Osoba x = student; | ||
- | x.Imię = " | ||
- | | ||
- | Console.WriteLine(student.Imię); | ||
- | Console.WriteLine(x.Imię); | ||
- | </ | ||
- | |||
- | Wynik: | ||
- | < | ||
- | Jan | ||
- | Marek | ||
- | </ | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ===== Ćwiczenie ===== | ||
- | |||
- | ===== Zadanie 6 Baza danych osobowych ====== | ||
- | |||
- | Ćwiczenie: baza danych | ||
- | |||
- | Zaimplementuj prostą bazę danych osobowych składającą się z sekwencji rekordów zawierających dane osobowe: imię, nazwisko i wiek osób umieszczonych w bazie danych. Struktury zawierające dane przechowuj w odpowiedniej tablicy. Dla uproszczenia zakładamy, że maksymalna ilość rekordów nie przekroczy 1000. Program po uruchomieniu wypisuje menu z możliwymi akcjami do wykonania po podaniu liczby od 1 do 5: | ||
- | |||
- | wyswietl - wyświetlenie całej bazy danych | ||
- | dodaj - dodanie nowego rekordu do bazy danych | ||
- | usun - usunięcie rekordu z bazy danych wskazanego przez numer | ||
- | zamien - modyfikacja zawartości rekordu wskazanego przez numer | ||
- | zamknij - zamkniecie programu | ||
- | |||
- | Zaimplementuj wszystkie funkcjonalności opisane w powyższym menu. Zadbaj o obsługę sytuacji wyjątkowych, | ||
- | |||