Алгоритмизация и программирование
Структура оператора цикла
Цикл с предусловием
Задача 1. Дано натуральное n. Вычислить сумму
Задача 1. Дано натуральное n. Вычислить сумму
Задача 2. Написать программу, которая выводит таблицу значений функции y =−2,4x2 +5x −3 в диапазоне от –2 до 2, с шагом 0,5.
Цикл с постусловием
Задача 3. Вычислить сумму ряда: вычисление производить до тех пор, пока очередной член вычисляемой суммы не станет по модулю
Цикл с параметром
Цикл с параметром
Пример цикла с параметром
Задача 4.1. Программа выводит числа, постепенно уменьшающиеся от 20 до –20 на величину 5
Задача 4.2 Написать программу, которая вычисляет сумму первых n членов ряда:
Задача 5. Создать консольное приложение для вычисления факториала k!
Задача 6. Вычислить сумму и количество тех двузначных чисел, которые нацело делятся на 3 и не делятся на 4.
Задача 7. Вычислить сумму ряда: а) задано число членов суммы N; б) вычисление производить до тех пор, пока очередной член
Задача 7. Вычислить сумму ряда: а) задано число членов суммы N; б) вычисление производить до тех пор, пока очередной член
Задача 8. Вычислить сумму ряда: а) задано число членов суммы N; б) вычисление производить до тех пор, пока очередной член
Задача 8. Вычислить сумму ряда: а) задано число членов суммы N; б) вычисление производить до тех пор, пока очередной член
Задача 9. Вычислить сумму S: а) задано число членов суммы N; б) вычисление производить до тех пор, пока очередной член
Задача 9. Вычислить сумму S: а) задано число членов суммы N; б) вычисление производить до тех пор, пока очередной член
Задача 9. Вычислить сумму S: а) задано число членов суммы N; б) вычисление производить до тех пор, пока очередной член
Рекомендации по написанию циклов
0.96M
Категория: ПрограммированиеПрограммирование

Лекция №5 программирование

1. Алгоритмизация и программирование

АЛГОРИТМИЗАЦИЯ И
ПРОГРАММИРОВАНИЕ
Лекция №5
Операторы цикла в C#

2.

• Операторы цикла:
▪ с предусловием - while
▪ с постусловием - do
▪ с параметром - for
▪ перебора - foreach

3. Структура оператора цикла

СТРУКТУРА ОПЕРАТОРА ЦИКЛА
Начальные
значения
Усл-е
Начальные
значения
Тело
цикла
Тело
цикла
Модиф-я параметра
Модиф-я параметра
Усл-е

4. Цикл с предусловием

ЦИКЛ С ПРЕДУСЛОВИЕМ
while ( выражение ) оператор
using System;
namespace ConsoleApplication1
{ class Class1
{ static void Main()
{
double Xn = -2, Xk = 12, dX = 2, t = 2, y;
Console.WriteLine( "| x | y |" );
логическое
выражение
true
(да)
оператор
double x = Xn;
while ( x <= Xk )
{
y = t * x;
Console.WriteLine( "| {0,9} | {1,9} |", x, y );
x += dX;
}
y = t x
}
}
}
xn
xk
false
(нет)

5. Задача 1. Дано натуральное n. Вычислить сумму

