Структура программы языка Турбо Паскаль Программа на языке Турбо Паскаль имеет вид

Вид материалаПрограмма

Содержание


Турбо Паскаль
BEGIN - ключевое слово, указывающее, что за ним следует текст программы.[команды]
Раздел описания
Раздел описания меток
Пример: abc: write('текст'); Примечание
Оператор безусловного перехода - GOTO
Пример описания констант
Раздел описания типов
Var за которым через точку с запятой перечисляются
Раздел описания процедур и функций
Пример описания типа
Целые типы данных
Действительные типы данных
Символьный тип данных
Адресный тип данных
Перечисляемый тип данных
Пример описания перечисляемого типа
Интервальный тип данных
Пример описания интервального типа
Пример вывода на экран сообщения
...
Полное содержание
Подобный материал:
  1   2   3   4   5   6


История возникновения языка программирования Турбо Паскаль

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

Особенностью языка Паскаль является требование к точному соответствию типов информационных объектов, их описанию, что значительно сокращает количество логических ошибок.

В 1995 году был разработан язык программирования Delphi, представляющий собой визуальную версию языка Паскаль. Язык Паскаль является языком компелирующего типа.

В 1980 году была в первые выпущена среда для программироания Турбо Паскаль. Эта среда интегрирует в себе: компилятор с языка Паскаль, текстовый редактор для редактирования кода программ, а так же средства отладки программ.

Скачать среду программирования Турбо Паскаль можно в разделе: "Среда для программирования".

Структура программы языка Турбо Паскаль

Программа на языке Турбо Паскаль имеет вид:

PROGRAM [имя];

[необязательный оператор USES];

[раздел описания];

BEGIN

[команды];

END.

[имя] - программы может содержать до 8 символов, состоящих из латинских букв и цифр (должно начинаться с буквы и не содержать пробела).
[Необязательные операторы USES] - указывает какие модули входят в программу.
[раздел описания] - указывает какие процедуры и функции, переменные, метки будут использованы в программе. Этот раздел состоит из разделов описания: меток, типов, констант, переменных, процедур и функций.
BEGIN - ключевое слово, указывающее, что за ним следует текст программы.
[команды] - команды языка программирования.
END. - указывает на окончание программы.

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

Пример 1.1:

PROGRAM Pavel; {имя}

USES Crt,Dos; {Необязательные операторы USES}

Var x,y,z:word; {раздел описания}

BEGIN

x:=5;

y:=6; {команды}

c:=x+y;

END.

Пример 1.2 (та же программа, записанная в 5 строк, а не в 8):

PROGRAM Pavel;

USES Crt,Dos; Var x,y,z:word;

BEGIN

x:=5; y:=6; c:=x+y;

END.

Примечание: оператор PROGRAM [имя] можно вообще не писать, на работу программы он не влияет.

Комментарии в программе

Комментарии используются для пояснения некоторых участков кода программы. Комментарии игнорируются компилятором, и поэтому не влияют на выполнение программы. Для записи комментария используют символы: { и } или (* и *)

В примере 1.1 комментарии записаны в виде {……..}.

Комментарий, содержащий знак доллара ($) сразу после открывающей скобки { или (*, является директивой компилятора. За символом $ следует мнемоника команды компилятора.

Раздел описания: меток, констант, типов, переменных, процедур и функций.

Как я говорил Раздел описания находится между клчевыми словами USES и BEGIN (если оператор USES отсутствует, значит он идет перед словом BEGIN). Этот раздел состоит из нескольких подразделов и записываются они в следующей последовательности:

[раздел описания меток];

[раздел описания констант];

[раздел описания типов];

[раздел описания переменных];

[раздел описания процедур и функций];


Примечание: каждый из этих подразделов не всегда обязателен.

Раздел описания меток

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

Пример описания меток:

Label abc, a11, d5f, 20;

В данном примере описания меток, описываются 4 метки.

В программе любой оператор может быть помечен меткой, которая отделяется от него двоеточием:

[имя_метки]:[оператор];

Пример:

abc: write('текст');

Примечание: метки не могут ставиться перед операторами более одного раза (чтобы пометить другой оператор ставится новая метка).
Подробнее об использовании меток (с примерами) рассказывается в теме: Оператор безусловного перехода - GOTO.

Раздел описания констант

Данный раздел описания обозначается ключевм словом Const за которым через точку с запятой перечисляются имена констант и их значение.

Пример описания констант:

Const min=1000; max=4000; center=1500; name='Pavel';

В данном примере описания констант, описываются 4 константы, которые в программе не изменяют своего значения.

Раздел описания типов

Раздел описания типов рассказывается в теме: Раздел описания типов.

Раздел описания переменных

Данный раздел описания обозначается ключевм словом Var за которым через точку с запятой перечисляются <имя переменной>:<тип переменной>.

Пример описания переменных:

Var a:word; b:byte=160; c, d, e: Integer;

Примечание: в разделе описания переменных, переменным можно задавать начальное значение (b:byte=160;). Переменные одинакового типа записываются через запятую, затем после двоеточия указывается их тип (c, d, e: Integer;).

Раздел описания процедур и функций

Раздел описания процедур и функций рассказывается в теме: Раздел описания процедур и функций.

Раздел описания типов: его запись в коде программы. Виды типов.

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

Раздел описания типов записывается в таком виде:

Type

t1=<вид типа>;

t2=<вид типа>;

.......

где t1, t2 - идентификаторы вводимых типов, а <вид типа> - вид типа (виды типов описываются ниже).

Пример описания типа:

type

int=Integer;

b=boolean;

В языке Паскаль существуют скалярные (простые) и структурные (составные) типы данных.

К скалярным типам относятся стандартные типы и типы, определяемые пользовтелем.

Стандартные типы данных

Они включают: целые, действительные, символьный, логический, адресный типы.

ЦЕЛЫЕ ТИПЫ ДАННЫХ

Тип

Диапазон значений

Требуемая память

Shortint

-128 .. 127

1 байт

Integer

-32768 .. 32767

2 байта

Longint

-2147483648 .. 2147483647

4 байта

Byte

     0 .. 255

1 байт

Word

          0 .. 65535

2 байта



ДЕЙСТВИТЕЛЬНЫЕ ТИПЫ ДАННЫХ

Тип

Диапазон значений

Требуемая память

Количество цифр мантиссы

Real

2.9e-39 .. 1.7e+38

6 байт

11

Single

1.5e-45 .. 3.4e+38

4 байта

7

Duble

5.0e-324 .. 1.7e+308

8 байт

15

Extended

3.4e-4932 .. 1.1e+4932

10 байт

19

Comp

-9.2e+18 .. 9.2e+18 

8 байт

19



СИМВОЛЬНЫЙ ТИП ДАННЫХ

Символьный тип Char занимает объем памяти равный 1 байту и может иметь значение одного символа из допустимого набора.

ЛОГИЧЕСКИЙ ТИП ДАННЫХ

Логический тип Boolean определяет те данные, которые могут принимать логические значения TRUE (истинна) и FALSE (ложь). Логический тип определен таким образом, что FALSE < TRUE. Это позволяет применять к булевским операндам все операции отношения. Данный тип занимает объем памяти равный 1 байту.
Подробнее о данном типе рассказывается в теме: Операции отношения. Логические операции.

АДРЕСНЫЙ ТИП ДАННЫХ

Адресный тип Pointer определяет переменные, которые могут содержать значения адресов данных или фрагментов программы. Для хранения адреса требуется 4 байта.
Работа с адресными переменными (указателями) рассказывается в теме: Работа с указателями.

Типы данных определяемые пользователем

Они включают: перечисляемый и интервальный типы.

ПЕРЕЧИСЛЯЕМЫЙ ТИП ДАННЫХ

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

Пример описания перечисляемого типа:

type

Rainbow=(RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET);

Теперь переменная с этого типа может принимать следующие значения: RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE и VIOLET.

Примечание: каждое значение является константой своего типа и может принадлежать только одному из перечисляемых типов. Т.е. если мы хотим записать новый тип, например Rainbow2, то он не должен содержать ни одной такой же константы: RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET.

ИНТЕРВАЛЬНЫЙ ТИП ДАННЫХ

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

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

Над переменными, относящимися к интервальному типу, могут выполняться все операции и применяться все стандартные функции, которые допустимы для соответствующего базового типа.

Пример описания интервального типа:

type

interval=0..50;

t=-100..100;

Это еще не все!

О структурных типах данных рассказывается в темах: Структурный тип данных ; Типы массив: общие сведения о массивах, одномерные и двумерные массивы ; Типы запись ; Объектные типы.

Также смотрите тему: Тождественные и совместимые типы.

Команды ввода и вывода.

Для вывода даных на экран или для записи в файл используют комнды: write (a1, a2, a3) и writeln (a1, a2, a3). Где a1, a2, a3 - переменные или константы. Также используют эти команды для вывода сообщений: текста или просто симвлов. Эти две команды различны между собой только тем, что после выполнеия команды write курсор не переходит на другую строку, а в команде writeln - переходит.

Пример вывода на экран сообщения:

write('Это сообщение...');

Для ввода даных используют комнды: read (a1, a2, a3) и readln (a1, a2, a3). Где a1, a2, a3 - переменные. Эти две команды также различны между собой только тем, что после выполнеия команды read курсор не переходит на другую строку, а в команде readln - переходит.

Пример ввода данных:

readln(a);

Операция присвоения

Операция присвоения имеет вид:

переменная := выражение;

Пример присвоения переменной m значение выражения 5+7:

m:=5+7;

Первая программа!!!

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

Теперь когда есть среда для программирования можно пробывать! Запускаем BP.EXE и в появившемся синем окне пишем код программы.

Пример1 Программа-приветствие: выводит на экран сообщение.

PROGRAM hello;

BEGIN

write(' * * * Hello * * *');

END.

Ну, понятно: используется только одна команда в которой нет ни одной переменной, а просто текст, поэтому раздел описания опущен (описывать нечего).

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

BEGIN

write(' * * * Hello * * *');

END.

Примечание: слова которые в коде программы выделяются белым цветом - ключевые. В данном примере это BEGIN и END. Также заметьте, что регистр букв не влияет, а также произвольное количество пробелов!

Пример2 Программа: считает сумму 5+7 и выводит на экран вот так: 5+7=12.

CONST

a=5;

b=7;

VAR

c:byte;

BEGIN

c:=a+b;

write(a,'+',b,'=',c);

END.

А тут уже используются константы a, b , которым сразу присвоили значения 5 и 7 соответственно. И одна переменная c типа byte. Действия которые выполняет программа: присваивает значение суммы переменной и выводит на экран данные и символы + и =.

Да, чуть не забыл. После того как Вы набрали код программы ее надо откомпилировать - в меню Compile или кнопкой F9. После этого появится не большое окошко с информацией, нажимите любую кнопку. Если окошко не появилось, то значит программа содержит ошибку и вверху появляется красная строка с указанием какая произошла ошибка. После успешной компиляции появляется файл Noname00 - это и будет полученная программа!

Операции в Паскале.

Операции подразделяются на арифметические операции,операции отношения, логические операции, операции со строками, операции над множествами, операцию @ (операция получения адреса).

АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ

Операция

Действие

Типы операндов

Тип результата

+

Сложение (сохранение знака)

Целый,
вещественный

Целый,
вещественный



Вычитание (отрицание знака)

Целый,
вещественный

Целый,
вещественный

*

Умножение

Целый,
вещественный

Целый,
вещественный

/

Деление

Целый,
вещественный

Вещественный,
вещественный

DIV

Целочисленное деление

Целый

Целый

MOD

Остаток

Целый

Целый

ОПЕРАЦИИ ОТНОШЕНИЯ И ЛОГИЧЕСКИЕ ОПЕРАЦИИ
О операциях отношений и логических операциях рассказывается в теме: Операции отношения, логические операции

ОПЕРАЦИИ СО СТРОКАМИ

Операция

Действие

Типы операндов

Тип результата

+

Конкатенация (склеивание)

Строковый, символьный

Строковый

ОПЕРАЦИИ НАД МНОЖЕСТВАМИ

Операция

Действие

Типы операндов

+

Объединение

Множества с совместимыми типами



Разность

Множества с совместимыми типами

*

Пересечение

Множества с совместимыми типами

ОПЕРАЦИЯ @ (ОПЕРЦИЯ ПОЛУЧЕНИЯ АДРЕСА)
О операции @ рассказывается в теме: Операция @


Операции отношения, логические операции.

ОПЕРАЦИИ ОТНОШЕНИЯ

Операция

Действие

Типы операндов

Тип результата

=

Равно

Совместимый простой, указатель, множественный строковый или упакованный строковый

Булевский

<>

Не равно

Совместимый простой, указатель, множественный строковый или упакованный строковый

Булевский

<

Меньше чем

Совместимый простой, указатель, множественный строковый или упакованный строковый

Булевский

>

Больше чем

Совместимый простой, указатель, множественный строковый или упакованный строковый

Булевский

<=

Меньше или равно

Совместимый простой, указатель, множественный строковый или упакованный строковый

Булевский

>=

Больше или равно

Совместимый простой, указатель, множественный строковый или упакованный строковый

Булевский

=>

Надмножество

Множества совместимых типов

Булевский

<=

Подмножество

Множества совместимых типов

Булевский

in

Элемент множества

Левый операнд: любой перечислимый t; правый: множество, совместимое с t

Булевский

ЛОГИЧЕСКИЕ ОПЕРАЦИИ

Операция

Действие

Типы операндов

Тип результата

not

Отрицание (битовое)

Целый

Целый

and

И (битовое)

Целый

Целый

or

ИЛИ (битовое)

Целый

Целый

xor

Исключающее ИЛИ (битовое)

Целый

Целый

shl

Сдвиг влево

Целый

Целый

shr

Сдвиг вправо

Целый

Целый

Составной оператор. Оператор условия - if

СОСТАВНОЙ ОПЕРАТОР
Составной оператор используется как один оператор, но он может содержать внутри несколько других операторов.

Составной оператор имеет вид:

begin

[оператор 1];

[оператор 2];

[оператор 3];

end;

begin и end; - ключевые слова или так же называются операторными скобками
[оператор 1]; [оператор 2]; [оператор 3]; - различные операторы.

Пример составного оператора приведен ниже.

ОПЕРАТОР УСЛОВИЯ
Условный оператор предназначен для выполнения какого-нибудь действия при выполнении определенного условия.

Условный оператор имеет вид:

if [условие] then [оператор 1] else [оператор 2];

[условие] - некоторое логическое выражение (например: a=5); [оператор 1] - простой или составной оператор, который выполняется только в том случае если [условие] - истинно (верно) [оператор 2] - простой или составной оператор, который выполняется только в том случае если [условие] - ложно (не верно)

Замечание!
  1. Так как простой и составной операторы выполняются как один оператор, то в дальнейшем они будут просто названы - оператор.
  2. Перед else символ ; (точка с запятой) не ставится.
  3. else [оператор 2]; - могут отсутствовать, если в этом нет необходимости.
    В таком случае условный оператор принимает вид:
  4. if [условие] then [оператор 1];

Пример13.1 Программа выводит пример 12+16= , а пользователь вводит ответ решения этого примера. А после этого программа проверяет: правильно ли ввел пользователь ответ, если правильно, то пишет "Ответ правильный!".

VAR

a:integer;

BEGIN

writeln('Решите этот пример и введите ответ:');

write('12+6=');

readln(a); {ввод ответа}

if a=12+6 then writeln('Ответ правильный!'); {это сам опреатор if}

END.

В данном примере при выполнении программы. если вы вводите число 18, то пишется "Ответ правильный!".

Пример13.2 В предыдущем примере условный оператор не использовал else [оператор 2];, а в этом примере будем. Напишем ту же программу и добавим, что если ответ введен не верно, то программа напишет "Ответ не верный!"

VAR

a:integer;

BEGIN

writeln('Решите этот пример и введите ответ:');

write('12+6=');

readln(a);

if a=12+6 then writeln('Ответ правильный!')

else writeln('Ответ не верный!');

END.

Теперь если вы вводите число 18, то пишется "Ответ правильный!", а если другое число, то пишется "Ответ не верный!".

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

VAR

a:integer;

BEGIN

writeln('Решите этот пример и введите ответ:');

write('12+6=');

readln(a);

if a=12+6 then writeln('Ответ правильный!') else

begin {начало составного оператора}

writeln('Ответ не верный!');

writeln('Правильный ответ - ', 12+6);

end; {конец составного оператора}

END.

Теперь если вы вводите число 18, то пишется "Ответ правильный!", а если другое число, то пишется две строчки "Ответ не верный!" и "Правильный ответ - 18".


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

Оператор выбора имеет вид:

case [выражение или переменная] of

[константа1]: [оператор 1];

[константа2]: [оператор 2];

[константа3]: [оператор 3]

else [оператор 4];

end;

[выражение или переменная] - выражение или переменная.
[константа]: - произвольное количество значений или диапазонов, отделенных друг от друга запятыми, того же типа что и [выражение или переменная]. Диапазон значений записывается в виде: min..max , где min - минимальное значение, а max - максимальное.
[оператор 1]; [оператор 2]; [оператор 3]; [оператор 4] - операторы.

Действует этот оператор так: значение [выражение или переменная] сравнивается со значением [константа1], если эти значения равны, то выполняется [оператор 1]. Если не равны, то сравнивается следующая [константа2]. Если ни одно значение [константа] не равно значению [выражение или переменная], то выполняется [оператор 4] идущий после слова else.

Замечание!
Как и в условном операторе - if, слова else [оператор 4];, могут отсутствовать. В таком случае если значения [выражение или переменная] и [константа] не совпадают, то выполняется следующий оператор, идущий после оператора выбора -case.


Пример14.1 При запуске программы, требуется ввести число от 1 до 7. Затем программа напишет какой это день недели.

VAR

a:integer;

BEGIN

writeln('Введите число от 1 до 7:');

readln(a); {ввод числа}

case a of {начало оператора выбора}

1: writeln('Понедельник.');

2: writeln('Вторник.');

3: writeln('Среда.');

4: writeln('Четверг.');

5: writeln('Пятница.');

6: writeln('Суббота.');

7: writeln('Воскресенье.');

end; {конец оператора выбора}

END.

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

Пример14.2 А эта программа показывает как можно использовать оператор выбора при разработке меню.

VAR

a,b,c:integer;

BEGIN

writeln('Введите число A:'); readln(a);

writeln('Введите число B:'); readln(b);

writeln('Введите номер действия, которое вы хотите произвести с этими числами:');

writeln('1 - получить сумму = A+B'); {вывод меню - три действия}

writeln('2 - получить разность = A-B');

writeln('3 - получить разность = B-A');

case a of {начало оператора выбора}

1: writeln('A+B=', A+B);

2: writeln('A-B=', A-B);

3: begin

A:=B-A;

writeln('A-B=', A);

end;

end; {конец оператора выбора}

END.

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

Пример14.3 А это пример программы показывает как можно использовать интервальный тип в операторе выбора.

VAR

a,b,c:integer;

BEGIN

writeln('Введите число A:'); readln(a);

case a of {начало оператора выбора}

1..10: writeln('Введеное число в диапазоне 1-10');

11..20: writeln('Введеное число в диапазоне 11-20');

21..30: writeln('Введеное число в диапазоне 21-30');

31..80: writeln('Введеное число в диапазоне 31-80')

else writeln('Введеное число не попадает в диапазон 1-80');

end; {конец оператора выбора}

END.

В данном примере если вы вводите число от 1 до 80, то программа выведет в какой диапазон значений оно попадает, а если введеное число меньше 1 или больше 80, то программа пишет что число не попадает в диапазон 1-80.

Оператор цикла "пока" - while

Оператор цикла "пока" имеет вид:

while [выражение] do [оператор];

[выражение] - условие продолжения цикла, это выражение булевского типа т.е. данное выражение должно иметь только одно из двух значений: TRUE (истина) или FALSE (ложь).
[оператор]: - оператор, который будет выполняться столько раз, пока [выражение] не будет иметь значение FALSE.

Примечание: данный цикл также называют циклом с предусловием (постповеркой).

Пример15.1 Допустим нам надо вывести в столбик на экран 10 символов * . Для этого можно было использовать вот такой код записи прогаммы:

BEGIN

writeln('*');

writeln('*');

writeln('*');

writeln('*');

writeln('*');

writeln('*');

writeln('*');

writeln('*');

writeln('*');

writeln('*');

END.

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

VAR

a: integer; {переменная целого типа для счетчика повторов}

BEGIN

a:=0; {начальное значение}

while a<10 do {проверка выражения}

begin {начало составного оператора}

writeln('*'); {напечатать символ *}

a:=a+1; {увеличить значение счетчика}

end; {конец составного оператора}

END.

Теперь как эта программа работает. Сначала значение счетчика равно ноль, затем в операторе while проверяется выражение: a<10. Так как a=0 то выражение a<10 имеет значение TRUE (верно), поэтому выполняется составной оператор. В нем выполняется вывод символа * и увеличение значения счетчика на единицу (так как символ уже напечатался). Теперь значение a=1 т.е. цикл продолжает выполняться дальше. И вот когда a=10 опять проверяется выражение: a<10. Значение этого выражения FALSE (ложь), поэтому составной оператор больше не выполнется.

Пример15.2 А теперь программа, которая не будет выполняться дальше, пока не будет введено правильное слово:

VAR

s: string; {переменная s - строкового типа (для ввода любых символов)}

BEGIN

while s<>'www.pascalstudy.narod.ru' do {проверка выражения}

begin

s:=''; {значение s = ничего}

write('Введите нужное слово:');

readln(s); {получение значения s}

end;

writeln('Вы ввели верное слово!');

END.

Последняя строка напишется только в том случае если вы введете правильное слово: www.pascalstudy.narod.ru В этом примере при выполнении программы, вы можете ввести два числа, а затем проделать над ними 3 операции, выбрав одну из них в меню т.е. программа похожа на самый простой калькулятор. Если вы заметили, то в третьей константе был использован составной оператор, где было использовано только две команды: присвоение и вывод. Таким образом можно составлять очень большие меню, которые тоже могут содержать оператор выбора.


Оператор цикла "до" - repeat

Оператор цикла "до" имеет вид:

repeat

[оператор1];

[оператор2];

[оператор3];

until [выражение];

[оператор] - оператор, который будет выполняться один и более раз, пока [выражение] не станет истинным.
[выражение] - условие окончания цикла, это выражение булевского типа т.е. данное выражение должно иметь только одно из двух значений: TRUE (истина) или FALSE (ложь).

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

Пример16.1 Программа, в которой 20 раз выводится символ "@".

VAR

x:word;

BEGIN

x:=0; {начальное значение счетчика}

repeat {начало цикла "до"}

writeln('@'); {напечатать символ}

x:=x+1; {увеличить счетчик - x}

until x=20; {цикл закончится если x=20}

END.

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

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

for [переменная]:=[значение1] to [значение2] do [оператор];

[переменная] - переменная которая будет изменяться, эта переменная счетчик повторения цикла
[значение1] - начальное значение [переменной]
[значение2] - значение до которого может увеличиваться (уменьшаться) [переменная] т.е. когда [переменная]=[значению2] цикл прекращается.

Примечание: вместо [значения1] и [значения2] может стоять выражение или переменная.
Если значение [переменной] в самом цикле изменяться не будет, то после выполнения [оператора] значение переменной увеличивается на единицу.

Пример16.2 Как и предыдущая программа, в которой 20 раз выводится символ "@", но еще с указанием номера символа.

VAR

x:word;

BEGIN

for x:=1 to 20 do writeln(x,' @'); {весь цикл}

END.

В данной программе начальное значение переменной x=1. Цикл будет выводить на экран значение самой переменной - x и символ - '@' до тех пор пока x не будет равно 20 т.е. цикл будет выполняться 20 раз.

Второй вид цикла с параметром имеет вид:

for [переменная]:=[значение1] downto [значение2] do [оператор];

Как можно заметить, этот вид оператора цикла с параметром отличается только ключевым словом - downto. Данное ключевое слово означает, что значение [переменной] после выполнения [оператора] будет уменьшаться на единицу.

Пример16.3 Программа, которая выводит цифры от 9 до 0.

VAR

x:word;

BEGIN

for x:=9 downto 0 do writeln(x);

END.

Раздел описания процедур и функций

Итак, когда-то я рассказывал о структуре программы на языке Паскаль ( Структура программы языка Турбо Паскаль), теперь пришло время доконца изучить раздел описания.

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

ОПИСАНИЕ ПРОЦЕДУР
Процедура - это независимая именованная часть программы, которую можно вызвать по имени для выполнения определенных действий т.е. процедура это вспомогательная программа (подпрограмма).

Структура описания процедуры, почти такая же как и структура самой программы:

PROCEDURE [имя][параметры];

[необязательный оператор USES];

[раздел описания];

BEGIN

[команды];

END;

[имя] - имя процедуры
[параметры] - их не обязательно указывать если их нет, если они есть, то записываются они в таком виде: (var [переменная]:[тип]). Переменных и типов может быть много. Короче [параметры] записываются также как и