Wykonanie kodu C# krok po kroku z podglądem zmiennych
Kod w C# wykonuje się instrukcja po instrukcji, a każda zmienna ma typ: int, double, bool, char albo string. To narzędzie zatrzymuje się po każdej instrukcji i pokazuje wartości zmiennych oraz tekst wypisany przez Console.Write i Console.WriteLine. Możesz wkleić sam fragment z arkusza albo cały program z metodą Main.
Dzielenie dwóch liczb typu int odrzuca część ułamkową, więc 7 / 2 daje 3. Dodanie liczby do napisu nie liczy, tylko skleja: "Wynik: " + 5 to napis Wynik: 5. Te dwie reguły odpowiadają za większość pomyłek w zadaniach typu co zostanie wypisane.
C# jest ostrzejszy od C++ w dwóch miejscach, o które pytają arkusze. Warunek musi mieć typ bool, więc if (b = 0) w ogóle się nie skompiluje. W instrukcji switch każdy niepusty case musi kończyć się instrukcją break albo return, bo przechodzenie do następnego przypadku jest zabronione. Narzędzie mówi wprost, który wiersz na to nie pozwala i dlaczego.
Tablica utworzona przez new int[5] ma pięć elementów o wartości zero, a jej rozmiar podaje właściwość Length. Sięgnięcie poza ostatni indeks kończy program wyjątkiem IndexOutOfRangeException. Silnik obsługuje zmienne, operatory, warunki, pętle, tablice, napisy, metody statyczne i listę List. Nie ma jeszcze klas z obiektami i nie czyta z klawiatury.
Przykład: wartości zmiennych po pętli do while
1
Kod: int a = 1; int b = 3; do { a = a * 2 + 1; b++; } while (b < 8);
2
Pętla do while najpierw wykonuje ciało, a dopiero potem sprawdza warunek. Po pierwszym obrocie a ma wartość 3, a b wartość 4.
3
Kolejne obroty dają a równe 7, 15 i 31, a b równe 5, 6 i 7.
4
Po piątym obrocie a ma wartość 63, a b wartość 8. Warunek 8 < 8 jest fałszywy, więc pętla się kończy: a = 63, b = 8.
Najczęstsze pytania
Console.WriteLine po wypisaniu tekstu przechodzi do nowego wiersza, a Console.Write zostaje w tym samym. Dlatego rysunki z gwiazdek buduje się przez Write w pętli wewnętrznej i jedno WriteLine na końcu wiersza.
Co najmniej raz, bo warunek jest sprawdzany dopiero po wykonaniu ciała. Pętla while z tym samym warunkiem może nie wykonać się ani razu.
Pojedynczy znak równości to przypisanie, a jego wynik ma typ int. C# wymaga w warunku typu bool, więc kompilator odrzuca taki zapis. Porównanie zapisuje się dwoma znakami: b == 0.
Jeszcze nie. Klasa Program z metodą Main działa jako opakowanie programu, podobnie jak inne metody statyczne. Tworzenie obiektów własnych klas przez new nie jest na razie obsługiwane.