Лекция на тему «ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ В DELPHI» ПОЯСНИТЕЛЬНАЯ ЗАПИСКА Тема «Циклические алгоритмы» для большинства студентов является несложной. Порядок изучения этой темы следующий: краткое изложение теоретического материала, решение задач в среде программирования Delphi 7. Для закрепления материала предложены задачи для самостоятельного выполнения, вопросы для контроля, закрытый тест. В конце лекции приведен список используемой литературы. План 1. Операторы for, while, repeat – until. 2. Процедуры break и continue. 3. Примеры задач. 1. Операторы for, while, repeat – until Оператор for используется для организации цикла с известным числом повторений. Формат оператора: при увеличении значения параметра for <параметр_цикла>:=<начальное_значение> to <конечное_значение> do <тело_цикла>; при уменьшении значения параметра for <параметр_цикла>:=<начальное_значение> downto <конечное_значение> do <тело_цикла>; for (для), to (до), do (выполнять), downto (уменьшать до) – ключевые слова. Параметр цикла не может быть вещественного и строкового типов. Начальное и конечное значения могут быть записаны константами, переменными, выражениями, функциями, совпадающими по типу с параметром цикла. Шаг изменения параметра цикла равен единице. Тело цикла содержит оператор, который может быть простым или составным. 2 Тело цикла for при увеличении значения параметра выполняется для параметр_цикла ≤ конечное_значение. Выход из цикла произойдет при первом значении параметр_цикла > конечное_значение. Например: for i:=1 to 20 do <тело_цикла>; Выход из цикла произойдет при i=21. Тело цикла for при уменьшении значения параметра выполняется для параметр_цикла ≥ конечное_значение. Выход из цикла произойдет при первом значении параметр_цикла < конечное_значение. Например: for i:=20 downto 5 do <тело_цикла>; Выход из цикла произойдет при i=4. Оператор while используется для организации цикла с неизвестным числом повторений. Формат оператора: while <условие> do <тело_цикла>; while (пока) – ключевое слово. Условие есть логическое выражение, принимающее значение true или false. Тело цикла содержит оператор, который может быть простым или составным Цикл while работает следующим образом: вычисляется условие; если оно истинно, то тело цикла выполняется; условие вычисляется снова, и процесс повторяется; если условие ложно, то цикл завершается, и управление передается оператору, стоящему после цикла. Оператор repeat – until используется для организации цикла с неизвестным числом повторений. Формат оператора: repeat <тело_цикла> until <условие>; repeat (повторять), until (до) – ключевые слова. Цикл repeat – until работает следующим образом: выполняется тело цикла; по достижении пункта until вычисляется условие; если условие ложно, то снова выполняется тело цикла, завершаясь новой проверкой условия; если 3 условие истинно, то управление передается оператору, следующему за пунктом until. 2. Процедуры break и continue Процедура break реализует выход из цикла. Ее действие заключается в передаче управления оператору, стоящему за концом цикла. Процедура continue обеспечивает досрочное завершение очередного прохода цикла. Это эквивалент передачи управления в конец цикла. Введение этих процедур практически исключает необходимость использования операторов безусловного перехода goto. 3. Примеры задач Задача 1. Вычислить факториал натурального числа n. Обработчик события Button1Click: 4 Задача 2. Вычислить значение функции y=3x2+x-4 на отрезке [A; B] с шагом 0,5. Обработчик события BitBtn1Click (1-й вариант, цикл while): Обработчик события BitBtn1Click (2-й вариант, цикл repeat – until): 5 Задачи для самостоятельного выполнения. Разработать обработчик события BitBtnClick. 1. Вывести числа от 10 до 20 и их квадраты. 2. В бригаде, работающей на уборке сена, имеется N сенокосилок. Первая сенокосилка работала m часов, а каждая следующая на 10 минут больше, чем предыдущая. Сколько часов проработала вся бригада? 3. Найти все двузначные числа, сумма квадратов цифр которых делится на 13. Вопросы для контроля 1. Формат оператора цикла for с увеличением значения параметра цикла. 2. Формат оператора цикла for с уменьшением значения параметра цикла. 3. В цикле for параметр цикла какого типа не может быть? 4. Чему равен шаг изменения параметра цикла в цикле for? 5. for i:=2 to 15 do тело цикла; При каком значении i произойдет выход из цикла? 6. for i:=10 downto 1 do тело цикла; При каком значении i произойдет выход из цикла? 7. Формат цикла while. 8. При каком значении условия выполняется тело цикла while? 9. При каком значении условия произойдет выход из цикла while? 10.Формат цикла repeat-until. 11.При каком значении условия выполняется тело цикла repeat-until? 12.При каком значении условия произойдет выход из цикла repeat-until? 13.Тело какого цикла с неизвестным числом повторений может не выполниться ни разу? 14.В каком операторе цикла для тела цикла никогда не нужен составной оператор? 6 15.В каких операторах цикла для тела цикла бывает необходим составной оператор? 16.s:=0; x:=2; while x<=10 do begin s:=s+2*x; x:=x+2 end; При каком значении x произойдет выход из цикла? Сколько раз выполнится тело цикла? Чему будет равно значение переменной s после выполнения цикла? 17.p:=1; x:=3; repeat p:=p*x; x:=x+2 until x>9; При каком значении x произойдет выход из цикла? Сколько раз выполнится тело цикла? Чему будет равно значение переменной p после выполнения цикла? ТЕСТ Задание. Выберите к каждому вопросу один правильный ответ. Вопрос 1. Цикл for с увеличением значения параметра цикла имеет формат 1. for i:=m1 do m2 to тело цикла; 2. for i:=m1 downto m2 do тело цикла; 3. for i:=m1 to m2 do тело цикла; 4. for i:=m1 to m2 тело цикла do; Примечание: m1 – начальное значение параметра цикла, m2 – конечное значение параметра цикла 7 Вопрос 2. Цикл for с уменьшением значения параметра цикла имеет формат 1. for i:=m1 do m2 downto тело цикла; 2. for i:=m1 to m2 do тело цикла; 3. for i:=m1 downto m2 тело цикла do; 4. for i:=m1 downto m2 do тело цикла; Примечание: m1 – начальное значение параметра цикла, m2 – конечное значение параметра цикла Вопрос 3. Цикл while имеет формат 1. 2. 3. 4. while условие тело цикла do; while тело цикла условие do; while условие тело цикла; while условие do тело цикла; Вопрос 4. Тело цикла while выполняется при значении условия 1. 2. 3. 4. false true 0 1 Вопрос 5. Выход из цикла while произойдет при значении условия 1. 2. 3. 4. false true 0 1 Вопрос 6. Цикл repeat – until имеет формат 1. 2. 3. 4. repeat условие until тело цикла; repeat тело цикла until условие; repeat условие тело цикла until; repeat тело цикла until условие do; Вопрос 7. Тело цикла repeat – until выполняется при значении условия 1. 2. 3. 4. 0 1 false true 8 Вопрос 8. Выход из цикла repeat – until произойдет при значении условия 1. 2. 3. 4. false 0 1 true Вопрос 9. Может не выполниться ни разу тело цикла с неизвестным числом повторений 1. case 2. repeat – until 3. while 4. for Вопрос 10. Выполнится хотя бы один раз тело цикла с неизвестным числом повторений 1. 2. 3. 4. case repeat – until while for Вопрос 11. Составной оператор никогда не нужен для тела цикла 1. 2. 3. 4. case repeat – until while for Вопрос 12. Составной оператор бывает необходим для тела цикла 1. 2. 3. 4. while for case repeat – until Список литературы 1. Культин Н. Б. Delphi в задачах и примерах. 3-е изд. – СПб.: БХВПетербург. 2012. 2. Немцова Т. И., Голова С. Ю., Абрамова И. В. Программирование на языке высокого уровня. Программирование на языке Object Pascal: Учебное пособие. – М.: Издательский Дом "ФОРУМ"; М.: ООО "Научноиздательский центр ИНФРА-М", 2013.