КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Алгоритмы с циклической структурой. Оператор выбора For
Циклические структуры – это третий, важнейший и последний вид структур, которые используются в любой полноценной программе. Программа абсолютно любой сложности строится всего на 3-х алгоритмических структурах: последовательной структуре, когда операторы программы идут последовательно друг за другом, разветвляющейся структуре, когда программа должна выбрать дальнейшие действия в зависимости от некоторых условий, и циклической структуре, с который мы познакомимся на этом и следующем занятиях.
Если посмотреть со стороны на нашу жизнь, не вдаваясь в частные подробности, то она нам покажется состоящей из самых разных, как правило, сложных циклов. Естественно, если заглянуть глубже в каждый из этих процессов, то мы поймём, что эта цикличность нашей жизни и не позволяет нам стоять на месте: каждый раз, совершая ту же последовательность действий, мы можем учиться чему-то новому (яркий пример – учёба в лицее). Кроме этого, мы можем выбрать, чем заняться в каждый конкретный день, учиться чему-то принципиально новому или начать заказывать продукты на дом вместо того, чтобы ходить в магазин. Но поскольку программа является упрощённым описанием как правило какого-то отдельного и конкретного жизненного, научного, политического или другого вида явления и мы не можем в ней предусмотреть всего спектра разнообразия, которое встречаем в нашей реальной жизни, то для создания программы мы можем несколько упростить модель нашей задачи и использовать в ней повторяющиеся циклы. Ни жизнь, ни даже часть жизни ввиду бесконечного разнообразия её вариантов описать в программе невозможно, а вот найти самые общие черты, которые составляются циклы (содержащие внутри себя это разнообразие) или описать явления в науке и неживой природе можно, поэтому компьютеры так прочно входят в нашу жизнь, совершая самые различные расчёты – бухгалтерские и иные экономические, математические, физические, социологические и статистические, чертёжные, геодезические и многие другие виды расчётов.
Теперь давайте посмотрим на конкретных примерах, как и когда мы можем организовать циклический процесс.
В языке TurboPascal, как и почти в любом языке программирования, для организации циклических структур данных используется 3 вида циклических операторов – операторы For, While do и Repeat Until. Мы познакомимся с первым из них – оператором For. Циклический оператор For.
Оператор For используется в том случае, когда мы заранее знаем, сколько раз нужно выполнить повторяющееся действие. Например, робот за день может собрать 100 одинаковых частей самолёта, в таком случае мы задаём для него число повторений сборки, равное 100 раз, то есть с 1 до 100. Или нам нужно автоматически обработать книгу, которая содержит 526 страниц, и для каждой страницы заменить её номер с обычного машинного шрифта на рукописный. В этом случае нам нужно поставить количество выполнений цикла с 1 по 526, чтобы охватить все страницы нашей книги.
Давайте посмотрим, как в программировании описываются циклы на примере простой программы. В этой программе нам нужно вывести количество итераций – сколько раз выполнился наш цикл, выводя каждый раз текущий номер итерации. Фрагмент этой программы представлен ниже:
Var i: integer;
Begin
For i:=1 to 5 do
write(i, ‘ ‘);
Readln;
End.
Инструкция цикла выделена здесь жирным курсивом. Как видно из этого фрагмента, сначала нам нужно объявить переменную, которая будет подсчитывать повторения (итерации) в цикле и изменять с каждой итерацией своё значение на 1. Эта переменная называется счётчиком цикла и в программе она обозначена за переменную i. Эта переменная может быть только порядкового типа (например, типа integer), поскольку нам нужно изменять её значение на единицу. После слова For мы указываем, с какого значения и по какое (i:=1 to 5) нужно будет повторять наше действие, которое описано в самом цикле -- write(i, ‘ ‘). Это действие или последовательность действий, если их много, составляет тело цикла.
В нашем случае в результате выполнения написанной выше программы на экран будет выведено следующее:
1 2 3 4 5
Как видим, цикл выполнится 5 раз. При этом в самом начале выполнения нашего цикла переменная i принимает значение 1 и при каждом выполнении цикла это значение повышается на 1 и выводится на экран компьютера. Когда значение становится равным 5 (i=5), цикл выполняется последний раз и программа продолжать работать дальше, выполняя следующие операторы.
Если мы написали заголовок цикла For i:=3 to 5, то цикл выполнился бы 3 раза (5-3+1) при значениях 3, 4 и 5 и на экран бы вывелось следующее:
3 4 5
Также можно организовать цикл в обратную сторону, то есть по убыванию. В этом случае заголовок цикла будет следующим:
For i:=5 down to 1 do
write(i, ‘ ‘);
Получается, что любой цикл состоит из: заголовка цикла, содержащего операторы, инициализирующие параметры цикла – счётчик и его начальное и конечное значения, тела цикла – последовательности операторов, которые должны многократно выполняться конца цикла, которое содержит условие завершения цикла
Обратите внимание, что в любом цикле обязательно должно стоять условие его завершения. Если мы организуем бесконечный цикл, наша программа будет выполняться вечно, так и не приводя ни к каким конечным результатам, поэтому iдолжно быть в конечных пределах, соответствующих максимальному диапазону определённого для него типа. Чем больше мы берём итераций (повторений) тела цикла, тем дольше и медленнее будет работать наша программа. Примеры использования циклической структуры For.
Сначала давайте посмотрим, сколько раз выполнятся следующие циклы: For i:=2 to 2 do For i:=3 to 0 do
В первом случае цикл выполнится 1 раз: сначала iстановится равной 2-м, затем, после выполнения каких-то заложенных в теле цикла действий (тело цикла в фрагменте не показано), переменная iстанет равной 3-м (2+1) и второй раз цикл уже не выполнится. А во втором случае цикл не выполнится ни разу, поэтому такое задание цикла в программе недопустимо.
Теперь посмотрим на более хитрую конструкцию цикла, при которой сам пользователь определяет, сколько раз будет выполнен цикл:
Vari,k: integer;
Begin
writeln(‘Введите количество выполнений цикла’);
Readln(k);
For i:=1 to k do
writeln(‘Цикл выполнился ‘,k,’-ый раз’);
Readln;
End.
Это удобно применять в том случае, если мы хотим обрабатывать какую-то последовательность чисел. При этом пользователь сам определяет, сколько в этой последовательности будет чисел (каков размер последовательности). Вот как выглядит фрагмент программы, в которой находится самое минимальное из чисел последовательности, которую вводит пользователь. При каждом следующем выполнении цикла пользователь вводит новое число и если оно оказывается меньше всех предыдущих, то это число считается текущим минимальным числом. В конце, когда пользователь введёт всю последовательность чисел, программа выводит самое маленькое из них:
program Pr_17_18;
{$APPTYPE CONSOLE}
{Программа находит минимальное число из последовательности, которую
вводит пользователь, а затем выводит это число на монитор}
uses
SysUtils;
Var i, n: integer; //счётчик цикла и размер последовательности --
// количество её элементов
r, rmin: integer; //текущее вводимое число и текущее минимальное число
Begin
Write('Vvedite razmer posledovatelnosti: ');
Readln(n);
Writeln;
Write(‘ Vvedite 1-oe chislo: ‘);
Readln(r);
rmin:=r; //прежде чем работать с переменной, её нужно определить -- проинициализировать. В данном случае мы принимаем самое первое введённое число за минимальное и начинаем с ним сравнивать другие вводимые числа.
Writeln;
For i:=2 tondo // поскольку первое число уже введено, цикл начинаем со
второгочисла
begin
Write('Vvedite ',i,'-oe chislo: ');
Readln(r);
Writeln;
If r<rmin then //если введённое число окажется меньше
//текущего минимального числа
rmin:=r; //то текущее минимальное становится равным этому числу
Write('Tekushee minimalnoe chislo: ',rmin);
Writeln;
Writeln;
end;
Writeln;
Writeln('V itoge minimalnoe chislo poluchilos: ',rmin);
Readln;
End.
Дата добавления: 2014-01-07; Просмотров: 1224; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |