Лабораторна робота №3 на тему Умовні оператори і цикли
« Назад Лабораторна робота №3 Умовні оператори і цикли Мета роботи:
Методичні рекомендації до виконання лабораторної роботи 1. Прочитайте лекцію 4. Спробуйте відповісти на наведені в кінці лекції запитання 2. Прочитайте цю лабораторну роботу та виконайте наведені в ній приклади (вони всі працездатні) 3. При виконанні завдань зверніть увагу на оператор switch (перемикач). В С# тип виразу в цьому операторі може бути не тільки цілочисельним, а і типу char або string. 4. Також зверніть увагу на новий тип циклу foreach, зручний при роботі з масивами. 5. Для поглибленого вивчення цього матеріалу прочитайте розділ 2 (с. 89-96) книги [2].
Приклади виконання завдань 1. Створення консольних проектів з використанням операторів if Створимо консольний проект для організації діалогу таким чином, щоб реалізувати наведений нижче алгоритм. 1. Вивести на консоль запрошення для введення імені. 2. Ввести своє ім'я і зберегти в текстовому рядку: string myName. 3. Якщо нічого не введено, то вивести повідомлення про це і завершити роботу. 4. Якщо щось введено, то вивести рядок привітання. 5. Вивести рядок із запитом віку 6. Якщо нічого не введено, то вивести повідомлення про це і завершити роботу. 7. Якщо вік введено, привести число до цілого (int myAge). 8. Якщо число myAge<15, вивести повідомлення "Ви ще не студент. " 9. Якщо число myAge>40, вивести повідомлення "Вчитися ніколи не пізно!" Код програми може мати вигляд: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleHello1 { class Program { static void Main(string[] args) { Console.WriteLine("Введіть ім'я"); string myName = Console.ReadLine(); if (myName.Length == 0) Console.WriteLine("Ви нічого не ввели, прощавайте"); else Console.WriteLine("Здрастуйте, "+ myName); Console.WriteLine("Скільки Вам років?"); int myAge = int.Parse(Console.ReadLine()); if (myAge == 0) Console.WriteLine("Ви нічого не ввели, прощавайте"); else { if (myAge<15) Console.WriteLine("Ви ще не студент"); else if (myAge>40) Console.WriteLine("Вчитися ніколи не пізно!"); else Console.WriteLine("Ваш вік" +myAge); } Console.ReadKey(); } } } В цьому прикладі використовується декілька операторів розгалуження if (останні три вкладені). Зверніть увагу, що у C# в операторі if діють ті самі правила синтаксису, що і в С++, якщо в тілі оператора є лише один оператор блоку, то дужки не потрібні, наприклад: if (myName.Length == 0) Console.WriteLine("Ви нічого не ввели, прощавайте"); else Console.WriteLine("Здрастуйте, "+ myName); Крім цього виконується явне перетворення типів з типу string в тип int з використанням методу Parse і неявне при виведенні віку на консоль.
2. Створення консольних проектів з використанням операторівswitch Розробимо простий консольний калькулятор для виконання арифметичних операцій. Вхідні дані будемо вводити з консолі, результати виводити на консоль. Приклад коду з лекції 4. Консольний калькулятор на 4 дії using System;
namespace ConsoleCalculator
{ class Program
{ static void Main()
{
string buf;
double a, b, res; Console.WriteLine( "Введіть перший операнд:" );
a = double.Parse( Console.ReadLine() );
Console.WriteLine( "Введіть знак операції" );
char op = (char)Console.Read();
Console.ReadLine(); Console.WriteLine( "Введіть другий операнд:" );
b = double.Parse( Console.ReadLine() );
bool ok = true;
switch (op)
{
case '+' : res = a + b; break;
case '-' : res = a - b; break;
case '*' : res = a * b; break;
case '/' : res = a / b; break;
default : res = double.NaN; ok = false; break;
}
if (ok) Console.WriteLine( "Результат: " + res );
else Console.WriteLine( "Неприпустима операція" );
}
}
} Зверніть увагу, що тип виразу в операторі switch є char. Також зверніть увагу, що перетворення з типу string до типу char повинно бути явним, тому що тип char є типом-значенням, а тип string – посилковим.
charop = (char)Console.Read(); Для виходу з оператора switch при виконанні умови використовується оператор переходу break.
3. Створення консольних проектів з використанням операторів циклу 3.1. Цикл з передумовою while Розглянемо приклад з лекції 4, в якому використовується цикл з передумовою. Потрібно написати програму, яка виводить для аргументу х, що змінюється в заданих границях із заданим кроком, таблицю значень наступної функції: X={t, x<0 tx, 0<=x<10 2t, x>10 } Назвемо початкове значення аргументу Xn, кінцеве значення аргументу — Xk, крок зміни аргументу — dX і параметр t. Всі величини є дійсні числа (double). Програма повинна виводити таблицю, що складається з двох стовпців: значень аргументу і відповідних ним значень функції. namespace ConsoleApplication1 { class Program { static void Main(string[] args) { double Xn = -2, Xk = 12, dX = 2, t = 2, y; Console.WriteLine("| x | y |"); // заголовок таблиці double x = Xn; while (x <= Xk) { y = t; if (x >= 0 && x < 10) y = t * x; if (x >= 10) y = 2 * t; Console.WriteLine("| {0,6} | {1,6} |", x, y); x += dX; } Console.ReadKey(); } } } Зверніть увагу, що в тілі циклу використовується два оператори if. На кожному кроці циклу обчислюється значення функції. Цикл завершиться коли умова циклу не буде виконана (тобто значення x стане більше 12).
3.2. Цикл з пост-умовою do…while Цей тип циклу застосовується в тих випадках, коли тіло циклу необхідно обов'язково виконати хоч б один раз. Приклад 4.7. з лекції 4 демонструє використання цього циклу. В цьому прикладі на консоль виводиться текст "Будете вчитися?" до тих пір поки не буду введено"y". Приклад 4.7 лекції 4 namespace ConsoleApplication1 { class Program { static void Main(string[] args) { char answer; do { Console.WriteLine("Будете вчитися?"); answer = (char)Console.Read(); Console.ReadLine(); } while (answer != 'y');
} } } 3.3. Цикл з параметром (for) Цей тип циклу використовується коли відомі границі циклу (нижня і верхня). Приклад 4.8 лекції 3 демонструє використання цього циклу. В цьому прикладі обчислюється сума чисел від 1 до 100. Спочатку створюється змінна цілого типу s, яка ініціалізується нулем. Потім в тілі циклу на кожному кроці до неї додається чергове число: 1,2,3,....100. int s = 0;
for ( int i = 1; i <= 100; i++ )
s += i; Зверніть увагу, що в тілі циклу відсутні фігурні дужки блоку. Це тому, що в циклі лише один оператор. Також зверніть увагу на використання операції інкремента: s += i; замість призначення: s=s+i; Обидва оператори дозволені в C# так само як і в C++. Розглянемо ще один приклад використання оператора циклу з параметром.
Постановка задачі Написати метод обчислення функції sin(x), використовуючи розкладання в ряд Тейлора за формулою. При реалізації задачі використати цикл for. Число x – це значення кута в радіанах, n – кількість членів ряду. Числа x, n ввести з консолі. Обчислення факторіала виконати в окремому методі. Порівняти отримане значення із стандартним методом обчислення sin(x). В цьому прикладі для обчислення ступеня використовується метод Math.Pow(). Статичний клас Math містить методи реалізації математичних функцій. Код програми може бути таким: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace My_sin { class Program { static double Calc_sin(double x, int n) { //обчислення розкладання sin в ряд double result =0; for (int i = 0; i < n; i++) { result=result+(Math.Pow((-1),i)*Math.Pow(x,(2*i+1)))/F(2*i+1); } return result; } static double F(int n) { double tmp = 1; for (int i = 1; i <= n; i++) { tmp = tmp * i; } return tmp; } static void Main(string[] args) { Console.WriteLine("Введіть x - кут в радіанах"); double x = double.Parse(Console.ReadLine()); Console.WriteLine("Введіть показник ступеня n"); int n = int.Parse(Console.ReadLine()); //виклик методу обчислення sin(x) через ряд double my_sinus = Calc_sin(x,n); //виклик методу з класу Math double sinus = Math.Sin(x); double delta = sinus - my_sinus; Console.WriteLine("my_sinus= {0},sin={1},delta={2}", my_sinus, sinus, delta); Console.ReadKey(); } } }
6. Варіанти завдань для Лабораторної роботи № 3 Номер варіанта відповідає номеру прізвища студента у списку групи
Література 1. Лекція 4 2.C# 2005 и платформа .Net 3.0 для профессионалов. Нейгел К., Ивьен Б. и др. –М.: ООО “И.Д. Вильямс", 2008. –1376 с. 3. Шилдт Г. С# 4.0: полное руководство. : Пер. с англ. — М. : ООО "И.Д. Вильямс", 2011. — 1056 с. 4. Д.М. Златопольский. Сборник задач по программированию. 2-е издание. // СПб.: БХВ-Петербург, 2007.-240 с. З повагою ІЦ "KURSOVIKS"! |