Ввод n
S := 0
k := 1
нет
да
S := S + 1/(2*k+1)2
k := k + 1
Вывод S
конец
(
1
)
2
Введём переменные:
2
k
+
1
k =1
S – сумма;
k – номер очередного слагаемого;
n– количество слагаемых в сумме.
начало
k <= n
n
static void Main(string[] args)
{
int n, k;
double S;
Console.WriteLine(" Введите n: ");
n = Convert.ToInt32(Console.ReadLine());
S = 0;
k = 1;
while (k <= n)
{
S = S + 1/ ((2*k + 1) *(2*k + 1));
k = k + 1;
}
Console.WriteLine(“S={0,6:F2}", S);
Console.ReadLine();
}

6. Задача 1. Дано натуральное n. Вычислить сумму

Ввод n
S := 0
Данные для тестирования
k := 1
1) Для n = 2
нет
да
S=
S=
Вывод S
конец
)
1
+
2
(2 1 + 1)
1
1 1
+
= 0.1111 + 0.04 = 0.1511
9 25
=
2
(2 2 + 1)
2) Для n = 3
S := S + 1/(2*k+1)2
k := k + 1
(
1
2
Введём переменные:
2
k
+
1
k =1
S – сумма;
k – номер очередного слагаемого;
n– количество слагаемых в сумме.
начало
k <= n
n
1
(2 1 + 1)
2
+
1
(2 2 + 1)
2
+
1
(2 3 + 1)
2
=
1 1
1
+
+
= 0.1111 + 0.04 + 0.0204 = 0.1715
9 25 49

7. Задача 2. Написать программу, которая выводит таблицу значений функции y =−2,4x2 +5x −3 в диапазоне от –2 до 2, с шагом 0,5.

Таблица
должна состоять из двух столбцов: значений аргумента и соответствующих
им значений функции.
static void Main(string[] args)
{
double x, y; // аргумент и значение функции
double xn = -2.0; // начальное значение переменной x
double xk = 2.0; // конечное значение переменной x
double dx = 0.5; // шаг изменения переменной
Console.WriteLine("-------------------");
Console.WriteLine("
x
y
");
Console.WriteLine("-------------------");
x = xn;
while (x <= xk)
{
y = -2.4 * x * x + 5.0 * x - 3.0;
Console.WriteLine("{0,6:F2}\t {1,6:F3}", x, y);
x = x + dx;
}
Console.ReadLine();
}

8. Цикл с постусловием

ЦИКЛ С ПОСТУСЛОВИЕМ
Удобно использовать
для проверки ввода
do
оператор
while
выражение;
using System;
namespace ConsoleApplication1
{ class Program
{ static void Main()
{
char answer;
do
{
Console.WriteLine( "Купи слоника, а?" );
answer = (char) Console.Read();
Console.ReadLine();
} while ( answer != 'y' );
}
}
}
оператор_1
оператор_2
...
оператор_ n
false
(нет)
логическое
выражение
true
(да)

9. Задача 3. Вычислить сумму ряда: вычисление производить до тех пор, пока очередной член вычисляемой суммы не станет по модулю

ЦИКЛ С ПАРАМЕТРОМ
for (<S>=<SN> ; выражение; модификации ) оператор;
а) Схема выполнения.
б) Условное обозначение
S = SN
выражени
е
да
оператор
модификатор
нет
пц:=нз, кз, ш
оператор

10. Цикл с параметром

ЦИКЛ С ПАРАМЕТРОМ
for ( инициализация; выражение; модификации ) оператор;
int s = 0;
for ( int i = 1; i <= 100; i++ ) s += i;
for ( int i = 0, j = 20; i < 5 && j > 10; i++, j-- ) …
Несколько
величин
Несколько
величин
for ( double x = Xn; x <= Xk; x += dX ) { …; …; … }
Блок

11. Цикл с параметром

