Green Brown Cyan LightGray 20 глава




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

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

2. Раздел описания модулей используемых библиотек. Состоит из служебного слова Uses и списка имен модулей разделенных запятыми;

3. Раздел описания меток. Состоит из служебного слова Label и списка имен меток;

4. Раздел описания констант. Состоит из служебного слова Const и списка констант;

5. Раздел описания типов данных. Состоит из служебного слова Type, имени вновь создаваемого типа и перечня возможных значений для переменных нового типа;

6. Раздел описания переменных. Состоит из служебного слова Var,

списка переменных, относящихся к одному типу;

7. Раздел описания подпрограмм. Состоит из описаний процедур и функций. Описание каждой процедуры начинается со слова Procedure. Описание каждой функции начинается со слова Function.

8. Описание тела программы. Состоит из:

служебного слова begin

списка операторов разделенных точками с запятой;

служебного слова end, которым завершается программа. После end обязательно ставится точка.

В простых программах некоторые разделы могут отсутствовать.

 

 

7.3. Начинаем программировать на Паскале

7.3.1. Первая программа на Паскале

Пусть программа должна будет вывести на экран Вашего компьютера какой-либо осмысленный текст, например, такой: «Моя первая программа». Создадим файл для новой программы командой File→New, дадим ему имя “ pervprog.pas ” с помощью команды File→Save as. Необходимая для этого последовательность действий подробно описана в разделе 7.2. По умолчанию система программирования обычно сохраняет файлы программ в том же подкаталоге bin, в котором находятся системные файлы. При неправильной работе программы, могут быть повреждены или уничтожены системные файлы. Поэтому лучше создать в каталоге tp7, содержащем файлы системы Турбо Паскаль, специальный подкаталог для вновь создаваемых программ, назвав его, например prog. Создание подкаталога (папки) следует произвести до входа в систему программирования средствами операционной системы Windows.

Далее вводится построчно текст программы с клавиатуры компьютера (рис. 7.3.1). Место, куда пользователь вводит очередной символ, отмечается специальной меткой, называемой курсором и имеющей форму горизонтальной черты. Ввод очередной строки завершается нажатием клавиши Enter. После этого курсор переходит на следующую строку. Если при наборе программы пользователь сделал опечатку, то неверный символ можно удалить, нажав клавишу Backspace, стирающую символ находящийся слева от курсора, а для удаления символа, на котором установлен курсор в данный момент, нужно нажать клавишу Delete. Следует обратить внимание на следующее: ряд служебных слов (в частности слова program, begin и end) в случае их правильного написания выделяется на синем фоне экрана белым цветом в отличие от остального текста, имеющего желтый цвет.

Текст введенной программы показан на рис.7.3.1. Программа имеет имя – pervprog. Раздел объявлений в данной программе отсутствует, так как в ней не задействована ни одна переменная, а используемая константа не имеет собственного имени. Перед основной частью программы обязательно ставится служебное слово begin (начало). В самой же основной части содержится единственный оператор. Это оператор вывода, который состоит из служебного слова writeln и выводимой на экран компьютера информации, заключенной в скобки. Эта информация в данном случае состоит из одного элемента – текста, расположенного между апострофами (одиночными кавычками).

Такие тексты в Паскале называются строковыми константами или просто строками. Строка может содержать любые символы (включая буквы русского алфавита) кроме апострофа. При выполнении оператора writeln эта строка выводится на экран компьютера, причем ограничивающие ее апострофы не выводятся, а затем курсор перемещается на следующую строку. Программа обязательно заканчивается служебным словом end (конец), после которого ставится точка – признак конца программы.

Когда ввод текста программы завершен и программа записана в долговременную память компьютера, ее можно запускать на выполнение. Это действие можно произвести двумя способами. Первый - вначале с помощью команды Compile (компиляция), находящейся в одноименном разделе меню, создается исполняемый файл с расширением exe. Затем он запускается на выполнение штатными средствами операционной системы Windows. Второй - воспользоваться для запуска программы командой Run в одноименном разделе меню. Эта команда осуществляет компиляцию файла и затем сразу запускает его на выполнение. Ту же самую операцию можно выполнить, нажав сочетание клавиш Ctrl+F9.

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

Error 5: Syntax error (это означает просто «синтаксическая ошибка»)

Если же Вы забыли поставить заключительную точку после служебного слова end, то на экране компьютера можно будет прочитать следующее сообщение:

Error 10: Unexpected end of file (неправильный конец файла)

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

Для просмотра результатов следует воспользоваться командой Output (Вывод) из раздела меню Debug. Слово Debug в переводе на русский язык означает «отладка», но этот раздел содержит не только команды связанные непосредственно с отладкой программы, но и команды просмотра полученных результатов. При выполнении команды Output на экране компьютера ниже текста программы появится дополнительное окно с результатами работы (рис. 7.3.). В верхней правой части окна видна цифра 2 – порядковый номер этого окна. Номер 1 имеет окно с исходным текстом программы. Итак, мы вывели требуемый текст на экран компьютера.

Если результаты необходимо просмотреть в полноэкранном режиме, а не в окне вывода, то необходимо выполнить команду User screen (экран пользователя) из того же раздела меню Debug либо нажать сочетание клавиш Alt + F5. Можно развернуть во весь экран и окно, выводимое командой Output, щелкнув мышью стрелку в верхнем правом углу данного окна. Для того чтобы от экрана с результатами вернуться к экрану с исходным текстом программы следует нажать любую алфавитно-цифровую клавишу.


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

 

Наряду с оператором Writeln для вывода информации на экран компьютера можно использовать также другой оператор вывода – Write. Этот оператор действует подобно оператору Writeln, но особенность оператора Write заключается в том, что после его выполнения курсор не перемещается на следующую строку, а остается в той же строке, в которой выводилась информация. Информация, заключенная в операторах Write или Writeln в скобках называется списком вывода. Такой список может включать в себя один или несколько элементов, которые могут быть как константами подобно тексту в нашей программе, так и переменными. Элементы списка вывода внутри скобок отделяются друг от друга запятыми и выводятся при выполнении оператора на экран в той последовательности, в которой они перечислены в самом операторе.

 

7.3.2. Цветовое оформление результатов

Окно с результатами работы программы необязательно должно быть “черно-белым”. Текст может выводиться различными цветами. Цветным может быть и фон, на котором выводится текст. Для этого необходимо использовать модуль Crt, входящий в состав системы программирования. Модулем называется блок, входящий в состав стандартной библиотеки системы Турбо Паскаль и обеспечивающий дополнительные возможности системы при создании программ. По умолчанию при запуске системы в оперативную память загружается только модуль System. Для подключения других модулей необходимо дать специальную команду. В частности, для подключения модуля Crt первой командой программы, находящейся сразу после заголовка, должна быть команда Uses Crt. Цвет символов задается с помощью команды TextColor. После служебного слова TextColor в скобках указывается цвет символов. Всего в Турбо Паскале используется 16 стандартных цветов. Вот их названия:

Black – черный Blue - синий

Green – зеленый Cyan - бирюзовый

Red - красный Magenta - фиолетовый

Brown – коричневый LightGray – светло-серый

DarkGray – темно-серый LightBlue - голубой

LightGreen – светло-зеленый LightCyan – светло-бирюзовый

LightRed – светло-красный LightMagenta – светло-фиолетовый

Yellow – желтый White – белый

 

Для задания цвета фона используется команда TextBackground. Формат ее аналогичен команде TextColor, но эта команда позволяет использовать только 8 цветов:

Black Red Blue Magenta

Green Brown Cyan LightGray

Цвета в командах TextColor и TextBackground можно обозначать не только вышеуказанными словами, но и числами. В некоторых случаях использование чисел даже удобнее. Для кодирования цветов используются следующие числа:

0 – черный 6 – коричневый 12 – светло-красный

1 – синий 7 – светло-серый 13 – светло-фиолетовый

2 – зеленый 8 – темно-серый 14 – желтый

3 – бирюзовый 9 – голубой 15 – белый

4 – красный 10– светло-зеленый 128 – мерцание

5 – фиолетовый 11– светло-бирюзовый

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

Textcolor(lightgreen);

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

Textcolor (10);

если же мы используем команду

Textcolor (10+128);

то текст будет выводиться светло-зеленым цветом и при этом будет мерцать.

Составим программу, которая выводит на светло-сером фоне следующий текст (рис. 7.3.2):

Эта программа представляет собой

пример использования

цветовой палитры

системы программирования Turbo Pascal 7.0

