Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronach Poprzednia wersja
zajecia:cs:dev:struct [2022/11/05 01:00] – [Zadanie 6 Baza danych osobowych] marekzajecia: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 ''null''. 
- 
-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 
-</code> 
- 
-===== Typ wyliczeniowy ===== 
- 
-Typ wyliczeniowy to odmiana typu całkowitego, którego wartości mają przypisane nazwy (wyliczanka). 
- 
-Deklaracja typu: 
- 
-   enum nazwa_typu 
-   { 
-      element1, element2, ... 
-   }; 
- 
-Przykład: 
-<code C#> 
-enum Kolory { Czerwony , Niebieski , Zielony , Czarny }  
-</code> 
- 
-===== Cechy ===== 
- 
-  * słowo ''enum'' definiuje nowy typ wyliczeniowy 
-  * 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("Zmienna zawiera wartość {0}" , kolor1); 
-        Console.WriteLine("Wartość całkowita to {0}", (int)kolor1); 
-    } 
-} 
-</code> 
- 
-===== 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("Następny kolor to {0}", kolor1); 
-     
-    for (var k = Kolory.Czerwony; k < Kolory.Czarny; k++) 
-    { 
-        Console.WriteLine($"Kolor: {k} o wartości {(int)k}"); 
-    } 
-} 
-</code> 
- 
-Wyjście  
-<file> 
-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 
-</file> 
- 
-===== 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; k <= Kolory.Czarny; k++) 
-    { 
-        Console.WriteLine($"Kolor: {k} o wartości {(int)k}"); 
-    } 
-} 
-</code> 
- 
-Wyjście 
-<file> 
-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 
-</file> 
-===== 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:cs:struct.png?200|}} 
- 
- 
-===== Deklaracja typu strukturalnego ===== 
- 
-Składnia 
-<code C#> 
-struct nazwa_typu  
-{ 
-   modyfikator_dostępu typ1 nazwa_pola1; 
-   modyfikator_dostępu typ2 nazwa_pola2; 
-   ... 
-}; 
-</code> 
- 
-Przykład: 
-<code C#> 
-struct Osoba 
-{ 
-    public string Imię; 
-    public int Wiek; 
-} 
-</code> 
-===== Definicja zmiennej typu strukturalnego ===== 
- 
-<code C#> 
-Osoba student; 
-Osoba pracownik = new Osoba(); 
-</code> 
- 
-Dostęp do pól za pomocą kropki 
-<code C#> 
-student.imię = "Janek"; 
-int x = pracownik.Wiek; 
-</code> 
- 
- 
-===== Dostęp do pól ===== 
- 
-<code C#> 
-s.średnia = 5.0; 
-string s = s.nazwisko; 
-</code> 
- 
- 
-===== Przykład ===== 
- 
-<code C#> 
-struct Osoba 
-{ 
-    public string Imię; 
-    public int Wiek; 
-} 
- 
-static void Main(string[] args) 
-{ 
-    Osoba student; 
- 
-    student.Imię = "Janek";  
-    student.Wiek = 33; 
- 
-    Console.WriteLine(student.Imię); 
-    Console.WriteLine(student.Wiek); 
-} 
-</code> 
- 
-===== Struktury a klasy ====== 
- 
-  * struktury maja wiele podobnych mechanizmów jak klasy: konstruktory, meotody, właściwości, .. 
-  * 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ę = "Jan"; 
- 
-Osoba x = student;   // kopiowanie wartości 
-x.Imię = "Marek"; 
-     
-Console.WriteLine(student.Imię); 
-Console.WriteLine(x.Imię); 
-</code> 
- 
-Wynik: 
-<file> 
-Jan 
-Marek 
-</file> 
- 
- 
- 
- 
- 
- 
- 
-===== Ćwiczenie ===== 
- 
- 
- 
-===== Zadanie 6 Baza danych osobowych ====== 
- 
-Zaimplementuj prostą bazę danych osobowych składającą się z tablicy struktur zawierających dane osobowe: imię, nazwisko i wiek.  
-Dla uproszczenia zakładamy, że maksymalna ilość rekordów w bazie danych nie przekroczy 100.  
-Program startuje pustą bazą danych (ilość wprowadzonych rekordów wynosi 0) i po uruchomieniu wypisuje menu z możliwymi akcjami do wykonania: 
- 
-  - **wyświetl** - wyświetlenie aktualnej zawartości bazy danych oraz liczby rekordów. 
-  - **dodaj** - dodanie nowego rekordu do bazy danych. Użytkownik proszony jest o wypełnienie pól (imię, nazwisko, wiek) nowego rekordu. Nowy rekord dodawany jest na końcu bazy. Ilość rekordów zwiększa się o 1.    
-  - **zamknij** - zamkniecie programu. 
- 
-