ПРИМЕР ЦИКЛА С ПАРАМЕТРОМ
using System;
namespace ConsoleApplication1
{ class Class1
{ static void Main()
{
double Xn = -2, Xk = 12, dX = 2, t = 2, y;
Console.WriteLine( "| x | y |";
for ( double x = Xn; x <= Xk; x += dX )
{
y = t * x;
Console.WriteLine( "| {0,9} | {1,9} |", x, y );
}
}
}
}

12. Пример цикла с параметром

Задача 4.1. Программа выводит числа, постепенно уменьшающиеся
от 20 до –20 на величину 5

13. Задача 4.1. Программа выводит числа, постепенно уменьшающиеся от 20 до –20 на величину 5

Задача 4.2 Написать программу, которая вычисляет сумму
первых n членов ряда:

14. Задача 4.2 Написать программу, которая вычисляет сумму первых n членов ряда:

Задача 5. Создать консольное приложение для вычисления
факториала k!
static void Main(string[] args)
{
int i, k;
double p;
Console.Write(" Введите k= ");
k = Convert.ToInt32(Console.ReadLine());
p = 1;
for (i = 1; i <= k; i++)
p = p * i;
Console.WriteLine("{0}! = {1}", k, p);
Console.ReadLine();
}

15. Задача 5. Создать консольное приложение для вычисления факториала k!

Задача 6. Вычислить сумму и количество тех двузначных чисел,
которые нацело делятся на 3 и не делятся на 4.
static void Main(string[] args)
{
int i, n=0, S=0;
for (i = 10; i <= 99; i++)
if (i % 3 = 0 && i % 4 != 0)
{
S = S + i;
N = n + 1;
}
Console.WriteLine ( " S = {0} \n n = {1}", S, n );
Console.ReadLine();
}

16. Задача 6. Вычислить сумму и количество тех двузначных чисел, которые нацело делятся на 3 и не делятся на 4.

2
3
k
Задача 7. Вычислить сумму ряда:
S = 1−
+Вывод−S + (− 1)k +1
+
2
2
2
а) задано число членов суммы N;
3
4
(k + 1)
S := 0
б) вычисление производить до тех пор, пока очередной
член вычисляемой
суммы не станет по модулю меньше заданного значения e. Все последующие
znak := 1
слагаемые в S входить не должны.
начало
Ввод n, Е
k := 1
sl := 1
S := 1
znak := -1
k := 2 .. n
S := S + znak*k / (k+1)2
znak := - znak
|sl| >= E
да
S := S + znak*sl
k := k + 1
znak := - znak
sl := k / (k + 1)2
Вывод S
S := S + znak*sl
S := 0
znak := 1
Вывод S
конец
k := 1
нет

17. Задача 7. Вычислить сумму ряда: а) задано число членов суммы N; б) вычисление производить до тех пор, пока очередной член

2
3
k
Задача 7. Вычислить сумму ряда:
S = 1−
+
− + (− 1)k +1
+
2
2
2
а) задано число членов суммы N;
3
4
(k + 1)
б) вычисление производить до тех пор, пока очередной член вычисляемой
суммы не станет по модулю меньше заданного значения e. Все последующие
слагаемые в S входить не должны.
Данные для тестирования
1) Для n = 3, Е = 0,2
S = 1−
2
3
+
= 1 − 0.2222 + 0.1875 = 0.9653
2
2
3
4
2) Для n = 4, Е = 0,17
S = 1−
2
3
4
+
−
= 1 − 0.2222 + 0.1875 − 0.16 = 0.8053
2
2
2
3
4
5

18. Задача 7. Вычислить сумму ряда: а) задано число членов суммы N; б) вычисление производить до тех пор, пока очередной член

st := st*x
Задача 8. Вычислить сумму ряда: S ( x) = cos x −2 cos 2 x + cos 3 x − cos 4 x +
S:=S+znak*cos(k*x)/(2*k-1)
12 x /st32 x 2
52 x 3
72 x4
а) задано число членов суммы N;
б) вычисление производить до техznak
пор,
пока очередной член вычисляемой
:= - znak
суммы не станет по модулю меньше заданного значения e. Все последующие
слагаемые в S входить не должны.
Вывод S
начало
S := 0
st := st * x
Ввод х, n, Е
znak := 1
S := 0
sl := cos(k*x)/(2*k-1)2/st
st := 1
znak := 1
S := S + znak * sl
k := 1
st := 1
k := k + 1
k := 1 .. n
znak := - znak
st := st*x
нет
2
S:=S+znak*cos(k*x)/(2*k-1) /st
znak := - znak
Вывод S
|sl| < E
да
Вывод S
конец

19. Задача 8. Вычислить сумму ряда: а) задано число членов суммы N; б) вычисление производить до тех пор, пока очередной член

Задача 8. Вычислить сумму ряда: S ( x) = cos x − cos 2 x + cos 3 x − cos 4 x +
12 x 32 x 2
52 x 3
72 x4
а) задано число членов суммы N;
б) вычисление производить до тех пор, пока очередной член вычисляемой
суммы не станет по модулю меньше заданного значения e. Все последующие
слагаемые в S входить не должны.
Данные для тестирования
1) Для x = 1, n = 3, Е = 0,04
S ( x) =
cos 2 cos 2 2 cos 3 2
−
+ 2 3 = 0.5403 + 0.04624 − 0.0396 = 0.54694
12 1 32 12
5 1
2) Для x = 2, n = 4, Е = 0,0005
cos 2 cos 2 2 cos 3 2 cos 4 2
S ( x) = 2 − 2 2 + 2 3 − 2 4 =
1 2 3 2
5 2
7 2
= −0.20807 + 0.01816 + 0.00480 + 0.00019 = −0.18493

20. Задача 8. Вычислить сумму ряда: а) задано число членов суммы N; б) вычисление производить до тех пор, пока очередной член

1
4
9
Задача 9. Вычислить сумму S:
S=
−
+
−
2
4
6
1
!
X
2
!
X
3
!
X
а) задано число членов суммы N;
б) вычисление производить до тех пор, пока очередной член вычисляемой
суммы не станет по модулю меньше заданного значения e. Все последующие
слагаемые в S входить не должны.
Введём переменные:
S – сумма;
i – номер очередного слагаемого;
N – количество слагаемых в сумме
f - факториал
R – очередное слагаемое

21. Задача 9. Вычислить сумму S: а) задано число членов суммы N; б) вычисление производить до тех пор, пока очередной член

1
4
9
Задача 9. Вычислить сумму S:
S=
−
+
−
2
4
6
1
!
X
2
!
X
3
!
X
а) задано число членов суммы N;
б) вычисление производить до тех пор, пока очередной член вычисляемой
суммы не станет по модулю меньше заданного значения e. Все последующие
слагаемые в S входить не должны.
static void Main(string[] args)
{
int i, n, f=1, p=1;
double x, R, e, S=0;
Console.Write(" Введите n= ");
f=1; p=1; S=0; i = 1; R = 1;
n = Convert.ToInt32(Console.ReadLine());
while (Math.Abs(R) >= e) do
Console.Write(" Введите e= ");
{
e = Convert.ToDouble(Console.ReadLine());
f = f * i;
Console.Write(" Введите x= ");
R = p * i * i / (f * Math.Pow(x,2*i));
x = Convert.ToDouble(Console.ReadLine());
S = S + R;
for (i = 1; i <= n; i++)
p = -p;
{
i++;
f = f * i;
}
R = p * i * i / (f * Math.Pow(x,2*i));
Console.WriteLine ( " S = {0}", S );
S = S + R;
Console.ReadLine();
p = -p;
}
}
Console.WriteLine ( " S = {0}", S );

22. Задача 9. Вычислить сумму S: а) задано число членов суммы N; б) вычисление производить до тех пор, пока очередной член

1
4
9
Задача 9. Вычислить сумму S:
S=
−
+
−
2
4
6
1
!
X
2
!
X
3
!
X
а) задано число членов суммы N;
б) вычисление производить до тех пор, пока очередной член вычисляемой
суммы не станет по модулю меньше заданного значения e. Все последующие
слагаемые в S входить не должны.
Данные для тестирования
Для x = 2, n = 3, Е = 0,05
S ( x) =
1
4
9
−
+
= 0.25 − 0.125 + 0.0234 = 0.1484
2
4
6
1 2 1 2 2 1 2 3 2

23. Задача 9. Вычислить сумму S: а) задано число членов суммы N; б) вычисление производить до тех пор, пока очередной член

РЕКОМЕНДАЦИИ ПО НАПИСАНИЮ
ЦИКЛОВ
• Использовать do-while, если цикл обязательно требуется
выполнить хотя бы один раз (например, при проверке ввода);
• в остальных случаях, как правило, применять for.
• Не забывать заключать в блок тело цикла, состоящее более чем
из одного оператора;
• проверять, изменяется ли в теле цикла хотя бы одна
переменная, входящая в условие продолжения цикла;
• предусматривать аварийный выход из итеративного цикла* по
достижению некоторого предельно допустимого количества
итераций.
-----------* цикл, количество повторений которого невозможно вычислить
заранее

24. Рекомендации по написанию циклов

• Передача управления:
▪ break
▪ continue
▪ return
▪ goto
▪ throw

25.

ПЕРЕДАЧА УПРАВЛЕНИЯ
• оператор break — завершает выполнение цикла,
внутри которого записан
• оператор continue — выполняет переход к
следующей итерации цикла
• оператор return — выполняет выход из функции,
внутри которой он записан
• оператор goto — выполняет безусловную передачу
управления
• оператор throw — генерирует исключительную
ситуацию.
English     Русский Правила