Первая строка этого текста будет выведена красным цветом, вторая – зеленым, третья – синим, а четвертая – желтым. Обратите внимание, что операторы в программе отделяются друг от друга точкой с запятой. В начале программы для очистки экрана дается команда ClrScr. Эта команда также работает только в том случае, если в программе подключен модуль Crt. Далее, командой TextBackground задается фон текста. Перед выводом очередной строки текста командой TextColor предварительно указывается ее цвет, а затем сам этот текст выводится оператором Writeln.

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

 


 

 


Рис. 7.3.2. Программа, демонстрирующая возможности цветового оформления

 

В программе на рис. 7.3.3 использовались словесные наименования цветов выводимых строк. Для обозначения цветов можно использовать числовые коды. Например, команда TextColor(3+128) определяет бирюзовый цвет текста, задаваемый цифрой 3, к которой добавлено слагаемое 128, обеспечивающее эффект мерцания.

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

Для того чтобы, просмотреть тексты ранее созданных и хранящихся в каталоге prog следует использовать имеющуюся в разделе меню File команду Open (открыть). После выполнения этой команды открывается диалоговое окно. Найдя нужный каталог можно затем открыть для просмотра любой интересующий Вас из ранее созданных файлов с исходным текстом программы на Паскале. Для этого нужно выделить файл и нажать клавишу Enter. В случае необходимости программист может внести в данную программу определенные изменения, а затем проверить работоспособность нового варианта программы, запустив ее на выполнение.

7.3.3. Программы линейной структуры

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

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

Итак, программа (рис. 7.3.3) будет выглядеть следующим образом: после заголовка программы – summa. Затем идет раздел описания переменных, который начинается со служебного слова var (сокращение от английского variable – переменная). После служебного слова через запятую перечисляются сами переменные, используемые в программе и после двоеточия указывается тип этих переменных – integer (целые).



Рис. 7.3.3. Программа, складывающая два числа и результат ее работы

 

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

Error 3: Unknown identifier (неизвестная переменная)

и программа не будет работать до тех пор, пока Вы не исправите ошибку, описав недостающую переменную в разделе описаний после слова var.

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

 

Типы данных

Целые числа имеют следующие типы:

Byte - диапазон от 0 до 255;

Shortint - диапазон от -128 до 127;

Integer - диапазон от -32768 до 32767;

Word - диапазон от 0 до 65535;

Longint - диапазон от -2147483648 до 2147483647.

 

Вещественные числа имеют следующие типы:

Real - диапазон от -2.9*10-39 до 1.7*1038;

Single - диапазон от -1.5*10-45 до 3.4*1038;

Double - диапазон от -5.0*10-324 до 1.7*10308;

Extended - диапазон от -1.9*10-4951 до 1.1*104932.

 

Одиночные символьные переменные имеют тип Char.

Строковые символьные переменные имеют тип String. Могут содержатьдо 255 символов.

Логические переменные имеют тип Вооlean. Могут принимать только два значения True (истина) и False (ложь).

 

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

Общий вид оператора присваивания в языке Паскаль имеет вид: <имя_переменной >:=< присваиваемая величина>;

Присваиваемая величина, может быть числом, переменной или арифметическим выражением. При выполнении оператора присваивания вначале вычисляется арифметическое выражение, и полученное значение присваивается переменной, стоящей в левой части оператора.

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

В операторе присваивания после имени переменной обязательно должно стоять двоеточие. Если пропустить в записи оператора двоеточие, то получится не оператор присваивания, а операция сравнения. (Операции сравнения мы будем изучать позже в разделе «Условные операторы»). Запись x:=x+5 в Паскале является правильной. Эта запись означает, что переменной x присваивается новое значение, которое больше чем старое значение этой же переменной на 5. Например, если до выполнения операции присваивания значение x было равно 3, то после ее выполнения значение x станет равным 8.

В нашей программе мы присваиваем переменным a и b конкретные числовые значения – 5 и 10. Далее мы присвоим переменной с значение выражения a+b, то есть в переменной c будет соответствовать значение суммы двух чисел. Теперь осталось вывести это значение на экран компьютера, что мы сделаем с помощью уже знакомого нам оператора Writeln. Следует, однако, учесть, что в этом случае оператор Writeln используется иначе, чем при выводе текста. Во-первых, имя переменной в отличие от текстовой строки не заключается в апострофы (хотя скобки нужно обязательно ставить и в этом случае). Во-вторых, при выполнении оператора вывода на экране мы увидим не имя переменной, а ее текущее значение. Оператор вывода в программе будет записан следующим образом:

Writeln(c);

В результате же выполнения оператора на экран будет выведена сумма, содержащаяся в переменной c – число 15.

Эта программа (как и предыдущие) состоит из операторов, которые выполняются последовательно друг за другом. Такие программы называются программами линейной структуры.

Изменим программу таким образом, чтобы она складывала любые два произвольных числа, которые пользователь должен вводить с клавиатуры компьютера. Для этого нужно будет использовать оператор ввода Readln. Он состоит из служебного слова Readln и списка ввода, заключенного в скобки. Правда в отличие от списка вывода операторов Write и Writeln в списке ввода могут содержаться только имена переменных. В данной программе будут использованы два оператора Readln, каждый из которых в списке ввода содержит по одной переменной:

Readln(a);

Readln(b);

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

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

Writeln ('введите 2 числа');

Writeln ('после ввода каждого числа нажимайте клавишу Enter');

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


 

 

 


Рис. 7.3.4. Усовершенствованная программа сложения двух чисел и результат работы программы сложения

 

В конец программы внесены еще 2 дополнения. В список вывода оператора Writeln вставлен еще один элемент – текст, поясняющий полученный результат. Список вывода, таким образом, будет состоять из двух элементов, причем текст будет выводиться в неизменном виде, а для переменной будет выведено не ее имя, а ее числовое значение. Кроме этого, после оператора вывода добавлен еще один «пустой» оператор ввода Readln. Этот оператор приостанавливает окончание работы программы до тех пор, пока не будет нажата клавиша Enter, то есть у пользователя появляется возможность сразу ознакомиться с результатами выполнения программы, которые теперь не исчезают с экрана. Не нужно будет после запуска программы на выполнение специально открывать раздел меню Debug и пользоваться командами User screen или Output, чтобы увидеть, что же получилось в итоге работы программы.

 

Арифметические выражения и операции

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

+ сложение; - вычитание; * умножение; / деление;

div - целочисленное деление; mod - нахождение остатка от целочисленного деления.

Первые четыре операции выполняются так же, как в обычной арифметике. Единственное, на что следует обратить внимание: знаки умножения и деления отличаются по написанию (вместо принятых в математике знаков. Кроме того, знак умножения между сомножителями нельзя опускать, как это часто делается в математике. Запись ab, которая в математике может обозначать произведение двух чисел a и b, компилятором языка Паскаль будет воспринята как имя переменной, состоящее из двух букв, что приведет к ошибке в работе программы. Что же касается целочисленного деления, то оно выполняется как обычное, но затем отбрасывается дробная часть получившегося при делении числа. Операции div и mod выполняются только над переменными и константами целого типа.

Пример использования действий div и mod:

значение выражения 91 div 8 равно 11;

значение выражения 91 mod 8 равно 3.

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

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

5 + 3*(7+2) – 40 div 4

Прежде всего, вычисляется выражение, находящееся в скобках – его значение равно 9. Затем слева направо выполняются следующие действия: умножение выражения в скобках на 3 (получаем 27) и целочисленное деление (получаем 10). На завершающем этапе складываем 5 и 27 и вычитаем из суммы 10. В итоге получаем конечный результат – 22.

Говоря об арифметических выражениях, необходимо отметить также следующее: хорошо знакомый нам оператор Writeln может выводить не только тексты и значения переменных, но и значения арифметических выражений, в которые могут входить переменные и константы. Эти выражения в операторе Writeln записываются подобно именам переменных в скобках, но без кавычек. Компьютер вначале подсчитает значение выражения, а затем покажет получившийся результат на экране. Например, если мы в какой-либо программе присвоим переменным x и y значения 20 и 30, а затем оператором Writeln выведем на экран компьютера выражение x+y:

x:=20;

у:=30;

writeln(x+y);

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

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

7.3.4. Использование вещественных чисел

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

Вещественные числа в Паскале можно записывать двумя способами – в виде с фиксированной точкой и в виде с плавающей точкой. Запись с фиксированной точкой похожа на обычную запись десятичной дроби в математике, только целая часть от дробной отделяется не запятой, а точкой. Например, число 10,23 в виде с фиксированной точкой записывается как 10.23.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: