Как сделать цикл в паскале

Добавил пользователь Morpheus
Обновлено: 18.09.2024

Цикл – это многократные повторяемые действия. В Турбо Паскале существует —
3 основных вида циклов:

-цикл с параметром

-цикл с предусловием

-цикл с постусловием

Цикл с параметром

Оператор имеет следующий формат:

For —i:=A —to —B —do —S—

где i – счетчик цикла, является переменной порядкового типа данных.

А – начальное значение, В – конечное значение счетчика цикла.

S – тело цикла (повторяющиеся действия).

Цикл работает следующим образом: переменной i присваивается начальное значение A, если A<-=B, то выполняется тело цикла S, после чего значение счетчика цикла i автоматическиувеличивается -на 1 и опять сравнивается с B. Цикл будет повторяться до тех пор, пока значение счетчика i не станет больше B. Если тело цикла S состоит из нескольких операторов, то они заключаются в операторные скобки (begin…end). Если в операторе for .. to последнее значение счетчика цикла меньше первого, то тело цикла не выполняется ни одного раза.

Блок-схема выглядит следующим образом:

For i:=1 to 10 do writeln(‘турбо паскаль’)-

Существует еще одна разновидность цикла с параметром:

For i:=A downto B do S-

Цикл работает аналогично предыдущему, но после выполнения тела цикла, значение счетчика цикла автоматически —уменьшается -на 1. Если A<-B, то цикл не выполнится ни разу.

Цикл с предусловием

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

While —условие —do —S—

В качестве условия можно использовать любое логическое выражение, которое может быть либо истиной (true) ли ложью (false). S – тело цикла.

Сначала проверяется условие, если оно – истина, то выполняется тело цикла S и опять проверяется условие. Цикл будет повторяться до тех пор, пока условие – истина, как только условие станет ложным – происходит выход из цикла. Если изначально условие – ложь, то тело цикла не выполнится ни разу. В отличии от цикла с параметром в этом виде цикла не предусмотрено автоматическое изменение переменной цикла, поэтому в теле цикла S должны быть команды, изменяющие значение переменной цикла. В противном случае при запуске произойдет так называемое зацикливание программы (т.е. выполнение бесконечного цикла).

Если тело цикла S состоит из нескольких операторов, то они заключаются в операторные скобки (begin…end).

Блок-схема выглядит следующим образом:

Пример 2: —Вводить числа с клавиатуры, пока не будет введено число 0

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

Такой цикл сочетает в себе и условие, и сам цикл. Поскольку условие находится на входе, называется этот цикл -- "цикл с условием на входе" (и это, как можно догадаться один из нескольких видов циклов). Начало такого цикла описывается ключевым словом WHILE. Поскольку этот цикл -- частью условие, после окончания описания условий указывается ключевое слово DO. Оно похоже на THEN, с той лишь разницей, что после THEN идёт однократное исполнение инструкций, а после DO -- пока не будет выполнено условие выхода из цикла (для этого и было введено два разных слова, чтобы показать разницу, хотя возможно в будущих вариантах КП останется только THEN). В ранних версиях языков для окончания цикла WHILE использовалось ключевое слово LOOP. Но в Компонентном Паскале это слово посчитали лишним, и теперь этот цикл заканчивается по "END;". Вот простой пример использования цикла WHILE:

В примере на входе для переменной "р1" проверяется условие (должна быть меньше 50). И пока это условие выполняется производится наращивание "р1" на единицу через ключевое слово INC(инкремент) [1] . Также следует обратить внимание на то, что в цикле с условием на входе (как и в условиях) сложные выражения группируются в круглые скобки. Кроме того, шаг в таком цикле можно сделать любым. Например, 0.001. Или ещё меньше. В самом цикле переменные, от которых зависит выход из цикла -- можно менять как угодно. Если из тела цикла в примере убрать инкремент переменой "р1" -- такой цикл не закончится никогда. Иногда такие используются. Но в 99,999% случаев в несистемном программировании такое зацикливание будет ошибкой программирования, и КП такие ошибки не анализирует.

Это второй вид цикла, в котором условия выхода могут быть сформированы каким угодно способом. Как следует из названия, проверка условия производится на выходе из цикла. И здесь есть одно важное следствие: Даже если и будет произведён выход из цикла -- проход по телу цикла будет гарантирован, по крайней мере -- один раз. Пример такого цикла приведён ниже:

Цикл с условием на выходе начинается с ключевого слова REPEAT("повторить"). Выход из цикла предваряется ключевым словом UNTIL("пока не. ") -- пока не будет выполнено условие выхода. Обратите внимание ещё раз -- пока не будет выполнено условие из выхода! Т. е. если цикл с условием на входе требует истинности условия, то цикл с условием на выходе требует отрицания на выходе! Если забыть про эту тонкость -- ваш цикл не завершится никогда [2]

Этот цикл выделен в отдельную структуру, так как имеет реализацию в командах процессора. Поскольку, для его описания его параметров используются целочисленные значения, то его очень удобно применять для обработки массивов с заранее известным размером. Почему нельзя использовать дробные числа? Да потому что не может элемента массива с порядковым номером "2,5". Либо "2", либо "3". Небольшой пример, показывающий использование целочисленного цикла:

В этом примере видно, что целочисленный цикл начинается с ключевого слова FOR. В качестве начала целочисленного счётчика цикла используется переменная "i", соответствующего типа. Эта переменная определена в секции VAR процедуры "Start" (а это значит, что модуль TestHello05 понятия не имеет о её существовании). Верхняя граница цикла устанавливается после ключевого слова TO в виде скорректированной константы "Num". Уменьшение это константы на единицу объяснимо тем, что индексация массива "а" начинается с нуля, а не с "1". Поэтому, последний номер элемента массива "а" будет "4", а не "5", как это объявлено в секции VAR с помощью константы "Num". Если такую корректировку верхней границы целочисленного цикла не провести, то в ходе исполнения программы будет преодолена верхняя граница массива, и программа "вылетит с ошибкой". Заканчивается целочисленный цикл FOR традиционно -- ключевым словом "END;" [3] .

Второй цикл FOR по своему объявлению полностью повторяет первый. Но содержание отличается. Так в первом цикле происходит заполнение массива целочисленных ячеек целочисленными значениями переменной "i" с шагом в "5". Dj втором же цикле происходит вывод значений ячеек массива без их изменения. Если всё сделано правильно, то можно убедиться в том, что у каждой ячейки своё значение:

Во втором цикле в строку скомбинирован вывод строк и целочисленных значений. При желании, можно выводить всё-что угодно и такой способ бывает удобен, чтобы оперативно посмотреть, какие значения применяют переменные в ходе выполнения программы. Остаётся один вопрос: переменная "i" ни в первом цикле, ни во втором -- не меняется. Каким образом происходит её изменение? Правильный ответ состоит в том, что центральный процессор сам наращивает значение "i". Об этом программисту беспокоиться не надо, и в целочисленном цикле: раньше или позже -- но обязательно наступит завершение.

Этот цикл является расширением предыдущего и почти от него не отличается. Пример представлен ниже:

Чтобы задать шаг, необходимо после задания числа по окончанию цикла указать ключевое слово BY. В случае примера выше -- это "2". С таким шагом всё нечётные ячейки массива будут пропущены, обратите внимание на вывод работы этой программы:

Так и есть! В нечётных ячейках находится непонятно что! Отсюда следует правило: перед использованием числовых массивов их очень желательно обнулять.

И этот цикл не зря называется так бескомпромиссно. Он действительно безусловный. Бывают такие программы, которые запускаются вместе с включением компьютера и завершают своё выполнение за одно мгновение до выключения [4] В таких программах просто не нужен выход из цикла. А если всё-таки наступает условие, по которому надо бесконечный цикл прервать (и при этом нужно избежать тех инструкций, что идут далее) -- происходит такой же безусловный выход, не терпящий возражений. Код ниже:

Безусловный цикл объявляется ключевым словом LOOP. Внутри него выполняются любые действия. Как только будет выполнено условие (р1>1000), выход из цикла будет выполнен. Во втором условии выполняется вызов процедуры "GetCommand" и если строка-команда будет иметь значение 'EXIT', произойдёт выход из безусловного цикла. Веток, предусматривающих выход из цикла может быть множество. Хотелось бы обратить внимание ещё раз, что получить "завешивание" программы в таких конструкциях очень легко, и надо предусматривать возможность принудительного прерывания таких циклов (как во втором условии).

Итак, циклы бывают трёх видов:

  • С условием на входе, условием на выходе (универсальный)
  • Целочисленный и целочисленный с произвольным шагом (для обработки массивов, может быть быстрее чем, с условием на входе/выходе)
  • Безусловный цикл (для длительных процессов).

И важное напоминание: неаккуратное обращение с циклами (кроме целочисленного) может обернуться "зависанием" программы.

