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:08] – [Deklaracja typu strukturalnego] 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 Student | ||
- | { | ||
- | public string Imię; | ||
- | public int Wiek; | ||
- | } | ||
- | </ | ||
- | ===== Definicja zmiennej typu strukturalnego ===== | ||
- | |||
- | <code C#> | ||
- | Osoba student; | ||
- | Osoba pracownik = new Osoba(); | ||
- | </ | ||
- | |||
- | ===== Dostęp do pól ===== | ||
- | |||
- | <code C#> | ||
- | s.średnia = 5.0; | ||
- | string s = s.nazwisko; | ||
- | </ | ||
- | |||
- | |||
- | ===== Przykład ===== | ||
- | |||
- | |||
- | ===== 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(" | ||
- | // specyfikacja drugiego samochodu | ||
- | auto_2.PobierzWartosc(" | ||
- | auto_1.WypiszWartosci(); | ||
- | Console.WriteLine(); | ||
- | auto_2.WypiszWartosci(); | ||
- | Console.ReadKey(); | ||
- | // Wynik działania programu | ||
- | //Marka: Audi | ||
- | //Model: RS6 | ||
- | // | ||
- | //Marka: Ferrari | ||
- | //Model: F355 | ||
- | // | ||
- | } | ||
- | 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(" | ||
- | Console.WriteLine(" | ||
- | Console.WriteLine(" | ||
- | } | ||
- | } | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | ===== Inicjowanie struktur ===== | ||
- | |||
- | <code C#> | ||
- | struct student | ||
- | { | ||
- | int numer ; | ||
- | char nazwisko [ 5 ] ; | ||
- | } ; | ||
- | struct student janek = { 1 3 , " ABC " } ; | ||
- | struct student franek = { 5 , { ’A ’ , ’B ’ , ’C ’ } } | ||
- | </ | ||
- | |||
- | ===== 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; | ||
- | | ||
- | } | ||
- | } ; | ||
- | |||
- | Student janek = new Student(1, " | ||
- | </ | ||
- | |||
- | |||
- | |||
- | ===== Tablica struktur ===== | ||
- | |||
- | |||
- | <code C#> | ||
- | |||
- | kod tutaj | ||
- | </ | ||
- | |||
- | ===== Ć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, | ||
- | |||