Циклы с неизвестным числом повторений




Предмет исследований

· Организация циклов с неизвестным числом повторений.

· Инструкции циклов while и do…while.

· Вычисление суммы членов бесконечного ряда.

· Разработать алгоритмы решения задачи.

· Составить программы решения задачи.

Контрольные вопросы

1. Циклический процесс с неизвестным числом повторений.

2. Его отличия от цикла с заданным числом повторений.

3. Инструкции языка C# для организации таких циклов. Их сравнение.

4. Синтаксис инструкции while.

5. Как выполнить группу операторов в цикле while?

6. Синтаксис инструкции do…while.

7. Синтаксис инструкции foreach.

8. Прямое вычисление суммы членов бесконечного ряда.

9. Вычисление суммы членов бесконечного ряда по рекуррентной формуле.

10. Условие выхода из цикла при вычислении суммы членов бесконечного ряда.

Цикл while

Вычислить значение суммы членов бесконечного ряда с заданной точностью Е с использованием инструкции цикла while. На печать вывести значение суммы и число членов ряда, вошедших в сумму. Проект – консольное приложение.


Пример. Вычислить значение суммы членов бесконечного ряда

при x = 0.1 с точностью до члена ряда с модулем, меньшим E=0.00001.

Для вычисления очередного члена ряда будем использовать рекуррентное соотношение, связывающее его с предыдущим членом a(n+1) = q*a(n). Применение рекуррентных формул позволяет избежать вычисления факториала и возведения в произвольную степень. Рекуррентный коэффициент q найдем из выражений для текущего и следующего членов ряда

Деля второе выражение на первое, получим

Значение начального члена ряда задаем до цикла путем прямого присваивания (номер начального члена n в разных вариантах равен 0 или 1, правильное значение определяется по формуле текущего члена). В нашем задании n=0, a=x.

Листинг программы

using System;

namespace ConsoleWhile

{

class Program

{

static void Main()

{

double a=0, e=0.00001, q=0, s=0, x=0.1;

int n = 0;

a = x; // Инициализация цикла

s = a;

while (Math.Abs(a) > e) // Цикл

{

q = -x * x / (2 * n + 2) / (2 * n + 3);

a *= q;

s += a;

n++;

}

Console.WriteLine();

Console.WriteLine("Результат");

Console.WriteLine();

Console.WriteLine("Сумма s=" + Convert.ToString(s));

Console.WriteLine("Число членов ряда n=" + Convert.ToString(n));

Console.WriteLine();

Console.WriteLine("Нажмите любую клавишу");

Console.ReadKey(); // Пауза

 

}

}

}

Консоль перед закрытием программы:

7.2. Цикл do…while

Выполнить ту же задачу с применением инструкции цикла do…while. Проект – консольное приложение.

Пример.

Листинг программы

using System;

 

namespace DoWhile

{

class Program

{

static void Main()

{

double a = 0, e = 0.00001, q = 0, s = 0, x = 0.1;

int n = 0;

a = x; // Инициализация цикла

s = a;

do // Тело цикла

{

q = -x * x / (2 * n + 2) / (2 * n + 3);

a *= q;

s += a;

n++;

}

while (Math.Abs(a) > e); // Цикл повторять

Console.WriteLine();

Console.WriteLine("Результат");

Console.WriteLine();

Console.WriteLine("Сумма s = {0}",s);

Console.WriteLine("Число членов ряда n = {0}",n);

Console.WriteLine();

Console.WriteLine("Нажмите любую клавишу");

Console.ReadKey(); // Пауза

}

}

}

Результат работы программы такой же, как для задания 1.


Циклы с заданным числом повторений

Предмет исследований

· Организация циклов с известным числом пвторений.

· Инструкция циклов for.

· Разработать алгоритмы решения задач.

· Составить программы решения задач.

Контрольные вопросы

1. Преимущества использования инструкций циклов в программе.

2. Инструкция цикла for.

3. Как организовать цикл с нарастанием индекса?

4. Как организовать цикл с убыванием индекса?

5. Организация вычисления суммы.

6. Организация вычисления произведения.

Команда Goto и метки

Вывести последовательность чисел (их число две последние цифры в номере зачетной книжки) с использованием инструкции goto и метки. Проект – консольное приложение.

Пример. Вычислить последовательность 10 чисел с использованием инструкции goto и метки. Проект – консольное приложение.

Листинг программы

using System;

namespace Goto

{

class Program

{

static void Main()

{

int i = 0;

M: Console.WriteLine("i: {0 } ", i);

i = i + 1;

if (i < 10) goto M;

Console.WriteLine("Нажмите любую клавишу");

Console.ReadKey();

}

}

}

Результат прогона.

Цикл for

Вычислить значения функции с использованием инструкции цикла for. Проект – консольное приложение.

Пример. Вычислить значения функции с использованием инструкции цикла for. Проект – консольное приложение.

Листинг программы

using System;

 

namespace For1

{

class Program

{

static void Main()

{

double z = 0, x = 2;

for (int i = 1; i < 21; i++) z += x * x / i;

Console.WriteLine("z = {0}", z);

Console.WriteLine("Нажмите любую клавишу");

Console.ReadKey();

}

}

}

Консоль перед закрытием программы:

Вложенные циклы for

Вычислить значения функции с использованием вложенных инструкций цикла for. Проект – консольное приложение.

Пример. Вычислить

В алгоритме для разнообразия один цикл реализован инструкцией for нарастанием индекса, а другой - инструкцией for с убыванием индекса.

Листинг программы

using System;

namespace For2

{

class Program

{

static void Main()

{

double t = 1, s = 0, x = 2;

for (int i = 1; i < 11; i++)

{

for (int j = 10; j > 0; j--)

{

s += Math.Cos(i * j * x);

t *= s;

}

}

Console.WriteLine("t: {0 } ", t);

Console.WriteLine("Нажмите любую клавишу");

Console.ReadKey();

}

}

}

Консоль перед закрытием программы:

Команда break

Создать программу с иcпользованием команды break. Проект – консольное приложение. В программе ищется первое не простое число из последовательности чисел от N до 1. Варианты заданий – N = две последние цифры номера зачетной книжки.

Пример. Создать программу с иcпользованием команды break. Проект – консольное приложение. В программе ищется первое не простое число из последовательности чисел от i = 8 до 1. Число не простое, если при его делении на целые числа, меньшие его, получается нулевой остаток. Во внешнем цикле пербираются числа делимые от i = 8 до 1. Во внутреннем цикле перебираются делители от j = i -1 до 1. При обнаружении нулевого остатка сбрасывается флаг простого числа, по которму команда break прекращает итерации, так как ответ уже найден.

Листинг программы

using System;

namespace Break

{

class Program

{

static void Main()

{

// объявляем флаг с именем bool для обозначения простых чисел

bool IsPrimeNumber = true;

for (int i = 8; i > 1; i--)

{

// устанавливаем флаг

//IsPrimeNumber = true;

for (int j = i - 1; j > 1; j--)

{

// если существует делитель с нулевым остатком

// сбрасываем флаг

if (i % j == 0)

{

IsPrimeNumber = false;

// дальнейшая проверка бессмысленна

// если с нулевым остатком - то число простое

if (IsPrimeNumber == true)

Console.WriteLine("{0}— простое число", i);

else Console.WriteLine("{0}— не простое число", i);

Console.WriteLine("Нажмите любую клавишу");

Console.ReadKey();

}

if (IsPrimeNumber == false) break;

}

}

}

}

}

Консоль перед закрытием программы:

Команда continue

Создать программу с использованием команды continue. Проект – консольное приложение. В программе ищется первое нечетное число из последовательности чисел от N до 1. Варианты заданий – N = две последние цифры номера зачетной книжки.

Пример. В программе ищется первое нечетное число из последовательности чисел от N до 1. Признак нечетности – остаток от деления на 2 не равен нулю. Если он равен нулю, то команда continue прерывает текущую итерацию и переъодит к следующей.

Листинг программы

using System;

class PoiskNechet

{

static void Main()

{

for (int i = 100; i > 0; i--)

{

if (i%2 ==0)

continue;

Console.WriteLine("{0} - нечетное число", i);

Console.WriteLine("Нажмите любую клавишу");

Console.ReadKey();

}

}

}

Консоль перед закрытием программы:

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: