Здравствуйте, дорогие читатели! Вот мы с вами и подошли к изучению циклов. Циклы в Паскаль. Что это такое? Как этим пользоваться? Для чего они нужны? Именно на эти вопросы я сегодня и отвечу.
Если вы читали , то знаете, что существует три вида алгоритмов: линейный, разветвляющийся и циклический. Мы с вами уже знаем, как реализовывать и алгоритмы на Паскале. Приступим к изучению последнего типа алгоритмов.
В языке Pascal, как и в большинстве языков программирования, существует три типа циклических конструкций.

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

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

Задача 1. Вывести все числа от 1 до числа, введенного с клавиатуры.

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

Как вы, наверное, уже поняли из названия, while — это цикл, в котором условие стоит перед телом. Причем тело цикла выполняется тогда и только тогда, когда условие true ; как только условие становится false

While имеет формат:

while < условие> do <оператор 1>; {Пока … делай ….}

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

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

Program example_while; var i, N: integer; { объявляем переменные } begin i:= 1; { Присваиваем i значение 1 } readln(N); { Считываем последнее число } while i <= N do {Как только i станет больше N, цикл прекратится (можно было бы написать просто <, но пришлось бы добавлять 1 к N) } begin {Открываем операторные скобки} write(i, " "); {Выводим i} Inc(i); {увеличиваем i на один.} end; { закрываем скобки } end.

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

Repeat — полная противоположность while . Repeat — это цикл, в котором условие стоит после тела. Причем оно выполняется тогда и только тогда, когда результат условия false ;как только логическое выражение становится true , выполнение цикла прекращается.

Repeat имеет формат:

repeat { повторяй … }
<оператор 1>;
< оператор 2>;

until {до…} <условие>

Begin и end не требуются.

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

Program example_repeat; var i, N: integer;{ объявляем переменные } begin i:= 1; { Присваиваем i значение 1 } readln(N); { Считываем последнее число } repeat {после repeat не требуется begin и end } write(i, " "); {Выводим i} Inc(i); {увеличиваем i на один.} until i = N + 1; {Например, i = 11, а N = 10. Цикл прекратится, так условие стало true.} end.

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

For — это цикл, в котором тело выполняется заданное количество раз.

Существует две формы записи этого цикла:

Первая форма

for <счетчик1> := <значение1> to <конечное_значение> do <оператор1>;

<счетчик1> будет увеличиваться на 1.

<значение1> — это начальное значение счетчика. Это может быть переменная или число.
<конечное_значение> : как только значение <счетчик1> станет больше <конечное_значение>

Если требуется написать несколько операторов в теле цикла, используем begin и end .

И <счетчик1>, и <конечное_значение>, и <значение1> — переменные целого типа.

Чаще всего в качестве счетчика используется переменная i.

Вторая форма

for <счетчик2> := <значение2> downto <конечное_значение> do <оператор1>;

После каждой итерации значение <счетчик2> будет уменьшатся на 1.

<значение2> — это начальное значение счетчика.
<конечное_значение> : как только значение <счетчик2> станет меньше <конечное_значение>, выполнение цикла прекратится.

Два важных примечания:

  1. Цикл повторяется, пока значение значение счетчика лежит в отрезке [значение; конечное_значение].
  2. Изменять значение счетчика внутри тела нельзя ! Вот что выводит компилятор:

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

Program example_for; var i, N: integer; begin read(N); {предположим, что мы ввели 10} for i:= 1 to N do write(i, " "); {количество итераций - 10 - 1 + 1 = 10} end.

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

Давайте решим пару задач.

For1 . Даны целые числа K и N (N > 0). Вывести N раз число K.

Организовываем простой цикл от 1 до требуемого числа.

Program for1; var K, N, i: integer; begin read(K, N); for i:= 1 to N do write(K, " "); {Пишем К через пробел } end.

