рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Циклы по счетчику

Циклы по счетчику - раздел Программирование, Основы алгоритмизации и объектно-ориентированного программирования Рассмотрим Вначале Циклы По Счетчику, Т.е. Когда Количество Повторений...

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

При организации цикла по счетчику необходимо:

1) выделить повторяющиеся действия и записать их в общем виде;

2) выбрать управляющую переменную цикла. Это может быть какая-либо величина, имеющаяся в постановке задачи, либо используемая специально в качестве счетчика;

3) определить параметры цикла, т.е. начальное и конечное значения управляющей переменной и шаг ее изменения.

Пример 2.1. Вычислить s = 1 + 2 + 3 + … +100.

Организуем вычисления так, чтобы на каждом шаге выполнялись простые действия, в данном случае это прибавление к сумме очередного слагаемого. Вначале необходимо обнулить переменную, в которой будет накапливаться сумма (s = 0), а затем на каждом шаге добавлять к сумме очередной член, т.е. многократно выполнять операцию

s = s + i, где i = 1, 2, 3, ... , 100.

Таким образом, в качестве управляющей переменной цикла в данном случае можно использовать сам член суммы, который изменяется в заданных пределах (от 1 до 100) с заданным шагом 1. Тогда программа будет иметь следующий вид:

using System;

namespace ConsoleApplication3

{

class Program

{

static void Main(string[] args)

{

int i, s = 0;

for (i = 1; i <= 100; i = i + 1)

s = s + i;

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

Console.ReadKey();

}

}

}

Результат выполнения программы:

Пример 2.2. Вычислить сумму четных чисел от 2 до 20.

Здесь требуется организация цикла по счетчику с управляющей переменной, например k, изменяющейся с шагом 2 от 2 до 20:

using System;

namespace ConsoleApplication1

{

class Program

{

static void Main()

{

int k, s = 0;

for (k = 2; k <= 20; k = k + 2)

s = s + k;

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

Console.ReadKey();

}

}

}

Или

using System;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

int k = 2, s = 0;

do

{

s = s + k;

k = k + 2;

} while (k <= 20);

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

Console.ReadKey();

}

}

}

Пример 2.3. Вычислить s = 3 + 32 + 33 + … + 38.

На каждом шаге алгоритма необходимо прибавлять к сумме очередное слагаемое: (s = s + 3i), где i = 1, 2, 3, ... , 8.

Вспомним, что операция возведения в степень в языке C# отсутствует, поэтому следующий член суммы будем получать из предыдущего домножением его на 3. В качестве управляющей переменной цикла можно использовать показатель степени, изменяющийся в заданных пределах от 1 до 8 с заданным шагом, равным 1. Программа, таким образом, будет иметь следующий вид (здесь и далее приводится только алгоритмическая часть проекта):

int s = 0, a = 1;

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

{

a = a * 3;

s = s + a;

}

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

Console.ReadKey();

Замечание. Выражение для получения очередного члена последовательности из предыдущего называется рекуррентной формулой.

Пример 2.4. Вычислить s = 5/8 + 7/10 + ... + 31/34.

Для организации цикла в этом случае можно использовать числитель, изменяющийся от 5 до 31 с шагом 2, а знаменатель выразить через числитель (он отличается от числителя на 3):

double s = 0;

for (int a = 5; a <= 31; a = a + 2)

{

s = s + a / (a + 3.0);

}

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

Console.ReadKey();

Замечание. При делении целого на целое дробная часть теряется (результат получается целым). Поэтому при вычислении знаменателя второе слагаемое записано в виде вещественного числа. Знаменатель будет теперь иметь тип double, и результат деления будет иметь тип double.

Возможны и другие способы организации вычислений. Предложите их самостоятельно.

Для организации цикла в данном примере можно использовать специальную переменную (счетчик), определяющую номер итерации. Для определения общего количества повторений цикла (n) можно использовать формулу

n = (iконiнач)/h + 1.

В данном случае при iкон = 31, iнач = 5, h = 2 получаем n = 14. Тогда программа будет иметь вид

double s = 0, a;

int n;

double xh = 5, xk = 31, h = 2;

a = xh;

n = (int)((xk - xh) / h + 1);

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

