You are on page 1of 22

Реалізація циклів в програмах

мовою С#
Реалізація циклів в програмах
мовою С#.
Команди реалізації циклів
мови С#.
Алгоритмічне позначення
циклів

1. Цикл з після умовою


2. Цикл з перед умовою
3. Цикл з параметром
Структури повторення
Будь-який цикл складається з:

― тіла циклу, тобто тих операторів, які виконуються кілька разів;


― початкових установок;
― модифікації параметра циклу;
― перевірки умови продовження виконання циклу.

Один прохід циклу називається ітерацією.

Перевірка умови виконується на кожній ітерації


― або до тіла циклу (цикл із передумовою),
― або після тіла циклу (цикл із постумовою).
Цикл з передумоваю
while( УмоваПродовженняВиконанняЦиклу )
{
Оператори;
}

Умова ні
Приклад:

int i = 0; так

while(i < 5) Тіло циклу


{
Оператори;
i = i + 1;
}
Приклад. Обчислення вираження f(x) = 1 + 1/2 + 1/3 + ... + 1/n.

using System;
class Program
{
static void Main()
{
int n;
double f;
Console.Write("Введiть n: ");
n = int.Parse(Console.ReadLine());
f = 0;
while (n > 0)
{
f += 1.0 / n;
n--;
}
Console.WriteLine("Значення функцiї дорiвнює {0}: ", f);
Console.ReadKey();
}
}
do Цикл з післяумоваю
{
Операторы;
}
while ( УмоваПродовженняВиконанняЦиклу );

Приклад:
do
{
str = Console.ReadLine();
}
while(str == "yes");
Приклад. Виведення алфавіту

using System;
class Program
{
static void Main()
{
char c = 'A';
Console.WriteLine(" Виведення алфавiту:\n");
do
{
Console.Write("{0} ", c);
c++;
} while (c <= 'Z');
Console.ReadKey();
}
}
Цикл з параметром
for(ІниціалізаціяЛічильника; УмоваПродовження; ЗмінаЛічильника )
{
Оператори;
}

Приклад:

for( int i =0; i<5; i++)


{
Console.WriteLine( i);
}
Позначення у алгоритмах блок-схем
Приклад. Розрахунок площі.
using System;
class AreaCalculator
{
public static void Main()
{
int i;
int width;
int height;

Console.WriteLine("Висота Ширина Площа\n");


for (height = 1000, width = 100, i=0; i <= 10;
height = height + 100, width = width + 10, i++)
{
Console.WriteLine("{0} {1} {2}",
height, width, height * width);
}
}
}
Результат:
Висота Ширина Площа
1000 100 100000
1100 110 121000
1200 120 144000
1300 130 169000
1400 140 196000
1500 150 225000
1600 160 256000
1700 170 289000
1800 180 324000
1900 190 361000
2000 200 400000
Press any key to continue
Керуючі оператори в циклах
Приклад. Угадай число.
Потрібно визначити задумане (визначене в програмі) число з 3-х спроб.
У цьому прикладі при вгадуванні числа 12 відбувається припинення виконання циклу за
допомогою оператора break.
using System;
class De_que_numero
{
public static void Main()
{
int i = 1, respuesta = 1;
int kol = 3; // кількість спроб = 3
Console.WriteLine("Введіть ціле число в діапазоні від 1 до 15. " +
"У вас є {0} спроби", kol);
while ( i <= kol )
{
Console.WriteLine("{0} спроба...", i);
respuesta=Convert.ToInt32(Console.ReadLine());
if ( respuesta == 12 )
break;
Console.WriteLine("На жаль..., не вгадали.");
i++;
}
if(i<=kol)
Console.WriteLine("Поздоровляємо, Ви вгадали число!");
Console.WriteLine("Гра закінчена. Удачі!");
}
}
Один із можливих результатів:

Введіть ціле число в діапазоні від 1 до 15. У вас є 3 спроби


1 спроба...
4
На жаль..., не вгадали.
2 спроба...
6
На жаль..., не вгадали.
3 спроба...
8
На жаль..., не вгадали.
Гра закінчена. Удачі!
Press any key to continue
Оператор continue може використовуватися тільки серед операторів тіла циклу. Він
викликає пропуск частини ітерації усередині циклу, що залишилася, й перехід до
наступної ітерації.

Приклад. Контроль введення значень дня місяця.


Вводяться числа місяця для обробки. Необхідно здійснити перевірку правильності
введення. Число 31 означає кінець обробки.
using System;
class Class1
{
static void Main()
{
int dia = 1;
while( dia !=31 )
{
Console.WriteLine("Введіть день місяця");
dia = Convert.ToInt32(Console.ReadLine());
if( dia < 1 || dia >=31 )
continue;
Console.WriteLine("Обробка введеної дати {0}",dia);
}
Console.WriteLine("Кінець обробки");
}
}
Результат:

Введіть день місяця


3
Обробка введеної дати 3
Введіть день місяця
35
Введіть день місяця
2
Обробка введеної дати 2
Введіть день місяця
78
Введіть день місяця
9
Обробка введеної дати 9
Введіть день місяця
31
Кінець обробки
Press any key to continue

У даному прикладі неправильне введення значення призводить до пропуску


частини ітерації, призначеної для обробки цього значення.
Помітимо, що така зміна умови
if ( dia < 1 || dia > 31 ) на зворотне
if (dia > 0 && dia < 32 )
дозволяє виключити використання оператора continue.
Якщо continue використовується в циклі for, то треба мати на увазі наступне: перед початком
нової ітерації спочатку обчислюється вираження модифікації (знаходиться нове значення
параметра циклу) і лише потім керування передається на заголовок.

Приклад. Застосування операторів continue і break в циклі for.


using System;
class Class1
{
static void Main()
{
int i;
Console.WriteLine("Стартує цикл із continue");
for ( i=1; i<=10; i++ )
{
if ( i<5) continue;
Console.WriteLine("{0} ",i);
}
Console.WriteLine("Значення i після циклу дорівнює {0}",i);
Console.WriteLine("Стартує цикл із break");
for ( i=1; i<=10; i++ )
{
if ( i>5) break;
Console.WriteLine("{0} ",i);
}
Console.WriteLine("Значення i після виходу дорівнює {0}",i);
}
}
Результат:

Стартує цикл із continue


5
6
7
8
9
10
Значення i після циклу дорівнює 11
Стартує цикл із break
1
2
3
4
5
Значення i після виходу дорівнює 6
Press any key to continue
Оператор goto (перехід на задану
мітку)

Оператор goto є поганим засобом. Його використання


призводить до значного ускладнення логіки програми.
Існує лише один випадок, коли програмісти –
професіонали допускають використання goto, – це
вихід із вкладеного набору циклів при виявленні
помилок (break дає можливість виходу лише з одного
циклу).
Вкладені цикли
Приклад. Потрібно заповнити заданий прямокутник символами “*”.
using System;
class StarsTwoDimensions
{
public static void Main()
{
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 7; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
}
}
Результат:
*******
*******
*******
*******
*******
Press any key to continue
Приклад. Здійснити введення п'яти значень днів місяця з
перевіркою правильності введення

.
using System;
class Class1
{
static void Main()
{
int dia;
for (int i=1; i <= 5; i++ )
{
do
{
Console.WriteLine("Введіть день місяця");
dia = Convert.ToInt32(Console.ReadLine());
}
while ( dia < 1 || dia >31 );
Console.WriteLine("Обробка введеної дати {0}",dia);
}
Console.WriteLine("Кінець обробки");
}
}
Результат:
Введіть день місяця
3
Обробка введеної дати 3
Введіть день місяця
17
Обробка введеної дати 17
Введіть день місяця
32
Введіть день місяця
1
Обробка введеної дати 1
Введіть день місяця
0
Введіть день місяця
7
Обробка введеної дати 7
Введіть день місяця
9
Обробка введеної дати 9
Кінець обробки
Press any key to continue
Реалізація циклів в програмах
мовою С#.
Команди реалізації циклів
мови С#.

You might also like