Циклические вычислительные процессы
⇐ ПредыдущаяСтр 4 из 4 Цикл – это многократное повторение определённой последовательности действий. В алгоритмическую структуру «цикл» входят операторы, выполняемые многократно. Такая последовательность команд образует тело цикла. Циклические алгоритмические структуры бывают двух типов: 1) циклы с параметром, в которых тело цикла выполняется определенное (заранее известное) количество раз; 2) циклы с условием, в которых тело цикла выполняется, пока условие истинно или ложно. Цикл с параметром Цикл с параметром используется, когда заранее известно, какое число повторений тела цикла необходимо выполнить (рисунок 6).
Рисунок 6 – Цикл с параметром
В начале выполнения цикла значение переменной i устанавливается равным in. При каждом проходе цикла переменная i увеличивается на величину шага. Когда она достигает величины, большей Ik, то цикл завершается, и выполняются следующие за ним операторы. В Паскале цикл с заданным числом повторений реализуется с помощью оператора FOR. Общий вид оператора FOR FOR i:= In TO Ik do <тело цикла>; или FOR i:= In TO Ik do begin <тело цикла> end; где FOR (для),TO (до), do (выполнить) – служебные слова, i – управляющая переменная цикла (параметр цикла), которая должна быть перечисляемого типа (целая, символьная и т.д.) Чаще всего параметр цикла используют как переменную целочисленного типа, шаг ее равен +1 (или - 1). Параметр цикла не может быть вещественного типа; In, Ik – выражения, тип которых соответствует типу управляющей переменной i, In – начальное значение управляющей переменной цикла, Ik – конечное значение управляющей переменной цикла, тело цикла – простой или составной оператор Турбо Паскаля. Работа оператора FOR
1. Параметру цикла присваивается начальное значение; 2. Начальное значение сравнивается с конечным значением, и, если оно не больше конечного значения, выполняется тело цикла; 3. Параметр цикла изменяет свое значение – увеличивается на шаг (единицу, если параметр цикла имеет целый тип); 4. Циклическая часть выполняется повторно для каждого значения параметра цикла от его начального значения In до конечного значения Ik включительно; 5. Когда параметр цикла превысит конечное значение, оператор FOR прекращает работу и передает управление следующему оператору. Параметр цикла i не должен переопределяться внутри циклической части. Если шаг изменения параметра цикла равен +1, а In>Ik, то циклическая часть не выполнится ни разу. Пример 3. Пусть имеется фрагмент программы с переменными целого типа: FOR I:= 1 to 5 do begin A:=2*I; B:= 2*I+1; writeln (A:3, B:3); end; Циклическая часть программы выполняется повторно пять раз, при этом параметр цикла I изменяет свое значение от 1 до 5. В результате выполнения программы переменные получают следующие значения:
При программировании может быть использована другая форма оператора цикла, в которой происходит уменьшение значения управляющей переменной: FOR i:=In downto Ik do <тело цикла>; или FOR i:=In downto Ik do begin <тело цикла>; end; Пример 4. Пусть имеется фрагмент программы с переменными целого типа: FOR I:=5 downto 1 do begin A:=2*I; B:=2*I+1; witeln (A:3, B:3); end; В процессе выполнения данного фрагмента программы переменные принимают следующие значения: Пример 5. Напечатать все буквы латинского алфавита в обратном порядке. Алгоритм решения в виде блок-схемы представлен на рисунке 7.
Рисунок 7 – Алгоритм решения задачи
Программа на языке Паскаль выглядит следующим образом: Program Р; Var i: CHAR; Begin FOR i:=’Z’ downto ‘A’ do Write (‘ ’,I); End;
ВАРИАНТЫ ЗАДАЧ 1 Дано натуральное число N. Вычислить:
2 Дано натуральное число N. Вычислить: 3 Дано натуральное число N. Вычислить произведение первых N сомножителей 4 Дано натуральное число N. Вычислить: 5 Дано натуральное число n. Вычислить: 6 Дано натуральное число n. Вычислить: где n>2. 7 Дано натуральное число n. Вычислить: (n>1). 8 Дано натуральное число n. Вычислить: 9 Вычислить: 10 Дано натуральное число n. Вычислить: Циклы с условием В Паскале циклы с неизвестным заранее числом повторений (итерационные циклы) организованы с помощью операторов While и repeat. Эти операторы, в отличие от оператора FOR, имеют более широкую область применения. Циклы с предусловием Цикл с предусловием реализуется в Паскале посредством оператора While. Заголовок оператора While (в переводе «пока») не содержит явных указаний на количество итераций – он содержит логическое выражение, значение которого автоматически вычисляется перед началом выполнения каждой очередной итерации (рисунок 8). Пока логическое выражение «истинно», итерации цикла будут продолжаться; как только после завершения очередной итерации логическое выражение станет «ложным», следующая итерация цикла выполнена не будет, и управление получит оператор программы, следующий после оператора While. Очевидно, что если в заголовок цикла поместить тождественно ложное логическое выражение, этот цикл не выполнит ни одной своей итерации, а если это выражение тождественно истинно, цикл будет бесконечным (последнюю ситуацию называют зацикливанием программы). Для того, чтобы избежать подобных ситуаций, в число операндов логического выражения должны быть включены одна или более переменных, изменяющих свои значения в теле цикла таким образом, чтобы цикл был конечным.
Рисунок 8 – Цикл с предусловием
Паскаль работает с оператором WHILE следующей структуры: while (x) do <тело цикла>; или while (x) do begin <тело цикла>; end; где while (пока), do (выполнить) – служебные слова, х – логическое выражение, задающее условие продолжения работы; <тело цикла> – операторы Турбо Паскаля; Тело цикла выполняется до тех пор, пока логическое выражение х истинно, в противном случае происходит выход из цикла. Переменные оператора цикла должны быть определены до входа в циклическую часть. Необходимо предусмотреть выход из цикла. Если этого не предусмотреть, например, логическое выражение х – всегда истина, циклические вычисления будут выполнятся бесконечно. В этом случае говорят, что произошло «зацикливание» выполнения программы.
Работа оператора WHILE 1 Проверяется значение логического выражения х. 2 Пока значение х равно истина, выполняется циклическая часть. 3 Если с самого начала значение х ложно, то операторы циклической части не выполнятся ни разу. Пример 6. Найти, сколько слагаемых необходимо, чтобы сумма 2+4+6+… оказалась больше целого положительного числа N. Решение. Введем следующие обозначения: S – текущее значение суммы; Sl – значение очередного слагаемого; K – количество слагаемых в сумме. Алгоритм решения в виде блок-схемы представлен на рисунке 9. Программа рассмотрена ниже. Program Pr5; Var N,K, S,Sl: integer; Begin Write (‘Укажите положительное число’); Readln(N); S:=0; Sl:=0; K:=0; While S<=N do Begin Sl:=Sl+2; S:=S+Sl; K:=K+1; End; Writeln (‘K=’, K); End.
Рисунок 9 – Алгоритм решения задачи примера 6 Пример 7. Даны числа x, e. Вычислить sin x = x с точностью до e. Для обеспечения требуемой точности e. необходимо в вычисляемую сумму знакочередующегося ряда включить только те слагаемые Un, которые удовлетворяют условию . Для вычисления очередного члена ряда Un полезно воспользоваться рекуррентной формулой U 1= x;
Алгоритм решения в виде блок-схемы представлен на рисунке 10.
Программа на языке Паскаль: Program P; Var x, e, S, U: real; N: integer; Begin Write (‘введите значение х ’); Readln(х); Write (‘введите точность’); Readln(e); S:=0; U:= x; N:=1; While abs(U)>= e do Begin S:=S+ U; U:= - U *SQR(х)/((2*N+1)*2*N); N:=N+1; End; Writeln (‘sin(x)=’, S:8:4); End.
Рисунок 10 – Алгоритм решения задачи примера 7
Циклы с постусловием
Условие выхода из цикла можно поставить после тела цикла. Такой цикл называется циклом с постусловием (рисунок 11). Цикл выполняется, пока логическое выражение имеет значение ложь. Как только логическое выражение принимает значение истина, выполнение цикла заканчивается.
Цикл с постусловием выполняется как минимум один раз.
Рисунок 11 – Циклы с постусловием
Цикл с постусловием в Паскале реализован с помощью операторов Repeat… until, который имеет вид: repeat <тело цикла> until<x>; где repeat (повторять) и until(до тех пор) – служебные слова, <тело цикла> – любые операторы Турбо Паскаля, х – логическое выражение, задающее условие окончания цикла. Работа оператора repeat … until 1 Выполняется тело цикла 2 Проверяется логическое выражение. Если его значение равно истина, то оператор repeat свою работу прекращает и передает управление следующему за ним оператору. В противном случае, если логическое выражение ложно, выполняется тело цикла. Пример 7 с использованием оператора repeat выглядит следующим образом (рисунок 12): Программа на языке Паскаль: Program P1; Var x, е, S, U: real; N: integer; Begin Write (‘введите значение х ’); Readln(х); Write (‘введите точность’); Readln(е); S:=0; U:= x; N:=1; Repeat S:=S+ U; U:= - U *SQR(х)/((2*N+1)*2*N); N:=N+1; until abs(U)<= е; Writeln (‘sin(x)=’, S:8:4); End.
Рисунок 12 – Алгоритм решения задачи примера 7 с применением оператора REPEAT Отличительные особенности операторов цикла с неизвестным числом повторений repeat и while 1 Оператор while работает, когда значение логического выражения – истина, repeat – когда ложь. 2 В операторе repeat тело цикла выполняется хотя бы один раз, даже если значение логического выражения истина; в операторе while, если значение логического выражения ложь, то тело цикла не выполнится ни разу. Таким образом, для организации циклического вычислительного процесса в языке Турбо Паскаль имеется три оператора: · for – для организации циклов с заданным числом повторений; · while, repeat – для организации циклических структур с неизвестным числом повторений. ВАРИАНТЫ ЗАДАЧИ 1
Решить с помощью цикла с предусловием. Составить программу вычисления значений функции F(x) на отрезке [a; b] с шагом h. Результат представить в виде таблицы, первый столбец которой – значение аргумента, второй – соответствующее значение функции. Исходные данные представлены в таблице 5.
Таблица 5 – Исходные данные
ВАРИАНТЫ ЗАДАЧИ 2
Решить с помощью цикла с постусловием. Найти наименьший номер последовательности, для которого выполняется условие . Вывести на экран этот номер и все элементы , где i=1,2,…, n, если ɛ=10-3. 1 , a 1=0. 2 , a 1=2. 3 , a 1=0,5. 4 . 5 , a 1=0,5. 6 , a 1=2.
7 , a 1=1, а2 =2. 8 . 9 , a 1=0. 10 , a 1=x.
Содержание
Котликова Вера Яковлевна
ВВЕДЕНИЕ В ТУРБО ПАСКАЛЬ
Методические указания к выполнению лабораторных работ по дисциплинам «Информатика», «Информационные технологии» для студентов очной и заочной формы обучения направлений 23.03.03, 23.03.01, 13.03.02, 23.05.01, 23.05.02, 15.03.04, 15.03.05, 27.03.04, 20.03.01, 27.03.01, 15.03.01
Редактор Н.М. Быкова
Подписано в печать Формат 60*84 1/16 Бумага 65 г/м2 Печать цифровая Усл. печ. л. Уч.–изд. л. Заказ Тираж 25 Не для продажи
РИЦ Курганского государственного университета. 640000, г. Курган, ул. Советская, 63/4. Курганский государственный университет.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|