Turbo Pascal. While... do – цикл с предусловием

Turbo Pascal хоть и не является всемирно любимым приложением для программирования, но создатели, делающие первые шаги в написании ПО, начинают знакомство именно с этой средой. Она дает понятие о разветвлениях, операторах, функциях и процедурах, а также многих других вещах. К примеру, при изучении программист столкнется с циклами в Turbo Pascal: While, For и Repeat.

pascal while

Понятие цикла и его разновидности

Циклом называют многократно повторяющиеся действия. В данной среде используются:

  • с параметром (For … to… do);
  • с предусловием (While … do);
  • с постусловием (Repeat … until).

Первый вид используется, когда заранее известно, сколько шагов в решении задачи. Однако существует ряд заданий, когда нет информации о том, сколько раз будут повторяться те или иные действия. В таком случае в Pascal While цикл становится незаменимым, как, в принципе, и Repeat.

Структура цикла

В чем заключается суть работы в Pascal While, For и Repeat циклов? У таких конструкций выделяют заголовок и тело. В первой составляющей указываются переменные, которые будут «работать», задаются условия на проверку истинности, период, до которого тело будет выполняться. Во второй составляющей прописываются выражения, которые должны использоваться в случае выполнения условия, т. е. True, а не False.

Когда итерация выполняется на последней строке кода, тогда она возвращается к заголовку, где проверяется условие. В случае истины операции повторяются, а в случае невыполнения условия, программа «выходит» из цикла и выполняет дальнейшие операции.

Следующим образом выглядит цикл While. Pascal ABC и подобные программы требуют написания такого кода:

  • While Условие do;
  • Begin;
  • Тело цикла;
  • End.

В случае если в теле цикла будет выполняться 1 оператор (1 действие), тогда «скобки» begin… end можно опустить.

Блок-схема цикла

В Turbo Pascal While имеет следующие особенности:

  • внутри конструкции можно использовать сложные условия;
  • после слова do не должно быть точки с запятой (это считается ошибкой в Turbo Pascal и Pascal ABC);
  • переменная, константа или выражение, служащее при получении ответа False выходом их подпрограммы, должны быть обязательно логического типа, т. е. Boolean.

Следующим образом выглядит блок-схема данной разновидности цикла. Она показывает очередность выполнения действий.

pascal abc while

Алгоритм работы цикла

В простейших средах программирования, в т. ч. и в Pascal ABC, While цикл действует по следующему принципу:

  • заданные итерации, т. е. повторения, будут проходить столько раз, пока условие будет истинным (True);
  • как только условие не выполняется и дает ответ False (или иначе «Ложь»), оператор выходит из цикла;
  • как только это произошло, программа «пошла» в конструкции, стоящие после цикла.

Это является существенным отличием While от Repeat, т. е. цикла с предусловием от постусловия.

Очень важно предусмотреть в теле цикла конечное изменение заданной переменной в заголовке While. В любом случае должна когда-нибудь наступить ситуация, дающая значение False. Иначе произойдет зацикливание, и тогда придется воспользоваться дополнительными мерами для выхода из компилятора. Такие ошибки считаются грубыми и непростительными.

Как выйти из программы во время зацикливания?

Зачастую происходит ситуация, когда оператор While Pascal выдает зацикливание в написанном программном коде. Что это означает? Итерация повторяется бесконечное число раз, поскольку условие всегда истинно. Например, вот фрагмент программы:

  • While 2>1 do;
  • Write(1).

В таком случае, чтобы прервать выполнение задачи, достаточно нажать CTRL + F2.

Есть еще 2 способа контролировать подобное поведение программы. К примеру, если вписать в код Continue, которое передаст управление на начало цикличной конструкции (здесь условие выхода из цикла контролируется, т. е выполнение текущей итерации будет прервано). Тогда управление передается в цикле While в предшествующую проверку.

Оператор Break способен прервать выполнение всего цикла и передать управление следующей итерации. Здесь выход из конструкции контролироваться не будет. На изображении показаны примеры использования данных операторов.

оператор while pascal

Решение задач

Рассмотрим в действии цикл While. Pascal задачи предлагает решить самые разнообразные. Остановимся пока на простейших, чтобы понять принцип работы. Решены задания в программе Pascal ABC. Но будут представлены и изображения классической среды Turbo Pascal для сравнения.

Задание 1: дана функция Y=5-X^2/2. Составить таблицу значений с шагом sh=0,5 на промежутке [-5;5].

Алгоритм действий:

  • задать для переменной Х начальное значение равное -5 (т. е. начало промежутка);
  • вычислять значение Y, пока переменная x не достигнет конца указанного отрезка;
  • вывести на экран значения функции и абсциссы (Х);
  • увеличить Х на заданный шаг.

Вот так выглядит код в программе Pascal ABC.

while pascal задачи

Как выглядит код в программе Turbo Pascal. Изображение ниже наглядно показывает это.

while pascal задачи

Задание 2: дан массив А, состоящий из целых положительных и отрицательных чисел. В нем содержится 10 элементов. Необходимо сформировать матрицу В, в которой будут отображены положительные элементы массива А, имеющие четный индекс. Отобразить на экране сумму квадратов в числе из новой матрицы.

Алгоритм действий:

  • Необходимо написать подпрограмму, которая будет «работать» только с элементами массива А, имеющими четный индекс. В цикле значение переменной, отвечающей за четность индекса, будет увеличиваться на 2.
  • Если число с четным индексом из матрицы А соответствует условию х>0, тогда счетчик элементов массива увеличивается на 1. Нынешнее значение переменной-счетчика будет являться индексом копируемого числа в массиве В.
  • Изначально переменной summa, отвечающей за нахождение суммы квадратов положительных чисел, присваивается 0. Затем будет выполняться операция: к предыдущей сумме прибавляется новое значение квадрата.
  • Не стоит пугаться, если не все положительные числа перешли из одной матрицы в другую. Нужно быть внимательными. Многие начинающие программисты в панике переписывают код. Следует тщательно изучить условие: положительные числа, находящиеся на четных «местах», т. е. имеющие индексы, кратные 2.

цикл while pascal abc

Ручная трассировка необходима для того, чтобы убедиться в верности вычислений. Порой с помощью этого метода можно выявить ошибки, которые не попадаются на глаза при обычной проверке написанного кода.

цикл while pascal abc

Если провести ручные расчеты, то можно убедиться, что программа правильно работает. Это, в свою очередь, говорит о том, что алгоритм создания кода верен, последовательность действий приводит к логическому концу.

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.