Циклы в Паскале
Когда в алгоритме некоторое действие нужно выполнить несколько раз, используются циклы. В программирование цикл — это многократное повторение определенных инструкций. Циклы состоят из заголовка и тела. Заголовок содержит в себе условия, которые определяют работу цикла, а тело – повторяющиеся действия. В ЯП Pascal есть три вида циклов:
цикл с предусловием;
цикл с постусловием.
Их алгоритмы выполнения различны, но есть и общее: после выполнения тела цикла, проверяется условие, и в зависимости от него работа цикла заканчивается, либо снова выполняется тело.
For — цикл с параметром
Цикл с параметром, известный также как цикл со счетчиком, используется при известном количестве повторений. Он имеет две формы записи:
Счетчик – это переменная порядкового типа. Начальное и конечное значение должны быть того же типа, что и счетчик. Тело выполняется до тех пор пока условие истинно.
Формы записи, представленные выше, отличаются словами To и Downto. Если Вы используете цикл с To, то значение счетчика с каждым шагом будет увеличиваться на единицу, а если с Downto, то уменьшаться. Из этого следует, что в первом варианте начальное значение не должно превышать конечное, во втором — верно противоположное. В программе ниже, указанное пользователем количество раз, будут выводиться символы.
Здесь тело цикла не заключено в Begin-End, так как оператор всего один. Но если их будет больше, то операторные скобки обязательны. Стоит также отметить, что счетчик по выходу из цикла не будет иметь определенного значения, но если цикл закончиться раньше положенного, то счетчик сохранит последнее, записанное в него значение.
While – цикл с предусловием
Оператор While – начинает описание цикла с предусловием. Такой вид цикла нужен, в тех алгоритмах, где число повторений неизвестно заранее. В общем виде он выглядит так:
Если выражение истинно, то тело выполняется, иначе цикл завершается. Поэтому нужно составить такой код, чтобы на какой-то из итераций выражение стало ложным, и цикл не выполнялся бесконечно.
Пример программы написанный с использованием цикла While:
В данном коде использовался составной оператор Begin-End, так как операторов в теле цикла несколько.
Repeat – цикл с постусловием
Главной особенностью цикла с постусловием (часто встречается название: цикл-ДО) является выполнение его тела минимум один раз. Это связано с тем, что условие записывается в конце и соответственно вначале выполнится тело, а затем провериться условие. Формально он выглядит так:
В противоположность двум рассмотренным прежде циклам, этот прекращает свое выполнение тогда, когда условие становиться истинным, т. е. чтобы итерации продолжались условие должно быть ложно. Рассмотрим работу цикла с постусловием на примере:
Программа продолжает работать до тех пор, пока пользователь не допустит ошибку в ответе. Думаю, Вы заметили, что в примере (непосредственно в цикле) составной оператор Begin-End, несмотря на количество операторов не поставлен. Просто его роль выполняют слова repeat и until.
Для переходных манипуляций с циклом обычно используются три оператора:
Goto – переходит в отмеченную область;
Break – производит безусловный выход из цикла;
Continue – осуществляет переход к новой итерации.
Pascal: Занятие №3. Часть2: Цикл While в Паскале
While в Паскале — цикл с предусловием
Алгоритм: Отделяем и удаляем последовательно последнюю цифру, наращивая счетчик.
n | счетчик |
246 | 0 |
24 | 1 |
2 | 2 |
0 | 3 |
В чем сложность?: Заранее не определено и неизвестно, сколько цифр нужно убрать, т.е. сколько шагов необходимо сделать.
Как выполнить: Надо перестать отделять цифры, когда n = 0, т.е. надо выполнять пока n > 0
Блок-схема решения:
Решение примера на Паскале:
Цикл while в Паскале применяется для создания повторений с неизвестным заранее их числом. Повторения (итерации) будут осуществляться, пока истинно некоторое условие.
Блок-схема, соответствующая циклу while в Паскале:
Рассмотрим использование цикла while в Паскале на решенном примере:
var i,n:integer; begin write (‘количество знаков’); readln(n); i:=1; while i [Название файла: L3task3.pas ]
Задача 4. Вычислять с использованием цикла while квадратные корни из чисел 900, 893, 886, 879 и т.д. до тех пор, пока это можно делать.
[Название файла: L3task4.pas ]
Детальный разбор работы цикла While в Паскале рассмотрен в видеоуроке:
которые по модулю больше 0,001:
Алгоритм:
Блок-схема решения:
Решение на Паскале
Результат: S = 1.157
[Название файла: L3task5.pas ]
Вложенные циклы в Паскале
Существует возможность использования вложенных циклов в Паскале, когда в теле одного цикла вместо оператора стоит другой цикл.
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.
const n = 9; <размер таблицы>begin for var i:=1 to n do <номера строк>begin for var j:=1 to n do <номера столбцов>write(i*j:4); writeln; <переход на новую строку>end; end.
Произведение в Паскале
Точно также, как существует сумматор для сложения, для умножения в паскале тоже существует специальная конструкция:
Произведение вычисляется по рекуррентному выражению:
где P – промежуточные произведения
Y — сомножители
var fact, n : integer; begin fact := 1; <начальное значение факториала =0! >n := 1; <начальное значение для условия >while n n := 1 стоит до цикла, если этого не сделать, то условие будет работать некорректно, так как переменная n будет пуста.
Программа возведения в степень числа в Паскале
Для начала уточним, что есть формула вычисления степени на Паскале. Но мы не будем ее использовать, а разберем алгоритм решения задачи возведения в степень.
Для того чтобы возвести число в степень, его надо умножить само на себя ровно столько раз, чему равен показатель степени.
Еще необходимо учесть следующее:
Т.е., решая программу на Паскале, учитываем:
Задача 6. Вычислить в Паскале степень числа, используя цикл while.
Pascal: Занятие №3. Часть 3: Паскаль цикл for
Цикл со счетчиком в Паскаль (цикл for)
Цикл со счетчиком или, как он еще называется — цикл с параметром в Паскале служит для организации повторений (итераций) с заранее известным их количеством, т.е. когда точно известно, сколько раз должны выполниться операторы тела цикла.
Блок-схема, соответствующая циклу For:
Ну или если на простом примере:
Паскаль цикл For: синтаксис:
Прямое направление цикла (от меньшего значения к большему):
Обратное направление (от большего к меньшему):
Решение на Паскале:
Оператор в теле конструкции может быть одиночным или составным оператором.
Счетчик цикла или параметр цикла — это обычная переменная, которая может быть только порядкового (целочисленного, символьного, логического) или перечислимого типа.
При прямом направлении цикла счетчик в каждой итерации увеличивается на единицу, при обратном направлении — уменьшается на единицу.
Рассмотрим на решенном примере, как используется в Паскаль цикл for:
var i,n:integer; begin write (‘количество раз’); readln(n); for i:=1 to n do write(0); end.
begin var n:=readInteger(‘количество раз’); for var i:=1 to n do write(0); end.
Более детально цикл со счетчиком в Паскале рассмотрен в видеоуроке:
Решение в виде блок-схемы:
Решение на Паскале:
Вариант 1 | Вариант 2 |
Задача 8. Найти среднее арифметическое чисел в Паскале, числа вводятся с клавиатуры, их количество произвольно. Использовать цикл for
[Название файла: L3task8.pas ]
Задача 9. Составить блок-схему по программе нахождения среднего арифметического в pascal.
[Название файла: L3task9.pas ]
Решение:
Вариант 1 неэффективное решение | Вариант 2 эффективное решение |
Вариант 3 эффективное решение | |