Циклы. Вот мы и добрались до этой обширной, я бы даже сказал - гигантской, темы. Циклы окружают нас не только в программировании, но везде вокруг. Один из примеров - картинка выше. Смена времен года, смена дня и ночи, да даже человеческая жизнь - зачастую цикл, повторяющийся по одной и той же схеме. Дом - работа - дом, или дом - учеба - дом. Жизнь цикличная штука. Но не о философии родимой сейчас. Сейчас у нас циклы на языке Паскаль.

1. Виды циклов

В нашем с вами языке программирования существуют три вида циклов:

Итак. Отсеем лишнюю информацию. Три цикла - С постусловием, с предусловием, с параметром. Эти названия можете не запоминать, в программировании они не нужны, серьезно.

Цикла три, да. Цикл Repeat можете из своего программистского лексикона сразу вычеркнуть. Обычно не существует таких задач, которые не решались бы двумя основными циклами Фор и Вайл. Более того, в остальных языках программирования, бывает, даже нет эквивалента циклу Репит , забавно.

От Вайла Репит отличается только тем, что выполнится как минимум один раз (Вайл не выполнится ни разу если условие не верное).

Сегодня мы познакомимся с циклом For и его синтаксисом в виде коротенького примера.

2. Как работает цикл For

2.1 Переменные

Как только вы зададите условие цикла и запустите программу она выполнит код, находящийся до цикла. Ну а потом начнет мотать его столько раз, сколько вы задали. С этим стоит быть осторожным, потому что можно создать бесконечный цикл, который будет работать до того момента, пока не съест всю оперативную память вашего компьютера. Благо, программу можно в любую секунду отключить, не критично, одним словом.

Зададим две переменные. Переменная i служит для цикла Фор, чуть позже увидите каким образом. Переменная sum - для подсчета витков цикла.

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

2.2 Конструкция For

Вот здесь мы и используем переменную i. Конечно, не обязательно использовать именно такое название переменной, но в среде программистов, обычно, именно переменная i зарезервирована для циклов. Ну и еще j . Но это уж дальше разберемся. Просто привыкните к этому нестрогому правилу, легче потом будет.

Теперь разберем синтаксис:

i берет себе значение по очереди, начиная от 1 до 100 в этом цикле. Значения и диапазоны, разумеется, могут быть различны. Важное правился именно в цикле Фор - шаг цикла (один проход от begin до end внутри цикла) равен единице. Тоесть в нашем случае у цикла будет 100 шагов.

На счет begin и end - все так же как и в конструкции If - если действий внутри цикла несколько - ставить их обязательно, иначе программа будет работать не так, как вы хотите.

В нашем же цикле мы просто присваиваем переменной Sum каждый раз значение, большее на 1. Тоесть например в 5-м проходе цикла Sum будет равна 5, значит код будет выглядеть так: Sum := 5 + 1 . Ну и потом, для наглядности, печатаем эту переменную.

Программирование существенно облегчает выполнение повседневных задач, которые стоят перед специалистом IT-сферы. Существует множество специализированных языков для написания кода, но в школе на уроке информатики изучают Турбо Паскаль. Циклы, необходимые для оптимизации вычислений, стали неотъемлемой частью практически любой платформы для генерации программных продуктов.

Цикл for в паскале

Общие сведения

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

Специалисты, опираясь на психологию человека, разработали специализированный алгоритм. Если выполнять все его пункты, то результат будет поразительным. Инструкцию также можно использовать для изучения какой-либо другой дисциплины, но в этом случае ее необходимо переделать. Для теории применяется такой алгоритм:

Циклы в паскале

  • Достоинства и недостатки применения циклов.
  • Синтаксис, необходимый для использования циклических операторов. Общая информация о блок-схемах. Абстрактные модели.

Далее следует разобрать подробно каждый пункт инструкции. Пропускать их запрещается. Обучаемый просто потеряет зря время либо сам процесс обучения существенно увеличится. Для начала нужно разобрать основные достоинства и недостатки применения циклов в Турбо Паскале.

Правила применения

Каждый программист, независимо от уровня его профессионализма, сталкивается с принятием решения о целесообразности использования цикла в программном продукте. На начальных стадиях обучения необходимо проработать каждый элемент кода, составляя сложные структуры. Хотя в последнем случае можно обойтись упрощенными вариантами.

Основной принцип программиста — максимальное упрощение кода или оптимизация. Простым примером являются конструкторы сайтов. При генерации web-страницы в ее теле появляется много ненужных элементов. Например, специалист при создании одной страницы уложится в 200 строк html-кода, а конструктор способен сгенерировать в 4 или 5 раз больше.

