Скачать 1.46 Mb.
|
Глава 6. Циклические вычислительные процессы Циклические вычислительные процессы характеризуются наличием многократно повторяющихся участков вычислений (циклов). Переменная, изменяющаяся в цикле, называется управляющей переменной. Для программирования циклических задач используются операторы цикла с условием или с параметром. 6.1. Операторы цикла с условием Различают два вида операторов с условием:
Оператор цикла WHILE Общий вид записи: WHILE < логическое выражение > DO < тело цикла>; Тело цикла – единичный оператор, выполняемый в цикле. Работа оператора Тело цикла выполняется, пока логическое выражение, определяющее условие выхода из цикла, имеет значение TRUE. В противном случае оператор цикла WHILE завершает свою работу. В состав логического выражения входит управляющая переменная, которая должна обязательно изменяться в теле цикла. Графическая интерпретация оператора В блок-схемах оператору цикла WHILE соответствует структура ЦИКЛ-ПОКА.
Пример 1. Алгоритм табулирования функции с одной переменной. Вычислить таблицу значений функции: ![]() при ![]() ![]() В данной задаче переменная ![]() Блок-схема
Программа Program TAB_1; Var a, b, x, y: real; Begin writeln(‘Введите исходные данные’); read(a, b); writeln (‘ x y(x)’); x := -0.5; while x <= 2.5 do begin y := ln(abs(x))/(a*a - b*b); writeln(x:8:1, y:8:1) x := x + 0.1; end; End. Оператор цикла REPEAT Общий вид записи: REPEAT <тело цикла>; UNTIL <логическое выражение>; Работа оператора Выполняется тело цикла, после чего вычисляется логическое выражение, определяющее условие выхода из цикла. Если логическое выражение имеет значение FALSE, то повторяется выполнение тела цикла. В противном случае оператор цикла REPEAT завершает свою работу. Управляющая переменная, как и в случае оператора цикла WHILE, должна включаться в состав логического выражения и изменяться в теле цикла. Графическая интерпретация оператора В блок-схемах оператору цикла REPEAT соответствует структура ЦИКЛ-ДО.
Пример 2. Решить предыдущую задачу табулирования функции с использованием оператора цикла REPEAT. Программа Program TAB_2; Var a, b, x, y: real; Begin writeln(‘Введите исходные данные’); read(a, b); writeln(‘ x y(x)’); x := -0.5; repeat y := ln(abs(x))/(a*a - b*b); writeln(x:8:1, y:8:1) x := x + 0.1; until x > 2.5; End.
Основные отличия оператора цикла WHILE от оператора цикла REPEAT.
В операторе REPEAT операторные скобки не ставятся, так как их целиком заменяют служебные слова REPEAT … UNTIL.
В операторе REPEAT логическое выражение записывается после тела цикла. Поэтому тело цикла обязательно выполнится хотя бы один раз. 6.2. Операторы цикла с параметром Различают два вида записи оператора: FOR i := m1 TO m2 DO <тело цикла>; FOR i := m1 DOWNTO m2 DO <тело цикла>; i – параметр цикла целого типа, управляющий работой цикла; m1, m2 – выражения целого типа, определяющие начальное и конечное значения параметра цикла. Тело цикла состоит из одного оператора. В случае выполнения в цикле нескольких операторов надо воспользоваться операторными скобками BEGIN … END. Работа оператора цикла FOR … TO Тело цикла выполняется для каждого значения параметра i, начиная от m1 до конечного значения m2. После каждого шага выполнения цикла значение параметра i автоматически увеличивается на 1. Графическая интерпретация оператора цикла FOR … TO В блок-схемах оператору цикла FOR соответствует структура ЦИКЛ-ПОКА. Замечание 1. Оператор цикла FOR … DOWNTO отличается от оператора FOR … TО лишь тем, что ![]() Правила использования оператора цикла FOR
Замечание 2. Оператор цикла WHILE наиболее универсальный из трех операторов цикла, используемых в Турбо Паскале. Однако конструкция оператора цикла FOR является наиболее простой. Поэтому рекомендуется там, где возможно, использовать оператор FOR. 6.3. Базовые алгоритмы Для реализации циклических вычислительных процессов в большинстве случаев используются следующие базовые алгоритмы:
Ниже приводятся примеры программирования задач на основе базовых алгоритмов. Задача 1. Алгоритм организации счетчика. Дана последовательность: ![]() Определить количество положительных членов последовательности. Решение Представим последовательность в общем виде: ![]() ![]() Для организации счетчика в памяти компьютера выделяется ячейка, содержимое которой увеличивается на 1 каждый раз, когда встречается положительный член последовательности. В программе ячейке (счетчику) соответствует переменная целого типа, например, переменная L. Работа счетчика реализуется с помощью оператора присваивания L:= L + 1;. В начальный момент содержимое ячейки должно быть равно нулю. С этой целью предварительно осуществляется очистка ячейки оператором L:= 0;. Программа Program Z_1; Var a: real; n, L: integer; Begin L := 0; for n := 1 to 50 do begin a := cos(2 n - 1); if a>0 then L := L + 1; end; writeln(‘L=’, L); End. Задача 2. Алгоритм накопления суммы. Дана последовательность: ![]() где ![]() Вычислить сумму членов последовательности, которые по модулю больше 0.3. Решение Общий член последовательности имеет вид: ![]() ![]() Для вычисления суммы в памяти компьютера выделяется ячейка ![]() ![]() ![]() ![]() ![]() Программа Program Z_2; Var a, x, S: real; n: integer; Begin writeln(‘Введите число x’); read (x); S:=0; for n := 1 to 8 do begin a := sin(2 n x); if abs(a) > 0.3 then S := S + a; end; writeln(‘S=’, S:6:2); End. Задача 3. Алгоритм накопления произведения. Дана последовательность: ![]() Вычислить значение: ![]() ![]() Решение Общий член последовательности имеет вид: ![]() ![]() Для реализации алгоритма накопления произведения выделяется ячейка памяти ![]() ![]() ![]() Программа Program Z_3; Var x, y, P, PO: real; Begin PO := 1; x := 0.1; while x<=10 do begin y := cos(x); if y<0 then PO := PO y; x := x + 0.1; end; P := abs(PO); writeln(‘P=’, P:6:2); End. Задача 4. Алгоритм поиска минимального члена последовательности. Дана последовательность: ![]() ![]() Найти минимальный член последовательности. Решение Для реализации алгоритма выделяется ячейка памяти MIN, в которую сначала заносится первый член последовательности. Затем, начиная со второго, производится сравнение вычисленных членов последовательности с содержимым ячейки MIN. Если текущий член последовательности меньше содержимого ячейки MIN, то он переписывается в эту ячейку. В противном случае содержимое ячейки MIN сохраняется. При завершении сравнения всех членов последовательности в ячейке MIN запоминается минимальное значение. Замечание 1. Алгоритм поиска максимального члена последовательности отличается лишь тем, что в ячейке (ей можно дать имя MAX) запоминается больший из сравниваемых членов последовательности. Замечание 2. В начальный момент в ячейку MIN можно занести число, которое было бы достаточно большим и превышало область определения сравниваемых чисел, например: MIN := +1E6; Тогда при сравнении с содержимым ячейки MIN первое число обязательно окажется меньше и переписывается в ячейку MIN. При поиске максимального члена последовательности в ячейку MAX в начальный момент заносится, наоборот, достаточно малое число, которое должно быть меньше всех сравниваемых чисел, например: MAX := -1E6; В этом случае первое из сравниваемых чисел окажется больше содержимого ячейки MAX и переписывается в эту ячейку. Программа Program Z_4; Var a, min: real; k: integer; Begin min := +1E6; for k := 1 to 10 do begin a := exp(k) sin(2k+1)/cos(2k+1); if a end; writeln(‘min=’, min:6:2); End. 6.4. Кратные циклы Тело цикла может содержать любой оператор, в том числе и оператор цикла. Структура цикла, содержащая вложенный цикл, называется кратным циклом Цикл, который содержит вложенный цикл, называется внешним. В двойном цикле вложенный цикл называется внутренним. Переменная внутреннего цикла всегда меняется быстрее, чем внешнего. Это означает, что для каждого значения внешней переменной цикла меняются все значения внутренней переменной. Внешний и внутренний циклы могут использовать любой вид операторов цикла Турбо Паскаля (WHILE, REPEAT, FOR). Пример. Алгоритм табулирования функции с двумя переменными. Вычислить значение функции: ![]() при x, изменяющемся на интервале [-1, 1] с шагом ![]() ![]() ![]() При организации двойного цикла примем: x - внешняя переменная цикла; y - внутренняя переменная цикла. Тогда вид таблицы на экране будет следующим:
Программа Program TAB_2; Var x, y, z: real; Begin writeln(‘ x y z(x,y)’); ![]() while x<=1 do begin y := 0; while y<=1 do begin ![]() writeln(x:6:1, y:6:1, z:6:1); ![]() end; x := x + 0.2; end; End. 0> |
![]() | Учебное пособие новосибирск 2011 удк 338. 23: 658. 1(075. 8) Цевелев В. В Цевелев В. В. Управление инвестициями. Учеб пособие. — Новосибирск: сгупс, 2011. — 104 с | ![]() | Учебное пособие предназначено в помощь социальным педагогам, социальным работникам и другим специалистам. Цена 850 тг. Арт. 201 Сарсенова Ж. Н. Культурология. Учебное пособие. Алматы: Нур-Принт, 2010 300 с. Учебное пособие «Культурология» Учебное пособие «Культурология» предназначено для использования в обучении по кредитной технологии. В конце каждой главы учебного... |
![]() | Учебное пособие для магистрантов и студентов гуманитарных специальностей Павлодар Учебное пособие предназначено для студентов и магистрантов, обучающихся по специальности «Культурология». Написанное на конкретном... | ![]() | Книга представляет собой антологию тематически сгруппированных философских текстов извлечений из трудов мыслителей разных эпох, включая и современность. Пособие Хрестоматия по философии: Учебное пособие / Отв ред и сост. А. А. Радугин. – Москва: Центр, 2001.– 416с |
![]() | Учебное пособие Тамбов 2002 г. Авторы составители: Кузьмина Н. В, Инькова Н. А., Зайцева Е. А., Толстых С. Г. Основы работы в Интернет: Учебное пособие. Ч тамбов: Изд-во тгту, 2002. с. 40 Учебное пособие «Создание Web-сайтов» предназначено для слушателей курсов повышения квалификации на базе Тамбовского рц фио по программе... | ![]() | Учебное пособие для студентов специальности А86 Арын Р. С., И79 Иренов Г. Н. Этнополитология: учебное пособие. ─ Павлодар: эко, 2008. – 215 с |
![]() | Учебное пособие по английскому языку Для студентов юридического факультета Юридические профессии в Великобритании: Учебное пособие на английском языке. – М.: Импэ им. А. С. Грибоедова, 2008. – 16 с | ![]() | Учебное пособие «Основы работы в Excel», 2003 Учебное пособие предназначено для студентов имтп, а также может быть использовано при самостоятельном освоении современного программного... |
![]() | Учебное пособие Для студентов экономического факультета Москва К66 Антикризисное управление: Учеб пос.: Ч. II. М.: Импэ им. А. С. Грибоедова, 2001. 71 с | ![]() | Учебное пособие омск 2008 федеральное агентство по образованию государственное образовательное учреждение высшего профессионального образования Учебное пособие предназначено для студентов и аспирантов высших учебных заведений, специализирующихся в области физики конденсированного... |