~~NOCACHE~~ ~~REVEAL theme=simple&disableLayout=0&transition=none&controls=1&show_progress_bar=1&build_all_lists=0&show_image_borders=0&horizontal_slide_level=2&enlarge_vertical_slide_headers=0&show_slide_details=1&open_in_new_window=1&size=1024x768~~ ====== Pierwszy program ====== ===== Środowisko pracy ===== * **Środowisko IDE** * [[https://visualstudio.microsoft.com/pl/vs/|MS Visual Studio Community/Professional/Enterprise 2022 (Windows)]] * Visual Studio Code (Windows, Linux, Mac) * **Repozytorium kodu** * [[https://git-scm.com/|git]] * [[https://github.com/|GitHub]] {{https://1000logos.net/wp-content/uploads/2020/08/Visual-Studio-Logo.png?100|}} {{https://visualstudio.microsoft.com/wp-content/uploads/2019/09/vs-code-responsive-01-1.png?70|}} {{https://git-scm.com/images/logo@2x.png?100|}} {{https://1000logos.net/wp-content/uploads/2021/05/GitHub-logo-768x432.png?100|}} ===== .Net ===== {{https://learn.microsoft.com/pl-pl/dotnet/standard/library-guidance/media/cross-platform-targeting/platforms-netstandard.png?800|}} ===== ===== * **.NET Standard** - specyfikacja interfejsów API .NET, które są dostępne we wszystkich implementacjach platformy .NET. * **.NET 5** to implementacja platformy .NET (Microsoft) * **.Net Framework** zasadnicza platforma zarządzana dla aplikacji desktopowych (na pulpit) * **.Net Core** platforma open-source, docelowo następca platformy .NET, Windows, Linux, macOS (dawniej OS X) ===== Standard .Net ===== {{zajecia:cs:dotnet_wersje.png?800|}} Zobacz: [[https://docs.microsoft.com/pl-pl/dotnet/standard/net-standard]] ===== Pierwszy program ===== using System;   namespace Hello { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } } ===== Ćwiczenie ===== * utwórz nowy projekt w Visual Studio: szablon ''"Aplikacja konsolowa (.Net Core)"'' w języku C# * skompiluj i uruchom program * sprawdź zawartość katalogu, w którym znajduje się program (projekt). Jakie pliki wygenerował proces kompilacji? * spróbuj odnaleźć utworzony plik wykonywalny w katalogu projektu i uruchom go za pomocą kliknięcia myszą lub podając jego nazwę w wierszu poleceń * dokonaj zmian w programie, wprowadzając do niego błędy i zaobserwuj komunikaty zwracane przez kompilator. Czy w przypadku wystąpienia błędu kompilacji powstał program wynikowy? ===== Nowy projekt konsolowy ===== {{zajecia:cs:vs_nowy_projekt.png?500}} {{zajecia:cs:vs_aplikacja_konsolowa.png?500}} ===== Kod ===== * **namespace** - przestrzeń nazw * ''namespace Hello'' \\ przestrzeń nazw naszego projektu * ''using System'' \\ udostępnia przestrzeń nazw System ===== ===== * **class** - klasa, z niej powstają obiekty, ale to inny temat * ''class Program'' \\ klasa związana z naszym programem * **metody** - operacje związana z klasami (obiektami) * ''Program.Main()'' \\ metoda uruchamiana przy starcie programu * ''System.Console.WriteLine()'' \\ pisze linę tekstu, metoda klasy ''Console'' z przestrzeni nazw ''System'' * **kropka** (''.'') - operator dostępu, \\ **średnik** ('';'') - oznacza koniec instrukcji ===== Visual Studio ===== {{zajecia:cs:vs_hello.png?800 |}} ===== ===== * Edytor kodu * podpowiedzi i uzupełnianie składni * analiza kodu i wykrywanie błędów w czasie edycji * Eksplorator rozwiązań - struktura projektu * rozwiązania -> projekty -> pliki projektu -> program.cs, plik.exe, ... * Okno błędów i ostrzeżeń kompilatora * Debugger (odpluskwiacz) ===== Skróty klawiszowe ===== | ''Ctrl+Shift+B'' lub ''F7'' | Kompilacja projektu | | ''F5'' | Kompilacja i uruchomienie w trybie debugowania | | ''Ctrl + F5'' | Kompilacja i uruchomienie bez debugowania | | ''Ctrl+.'' lub ''Alt+Enter'' | Podpowiedź lub propozycja rozwiązania problemu | | ''F1'' | Pomoc, dokumentacja wskazanej klasy/metody | | ''Ctrl+Spacja'' | Uzupełnianie kodu | ===== Ćwiczenie - Jak masz na imię? ====== Napisz program, który prosi użytkownika o podanie imienia a następnie wypisze komunikat powitalny, np. "Witaj Marek". Podaj imię: Marek Witaj Marek ! ===== ===== Co jest potrzebne do wykonania? * zmienna do której wczytamy imię (napis), \\ zmienna typu ''string'' (łańcuch) \\ string imie; * operacja wczytująca napis [[https://learn.microsoft.com/en-us/dotnet/api/system.console.readline?view=netcore-3.1|Console.ReadLine()]] \\ string imie = Console.ReadLine(); * operator ''='' przypisania wartości ===== Operacje wejścia/wyjścia konsoli ===== * ''[[https://learn.microsoft.com/pl-pl/dotnet/api/system.console.writeline?view=netcore-3.1|Console.WriteLine(dane)]]'' wypisuje dane i przechodzi do następnej linii * ''[[https://learn.microsoft.com/pl-pl/dotnet/api/system.console.write?view=netcore-3.1|Console.Write(dane)]]'' wypisuje dane * ''[[https://learn.microsoft.com/pl-pl/dotnet/api/system.console.readline?view=netcore-3.1|Console.ReadLine()]]'' wczytuje linię tekstu ===== Ćwiczenie ===== Do poprzedniego programu dodaj komunikat błędu w sytuacji, gdy użytkownik nie podał imienia, tzn. gdy długość wprowadzonego napisu wynosi 0. Potrzebujemy: * instrukcji warunkowej * operatora porównania wartości ''%%==%%'' lub ''<'' * własność ''string.Length'' zawiera ilość znaków w napisie ===== Instrukcja warunkowa if() ===== {{zajecia:pp1_2021_1:if3.png?800|}} **Przykład** if (imie.Lenght > 0) { Console.WriteLine("Brawo!"); } ===== Ćwiczenie ===== Zmień poprzedni program w taki sposób aby podane imię zostało wypisane w pionie (po jednej literze w linii) Podaj imię: Ewa Witaj E w a Potrzebujemy: * pętli oraz dodatkowej zmiennej całkowitej (typ ''int'') * łańcuch to kolekcja znaków o indeksach 0, 1, 2, 3, ... ===== Pętla while() ===== {{zajecia:pp1_2021_1:while3.png?800|}} **Przykład:** int i=0; while(i < 10) { Console.WriteLine(i); i = i + 1; } ===== Pomoc i dokumentacja MSDN ===== * ustaw kursor na wskazanym elemencie kodu i wciśnij ''F1'' * [[https://learn.microsoft.com/pl-pl/dotnet/api/system.console?f1url=%3FappId%3DDev16IDEF1%26l%3DPL-PL%26k%3Dk(System.Console)%3Bk(DevLang-csharp)%26rd%3Dtrue&view=net-6.0|Console]] opis klasy Console * [[https://learn.microsoft.com/pl-pl/dotnet/api/system.console.writeline?f1url=%3FappId%3DDev16IDEF1%26l%3DPL-PL%26k%3Dk(System.Console.WriteLine)%3Bk(DevLang-csharp)%26rd%3Dtrue&view=net-6.0|WriteLine]] opis metody WriteLine * [[https://learn.microsoft.com/pl-pl/dotnet/api/system?view=net-6.0|System]] zawartość przestrzeni nazw System * [[https://learn.microsoft.com/pl-pl/dotnet/api/system.string?f1url=%3FappId%3DDev16IDEF1%26l%3DPL-PL%26k%3Dk(System.String)%3Bk(DevLang-csharp)%26rd%3Dtrue&view=net-6.0|String]]