Упрощение кода

  • Цель приложения.
  • Количество генерируемой информации (маленький или большой объем).
  • Простота кода.
  • Количество строк.

Цикл с предусловием

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

В любой программе следует избегать дублирования кода, поскольку такая парадигма значительно облегчает его читабельность, а это очень важно для доработки приложения. Несмотря на то что язык Турбо Паскаль не поддерживает объектно-ориентируемую структуру, следует помнить о блоках. Несоблюдение блочной структуры может привести к серьезным последствиям.

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

Достоинства и недостатки

Перед применением циклов необходимо разобраться в их достоинствах и недостатках. К первым можно отнести следующее:

  • Простота применения.
  • Уменьшение количества кода.
  • Универсальность.
  • Читабельность.
  • Обработка и вывод больших массивов информации.

Цикл с постусловием

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

Читабельность кода приложения зависит от его структуры. Кроме того, при их применении количество кода существенно уменьшается. Последним достоинством является специфика применения элемента. Если требуется обработать или вывести большое количество информации, то применение циклов — крайняя необходимость. Этот подход позволит не только сохранить драгоценное время, но и избежать множества ошибок.

Следует отметить, что несмотря на множество достоинств, циклы обладают и недостатками. Поэтому некоторые программисты избегают их применения в отдельных приложениях. К отрицательным сторонам следует отнести:

  • Ресурсоемкость.
  • Зацикливание (зависание).

Вложенные циклы

Синтаксис циклов

Перед разбором синтаксиса основных циклов языка программирования Турбо Паскаль необходимо обратить внимание на их классификацию. Их можно условно разделить на три типа:

  • с параметром;
  • постусловием;
  • предусловием.

Следует отметить, что для понимания классификации нужно разобраться со структурой, то есть элементами, из которых он состоит. К ним относятся заголовок (условие) и тело. Условие — основной элемент, имеющий вид логического выражения. Последнее принимает только два значения — ложь и истина. Первое на машинном языке кодируется 0, а второе — 1. Однако такой вид кодировки приемлем только для Турбо Паскаля. В современных языках программирования кодировка следующая: ложь — FALSE, а истина — TRUE. Телом называется группа операторов, переменных и операндов, необходимых для обработки результата.

В зависимости от условия, идет обработка данных. Циклы очень часто применяются вместе с оператором IF-ELSE. Последний переводится таким образом: если — иначе. В первый блок (если) вставляется условие. Если оно выполняется, то производятся одни действия, а если нет (иначе) — другие. Этот механизм очень удобен, поскольку придает программному продукту сложную структуру.

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

Параметрический тип

К циклу с параметром принадлежит for (блок-схема 1). В нем тело выполняется заданное число раз. Это зависит от некоторого параметра (итератора). Существует 2 класса записи команд, состоящих из следующего списка:

Второй класс записи имеет другую логику исполнения. Значение итератора уменьшается на 1 до начальной величины . В этом случае расшифровка всех зарезервированных слов совпадает с первым классом.

For while Pascal

Блок-схема 1. Цикл for.

Стоит обратить внимание, что когда необходимо написать несколько выражений в теле, следует использовать блок do begin-end. Тело располагается между begin и end. Кроме того, следует придерживаться определенной последовательности действий (алгоритма), чтобы правильно написать соответствующий код.

Использование предусловия

В Турбо Паскале циклом с предусловием является while (блок-схема 2). В нем условие стоит перед телом. Все операции в последнем выполняются до того момента, пока значение выражения в условии не будет эквивалентно FALSE (0). В результате этого работа while прекращается. Далее выполняются остальные блоки, находящиеся вне цикла. Формат while имеет такой вид: while do . Транскрипция имеет такой вид: пока выполняется условие — делай.

Цикл for Паскаль блок схема

Блок-схема 2. Цикл с предусловием while.

Необходимо отметить, что при использовании нескольких операторов, их следует применять внутри блока begin-end. Кроме того, значение итератора в условии увеличивается на 1. Шаг является постоянным. Однако его можно изменять для примера таким образом: i = i + 2. Инициализацию переменной нужно проводить перед циклом.

Логическое выражение в конце

Можно поставить логическое выражение после тела. В этом случае получится конструкция repeat-until или цикл с постусловием (блок-схема 3). Его формат имеет такой вид (состоит из нескольких строк):

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

Блок-схема 3. Цикл с постусловием repeat-until.

Таким образом, циклы языка Турбо Паскаль играют важную роль в оптимизации программного кода, но иногда от них следует отказаться.

Читайте также: