Підрозділ 2.Q
Питання для самоконтролю
Питання для самоконтролю — Розділ 2. Основи програмування на C 2.1. Структура програми 1. Що таке top level statements у C 9? Що компілятор додає неявно, коли ви пишете код без класу Program і методу Main ? 2.
Питання для самоконтролю — Розділ 2. Основи програмування на C#
2.1. Структура програми
Що таке top-level statements у C# 9? Що компілятор додає неявно, коли ви пишете код без класу
Programі методуMain?Що буде, якщо забути крапку з комою в кінці інструкції? Що саме повідомить компілятор і на якому етапі?
У чому різниця між визначенням методу і його викликом? Чи виконується метод автоматично, коли ви його визначаєте?
C# є реєстрозалежною мовою. Що виведе наступний код (вкажіть, чи скомпілюється він взагалі)?
string name = "Іван"; string Name = "Марія"; Console.WriteLine(name); Console.WriteLine(Name);Поясніть різницю між однорядковим і багаторядковим коментарем. Коли доречно використовувати кожен тип?
Що таке блок коду в C#? Скільки рівнів вкладеності допускається і чому блоки є фундаментальною конструкцією мови?
Який параметр у файлі
.csprojвідповідає за версію .NET? Що означає значенняnet10.0? Що дає параметр<Nullable>enable</Nullable>?Поясніть, навіщо потрібен параметр
<ImplicitUsings>enable</ImplicitUsings>. Що відбувається без нього?
2.2. Змінні та константи
Яке відношення між поняттями «тип», «ім'я» і «значення» змінної? Навіщо потрібен кожен з цих трьох аспектів?
У чому різниця між оголошенням змінної і її ініціалізацією? Що відбудеться, якщо спробувати прочитати значення змінної до ініціалізації?
Що виведе наступний код?
string diagnosis = "Первинний огляд"; diagnosis = "Гіпертонія I ст."; diagnosis = "Гіпертонія I ст. — лікування розпочато"; Console.WriteLine(diagnosis);Перелічіть правила іменування змінних у C#. Яка угода стосовно стилю іменування (camelCase/PascalCase) для локальних змінних?
Що таке ключове слово
var? Чи єvarдинамічним типом? Що відбувається після того, як компілятор вивів тип з виразу?Чому наступний код не скомпілюється?
var x; x = 10;Як правильно записати той самий намір?
Що таке константа? Чим вона відрізняється від змінної і коли варто використовувати
constзамість звичайної змінної?Спроєктуйте набір констант для медичної системи: нормальна температура тіла, мінімальний і максимальний пульс, назва клініки. Запишіть їх оголошення з дотриманням угод іменування.
2.3. Літерали
Що таке літерал? Чим літерал відрізняється від змінної? Наведіть приклади літералів кожного виду.
Запишіть число 255 у трьох системах числення: десятковій, двійковій і шістнадцятковій. Як вказати кожну форму в коді C#?
Що таке роздільник розрядів
_у числових літералах? Що виведе наступний код?int million = 1_000_000; int cardNumber = 1234_5678; Console.WriteLine(million); Console.WriteLine(cardNumber);Який тип за замовчуванням мають речові літерали без суфікса (наприклад,
3.14)? Які суфікси потрібні дляfloatіdecimal? Чому суфікс дляdecimalособливо важливий у фінансових розрахунках?Що таке керуюча послідовність у символьних літералах? Запишіть символьні літерали для: табуляції, переходу на новий рядок, одинарної лапки, зворотного слішу.
У чому різниця між звичайним рядковим літералом і verbatim-рядком (
@"...")? Запишіть шляхC:\Users\Doctor\file.txtобома способами.Що таке
null? Якому типу змінних можна присвоїтиnullі чому? Що відбудеться, якщо викликати метод на змінній зnull?Поясніть, чому результат
3.2e3дорівнює3200. Запишіть число 0.00015 в експоненційній формі.
2.4. Типи даних
Що визначає тип даних для змінної? Назвіть три речі, які тип визначає для змінної.
Чим відрізняються типи
byteіsbyte? Для яких практичних задач підходитьbyte, а для яких —sbyte?Який цілочисленний тип є найпоширенішим у C# і чому? Яке числове значення за замовчуванням має літерал
42?У чому принципова різниця між
float/doubleіdecimalпри роботі з дробовими числами? Чомуdecimalнезамінний у фінансових розрахунках?Що таке
stringі що такеobjectз точки зору системи типів .NET? Чомуobjectможе зберігати «будь-що», але використовується обережно?Що означає, що
intє псевдонімомSystem.Int32? Чи є різниця міжint a = 4іSystem.Int32 a = 4для компілятора?Що виведе наступний код?
var hello = "Hello"; var c = 20; var d = 3.14; Console.WriteLine(hello.GetType().Name); Console.WriteLine(c.GetType().Name); Console.WriteLine(d.GetType().Name);Визначте тип, який найкраще підходить для кожної ситуації: вік пацієнта (0–120), точна сума рахунку в гривнях, пульс у ударах за хвилину (0–300), результат аналізу на гемоглобін (дробове значення), ознака госпіталізації (так/ні). Обґрунтуйте вибір.
2.5. Консольне введення-виведення
У чому різниця між
Console.WriteіConsole.WriteLine? Наведіть приклад, де важливо використати самеConsole.Write.Що таке інтерполяція рядків у C#? Що означає символ
$перед рядком і фігурні дужки{...}всередині нього? Чи можна поміщати в дужки не лише змінні, але й вирази?Порівняйте інтерполяцію рядків (
$"...") і складений формат (плейсхолдери{0},{1}). Яка перевага інтерполяції у сучасному C#?Що повертає
Console.ReadLine()? Чому результат має типstring?, а не простоstring? Коли метод повернеnull?Що відбудеться, якщо користувач введе рядок
"сорок п'ять"там, де програма чекає:int age = Convert.ToInt32(Console.ReadLine());Як захистити програму від такої ситуації?
Що таке культура операційної системи у контексті введення дробових чисел? Чому
1.5з крапкою може призвести до помилки на машині з українською культурою?Напишіть фрагмент коду, що зчитує з консолі ім'я і вік пацієнта, а потім виводить рядок у форматі:
"Пацієнт: Іван Петренко, 45 р.".Поясніть, чому наступний код виводить значення у форматі інтерполяції, але
age.ToString()є бажаною практикою при передачі числа в рядок:int age = 45; Console.WriteLine($"Вік: {age}"); Console.WriteLine($"Вік: {age.ToString()}");
2.6. Арифметичні операції
Що відбувається при діленні двох цілих чисел у C#? Що виведе наступний код?
double wrongResult = 10 / 3; double rightResult = 10.0 / 3.0; Console.WriteLine(wrongResult); Console.WriteLine(rightResult);Що таке операція
%(залишок від ділення)? Як за допомогою%перевірити, чи є число парним?У чому різниця між префіксним (
++x) і постфіксним (x++) інкрементом? Що виведе наступний код?int x = 5; int z = x++; Console.WriteLine(x); Console.WriteLine(z);Що таке пріоритет операцій? Яким буде результат виразу
c-- - b * a, деc=40,b=5,a=3? Поясніть крок за кроком.Що таке лівоасоціативність арифметичних операцій? Яким буде результат
10 / 5 * 2і чому?Як отримати дробовий результат при діленні двох цілочисленних змінних
patients / doctors? Запишіть код.Написати код для обчислення ІМТ (індекс маси тіла) за формулою
вага / (зріст * зріст), де вага в кг і зріст у метрах. Виведіть результат.Поясніть, чому
x++ * 2і++x * 2дають різні результати, якщо початкове значенняx = 3. Обчисліть обидва вирази.
2.7. Порозрядні операції
Що таке порозрядні операції? На відміну від арифметичних операцій, над чим саме вони виконуються?
Поясніть операцію побітового AND (
&). Яким буде результат4 & 5? Покажіть двійкові подання і побітові обчислення.Яка практична задача вирішується за допомогою операції OR (
|)? Наведіть приклад встановлення окремого біту у числі.Яка унікальна властивість операції XOR (
^) робить її придатною для найпростішого шифрування? Доведіть математично, що(x ^ k) ^ k = x.Що таке додатковий код (two's complement)? Чому
~12дорівнює-13, а не іншому числу?Що відбувається з числом при зсуві вліво на 1 позицію? А при зсуві вправо? Яким математичним операціям це відповідає?
Що виведе наступний код і чому?
int a = 22; int b = a >> 2; Console.WriteLine(b);Порівняйте
<<з множенням на 2 за ефективністю. Коли варто використовувати зсуви замість арифметичних операцій, а коли — ні?
2.8. Операції присвоєння
Що таке операція присвоєння і яким є порядок її виконання відносно інших операцій у виразі?
Що означає правоасоціативність операцій присвоєння? Що виведе наступний код?
int a, b, c; a = b = c = 100; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);Перепишіть вираз
score = score + 10за допомогою складеного оператора присвоєння. Назвіть п'ять складених арифметичних операторів присвоєння.Що виведе наступний код? Поясніть крок за кроком:
int a = 8; int b = 6; int c = a += b -= 5; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);Що робить оператор
|=з бітовими прапорцями? Запишіть приклад, де ви встановлюєте нульовий біт числа за допомогою|=.Чому складені оператори присвоєння (
+=,-=тощо) зменшують ризик помилок порівняно зі звичайним записомa = a + b?Напишіть код, що накопичує суму трьох медичних витрат (консультація, аналізи, ліки) за допомогою
+=, а потім застосовує знижку 10% через-=.Чи можливе таке:
3 = x? Чи можливеconst double Pi = 3.14; Pi = 3.0;? Поясніть правило щодо лівого операнда присвоєння.
2.9. Перетворення базових типів
Чому наступний код не скомпілюється, хоча значення
74вписується вbyte?byte a = 4; byte b = a + 70;Як виправити цей код?
Що таке розширювальне перетворення (widening)? Чому воно відбувається автоматично і не потребує явного приведення?
Що таке звужувальне перетворення (narrowing)? Чому воно вимагає явного приведення? Що відбудеться, якщо значення не вписується в цільовий тип?
Що виведе наступний код і чому результат саме такий?
ushort a = 300; byte b = (byte)a; Console.WriteLine(b);Що робить
(int)з дробовим числом? Чим це відрізняється від математичного округлення? Що виведе(int)36.9?Поясніть ланцюжки автоматичних безпечних перетворень. Чому перетворення між
doubleіdecimalне є автоматичним в жодному напрямку, попри те щоdecimal«більший»?Напишіть код, що обчислює частку чоловіків серед пацієнтів у відсотках. Використайте явне приведення для отримання дробового результату ділення.
Що таке sign extension (розширення зі знаком)? Чому значення
sbyte -4після перетворення вshortзалишається-4, а не стає великим позитивним числом?
2.10. Явні та неявні перетворення
У чому різниця між явним і неявним перетворенням типів? Хто відповідає за виконання кожного з них?
Коли компілятор дозволяє неявне перетворення? Яка гарантія повинна виконуватися, щоб перетворення вважалося безпечним?
Що таке ключове слово
checked? Що відбудеться у наступному коді безcheckedі з ним?int a = 33; int b = 600; byte c = (byte)(a + b);Що таке
uncheckedі навіщо воно потрібне, якщо це «стандартна поведінка»?Що виведе наступний код і чому?
int a = 33; int b = 600; byte c = (byte)(a + b); Console.WriteLine(c);Порахуйте самостійно, чому результат
121.Поясніть, чому отримане в результаті переповнення неправильне значення особливо небезпечне порівняно зі звичайним винятком. У яких медичних або фінансових сценаріях це критично?
Чи є
decimalбільшим заdoubleу сенсі точності та кількості значущих цифр? Якщо так, чому не можна неявно конвертуватиdoubleуdecimal?Спроєктуйте функцію
CalculateDose(double weightKg, double dosePerKg), що повертає результат якdecimal. Використайте явне перетворення і поясніть, де воно відбувається.
2.11. Умовні вирази
Що повертають оператори порівняння (
==,!=,<,>,<=,>=)? Якому типу належить результат?У чому різниця між
&&і&для логічних значень? Що таке скорочене обчислення (short-circuit evaluation) і чому воно підвищує продуктивність?Поясніть оператор XOR (
^) для логічних значень. Коли він повертаєtrue?Запишіть умову, що перевіряє: «пацієнт є дорослим (вік >= 18) І має підвищений тиск (систолічний >= 140) АБО є критичний стан (тиск >= 180)». Використовуйте дужки для ясності.
Що виведе наступний код?
int age = 45; int bpSystolic = 155; bool highRisk = bpSystolic >= 160 || (age > 40 && bpSystolic >= 140); Console.WriteLine(highRisk);Чому
if (isEmergency == true)є надлишковим записом? Як правильно записати цю умову?Яку роль відіграє оператор
!(NOT)? Запишіть еквівалентний вираз для!(age >= 18)без використання!.Розставте пріоритети операцій у наступному виразі і вкажіть результат (всі змінні мають конкретні значення):
bool result = !hasFever || age > 60 && bpSystolic < 180; // hasFever = false, age = 65, bpSystolic = 150
2.12. Конструкція if..else та тернарна операція
Що відбувається, якщо умова блоку
ifєfalseі немає блокуelse? Яка частина коду виконується?Як працює ланцюжок
else if? Чи перевіряються всі умови підряд, чи виконання зупиняється після першого збігу?Що виведе наступний код?
int bpSystolic = 145; if (bpSystolic < 120) Console.WriteLine("Оптимальний"); else if (bpSystolic < 130) Console.WriteLine("Нормальний"); else if (bpSystolic < 140) Console.WriteLine("Підвищено-нормальний"); else if (bpSystolic < 160) Console.WriteLine("Гіпертонія I"); else Console.WriteLine("Гіпертонія II+");Чому рекомендується завжди писати фігурні дужки навіть для однієї інструкції в тілі
if? Наведіть приклад помилки, яка виникає через відсутність дужок.Що таке тернарна операція? Перетворіть наступну конструкцію у тернарну:
string status; if (bpSystolic >= 140) status = "Підвищений"; else status = "Нормальний";Що таке вкладені
if? Напишіть код, що спочатку перевіряє вік (>= 60 — похилий), а потім всередині — тиск (>= 160 — критичний), і виводить відповідне повідомлення.Коли доречно використовувати тернарний оператор, а коли краще залишити повну форму
if...else? Наведіть приклад обох ситуацій.Спроєктуйте ланцюжок
if...else if...else, що класифікує ІМТ пацієнта: нижче 18.5 — дефіцит ваги, 18.5–24.9 — норма, 25.0–29.9 — надлишкова вага, 30 і вище — ожиріння.
2.13. Цикли
Назвіть чотири типи циклів у C#. Для якої ситуації кожен з них найкраще підходить?
З яких трьох частин складається заголовок циклу
for? Коли виконується кожна частина?Що виведе наступний код?
for (int i = 5; i >= 1; i--) Console.Write($"{i} ");У чому ключова відмінність між
whileіdo...while? Наведіть приклад ситуації, деdo...whileє єдиним коректним вибором.Що таке
breakіcontinue? Поясніть їхній вплив на виконання циклу. Чим вони відрізняються один від одного?Чому у циклі
foreachне можна змінювати елементи колекції через змінну циклу? Як слід вчинити, якщо потрібна модифікація елементів?Напишіть код з вкладеними циклами, що виводить таблицю множення від 1×1 до 3×3.
Що таке нескінченний цикл? Запишіть нескінченний цикл
forі поясніть, як коректно вийти з нього за допомогоюbreak.
2.14. Масиви
Що таке масив? Що означає «фіксований розмір» і «однотипні елементи» у визначенні масиву?
З якого індексу починається нумерація елементів масиву? Чому це важливо враховувати при звертанні до останнього елемента?
Що відбудеться під час виконання наступного коду?
int[] values = { 1, 2, 3 }; Console.WriteLine(values[10]);Які чотири способи ініціалізації масиву з конкретними значеннями допускаються в C#? Наведіть усі чотири варіанти для масиву
{45, 32, 67, 28}.Що таке оператор
^(індекс від кінця)? Напишіть код, що виводить останній та передостанній елемент масиву, використовуючи^.У чому різниця між прямокутним двовимірним масивом
[,]і зубчастим масивом[][]? Коли доречний кожен варіант?Напишіть код, що знаходить мінімальне і максимальне значення в масиві цілих чисел, використовуючи цикл
for.Що таке властивість
Lengthдля одновимірного масиву і що повертаєLengthдля двовимірного? Як отримати кількість рядків і стовпців двовимірного масиву?
2.15. Завдання з масивами
Опишіть алгоритм підрахунку кількості елементів масиву, що задовольняють певну умову. Яку структуру даних використовують для накопичення кількості?
Напишіть код, що підраховує кількість значень тиску >= 140 у масиві
{120, 155, 130, 172, 118, 145}.Опишіть алгоритм реверсу масиву без виділення нового масиву. Чому потрібна тимчасова змінна
tempдля обміну елементів?Що виведе наступний код після реверсу масиву
{1, 2, 3, 4, 5}? Скільки ітерацій виконає цикл і чому саме стільки?Поясніть принцип роботи бульбашкового сортування. Що означає «спливання» більшого елемента?
Чому зовнішній цикл бульбашкового сортування виконується
n-1разів, а неn?Порівняйте ручну реалізацію сортування та
Array.Sort(). Коли в реальному коді краще використовувати готовий метод і чому?Напишіть код, що знаходить середнє значення масиву показників температури
{36.6, 37.2, 38.5, 37.0, 36.8}.
2.16. Методи
Що таке метод і яку задачу він вирішує? Чому важливо уникати дублювання коду?
Які чотири складові мають усі методи? Що означає тип
voidдля методу?У чому різниця між визначенням методу і його викликом? Чи має значення порядок: визначення до або після виклику?
Що таке скорочений запис методу (expression-bodied member) через
=>? Коли він застосовується і яке обмеження має?Що виведе наступний код?
void PrintSeparator() => Console.WriteLine("---"); void PrintHeader() { PrintSeparator(); Console.WriteLine("Журнал"); PrintSeparator(); } PrintHeader();Поясніть принцип «кожен метод відповідає лише за одну річ». Чому цей принцип покращує читабельність і підтримку коду?
Напишіть три методи:
PrintCriticalAlert,PrintWarningAlert,PrintNormalStatus, і викличте потрібний залежно від значенняbpSystolic.Запропонуйте, як розбити наступний складний блок коду на кілька методів: зчитування даних пацієнта, перевірка коректності даних, виведення картки пацієнта.
2.17. Параметри методів
У чому різниця між формальними параметрами і фактичними параметрами (аргументами)?
Чи можна передавати аргументи у іншому порядку, ніж оголошені параметри? Що для цього потрібно?
Що таке необов'язкові параметри зі значенням за замовчуванням? Де в списку параметрів вони повинні знаходитися?
Що виведе наступний код?
void RegisterVisit(string name, string ward = "Терапія", bool urgent = false) { string tag = urgent ? " [ТЕРМІНОВО]" : ""; Console.WriteLine($"{name} → {ward}{tag}"); } RegisterVisit("Іван", "Кардіологія", true); RegisterVisit("Марія", "Неврологія"); RegisterVisit("Олег");Що таке іменовані параметри? Запишіть виклик методу
RegisterPatient(string name, int age, string ward), деwardпередається за іменем, аnameіage— за позицією.Яке обмеження існує щодо порядку іменованих і позиційних аргументів в одному виклику?
Що станеться, якщо передати аргумент типу
stringу параметр типуint? На якому етапі виявляється ця помилка?Спроєктуйте метод
PrintPatientCard, що приймає ім'я, вік та необов'язкові параметри: відділення (за замовчуванням «Загальне») і VIP-статус (за замовчуваннямfalse).
2.18. Повернення значення та оператор return
У чому принципова різниця між методом типу
voidі методом з типом результатуstringабоint?Що відбувається після виконання оператора
return? Чи виконається код, що стоїть післяreturnу тому самому блоці?Що таке «недосяжний код» (unreachable code)? Як компілятор реагує на нього?
Що таке Guard Clause (охоронна умова)? Які переваги цього патерну порівняно зі вкладеними умовами?
Що виведе наступний код?
string GetDiagnosis(string symptom) { if (symptom == "кашель") return "Бронхіт"; if (symptom == "температура") return "ГРВІ"; return "Необхідне обстеження"; } Console.WriteLine(GetDiagnosis("кашель")); Console.WriteLine(GetDiagnosis("головний біль"));Як результат одного методу можна передати безпосередньо як аргумент іншому методу без проміжної змінної? Запишіть приклад.
Напишіть метод
CalculateBMI(double weight, double height), що повертає значення ІМТ, і методIsNormalBMI(double bmi), що повертаєtrue, якщо ІМТ між 18.5 і 24.9.Поясніть, коли
return;(без значення) використовується уvoid-методах. Напишіть приклад методу з двома охоронними умовами на початку.
2.19. Передача параметрів за посиланням та значенням. Вихідні параметри
Що відбувається з оригінальною змінною при передачі аргументу за значенням (без модифікаторів)? Що відбувається при передачі за посиланням через
ref?Що виведе наступний код?
void Increment(int x) { x += 10; } int a = 5; Increment(a); Console.WriteLine(a);Що виведе наступний код?
void Increment(ref int x) { x += 10; } int a = 5; Increment(ref a); Console.WriteLine(a);У чому різниця між
refіout? Яка вимога до ініціалізації змінної для кожного з них?Навіщо потрібні
out-параметри, якщо є операторreturn? У чому їхня перевага? Наведіть приклад методу, що повертає два значення черезout.Що таке inline-оголошення
out-змінних? Запишіть виклик методу з використаннямout var.Для чого призначений модифікатор
in? Чим він схожий і чим відрізняється відref?Спроєктуйте метод
CalculateVitalSigns(int age, out int maxHeartRate, out int targetHeartRate), що обчислює максимальний пульс (220 - вік) і цільовий (75% від максимального). Запишіть визначення і виклик методу.
2.20. Масив параметрів та ключове слово params
Що таке
params? Яку задачу воно вирішує, що не вирішують звичайні параметри?Що відбувається всередині методу з
params-параметром? Чи є він звичайним масивом?Які три способи можна використати для передачі значень у
params-параметр? Що відбудеться, якщо не передати жодного аргументу?Де в списку параметрів повинен знаходитися
params-параметр? Що буде, якщо порушити це правило?У чому різниця між методом з
params double[] valuesі методом зі звичайнимdouble[] values? Чи однаковий виклик у обох?Що виведе наступний код?
void Log(params double[] values) { Console.WriteLine($"Отримано: {values.Length}"); } Log(36.6); Log(120.0, 80.0); Log();Напишіть метод
LogMeasurements(string label, params double[] values), що виводить назву і середнє значення переданих показників. Переконайтеся, що порожній масив обробляється коректно.Порівняйте
paramsі звичайний масив-параметр: коли кожен з них зручніший у публічному API?
2.21. Рекурсивні функції
Що таке рекурсія? Що відрізняє рекурсивну функцію від звичайної?
Які два обов'язкових елементи повинна містити кожна коректна рекурсивна функція? Що станеться, якщо один з них відсутній?
Поясніть покроково, як виконується
Factorial(4). Скільки рекурсивних викликів відбудеться і в якому порядку?Що таке стек викликів? Що трапляється з ним у разі нескінченної рекурсії?
Яке обмеження має наївна рекурсивна реалізація Фібоначчі? Чому
Fibonacci(30)виконується повільно?Перепишіть факторіал через цикл
for. Порівняйте читабельність рекурсивного та ітеративного варіантів.Для яких класів задач рекурсія є природним і виразним рішенням? Назвіть щонайменше три і поясніть чому.
Що виведе наступний код і скільки разів буде викликана функція
f?int f(int n) { if (n == 0) return 0; if (n == 1) return 1; return f(n - 1) + f(n - 2); } Console.WriteLine(f(5));
2.22. Локальні функції
Що таке локальна функція і чим вона відрізняється від звичайного приватного методу класу?
Де у коді може бути оголошена локальна функція? Чи має значення порядок: визначення до або після місця використання?
Яку задачу вирішують локальні функції? Наведіть приклад, де без локальної функції виникає дублювання коду.
Що таке доступ до змінних зовнішнього методу (захоплення)? Чому це може бути небезпечно?
Що таке
staticлокальна функція? Яку гарантію вона надає і для чого це корисно?У чому перевага локальної функції над виносом коду у приватний метод класу?
Перепишіть наступний код з дублюванням, використовуючи локальну функцію:
void AnalyzeTest(double hgb, double glc) { string hgbStatus = hgb < 120 ? "Низький" : hgb > 170 ? "Високий" : "Норма"; string glcStatus = glc < 3.9 ? "Низький" : glc > 6.1 ? "Високий" : "Норма"; Console.WriteLine($"Гемоглобін: {hgbStatus}"); Console.WriteLine($"Глюкоза: {glcStatus}"); }Коли варто оголошувати локальну функцію зі словом
static? Що зміниться, якщо спробувати звернутися до змінної зовнішнього методу всерединіstatic-локальної функції?
2.23. Конструкція switch
У яких ситуаціях конструкція
switchє кращою альтернативою ланцюжкуif...else if? Що вона повідомляє читачеві коду?Навіщо потрібен оператор
breakнаприкінці кожного блокуcase? Що станеться, якщо його відсутній у конструкціїswitch— але єreturn?Що виведе наступний код?
string diagnosis = "Bronchitis"; switch (diagnosis) { case "Pneumonia": case "Bronchitis": case "Pleuritis": Console.WriteLine("Пульмонологія"); break; default: Console.WriteLine("Терапія"); break; }Що таке блок
defaultу конструкціїswitch? Чи є він обов'язковим і чому рекомендується його завжди додавати?Для чого використовується
goto case? Напишіть приклад, деgoto caseлогічно виправданий.Що таке switch-вираз (switch expression)? Чим він відрізняється від switch-оператора синтаксично і концептуально?
Що виведе наступний код?
string GetWard(string code) => code switch { "ICU" => "Інтенсивна терапія", "CARD" => "Кардіологія", _ => "Загальне" }; Console.WriteLine(GetWard("CARD")); Console.WriteLine(GetWard("ORTHO"));Що таке «вичерпність» switch-виразу? Що станеться, якщо відсутня гілка
_і вхідне значення не збігається з жоднимcase?
2.24. Перерахування enum
Що таке
enum? Яку задачу він вирішує порівняно з використанням «магічних чисел» або рядкових констант?Яке числове значення за замовчуванням отримує перша константа enum? Яке значення отримує наступна?
Що виведе наступний код?
enum PatientStatus { Registered, Admitted, UnderTreatment, Discharged, Critical } PatientStatus status = PatientStatus.Admitted; Console.WriteLine(status.ToString()); Console.WriteLine((int)status);Чому використання
enumбезпечніше, ніж рядкові константи типу"admitted"для представлення станів системи? Наведіть конкретний приклад помилки, якуenumзапобігає.Які цілі типи можуть використовуватися як основа
enum? Для яких сценаріїв варто обиратиbyteзамістьint?Що відбудеться, якщо привести до
enumчислове значення, яке не відповідає жодній константі? Як захиститися від цього при роботі з ненадійними зовнішніми даними?Напишіть
enum WardTypeзі значеннями ICU, Surgery, Cardiology, Neurology, General і методGetWardDescription(WardType ward), що повертає текстовий опис через switch-вираз.Для
enum PriorityLevel { Low = 1, Medium = 2, High = 5, Critical = 10 }запишіть умову, що перевіряє: «пріоритет є принаймні High». Поясніть, чому явні числові значення у цьомуenumє осмисленим вибором.