Если задан фрагмент алгоритма с использованием цикла с предусловием

2. Цикл с предусловием
Цикл с параметром был уже рассмотрен нами в разделе “Алгоритм” в теме “Виды алгоритмов”.
Цикл с предусловием используется, когда заранее неизвестно сколько раз должен выполниться цикл.
Формат записи цикла:
While (логическое выражение) do оператор
В цикле с предусловием сначала проверяется логическое выражение, затем, в зависимости от того, истинно оно или ложно, либо выполняется тело цикла, либо следует переход к оператору, следующему за телом цикла. После завершения тела цикла управление вновь передается на проверку условия. В теле цикла должно быть обеспечено изменение значения счетчика, чтобы он мог завершиться, в противном случае произойдет зацикливание и программа “зависнет”.
Если значение логического выражения с самого начала ложно, то цикл не выполняется ни разу.
После служебного слова do записывается только 1 оператор.
Если тело цикла состоит более чем из одного оператора, оно заключается в операторные скобки begin … end;
Формат записи цикла:
While (логическое выражение) do
begin
……….
операторы
end
Пример 1:
Вывести на экран первые 5 натуральных чисел.
Блок-схема задачи: | Программный код: Program primer1; var i: integer; begin i:=1; while i<=5 do begin writeln(i); i:=i+1; end; readln; end. |
Пример 2:
Составить программу вычисления факториала числа n, т. е. n!. (0! = 1)
Блок-схема задачи: | Программный код: Program Problem1; {Вычисление факториала числа n! } var n, f, i: integer; begin write(“Введите натуральное число “); readln(n); f := 1; i:=1; if n <> 0 then while i<n do begin f:=f*i; i:=i+1; end writeln (“Факториал числа “, n, ” равен “, f); readln; end. |
Задачи
- Даны 10 чисел, найти их произведение.
- Даны 10 чисел, найти сумму четных.
- Даны 10 чисел, найти разность отрицательных. Даны 10 чисел, найти произведение отрицательных и разность положительных.
- Даны 10 чисел, найти количество отрицательных.
- Даны n действительных чисел. Найти максимум и минимум.
- Даны n действительных чисел. Найти среднее арифметическое всех элементов.
- Даны n действительных чисел. Найти среднее арифметическое отрицательных и положительных элементов.
- Даны n натуральных чисел. Найти сумму и произведение элементов, кратных 3 и 5.
- Даны n натуральных чисел. Вывести те числа, значения которых являются степенями двойки (1, 2, 4, 8, 16, …).
- Даны n натуральных чисел. Вывести те числа, значения которых находятся в отрезке [a, b]
- Дано натуральное число n. Вывести квадраты чисел от 1 до n.
- Даны натуральные числа a, n. Найти an
- Дано натуральное число n. Вычислить произведение (2n-1)(3n-1)(4n-1)…(10n-1).
- Вычислить сумму 2+4+6+…+100.
- Дано натуральное число n, действительное x. Вычислить произведение x+x/2+x/3+…+x/n.
- Дано натуральное число n. Вычислить P=(1-1/2)(1-1/3)…(1-1/n), где n>2.
- Дано натуральное число n. Вычислить P=(1+x)/n+(2+x)/(n-1)+…+(n+x)/1
- Дано натуральное число n. Вычислить S=1+x/1!+x2/2!+x3/3!+ …+xn/n!
- Составить блок-схему (программу), в которой запрашивается пароль (четырехзначное число) до тех пор, пока он не будет правильно введен
- Найти сумму вводимых элементов до первого введеного отрицательного. Вывести сумму.
- Составить блок-схему (программу) нахождения наибольшего общего делителя (НОД) двух натуральных чисел.
- Составить таблицу значений функции у = sin х на отрезке [0;3.14] с шагом 0,1.
- Составить таблицу значений функции у = cos х на отрезке [0;3.14] с шагом 0,1.
Задания повышенной сложности
- Дано натуральное число n. Цифры числа, кратные 2 заменить на 0.
- Дано натуральное число n. Цифры числа, кратные 3 заменить на 1.
- Дано натуральное число n. Отобразить зеркально цифры числа. (например 12345 -> 54321)
- Дано натуральное число n. Отобразить зеркально цифры числа относительно середины числа. (например 12345 -> 45312, 1234 -> 3412)
Источник
Вчера мы узнали о понятии циклы в паскале в общих чертах, сегодня узнаем о каждом из циклов в паскале поподробней и увидим как они задаются. Будем разбирать цикл while с предусловием, цикл for с параметром и цикл repeat – until с постусловием.
1. Цикл с параметром в Паскале – FOR
Цикл FOR задаёт определённое условие по которому программа будет работать до его выполнения, допустим нужно нам 5 (или n) раз зациклить программу, то это легко сделать с помощью данного цикла. У цикла FOR есть характерная черта – счетчик который обычно обозначается буквой i или j.
Внешний вид цикла с параметром в паскале:
for i:= 1 to n do // присваиваем i сначала одному, потом двум, трем, …, n
После 1-го прохода переменной i присваиваем 1, после второго присваиваем 2 и так до тех пор, пока не дойдем до n. to – это до .. в порядке возрастания, также есть downto – до .. в порядке убывания.
Блок – схема цикла с параметром:
2. Цикл с предусловием в Паскале – WHILE
Оператор цикла с предусловием выполняет действия заранее неизвестное число раз. Выход из цикла осуществляется, если некоторое логическое выражение или его результат окажется ложным. Так как верность логического выражения проверяется в начале, тело цикла может не выполнится ни одного разу.
Структура цикла с предусловием: WHILE DO begin end;
– логическое выражение, истинность которого проверяется вначале выполнения циклического оператора;
– любые выполняемые операторы языка.
Порядок выполнения цикла:
Пока условие истинно выполняется тело цикла. Как только условие становится ложно выполнение цикла прекращается.
Блок – схема цикла с предусловием:
Примечание: в прямоугольных блоках показано любое действие, которое выполняется в цикле или после него (шаг цикла), в овалах – начало или конец всей программы или её части. Главную роль в данной блок – схеме играет её центральная часть.
Пример:
Задача: вычислить сумму ряда 1+1.5+2+2.5+3+3.5+ .. + 30
program example-while;
var sum:real; n:real; BEGIN sum:=0; n:=1; while n
3. Цикл с постусловием – Repeat – until.
Этот оператор аналогичен оператору цикла с предусловием, но отличается от него тем, что проверка условия производится после выполнения тела (действий) цикла. Это обеспечивает его выполнение хотя бы один раз в отличие от ранее разобранных циклов.
Обратите внимание на то, что данный оператор цикла предполагает наличие нескольких операторов в теле цикла, то есть можно выполнять несколько действий, поэтому служебные слова Begin и End не нужны.
Последовательность операторов, входящих в тело цикла выполняется один раз, после чего проверяется соблюдение условия, записанного следом за служебным словом Until. Если условие не соблюдается, цикл завершается. В противном случае – тело цикла повторяется ещё раз, после чего снова проверяется соблюдение условия.
Блок – схема цикла с постусловием:
Формат записи, структура цикла: REPEAT UNTIL ; Program test2; Var b:Real; Begin b:=100; Repeat b:=b/2; Until b
Выводы:
1.Цикл с параметром используется переменная, называемая параметром цикла или счётчиком. Перед выполнением цикла параметру (счётчику) устанавливается начальное значение. После выполнения шага цикла значение параметра увеличивается на единицу. Цикл продолжается до тех пор пока параметр не достигнет своего конечного значения, которое указывается после to (downto).
2. Цикл с предусловием выполняется до тех пор, пока условие выполнения не станет ложным, и продолжается, если условие истинно.
3. Цикл с постусловием выполняется до тех пор, пока условие не станет истинно, если условие ложно, цикл продолжается.
Предыдущий урок
Дата: 2012-01-06 19:31:43 Просмотров: 286340
Теги: Паскаль Pascal циклы уроки
Источник
На занятии изучается алгоритм работы с циклом с предусловием While в Паскале, рассмотривается пример возведения в степень
While в Паскале – цикл с предусловием
Пример: Определить количество цифр в введенном целом числе, не превышающем 2000000.
Алгоритм: Отделяем и удаляем последовательно последнюю цифру, наращивая счетчик.
n | счетчик |
246 | |
24 | 1 |
2 | 2 |
3 |
В чем сложность?: Заранее не определено и неизвестно, сколько цифр нужно убрать, т.е. сколько шагов необходимо сделать.
Как выполнить: Надо перестать отделять цифры, когда n = 0, т.е. надо выполнять пока n > 0
Блок-схема решения:
Блок-схема решения
Решение примера на Паскале:
Цикл while в Паскале применяется для создания повторений с неизвестным заранее их числом. Повторения (итерации) будут осуществляться, пока истинно некоторое условие.
Блок-схема, соответствующая циклу while в Паскале:
while условие do {Пока условие истинно выполняется оператор} оператор;
- Здесь оператор, стоящий после служебного слова do, образует тело цикла и будет выполняться, пока значение “условия” равно true (истина).
- Если операторов должно быть несколько, тогда необходимо применять составной оператор.
- Условие пересчитывается каждый раз при входе в цикл.
- Непосредственно условием цикла while может быть переменная или логическое выражение.
- Операторы тела цикла while выполнятся только в том случае, если условие будет истинно, если условие ложно – они игнорируются, и программа продолжается с тех операторов, которые стоят уже после конструкции. Таким образом, это существенное отличие цикла с предусловием от цикла с постусловием.
Рассмотрим использование цикла while в Паскале на решенном примере:
Пример: Печатать «ноль» указанное количество раз
Показать решение:
1 2 3 4 5 6 7 8 9 10 | var i,n:integer; begin write (‘kolichestvo znakov’); readln(n); i:=1; while i<=n do begin {составной оператор} write(0); i:=i+1 end; end. |
Задача 3. Ввести целое число и найти сумму его цифр.
Пример:
Введите целое число: 1234 Сумма цифр числа 1234 равна 10.
- Можно использовать сложные условия:
Задача 4. Вычислять с использованием цикла while квадратные корни из чисел 900, 893, 886, 879 и т.д. до тех пор, пока это можно делать.
Детальный разбор работы цикла While в Паскале рассмотрен в видеоуроке:
Пример: найти сумму всех элементов последовательности:
которые по модулю больше 0,001:
Алгоритм:
Блок-схема решения:
Блок-схема решения
Решение на Паскале:
Решение на Паскале
Задача 5: Вычислить сумму элементов следующей последовательности с точностью 0,001:
Результат: S = 1.157
Вложенные циклы в Паскале
Существует возможность использования вложенных циклов в Паскале, когда в теле одного цикла вместо оператора стоит другой цикл.
Важно: Главным обстоятельством во вложенных циклах является использование разных переменных для счетчиков внутреннего и внешнего циклов
Рассмотрим пример:
Пример: Вывести таблицу умножения, используя вложенные циклы в паскале.
Показать решение:
1 2 3 4 5 6 7 8 9 10 const n = 9; {размер таблицы} var i, j :integer; begin for i:=1 to n do {номера строк} begin for j:=1 to n do {номера столбцов} write(i*j:4); writeln; {переход на новую строку} end; end. Произведение в Паскале
Точно также, как существует сумматор для сложения, для умножения в паскале тоже существует специальная конструкция:
Произведение вычисляется по рекуррентному выражению:
P=P*Y,
где P – промежуточные произведения
Y – сомножители
Рассмотрим пример вычисления факториала числа в Паскале с использованием цикла while.
Пример цикла While в Паскале для вычисления факториала 10! (10!=1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10)
1 2 3 4 5 6 7 8 9 10 11 12 var fact, n : integer; begin fact := 1; {начальное значение факториала =0! } n := 1; {начальное значение для условия } while n<=10 do {условие } begin {начало тела конструкции с составным оператором } fact := fact*n; {вычисление факториала n! } n := n + 1 {n должно меняться в теле конструкции} end; {конец тела цикла } writeln(’10!= ‘,fact); {вывод результата расчета } end. Здесь необходимо обратить внимание на то, что присваивание n := 1 стоит до цикла, если этого не сделать, то условие будет работать некорректно, так как переменная n будет пуста.
Программа возведения в степень числа в Паскале
Для начала уточним, что есть формула вычисления степени на Паскале. Но мы не будем ее использовать, а разберем алгоритм решения задачи возведения в степень.
Для того чтобы возвести число в степень, его надо умножить само на себя ровно столько раз, чему равен показатель степени.
Таким образом, возведение числа n в степень d можно выразить так:
nd = n1 * n2 * n3 * … * nd, где нижние индексы просто указывают очередное по счету число n.
Еще необходимо учесть следующее:
- число в нулевой степени равняется 1
- если показатель степени отрицателен, т.е. d , то задача решается по формуле:
nd = 1 / (n1 * n2 * n3 * … * nd)
Т.е., решая программу на Паскале, учитываем:
- в программе на языке Паскаль количество итераций (повторений) цикла while должно быть равно показателю степени числа по модулю;
- если показатель степени – отрицательное число, то нужно впоследствии единицу разделить на результат.
Задача 6. Вычислить в Паскале степень числа, используя цикл while.
Задача 7. Дана последовательность вещественных чисел, признак завершения которой – число 0 (оно не считается элементом последовательности). Найти сумму всех положительных элементов этой последовательности.
Пример результата:
Введите член последовательности 4 Введите член последовательности -1 Введите член последовательности 5 Введите член последовательности 7 Введите член последовательности 0 Сумма положительных чисел = 16
Источник
Синдеева Ю. И. 9 класс АЛГОРИТМИЗАЦИЯ
Цели урока:
определить роль и масштабность циклических алгоритмов в повседневной жизни;
показать необходимость автоматизации циклических алгоритмов;
сформулировать определения цикла и циклического алгоритма и необходимость их использования для компактности и понятности записи алгоритма;
рассмотреть структуру цикла с предисловием, его работу и блок-схему;
научить составлять циклические алгоритмы и исполнять их формально;
научить анализировать фрагменты, содержащие циклы.
Задачи урока:
Воспитательная
-развитие познавательного интереса к теме;
– формирование коммуникативных качеств: обсуждение ситуаций, умение слушать, высказывать свои суждения и аргументировать их.
Образовательная
-дать представление о циклических алгоритмах;
– научить составлять циклические алгоритмы и исполнять их формально;
– научить анализировать фрагменты, содержащие циклы;
– научить составлять блок-схемы к алгоритмам, содержащим цикл с предусловием и по блок-схеме «читать» алгоритм.
Развивающая
– развивать мышление, память, кругозор, умение анализировать ситуации;
– формирование у учащихся умения вести полемику, аргументировать свою точку зрения.
Форма урока: лекция
План урока.
Организационный момент.
Объяснение нового материала.
Закрепление нового материала в ходе решения задач.
Рефлексия.
Домашнее задание.
Организационный момент (проверка готовности к уроку, отсутствующих)
Объяснение нового материала.
В течение дня, недели, месяца …нам приходиться выполнять однообразные действия, причем многократно. Так, изо дня в день мы совершаем алгоритм, который условно можно назвать «Моя рабочая неделя». Действительно, каждый день (за исключением выходных), мы после пробуждения совершаем утренние процедуры, завтракаем, идем в школу (на работу), приходим из неё, обедаем, отдыхаем, делаем уроки, гуляем, ужинаем, ложимся спать…И так все 5 дней, каждую неделю, за исключением каникул!
Мы циклически повторяем одни и те же действия каждый день. И если делать это без отдыха или перерыва, то можно сойти с ума, или, говорят компьютерным языком «зациклиться»!
Очень многие алгоритмы, выполнение которых поручается компьютеру, по своей природе являются циклическими. И это не случайно, потому что человек обычно поручает машине рутинную работу, где нужно много считать (и счет производится по некоторым одинаковым правилам) или эта работа однообразна (штамповка изделий, конвейерный метод и т.д).
Определение.
Цикл – это последовательность операторов, которая может выполняться более одного раза.
Определение.
Циклический алгоритм – это алгоритм, содержащий один или несколько циклов.
Существуют удобные конструкции для организации циклов:
цикл с предусловием;
цикл с постусловием;
цикл со счетчиком (или параметром).
Познакомимся с первым из них – оператором цикла с предусловием ПОКА.
Циклы с предусловием используются тогда, когда выполнение цикла связано с некоторым логическим условием. Оператор цикла с предусловием имеет две части: условие выполнения цикла и тело цикла.
Общая форма записи следующая:
ПОКА <условие>
НЦ
Серия команд (тело цикла)
КЦ
При выполнении оператора ПОКА определенная группа команд выполняется до тех пор, пока определенное в операторе ПОКА булево условие истинно. Если условие сразу ложно, то группа операторов не выполнится ни разу.
Циклом удобно пользоваться тогда, когда одинаковые действия повторяются некоторое число раз.
Вспомним, как Том Сойер красил забор. Тетушка Поли тогда сказала Тому: «Крась до тех пор, пока забор не кончится». Тем самым она определили ему условие. В чем же состояли действия Тома?
– Он подошел к правому краю забора,
– окунул кисть в ведро с краской,
– покрасил доску, повторяются
– передвинулся вправо,
– окунул кисть в ведро с краской,
– покрасил доску,
– передвинулся вправо, … и т.д.
Мы видим, что три действия повторяются многократно, и если бы мы записывали этот алгоритм линейно, то он был бы слишком громоздким (количество досок в заборе не малое!)
Поэтому целесообразно оформить этот алгоритм с использованием цикла с предусловием.
АЛГ покраска забора
НАЧ
Подойти к правому краю забора
ПОКА забор не окончен
НЦ
окунул кисть в ведро с краской,
покрасил доску,
передвинулся вправо
КЦ
Пойти гулять
КОН.
Заметим, что условие могло быть и другим. Например,
ПОКА не позовут обедать
ПОКА не кончится краска
ПОКА не устанешь и т.д.
Рассмотрим формальное исполнение этого алгоритма. Пусть для простоты в заборе 3 доски.
НАЧ
Подойти к правому краю забора
ПОКА забор не окончен (да, мы только к нему подошли)
НЦ
окунул кисть в ведро с краской,
покрасил доску,
передвинулся вправо (действия выполнились первый раз)
КЦ
Далее исполнитель идет в проверку условия.
ПОКА забор не окончен (да, покрашена только 1 доска)
Значит, снова будет выполняться тело цикла, т.е. последовательность из трех повторяющихся команд.
НЦ
окунул кисть в ведро с краской,
покрасил доску,
передвинулся вправо (действия выполнились второй раз)
КЦ
Далее исполнитель снова идет в проверку условия.
ПОКА забор не окончен (да, покрашено только 2 доски)
Значит, снова будет выполняться тело цикла, т.е. последовательность из трех повторяющихся команд.
НЦ
окунул кисть в ведро с краской,
покрасил доску,
передвинулся вправо (действия выполнились третий раз)
КЦ
Далее исполнитель снова идет в проверку условия.
ПОКА забор не окончен (нет, он окончен, и мы покрасили все три доски, т.е. условие не выполняется).
Если условие уже не выполняется, то исполнитель уходит за цикл и выполняет команды за циклом.
В частности, это команда
«Пойти гулять».
На этом выполнение алгоритма закончено.
Заметим, что действие за циклом выполняется всего один раз.
Этих действий могло быть несколько, например,
«Отнести ведро в сарай»
«Помыть руки»
«Пойти обедать»…, но, тем не менее, они выполнятся однократно, т.к. находятся за циклом.
Составим блок-схему для этого алгоритма.
Подойти к правому
краю забора
Вопросы: В какой ещё алгоритмической структуре встречается условие? Чем действия этой структуры отличаются от работы цикла с предусловием?
Рассмотрим несколько примеров.
Вы пошли в школьный буфет купить булочку. По дороге Вам встретился Злоумышленник и предложил воспользоваться таким алгоритмом для покупки булочки:
АЛГ булочка
НАЧ
ПОКА не исчезло чувство голода
НЦ
купить булочку
КЦ
Съесть булочку
КОН
Вопросы: Удастся ли Вам полакомиться булочкой? Что нужно изменить в алгоритме?
2) Вам задали решить на завтра 10 задач по физике. Идя домой, Вы встретили Злоумышленника и он опять-таки предложил Вам свой алгоритм:
АЛГ задачки
НАЧ
ПОКА не решены все задачи
НЦ
Решить одну
Пойти гулять
КЦ
КОН.
Вопрос: На завтра Вы получили «2». Почему? Что надо исправить в предложенном алгоритме?
ВЫВОД: месторасположение команды (в цикле или за ним) имеет большое значение и влияет на результат алгоритма.
А теперь рассмотрим не словесные задачи, а математические.
III. Закрепление нового материала в ходе решения задач.
Задача 1. Вычислить сумму однозначных чисел.
Заметим, что такую задачу мы взяли для простоты формального исполнения. Аналогичным образом решаются задачи на нахождение суммы любого ряда чисел.
ОБСУЖДЕНИЕ.
1. Какие числа нам придется складывать? (1, 2, …9)
2. Какие переменные для этого нам понадобятся? (N- для записи всех чисел и S- для их суммы)
3. Какого типа эти переменные? (натуральные, но в дальнейшем выясниться, что их тип целый)
4. Сколько раз мы должны будем складывать числа между собой? (Девять)
5. Если мы будем проделывать одно и то же действие девять раз, то какой структурой целесообразно воспользоваться? (Циклом)
АЛГ сумма однозначных чисел
АРГ N: цел
РЕЗ S: цел
НАЧ
S:=0 {обнуление ячейки S}
N:=0 {первое однозначное число}
ПОКА N<10
НЦ
N:=N=+1 {формула перехода к следующему элементу}
S:=S+N {формула суммирования}
КЦ
КОН.
ОБСУЖДЕНИЕ (продолжение)
6. Какие команды относятся к «телу цикла»? (N:=N=+1 и S:=S+N)
7. Что произойдет, если команды в «теле цикла» поменяем местами? (сумма вычисляется неправильно)
8. Внесем некоторые изменения в начальные присваивания.
Пусть S:=0; N:=1. Что изменится?
9. Каким образом нужно изменить команды в «теле цикла», чтобы алгоритм работал правильно? (поменять местами)
10. Можно ли записать в качестве условия N 9? (Да)
Задача 2. Составить алгоритм, вычисляющий сумму двузначных чисел от 20 до 45 включительно.
АЛГ сумма двузначных чисел
АРГ N: нат
РЕЗ S: цел
НАЧ
S:=0 {обнуление ячейки S}
N:=20 {первое двузначное число из предлагаемых}
ПОКА N<46
НЦ
S:=S+N {формула суммирования}
N:=N=+1 {формула перехода к следующему элементу}
КЦ
КОН.
Задание. 1) Исполните формально данный алгоритм для чисел от 20 до 25.
Изобразите блок-схему для этого алгоритма.
IV. РЕФЛЕКСИЯ
– Что для вас было информативно?
– Что было трудным?
– Что произвело впечатление, удивило?
– Чему научился?
– Дома я сделаю…
V. Домашнее задание.
1. Повторить теоретический материал.
2. Вычислить сумму S= 12+22+32+…+252
3. Используя Задачу 1 из занятия, составьте алгоритм нахождения произведения однозначных чисел.
4. В первый день спортсмен пробегает 10 км, а в каждый следующий на 2 км больше, чем в предыдущий. Сколько км. пробежит спортсмен за неделю? Составить алгоритм решения задачи и исполнить его формально.
Источник