For2 . < B). Вывести в порядке возрастания все целые числа, расположенные между A и B (включая сами числа A и B), а также количество N этих чисел.

Так как A < B, то цикл должен будет выводить все числа от А до B. Чтобы сосчитать количество чисел, используем формулу: <конечное_значение> — <начальное_значение> + 1.

Program for2; var A, B, i, count: integer; begin read(A, B); for i:= A to B do write(i, " "); {выписываем числа от меньшего к большему} count:= B - A + 1; {считаем количество чисел} writeln; write("Количество чисел - ", count); end.

For9 . Даны два целых числа A и B (A < B). Найти сумму квадратов всех целых чисел от A до B включительно.

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

Program for9; var A, B, i, S: integer; begin read(A, B); S:= 0; {PascalABC делает это автоматически, но если у вас другой компилятор советуем обнулять переменные вручную} for i:= A to B do S:= S + Sqr(i); {складываем все квадраты} writeln; write("Сумма квадратов - ", S); end.

For13° . Дано целое число N (> 0). Найти значение выражения 1.1 – 1.2 + 1.3 – … (N слагаемых, знаки чередуются). Условный оператор не использовать.

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

Program for13; var N, A, i: integer; S: real; begin Write("N = "); readln(N); S:= 1.1; A:= 1; {Сначала положительное} for i:= 2 to N do {первую итерацию цикла мы уже произвели, поэтому начинаем отсчет с 2} begin A:= -A; {Теперь отрицательное} S:= S + A * (1 + i / 10); {Складываем} end; Writeln(S:5:1); {Отдадим под дробную часть одно знакоместо} end.

While1° . Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой части отрезка A.

Каждый раз вычитаем B из А, пока А — В >= 0.

Program while1; var A, B: integer; begin readln(A, B); while (A - B) >= 0 do A:= A - B; {Пока разница положительная, вычитаем. Необходимо предусмотреть вариант с кратностью А и B, поэтому >=} write(A); end.

While4° . Дано целое число N (> 0). Если оно является степенью числа 3, то вывести True, если не является - вывести False.

Действуем следующим образом: пока N делится нацело на три, делим N нацело. Затем, если N = 1 — число является степенью тройки; если N <> 1, тогда число — не степень тройки. Для того чтобы решить эту задачу, требуется знать, что такое , и как работают .

Program while4; var N: integer; begin readln(N); while N mod 3 = 0 do N:= N div 3; {Пока остаток от деления на три равен нулю, делим N нацело } writeln(N = 1); {логическое выражение} end.

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

В общих чертах, сегодня узнаем о каждом из циклов в паскале поподробней и увидим как они задаются. Будем разбирать цикл 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. Цикл с постусловием выполняется до тех пор, пока условие не станет истинно, если условие ложно, цикл продолжается.

Наверное, каждому школьнику известен язык программирования, который называется "Паскаль". Что же он представляет собой? Уже давно данный язык стал мертвым, ведь используется лишь в школах для обучения учеников и считается базой. Он относится к упрощенному варианту языка Algol. Но, в отличие от последнего, "Паскаль" может использоваться для написания реальных программ и даже игр. Ранее он имел достаточную популярность, но сейчас сохранился лишь, по сути, для учебных целей. Первое, что привлекает потенциальных программистов в "Паскале", - это возможности писать, сохраняя свойства английского языка, а не ломать головы над использованием специальных схем, которые приняты в языках, подобных С.

Создал "Паскаль" Никлаус Вирт в 1970 году. Назван язык в честь ученого Блеза Паскаля, который стал отцом первой в мире машины. Она могла складывать два разных числа. Прямым потомком языка "Паскаль" является "Модула-2". Последний представляет собой усовершенствованную версию.

Система программирования

Pascal ABC - язык программирования, представленный уже существующей системой. Однако описываемый является вариантом нового поколения.

Почему же создали "Паскаль АБС"? Для этого было две существенные причины:

  • устаревшие системы первоначального языка;
  • желание сформировать более современную и интегрированной среду программирования.

Язык включает в себя систему классического "Паскаля", элементы "Делфи" и собственные расширения. Появился он в 2002 году.

Существует также одноименный компилятор, который является мощной и современной Он способен работать как на Linux, macOS, так и на Windows.

Платформа.NET позволяет использовать некоторые дополнительные функции, а также программировать в структурном, объектно-ориентированном и функциональном стилях. Автором данного языка стал Михалкович. Влияние на него оказал не только "Паскаль" и "Делфи", но еще С# и "Питон".

Общая характеристика операторов

Операторы в языке программирования необходимы для того, чтобы написать программу. Они дают возможность выполнять те или иные функции и алгоритмы. Чем команды в "Паскале" отличаются от других элементов? Тем, что они подразумевают выполнение какого-либо действия. "Паскаль" устроен таким образом, что все операторы состоят из специальных служебных слов. Отделяются команды между собой и другими элементами при помощи символа точка с запятой (;). Все операторы условно делятся на группы:

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

Обе группы будут подробно рассмотрены ниже в статье.

Оператор процедуры

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

  • стандартные (прописаны в самом языке);
  • пользовательские (созданные программистом).

При прописании определенного набора элементов в строке задействуется та или иная процедура.

Операторы ("Паскаль"), которые отвечают за стандартные действия, запомнить достаточно легко. Необходимо написать в разделе описаний слово uses и ввести описание процедуры. Есть такие стандартные элементы, которых нет необходимости вводить в первый блок. Таковыми являются задачи read, write и другие.

Пользовательские процедуры необходимо перед работой программы создать и поместить в раздел описаний или в модуль. При использовании последнего варианта его следует записать в раздел USES или PROCEDURE.

Оператор безусловного перехода

Простые операторы использовать достаточно легко, в том числе и GOTO. В "Паскале" имеется раздел меток, который позволяет поместить определенный, необходимый разработчику оператор, а позже за счет безусловного перехода сослаться на него. В качестве метки должен использоваться набор цифр и букв без знаков и пробелов. От строки она отделяется двоеточием (:). Перед тем как создать метку, в разделе описаний LABEL необходимо указать имена данного элемента.

Перед тем как создавать отдел, необходимо знать о некоторых нюансах:

  • все описанные метки должны быть использованы;
  • если элементы имеют названия из чисел, то можно их не объявлять.

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

Операторы условия

Условный оператор, представленный конструкций IF-THEN-ELSE, используется для отображения ветвлений, в которых один из вариантов обязательно является ложью. Вычислительный процесс будет продолжаться по одному из представленных вариантов. Условно процесс делится на два вида:

  • структура вилки (когда существует два варианта действий, и каждый приводит к своему результату);
  • структура обхода (когда второй вариант неверен, и в таком случае программа обходит результат, предназначающийся для правды).

Конструкция IF-THEN-ELSE представляет структурированные операторы. Данные слова являются служебными. При этом последнее не подлежит обязательному использованию.

Как же работает конструкция? С английского она переводится как «если-тогда-иначе». Если условие, заданное программой, верно, то выполняется то, что написано после слова then. А если же оно неверное, то действительным считается то, что записано после else или после строчки с then.

Составной оператор

Для того чтобы понимать данное словосочетание, нужно знать определение. Составные операторы ("Паскаль") - это набор операций в написанной программе, которые заключены в скобки BEGIN-END. За счет этого группа команд представляется как единственная целостная.

Оператор выбора

Из-за того, что оператор IF способен работать лишь с двумя ветвлениями, была создана команда выбора CASE. В данной системе есть служебные слова - case, of, end, else. При этом последнее также может отсутствовать. До того как оператор сработает, должен быть объявлен параметр и его значение. Если ключ выбора совпадает с константами выбора, то выполняется тот оператор, который идет после последнего. Если правильности нет, то и все команды игнорируются. Выполняется тот вариант, который идет после слова ELSE или после оператора CASE.

Данный оператор выбора в "Паскале" не использует такую систему работы, как IF. Здесь нет явной проверки условия. Если рассматривать его работу более подробно, то можно заметить, что CASE вводит небольшой диссонанс в программу, так как оператор заканчивается словом END, к которому нет парного BEGIN. Его использовать намного удобнее, особенно если есть 5 и более вариантов выбора. Прописывать постоянно IF-THEN будет долго, да и это не есть удобным процессом.

Операторы ("Паскаль"): циклы

Что такое циклы? Они подразумевают собой повторение некоторых систем команд несколько раз до полного удовлетворения условия. В "Паскале" известно два :

  • цикл с параметром;
  • итерационный.

Что же представляет каждый? Первый всегда имеет известные параметры. Иногда его еще называют регулярным. Его основным отличием является то, что количество повторений цикла известно до его начала.

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

Отличить виды и типы циклов можно при помощи некоторых структур:

  • REPEAT: повторение с постусловием.
  • WHILE: повторение с предусловием.
  • FOR - оператор счета. Он используется в цикле с параметром.

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

Операторы ввода-вывода

За взаимодействие среды программирования с окружающей средой отвечают операторы ввода-вывода. Именно они позволяют вводить информацию и выводить результат на экран или на печать. Команда read позволит пользователю в запущенной программе указать свои данные. Как это происходит? Программа на время останавливается, на экране появляется мигающий курсор, который ожидает ввода данных от человека. Разница в работе двух операторов read и readln небольшая. Последний просто переносит курсор на следующую строку.

Оператор вывода ("Паскаль") - write(ln). Частичка LN позволяет продолжить вывод данных на следующей строке. Если в программе указать просто оператор, то будет выведена на экран пустая срока. Использовать в таком смысле данную команду не обязательно.

Имеются также операторы var, close. Их можно не использовать, если того не требует сама программа.

Основные операторы ("Паскаль") описаны в статье. Они помогут лучше написать программу, сами же работают достаточно быстро и без сбоев. Без них не сложится ничего у будущего программиста при работе с языком "Паскаль". Программы без операторов, увы, представить нельзя. А значит, ими необходимо уметь оперировать. Сложными могут показаться операторы цикла, однако следует потренироваться и проблемы все исчезнут. Удачи в работе!

Когда в алгоритме некоторое действие нужно выполнить несколько раз, используются циклы. В программирование цикл - это многократное повторение определенных инструкций. Циклы состоят из заголовка и тела. Заголовок содержит в себе условия, которые определяют работу цикла, а тело – повторяющиеся действия. В ЯП Pascal есть три вида циклов:

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

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

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

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

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

Цикл с параметром, известный также как цикл со счетчиком, используется при известном количестве повторений. Он имеет две формы записи:

  1. For <счетчик>:=< начальное значение> To <конечное значение> Do <тело цикла>;
  2. For <счетчик>:=<начальное значение> Downto <конечное значение> Do <тело цикла>;

Счетчик – это переменная порядкового типа. Начальное и конечное значение должны быть того же типа, что и счетчик. Тело выполняется до тех пор пока условие истинно.

Формы записи, представленные выше, отличаются словами To и Downto . Если Вы используете цикл с To, то значение счетчика с каждым шагом будет увеличиваться на единицу, а если с Downto, то уменьшаться. Из этого следует, что в первом варианте начальное значение не должно превышать конечное, во втором - верно противоположное. В программе ниже, указанное пользователем количество раз, будут выводиться символы.

1
2
3
4
5
6
7
8
9
10

program for_primer;
uses crt;
var i, x: integer ;
begin
write (‘X=’ ) ;
readln (x) ;
for i:= 1 to x do
write (#3 , #6 ) ;
readkey;
end .

Здесь тело цикла не заключено в Begin-End, так как оператор всего один. Но если их будет больше, то операторные скобки обязательны. Стоит также отметить, что счетчик по выходу из цикла не будет иметь определенного значения, но если цикл закончиться раньше положенного, то счетчик сохранит последнее, записанное в него значение.

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

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

While <выражение> Do <тело цикла>;

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

Пример программы написанный с использованием цикла While:

В данном коде использовался составной оператор Begin-End, так как операторов в теле цикла несколько.

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

Главной особенностью цикла с постусловием (часто встречается название: цикл-ДО) является выполнение его тела минимум один раз. Это связано с тем, что условие записывается в конце и соответственно вначале выполнится тело, а затем провериться условие. Формально он выглядит так:

<тело цикла>

Until <условие>

В противоположность двум рассмотренным прежде циклам, этот прекращает свое выполнение тогда, когда условие становиться истинным, т. е. чтобы итерации продолжались условие должно быть ложно. Рассмотрим работу цикла с постусловием на примере:

1
2
3
4
5
6
7
8
9
10
11
12

Операторы цикла заставляют выполнять входящие в их состав операторы несколько раз.

В Паскале существует три вида операторов цикла: оператор цикла с параметром, оператор цикла с предусловием, оператор цикла с постусловием.

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

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

for V:=E1 to E2 do S

где V - переменная порядкового типа, Е1, Е2 - выражения того же типа, S - оператор, называемый телом цикла. Выражения Е1 и Е2 вычисляются один раз при входе в цикл. Параметр V принимает сначала значение Е1 затем непосредственно следующее за ним (SUCC (V)) и т.д. до достижения Е2. При каждом значении V выполняется оператор S. Если в теле цикла необходимо выполнить несколько операторов, то их объединяют в один с помощью составного оператора. Если конечное значение Е2 меньше начального Е1, то оператор S не выполняется ни разу.

Оператор цикла с параметром применяется также в следующем виде:

for V:=Е1 downto E2 do S

В отличии от первого случая, V изменяется от Е1 до Е2, переходя от V к pred (V).

Отметим, что если V, Е1, Е2 типа INTEGER, то в первом случае это цикл с шагом +1, а во втором с шагом -1.

Оператор цикла с предусловием

Формат оператора цикла с предусловием:

где B - логическое выражение, S - оператор. Оператор S будет выполняться пока условие B будет истинно. Выполнение оператора цикла завершится когда выражение B впервые примет значение false.

Оператор цикла с постусловием

Формат оператора цикла с постусловием:

repeat S until B

где B - логическое выражение, S - оператор. Оператор S выполняется до тех пор, пока B не станет истинным. Оператор REPEAT выполняется по крайней мере один раз, так как проверка истинности условия B осуществляется после выполнения оператора S.

Служебные слова REPEAT и UNTIL уже играют роль скобок, поэтому операторные скобки BEGIN и END являются необязательными.

Примеры программ

В качестве примера использования операторов цикла рассмотрим программу вычисления факториала.

Программа 2.1.1. Цикл с параметром (шаг +1)

PROGRAM FACTORIAL1;

VAR I,N:INTEGER;

WRITE("ВВЕДИТЕ N");

READLN(N); F:=1;

FOR I:=1 TO N DO F:=F*I;

Программа 2.1.2. Цикл с параметром (шаг -1)

PROGRAM FACTORIAL2;

VAR I,N:INTEGER;

WRITE("ВВЕДИТЕ N");

READLN(N); F:=1;

FOR I:=N DOWNTO 1 DO F:=F*I;

WRITELN ("ФАКТОРИАЛ ОТ ",N," РАВЕН ",F)

Программа 2.2. Цикл с предусловием

PROGRAM FACTORIAL3;

VAR I,N:INTEGER;

WRITE("ВВЕДИТЕ N");

READLN(N); F:=1; I:=1;

WHILE I<=N DO

WRITELN ("ФАКТОРИАЛ ОТ ",N," РАВЕН ",F)