Вправа – виконання завдання завдання для диференціації між виконанням і під час ітерацій
Проблеми з кодом посилять те, що ви дізналися, і допоможуть вам отримати певну впевненість, перш ніж продовжувати.
Перевірте різницю між інструкціями та інструкціями
Як ви вже бачили, C# підтримує чотири типи ітераційних інструкцій: for, , foreachdo-whileі while. Довідкова документація корпорації Майкрософт описує ці інструкції таким чином:
- Інструкція
for: виконує його тіло, а вказаний логічний вираз ("умова") повертає значення true. - Інструкція
foreach: перелічує елементи колекції та виконує її тіло для кожного елемента колекції. - Інструкція
do-while: умовне виконання його тіла один або кілька разів. - Інструкція
while: умовно виконує його тіло нуль або більше разів.
Ітерації forforeach , здається, чітко відрізняються один від одного і від do-while ітерацій while . Визначення для do-while інструкцій while , однак, як видається, досить схожі. Знаючи, коли вибирати між a do-while і здається while більш довільним, і навіть може бути трохи заплутаним. Деякі проекти, які кидають виклик, можуть допомогти зробити відмінності зрозумілими.
У цьому виклику вам будуть представлені умови для трьох окремих проектів кодування. Для кожного проекту знадобиться реалізувати блок коду ітерації за допомогою do-while оператора або while оператора. Щоб вибирати між операторами та do-while операторами, потрібно обчислити вказані while умови. Ви можете перейти після запуску, якщо ваш перший вибір не працює так само, як ви сподівалися.
Примітка
Умови для проекту кодування можна використовувати для вибору між do-while операторами та операторами while . Те, що ви знаєте або не знаєте, про логічний вираз, який буде обчислено, іноді може допомогти вам вибрати між do-while інструкції while . У цьому завданні умови проекту включають інформацію, яка використовуватиметься для побудови логічного виразу.
Керування вводом користувача під час виконання цього завдання
Використовуючи інструкцію Console.ReadLine() для отримання вводу користувача, зазвичай для вхідної змінної використовується рядок типу null (призначений string?), а потім обчислити значення, введене користувачем. У наведеному нижче зразку коду використовується рядок типу null, який дає змогу записувати введені користувачем дані. Ітерація триває, доки значення, надане користувачем, має null-значення:
string? readResult;
Console.WriteLine("Enter a string:");
do
{
readResult = Console.ReadLine();
} while (readResult == null);
Логічний вираз, обчислений оператором while , можна використовувати для забезпечення відповідності введеним користувачем визначеним вимогам. Наприклад, якщо з'явиться запит на введення користувачем рядка, який містить принаймні три символи, можна використати такий код:
string? readResult;
bool validEntry = false;
Console.WriteLine("Enter a string containing at least three characters:");
do
{
readResult = Console.ReadLine();
if (readResult != null)
{
if (readResult.Length >= 3)
{
validEntry = true;
}
else
{
Console.WriteLine("Your input is invalid, please try again.");
}
}
} while (validEntry == false);
Якщо потрібно використовувати Console.ReadLine() ввід для числових значень, потрібно перетворити значення рядка на числовий тип.
Метод int.TryParse() можна використовувати для перетворення значення рядка на ціле число. У цьому методі використовуються два параметри, рядок, який буде обчислено, і ім'я цілої змінної, якій буде призначено значення. Метод повертає логічне значення. Наведений нижче зразок коду демонструє метод int.TryParse() :
// capture user input in a string variable named readResult
int numericValue = 0;
bool validNumber = false;
validNumber = int.TryParse(readResult, out numericValue);
Якщо значення рядка, призначене readResult для цього, представляє припустиме ціле число, значення буде призначено цілій змінні з іменем numericValue, і true буде призначено логічній змінні з іменем validNumber. Якщо призначене значення readResult не позначає припустиме ціле число, validNumber буде призначено значення false. Наприклад, якщо readResult значення дорівнює "7", значення 7 буде призначено numericValue.
Код проекту 1 – код запису, який перевіряє введення цілих числових даних
Нижче наведено умови, які має реалізувати ваш перший проект кодування.
Рішення має містити або
do-whileітераціюwhile.Перед блоком ітерації рішення має використати інструкцію
Console.WriteLine(), щоб указати користувачу ціле значення від 5 до 10.У блоці ітерації:
- Рішення має використовувати інструкцію
Console.ReadLine()для отримання вводу від користувача. - Рішення має переконатися, що введене дані є припустимим представленням цілого числа.
- Якщо ціле число не від 5 до 10, код має використовувати
Console.WriteLine()оператор, щоб указати користувачу ціле число від 5 до 10. - Рішення має переконатися, що ціле число має бути в межах від 5 до 10, перш ніж вийти з ітерації.
- Рішення має використовувати інструкцію
Нижче (після) блок коду ітерації: рішення має використовувати інструкцію,
Console.WriteLine()щоб повідомити користувача про те, що його вхідне значення прийнято.
Переконайтеся, що в коді Visual Studio відкрито пустий файл Program.cs.
За потреби відкрийте Visual Studio Code і виконайте наведені нижче дії, щоб підготувати файл Program.cs в редакторі.
У меню Файл виберіть Відкрити папку.
Перейдіть до діалогового вікна Відкрити папку, а потім відкрийте папку CsharpProjects .
На панелі Visual Studio Code EXPLORER виберіть Program.cs.
У меню Вибір коду Visual Studio виберіть виділити все, а потім натисніть клавішу Delete.
Напишіть код, який впроваджує кожну умову для коду проекту 1.
Запустіть програму та переконайтеся, що код перевіряє введені користувачем дані на основі вказаних вимог.
Наприклад, коли ви запускаєте програму, вона має відхиляти вхідні значення, як-от "два" та "2", але вона має приймати вхідне значення "7".
У наведеному вище прикладі вивід консолі має виглядати приблизно так:
Enter an integer value between 5 and 10 two Sorry, you entered an invalid number, please try again 2 You entered 2. Please enter a number between 5 and 10. 7 Your input value (7) has been accepted.
Код проекту 2 – код запису, який перевіряє введення рядка
Нижче наведено умови, які має реалізувати другий проект кодування.
Рішення має містити або
do-whileітераціюwhile.Перед блоком ітерації рішення має використати інструкцію
Console.WriteLine(), щоб запропонувати користувачу одне з трьох імен ролей: "Адміністратор", "Керівник" або "Користувач".У блоці ітерації:
- Рішення має використовувати інструкцію
Console.ReadLine()для отримання вводу від користувача. - Рішення має переконатися, що введене значення відповідає одному з трьох варіантів ролей.
- Рішення має використовувати
Trim()метод вхідного значення, щоб ігнорувати символи пробілів на початку та в кінці. - Рішення має використовувати
ToLower()метод вхідного значення, щоб ігнорувати регістр. - Якщо введене значення не відповідає одному з параметрів ролі, код має використовувати
Console.WriteLine()оператор, щоб указати користувачу припустимий запис.
- Рішення має використовувати інструкцію
Нижче (після) блок коду ітерації: Рішення має використовувати інструкцію,
Console.WriteLine()щоб повідомити користувача про те, що його вхідне значення прийнято.
Коментування всього коду на панелі редактора коду Visual Studio
- Вибрати всі рядки коду в редакторі коду
- У меню Edit (Редагування ) виберіть Toggle Block Comment (Переключити блокування примітки).
Напишіть код, який впроваджує кожну умову для коду проекту 2.
Запустіть програму та переконайтеся, що код перевіряє введені користувачем дані на основі вказаних вимог.
Наприклад, під час запуску програми слід відхилити вхідне значення, наприклад "Адміністратор", але воно має прийняти вхідне значення "адміністратор".
Вивід консолі для цього прикладу має виглядати приблизно так:
Enter your role name (Administrator, Manager, or User) Admin The role name that you entered, "Admin" is not valid. Enter your role name (Administrator, Manager, or User) Administrator Your input value (Administrator) has been accepted.
Код проекту 3 – написання коду, який обробляє вміст масиву рядків
Нижче наведено умови, які має реалізувати третій проект кодування.
щоб представити введену логіку кодування, рішення має використовувати такий масив рядків:
string[] myStrings = new string[2] { "I like pizza. I like roast chicken. I like salad", "I like all three of the menu choices" };Рішення має оголосити цілу змінну з іменем
periodLocation, яка може використовуватися для утримання розташування символу періоду в рядку.Рішення має містити зовнішній
foreachабоforцикл, який можна використовувати для обробки кожного елемента рядка в масиві. Змінна рядка, яку потрібно обробити в циклах, має бути названаmyString.У зовнішнього циклу рішення має використовувати
IndexOf()методStringкласу, щоб отримати розташування першого символу періоду в змінніmyString. Виклик методу має бути схожий на:myString.IndexOf("."). Якщо в рядку немає символу крапки, буде повернуто значення -1.Рішення має містити внутрішній
do-whileабоwhileцикл, який можна використовувати для обробки змінноїmyString.У внутрішньому циклі рішення має видобути та відобразити (записати на консоль) кожне речення, яке міститься в кожному з оброблених рядків.
У внутрішньому циклі рішення не повинно відображати символ крапки.
У внутрішньому циклі рішення має використовувати
Remove(),Substring()іTrimStart()методи для обробки інформації рядка.
Коментування всього коду на панелі редактора коду Visual Studio
- Вибрати всі рядки коду в редакторі коду
- У меню Edit (Редагування ) виберіть Toggle Block Comment (Переключити блокування примітки).
Напишіть код, який впроваджує кожну умову, указану для коду проекту 3.
Запустіть програму та переконайтеся, що результат відповідає вимогам.
Якщо логіка коду працює правильно, результат має виглядати приблизно так:
I like pizza I like roast chicken I like salad I like all three of the menu choices
Незалежно від того, чи ви застрягли, і вам потрібно зазирнути в рішення або успішно завершити, продовжуйте переглядати проекти рішень для цього завдання.