{

s = s + a / (a + 3);

a = a + h;

}

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

Console.ReadKey();

Здесь при вычислении n использовано явное преобразование типа указанием типа в скобках перед выражением, так как результат метода Round (округление) имеет тип double.

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

double s = 0.0, a;

int i, p = 1;

for (i = 1; i <= 25; i = i + 1)

{

p = -p;

a = p * 2 * i / (i * i + 2.0);

s = s + a;

}

s = (2.0 / 3.0) * s;

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

Console.ReadKey();

Замечание. В программе использован тот же прием согласования типов, что и в примере 2.4. Порядок вычислений и тип результата операций в выражении правой части при вычислении члена суммы a следующий: вычисляется p ´ 2 – тип результата int, результат этой операции умножается на i, тип результата int, вычисляется знаменатель (выражение в скобках) в следующем порядке: вычисляется i ´ i - результат операции имеет тип int, к этому результату прибавляется вещественное число 2.0 (по умолчанию типа double), знаменатель после вычисления имеет тип double. Таким образом, значение выражения правой части имеет тип double.

Пример 2.6. Получить таблицу значений функции при изменении x в пределах от xh = –2,5 до xk = 2,5 с шагом h = 0,5.

const double xh = -2.5, xk = 2.5, h = 0.5;

double x, y;

int i, n;

n = (int)((xk - xh) / h + 1);

x = xh;

for (i = 1; i <= n; i = i + 1)

{

y = Math.Pow(x, 2) + 0.5 * x;

Console.WriteLine("x = {0:f2}\ty = {1:f2}", x, y);

x = x + h;

}

Console.ReadKey();

Замечания:

1. Для определения количества значений аргумента при его изменении в пределах от xh до xk c шагом h использована формула n =(xk - xh)/h + 1.В программе для получения в качестве n целого значения использовано явное преобразование типа указанием его в скобках перед выражением.

2. Для вычисления использован метод Pow класса Math.

3. Наличие символа \t в строке формата обеспечивает табуляцию при выводе каждого значения y, что обеспечивает большую наглядность результата. (Этого эффекта можно добиться и другими способами. Предложите их самостоятельно.)

Второй вариант. Используется цикл do:

const double xh = -2.5, xk = 2.5, h = 0.5;

double x, y;

x = xh;

do

{

y = Math.Pow(x, 2) + 0.5 * x;

Console.WriteLine("x = {0:f2}\ty = {1:f2}",

x, y);

x = x + h;

}

while (x < xk + 0.0001);

Console.ReadKey();

Здесь при проверке условия while сравнение текущего значения x осуществляется с величиной несколько большей верхней границы его изменения. Это связано с особенностями представления в памяти компьютера вещественных чисел. Вещественные числа представляются неточно, и в результате многократного выполнения арифметических операций может накопиться ошибка, так что последнее значение x может быть несколько больше xk и при отсутствии второго слагаемого в условии не попадет в таблицу.

Пример 2.7. Вычислить p = n! при n = 8.

Вычисление факториала можно организовать в цикле, домножая каждый раз значение p на очередной сомножитель:

const int n = 8;

int p = 1;

for (int i = 2; i <= n; i++)

{

p = p * i;

}

Console.WriteLine("p = {0:d}", p);

Console.ReadKey();

– Конец работы –

Эта тема принадлежит разделу:

Основы алгоритмизации и объектно-ориентированного программирования

Федеральное государственное образовательное учреждение высшего профессионального образования Национальный исследовательский технологический.. Кафедра инженерной кибернетики Т В Куренкова Г И..

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Циклы по счетчику

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Переменные. Типы данных
C# имеет две разновидности типов: типы значений и ссылочные типы. Переменные, основанные на типах значений, содержат непосредственно значения. Переменные ссылочных типов сохраняют ссылки (адреса в

Литералы
Литералы используются в тексте программы для обозначения числовых значений, строк символов или логических констант. Другими словами, литерал представляет собой постоянное значение, у которого нет и

Порядок вычисления выражения в программе
1. Вычисляется Cos(x) обращением к методу Cos(x)класса Math (обозначим результат через p1). 2. Вычисляется 6 + p1 (обозначим результат этой операции через p2). 3. Вычисляется x &a

Ввод данных
Ввод данных осуществляется следующим образом: из входного потока при помощи метода ReadLine (класса Сonsole) считывается строка символов. Ее значение присваивается какой-либо переменной типа string

Вывод данных
Вывод данных осуществляется с использованием метода WriteLine (или Write) (класса Сonsole). После выполнения WriteLine производится перевод строки и последующий вывод происходит в новую строку. Пос

Циклы по условию
Циклы по условию необходимо организовывать, когда количество повторений цикла неизвестно и в ряде случаев является искомой величиной при решении задачи. Средства языка C# для организации цик

Вложенные циклы
Пример 2.13. Вычислить при x, изменяющемся в пределах от 0,1 до 1 с шагом 0,05. Вначале ограничимся вычисле

Одномерные массивы и алгоритмы их обработки
Все массивы должны быть объявлены и инициализированы перед их использованием. При объявлении массива нужно указать тип элементов массива (элементы массива могут быть любых типов), далее следуют пус

Работа с массивами как с объектами
В C# массивы являются объектами (экземплярами). Класс Arrayпредоставляет методы для создания, изменения, поиска и сортировки массивов, т.е. выступает в роли базового класса для все

Работа с матрицами
Матрица – это двухмерный массив, который можно представить себе как совокупность строк (или совокупность столбцов). Положение элемента в массиве определяется двумя индексами: номером строки

Использование структур
Массивы состоят из элементов одного типа. В тех случаях, когда единообразно нужно обрабатывать наборы данных, представляющих совокупность величин различного типа, рассматривая их как единое целое,

Использование массивов в качестве параметров
Массив является ссылочным типом и если массив является параметром метода, то передача его всегда осуществляется по ссылке, независимо от наличия ключевого слова ref. Поскольку массивы являются ссыл

Работа с текстовыми строками
Текстовые строки – переменные типа string – могут содержать любое количество символов. Каждый символ представлен в кодировке UNICODE, предполагающей представление одного символа в 2 байтах п

Файлы данных (Пространство имен System.IO). Файлы и потоки
Файл данных – это совокупность (последовательность) компонент, имеющая имя, расположенная на внешнем носителе. Файлы могут быть объединены в каталоги (директории, папки), также имеющие имя.

Работа с элементом управления Button
Button – класс пространства имен System.Windows.Forms, представляет элемент управления Windows «Кнопка». 1. В меню «Вид» выберите команду «Панель элементов», чтобы открыть список элементов

Работа с элементом управления RichTextBox
Элемент управления Windows Forms RichTextBox используется для отображения, ввода и изменения текста (если необходимо, с форматированием). Методы этого класса предоставляют возможности, схожие с воз

Создание объекта Graphics пространства имен System.Drawing для рисования
Класс Graphics является основой интерфейса GDI+ (специальная библиотека). Этот класс непосредственно выполняет рисование прямых и кривых линий, геометрических фигур, вывод рисунков и текста.

Открытие существующего проекта
В меню «Файл» выберите команду «Открыть проект». Откроется окно «Открыть проект». В этом окне проект необходимо войти в папку ConsoleApplication1 (или другое имя, которое вы выбрали для консольного

Обозреватель решений
В меню «Вид» выберите команду «Обозреватель решений». Откроется окно «Обозреватель решений». В окне «Обозреватель решений», в виде иерархического дерева показаны все файлы проекта. Если в открытом

Значки обозревателя объектов
В обозревателе объектов отображаются значки, служащие для представления сущностей кода, таких как пространства имен, классы, функции и переменные. Обозреватель объектов позволяет выбирать

Платформа Microsoft .NET Framework
Microsoft .NET технология предоставляет: 1) современный набор инструментальных средств для разработки программного обеспечения; 2) общеязыковую исполняющую среду, которая предоста

Таблицы встроенных типов
Таблица целых типов Тип Диапазон Размер sbyte От –128 до 127 8-разрядное целое число с

Региональные стандарты
Региональные стандарты выбираются как параметры установки пользователем при установке Windows. Платформа .NET Framework предоставляет широкие возможности для разработки международных прило

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги