Роздрукувати сторінку
Главная \ Методичні вказівки \ Методичні вказівки \ 1652 Лабораторна робота №3 на тему Умовні оператори і цикли

Лабораторна робота №3 на тему Умовні оператори і цикли

« Назад

Лабораторна робота №3 

Умовні оператори і цикли 

Мета роботи:

  1. Створення консольних проектів з використанням операторів if

  2. Створення консольних проектів з використанням операторів switch

  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. Цикл з пост-умовою dowhile

Цей тип циклу застосовується в тих випадках, коли тіло циклу необхідно обов'язково виконати хоч б один раз.

Приклад 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

 

2

 

3

 

4

 

5

 

6

 

7

1. Оператор if

Відомі рік і місяць народження людини.  Визначити вік людини на вказану дату (сьогоднішній день). У разі співпадіння номерів місяців вважати, що пройшов повний рік. 

2. Оператор if

Знайти найбільше з трьох чисел. Числа оголосити в коді  програми. 

3. Оператор switch

Написати програму, яка в залежності від назви кольору (червоний, помаранчовий, жовтий, зелений, блакитний, синій, фіолетовий)  виводить його код RGB 

4. Оператор циклу

Обчислити Fn - число Фібоначчі з номером n, де
F1 = 1;       F2 = 1;       Fk =  Fk-1 + Fk-2  для k>2.

8

 

9

 

10

 

11

 

12

 

13

 

 

Література

1. Лекція 4

2.C# 2005 и платформа .Net 3.0 для профессионалов. Нейгел К., Ивьен Б. и др. –М.: ООО “И.Д. Вильямс", 2008. –1376 с.

3.  Шилдт Г. С# 4.0: полное руководство. : Пер. с англ. — М. : ООО "И.Д. Вильямс", 2011. — 1056 с.

4. Д.М. Златопольский. Сборник задач по программированию. 2-е издание. // СПб.: БХВ-Петербург, 2007.-240 с.

З повагою ІЦ "KURSOVIKS"!