C#. Lekcje programowania. Praktyczna nauka programowania dla platform .NET i .NET Core - ebook
C#. Lekcje programowania. Praktyczna nauka programowania dla platform .NET i .NET Core - ebook
Programistą być
Książka, którą trzymasz w ręku, to znakomity podręcznik do nauki programowania od podstaw. Autor, wieloletni wykładowca akademicki i nauczyciel studentów informatyki, proponuje naukę programowania w języku C#. To wybór nieprzypadkowy. C# jest nowoczesnym, obiektowym, stale rozwijanym i popularnym językiem, którym opiekuje się firma Microsoft. Dodatkowo ... dzięki podobieństwu C# do innych często używanych języków z rodziny C, C++ i Java ... wszystko, czego nauczysz się z podręcznika, możesz wykorzystać także do programowania w tych językach.
Zakres zagadnień omawianych w książce obejmuje:
- język programowania C# 6.0, w tym posługiwanie się zmiennymi, metodami, tablicami oraz kolekcjami danych z platform .NET i .NET Core
- podstawowe techniki programowania obiektowego
- różne formaty przechowywania i eksportu danych
- darmowe środowisko programistyczne Microsoft Visual Studio 2019 Community
Jeżeli chcesz uczyć się programować od podstaw ... to książka dla Ciebie.
Jeżeli znasz już podstawy, ale chcesz poznać C# oraz platformy .NET i .NET Core ... to również dobry wybór.
Uwaga! Podręcznik zawiera ćwiczenia, w których krok po kroku opisano tworzenie aplikacji konsolowych w darmowym Visual Studio 2019 i omówiono ich kod, a także bogaty zestaw zadań do samodzielnego wykonania!
Spis treści
Wstęp 17
CZĘŚĆ I. PODSTAWY PROGRAMOWANIA 19
Rozdział 1. Pierwszy kontakt ze środowiskiem Visual Studio 2019 i językiem C# 21
- Projekt aplikacji konsolowej 22
- Skróty klawiszowe Visual Studio 25
- Podpowiadanie kodu (IntelliSense) 27
- Strumienie wyjścia i wejścia 28
- Wszystkiego po trochu 29
- Pytania 32
Rozdział 2. NET Framework, .NET Core i .NET Standard 33
- Pytania 36
Rozdział 3. Podstawowe typy danych 37
- Deklaracja i zmiana wartości zmiennej 37
- Typy liczbowe oraz typ znakowy 39
- Określanie typu zmiennej przy inicjacji (pseudotyp var) 41
- Operatory 42
- Konwersje typów 45
- Łańcuchy 46
- String kontra StringBuilder 48
- [Dla dociekliwych\ Formatowanie łańcuchów 50
- Typ wyliczeniowy 51
- Ćwiczenia 52
- Średnia arytmetyczna 52
- Równanie kwadratowe 55
- Łańcuchy 57
- Pytania 57
- Zadanie 58
Rozdział 4. Metody 59
- Parametry metody. Przeciążanie metod 60
- Domyślne wartości argumentów metod - argumenty opcjonalne 61
- Argumenty nazwane 62
- Wartości zwracane przez metody 62
- Zwracanie wartości przez argument metody 63
- [Dla dociekliwych\ Zagadnienia zaawansowane 65
- [Dla dociekliwych\ Delegacje 65
- [Dla dociekliwych\ Wyrażenia lambda 66
- [Dla dociekliwych\ Delegacje Action, Func i Predicate 68
- [Dla dociekliwych\ Caller Information 69
- Ćwiczenia 71
- Średnia arytmetyczna 71
- Parzystość 71
- Zamiana parametrów 72
- [Dla dociekliwych\ Metoda ogólna 73
- Równanie kwadratowe 74
- [Dla dociekliwych\ Pochodne 75
- Pytania 77
Rozdział 5. Sterowanie przepływem 79
- Wybór 79
- Instrukcja warunkowa if..else 79
- Konstrukcja if..else..if 80
- Instrukcja wyboru switch 81
- [Dla dociekliwych\ Nowa składnia switch 82
- Powtarzanie 83
- Pętla for 84
- Pętla while 86
- Przerywanie iteracji i pętli 88
- Wyjątki 88
- Przechwytywanie wyjątków 89
- [Dla dociekliwych\ Filtrowanie wyjątków 89
- [Dla dociekliwych\ Sekcja finally 90
- Zgłaszanie wyjątków 91
- [Dla dociekliwych\ Dyrektywy preprocesora 92
- Kompilacja warunkowa 92
- Definiowanie stałych preprocesora 94
- Bloki 95
- [Dla dociekliwych\ Atrybuty 96
- Ćwiczenia 96
- Pętla for 96
- Liczba Eulera 98
- Pytaj aż do skutku 101
- Pytania 103
- Zadania 104
Rozdział 6. Wiele hałasu o null 107
- Typy wartościowe i referencyjne 107
- Zwalnianie obiektów z pamięci 110
- Nullable 114
- [Dla dociekliwych\ Leniwe inicjowanie zmiennych 116
- Pudełkowanie 116
- Operatory is i as 117
- [Dla dociekliwych\ Typy dynamiczne 118
- Ćwiczenie 119
- Pytania 120
Rozdział 7. Tablice, pętle i pliki 121
- Tablice 121
- Pętla foreach 123
- Wybór elementów z tablicy 123
- Tablica jako argument metody 124
- Podstawy 124
- [Dla dociekliwych\ Dwie ciekawostki 125
- Sortowanie 126
- Liczby losowe 126
- Pliki tekstowe 128
- Tablice dla typów referencyjnych 132
- Inicjacja elementów tablicy 132
- Pętla foreach 133
- Sortowanie 133
- Płytkie i głębokie kopiowanie 134
- Ćwiczenia 135
- Zabawa dwiema kostkami 135
- Agregacja danych 136
- Przeszukiwanie zbioru 138
- [Dla dociekliwych\ Zapowiedź LINQ 140
- Sortowanie i mediana 141
- [Dla dociekliwych\ Histogram 143
- Pytania 146
- Zadania 146
Rozdział 8. Tropienie błędów 149
- Program z błędem logicznym - pole do popisu dla debuggera 149
- Kontrolowane uruchamianie aplikacji w Visual Studio 150
- Śledzenie wykonywania programu krok po kroku (F10 i F11) 150
- Run to Cursor (Ctrl+F10) 152
- Punkt przerwania (F9) 152
- Okna Automatyczne, Lokalne i Wyrażenie kontrolne 153
- Stan wyjątkowy 156
- Zgłaszanie wyjątków 156
- Przechwytywanie wyjątków w konstrukcji try..catch 158
- Wymuszenie kontroli zakresu zmiennych 159
Rozdział 9. Kolekcje i krotki 161
- Kolekcje 161
- Lista 161
- Słowniki 164
- Kolejka i stos 165
- [Dla dociekliwych\ Iterator 166
- [Dla dociekliwych\ Słowo kluczowe yield 168
- Krotki 169
- Ćwiczenia 170
- Równania kwadratowe 170
- Filtrowanie liczb parzystych 172
- Tłumaczenie 174
- Pytania 177
- Zadania 177
[Dla dociekliwych\ Rozdział 10. Maszyna Turinga 179
- Maszyna Turinga 179
- Dodawanie plików tekstowych do projektu 181
- Analiza zapisu taśmy 182
- Wczytywanie i parsowanie kodu programu 183
- Wykonywanie programu 184
- Argumenty linii komend 187
- Dystrybucja programów 188
- Zadania 189
CZĘŚĆ II. PROGRAMOWANIE OBIEKTOWE 191
Rozdział 11. Definiowanie typów 193
- Po co definiować własne typy? 193
- Pojęcia programowania obiektowego 195
- Pola i metody 196
- Konstruktor 197
- Własności 197
- Modyfikatory dostępu 198
- Modyfikatory const i readonly 199
- Klasa czy struktura? 200
- Ćwiczenia 200
- Przygotowywanie projektu 201
- Konstruktor i statyczne pola 202
- Pierwsze testy 204
- Konwersje na łańcuch (metoda ToString) i na typ double 205
- Nadpisywanie i przeciążanie metod 206
- Metoda upraszczająca ułamek 206
- Właściwości 208
- Domyślnie implementowane właściwości 210
- Operatory arytmetyczne 211
- Operatory porównania oraz metody Equals i GetHashCode 213
- Operatory konwersji 215
- [Dla dociekliwych\ Różne sposoby definiowania metod 216
- [Dla dociekliwych\ Operator potęgowania 217
- Implementacja interfejsu IComparable<> 218
- Pytania 221
- Zadania 221
Rozdział 12. Biblioteki DLL 225
- Tworzenie zarządzanej biblioteki DLL 226
- Dodawanie do aplikacji referencji do biblioteki DLL 229
- [Dla dociekliwych\ Dynamiczne ładowanie typów 230
- [Dla dociekliwych\ Pakiet NuGet 231
- Pytania 233
Rozdział 13. Testy jednostkowe 235
- Projekt testów jednostkowych 236
- Przygotowania do tworzenia testów 237
- Pierwszy test jednostkowy 237
- Uruchamianie testów 239
- Dostęp do prywatnych pól testowanej klasy 240
- Testowanie wyjątków 242
- Kolejne testy weryfikujące otrzymane wartości 243
- Test ze złożoną weryfikacją 244
- Wielokrotnie powtarzane testy losowe 245
- Niepowodzenie testu 246
- Nieuniknione błędy 249
- Pytania 252
- Zadania 253
Rozdział 14. Przykłady I 255
- Rozwiązywanie równań kwadratowych 255
- Wariant 1. 256
- Wariant 2. 259
- Wariant 3. 260
- Dodatkowa optymalizacja 262
- [Dla dociekliwych\ Maszyna Turinga 2.0 264
- Dwójka 264
- Czwórka 266
- Program 267
- Stan 268
- Maszyna 271
- Rozruch 272
- Wezwanie do refaktoryzacji 274
- Statystyka 274
- Biblioteka. Interfejs IEnumerable<> 275
- Aplikacja 278
- Zbiór parametrów statystycznych 280
- Zadania 282
Rozdział 15. Miscellanea 283
- Rozszerzenia 283
- Singleton 285
- Klasa statyczna 285
- Ukryty konstruktor 286
- Leniwa inicjacja 288
- Dopasowywanie wzorca 289
- [Dla dociekliwych\ Zdarzenia 290
- [Dla dociekliwych\ Typy anonimowe 293
- [Dla dociekliwych\ Uwaga na temat zwalniania pamięci w klasach 295
- Ćwiczenia 298
- Rozszerzenia. Dopełnienie imitacji LINQ 298
- [Dla dociekliwych\ Zdarzenia. Śledzenie zmian 300
- Singleton. Rejestrowanie zdarzeń w aplikacji 302
- Pytania 305
- Zadania 305
[Dla dociekliwych\ Rozdział 16. Typy ogólne 307
- Definiowanie typów ogólnych 308
- Określanie warunków, jakie mają spełniać parametry 309
- Implementacja interfejsów przez typ ogólny 310
- Definiowanie aliasów 312
- Typy ogólne z wieloma parametrami 312
- Kowariancja i kontrawariancja typów 314
- Pytania 318
Rozdział 17. Dziedziczenie i polimorfizm 319
- Dziedziczenie 319
- Klasy bazowe i klasy potomne 319
- Kolejność wywoływania konstruktorów 322
- Konwersja referencji do klasy bazowej 323
- Nadpisywanie a przesłanianie metod 324
- Polimorfizm 327
- Klasy abstrakcyjne 327
- Metody i własności wirtualne 330
- Polimorfizm 332
- Konstruktory a dziedziczenie raz jeszcze 334
- Ćwiczenia 337
- Relacje "jest" i "ma" 337
- Nadpisywanie i przeciążanie metod 339
- Zakres chroniony 340
- Pytania 342
- Zadania 342
Rozdział 18. Interfejsy 345
- Interfejsy jako "wspólny mianownik" 345
- Interfejsy a klasy abstrakcyjne 347
- Przykład 349
- Interfejsy ogólne 350
- Pytania 352
- Zadania 352
Rozdział 19. Klasa do klasy 353
- SOLID 353
- Zasada jednej odpowiedzialności 354
- Zasada otwarte-zamknięte 357
- Zasada podstawienia Liskov 359
- Zasada segregacji interfejsów 363
- Zasada odwrócenia zależności 365
- Krótki komentarz na temat odwrócenia kontroli 368
- Programowanie kontraktowe 369
- GRASP 369
- Zapachy kodu 371
Rozdział 20. Przykłady II 373
- Oprogramowanie dla działu kadr 373
- Pracownik (liść) 373
- Kierownik (gałąź) 374
- Cykle 376
- Odwiedzający 377
- Wyświetlanie 380
- Głębokość 381
- Rozwiązanie problemu cykli 383
- Spłaszczanie drzewa do listy 386
- Zalety wzorców projektowych 387
- Rozszerzenie parametrów statystycznych 388
- Zadania 389
CZĘŚĆ III. DANE W APLIKACJI 391
Rozdział 21. Wzorzec MVC 393
- Model 394
- Kontroler 397
- Widok 404
- Stosowanie i wycofywanie zmian 405
- Przerost formy nad treścią? 408
- Zadania 409
Rozdział 22. Przechowywanie danych w plikach XML 411
- Podstawy języka XML 411
- Deklaracja 411
- Elementy 412
- Atrybuty 413
- Komentarze 413
- LINQ to XML 413
- Tworzenie pliku XML za pomocą klas XDocument i XElement 413
- Pobieranie wartości z elementów o znanej pozycji w drzewie 417
- Pobieranie danych do kolekcji 418
- Drzewo i rekurencja 424
- Wyświetlanie drzewa w konsoli 426
- Zadania 427
Rozdział 23. LINQ 429
- Operatory LINQ 429
- Pobieranie danych (filtrowanie i sortowanie) 431
- Analiza pobranych danych 433
- Wybór elementu 433
- Weryfikowanie danych 433
- Prezentacja w grupach 434
- Łączenie zbiorów danych 434
- Łączenie danych z różnych źródeł (operator join) 435
- Możliwość modyfikacji danych źródła 436
- Zapisywanie danych z kolekcji do pliku XML 437
- Zadania 439
Rozdział 24. Serializacja do XML i JSON 441
- XML 441
- JSON 445
- Zadanie 450
Rozdział 25. CSV 451
- Zapis kolekcji do pliku CSV 451
- Kwestia przecinka 453
- Odczytywanie danych 454
- Uogólnienie 455
- Zadania 458
Rozdział 26. OpenXML (.docx) 461
- Pakiet NuGet 461
- Formatowania 462
- Tekst 465
- Tworzenie dokumentu 466
- Rysunek 471
- Tabela 476
- Strumień w pamięci 480
Rozdział 27. Entity Framework Core i SQLite 481
- Instalacja pakietów NuGet 481
- Klasy encji i relacje 482
- Baza danych i tabele 484
- Dodawanie rekordów do tabeli 486
- Wyświetlanie rekordów 488
- Usuwanie rekordów 491
- Zmienianie danych w rekordzie 494
- Pominięte zagadnienia 495
- Inne scenariusze 496
- Zadania 497
DODATKI 499
Dodatek A. Informacje o systemie 501
- Informacje o środowisku aplikacji 501
- Podstawowe informacje o systemie i profilu użytkownika 501
- Katalogi specjalne zdefiniowane w bieżącym profilu użytkownika 502
- Odczytywanie zmiennych środowiskowych 503
- Lista dysków logicznych 504
Dodatek B. Elementy programowania współbieżnego 507
- Równoległa pętla for 507
- Przerywanie pętli 509
- Programowanie asynchroniczne. Modyfikator async i operator await 510
- Zadania 517
Dodatek C. Git. Wersjonowanie i kopie bezpieczeństwa kodu źródłowego 519
- Systemy kontroli wersji kodu źródłowego 519
- Serwisy Git 521
- Tworzenie projektu 523
- Tworzenie nowej gałęzi 529
- Wprowadzanie zmian w projekcie 529
- Zatwierdzanie zmian 531
- Wypychanie do repozytorium 531
- Klonowanie projektu 533
- Rozwiązywanie konfliktów (scalanie) 535
- Scalanie gałęzi 541
- Przywracanie wcześniejszej wersji projektu 544
- O czym nie musimy wiedzieć, korzystając z Git w Visual Studio? 547
Dodatek D. Co nowego w C# 9.0? 549
- Nowa inicjacja własności 549
- Rekordy 553
- Zmiany w instrukcji switch 558
- Polecenia najwyższego poziomu 559
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-7838-4 |
Rozmiar pliku: | 23 MB |