Różnice

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

Odnośnik do tego porównania

Poprzednia rewizja po obu stronach Poprzednia wersja
Nowa wersja
Poprzednia wersja
zajecia:cs:dev:struct [2022/11/05 00:31] – [Przykład] 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, .. 
-  * struktury to typ wartościowy a nie referencyjny 
- 
-<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> 
- 
- 
- 
-===== Przykład ===== 
- 
- 
-====== ===== 
- 
-  * struktrury zawierają pola, dostęp za pomocą kropki  
-  * pola domyślnie są publiczne 
-  * struktura może posiadać własne metody - ale o tym więcej na programowaniu obiektowym 
-  
- 
-<code C#> 
-using System; 
-namespace Struktury 
-{ 
-    class Program 
-    { 
-        static void Main(string[] args) 
-        { 
-            Samochody auto_1 = new Samochody(); 
-            Samochody auto_2 = new Samochody(); 
-            // specyfikacja pierwszego samochodu 
-            auto_1.PobierzWartosc("Audi", "RS6", 4200); 
-            // specyfikacja drugiego samochodu 
-            auto_2.PobierzWartosc("Ferrari", "F355", 3500); 
-            auto_1.WypiszWartosci(); 
-            Console.WriteLine(); 
-            auto_2.WypiszWartosci(); 
-            Console.ReadKey(); 
-            // Wynik działania programu 
-            //Marka: Audi 
-            //Model: RS6 
-            //Pojemnosc: 4200 
-            //Marka: Ferrari 
-            //Model: F355 
-            //Pojemnosc: 3500 
-        } 
-        struct Samochody 
-        { 
-            private string marka; 
-            private string model; 
-            private int pojemnosc; 
-            public void PobierzWartosc(string mar, string mod, int poj) 
-            { 
-                marka = mar; 
-                model = mod; 
-                pojemnosc = poj; 
-            } 
-            public void WypiszWartosci() 
-            { 
-                Console.WriteLine("Marka: {0}", marka); 
-                Console.WriteLine("Model: {0}", model); 
-                Console.WriteLine("Pojemnosc: {0}", pojemnosc); 
-            } 
-        } 
-    } 
-} 
-</code> 
- 
- 
-===== Inicjowanie struktur ===== 
- 
-<code C#> 
-struct student 
-{ 
-int numer ; 
-char nazwisko [ 5 ] ; 
-} ; 
-struct student janek = { 1 3 , " ABC " } ; 
-struct student franek = { 5 , { ’A ’ , ’B ’ , ’C ’ } }  
-</code> 
- 
-===== Konstruktor ===== 
- 
-Konstruktor to metoda struktury o takiej samej nazwie jak nazwa struktury. Służy do inicjowania wartości pól.  
- 
-<code C#> 
-struct Student 
-{ 
-int numer ; 
-char nazwisko [ 5 ] ; 
- 
-public Student(int numer, string nazwisko) 
-{ 
-   numer = numer; 
-   nazwisko = nazwisko; 
-} 
-} ; 
- 
-Student janek = new Student(1, "Nowak"); 
-</code> 
- 
- 
- 
-===== Tablica struktur ===== 
- 
- 
-<code C#> 
- 
-kod tutaj 
-</code> 
- 
-===== Ć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, np. gdy podczas usuwania rekordu użytkownik poda niepoprawny numer. Po wykonaniu akcji 1, 2, 3 lub 4 menu ponownie jest wyświetlane i użytkownik ponownie może wykonać jedną z akcji. Wybranie pozycji nr 5 kończy działanie programu.  
-