Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование на языке высокого уровня Паскаль. Учебное пособие для СПО

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
4. Операции отношения: =, <, >, <>, <=, >=, in.
Функции, используемые в выражении, вычисляются в первую очередь.
ВНИМАНИЕ Константа и переменная являются частными случаями выражения.
Примеры выражений:
t + sin(x)/2 * x — результат имеет вещественный тип; a <= b + 2 — результат имеет логический тип; (x > 0) and (y < 0) — результат имеет логический тип.
Порядок вычисления первого выражения такой: сначала выполняется обращение к стандартной функции sin и результат делится на 2, затем получившееся число умножается на x, и только после этого выполняется сложение с переменной t. Скобки в третьем выражении необходимы по той причине, что приоритет операций отношения ниже, чем логической операции and .
Структура программы
Программа на Паскале состоит из заголовка, разделов описаний и раздела операторов.
program имя; { заголовок – не обязателен } разделы описаний begin раздел операторов end. (* программа заканчивается точкой *)
Программа может содержать комментарии, заключенные в фигурные скобки { } или в скобки вида (* *). Комментарии служат для документирования программы — компилятор их игнорирует, поэтому на их содержимое никаких ограничений не накладывается. Операторы отделяются друг от друга символом ; (точка с запятой).
В разделе операторов записываются исполняемые операторы
Программирование на я зыке высокого уровня ПаскальТ.А. Павловская
21
или блок. Блок может записываться в любом месте программы, где допустим обычный оператор.
Разделы описаний бывают нескольких видов: описание модулей, констант, типов, переменных, меток, процедур и функций. Модуль — это подключаемая к программе библиотека ресурсов (подпрограмм, констант и т. п.).
Раздел описания модулей, если он присутствует, должен быть первым. Описание начинается с ключевого слова uses, за которым через запятую перечисляются все подключаемые к программе модули, как стандартные, так и собственного изготовления, например:
uses crt, graph, my_module;
Количество и порядок следования остальных разделов произвольны, ограничение только одно: любая величина должна быть описана до ее использования. Признаком конца раздела описания является начало следующего раздела. В программе может быть несколько однотипных разделов описаний.
В разделе описания переменных необходимо определить все переменные, которые будут использоваться в основной программе. Раздел описания констант служит для того, чтобы вместо значений констант можно было использовать в программе их имена. Такие константы называют именованными, например:
const MaxLen = 100; g = 9.8; koeff = 5;
Применение именованных констант при осмысленном выборе имен улучшает читабельность программы и облегчает внесение в нее изменений. А еще в разделе описания констант описываются переменные, которым требуется присвоить значение до начала работы программы:
const weight : real = 61.5;
Синтаксически такая переменная отличается от константы наличием типа. Впоследствии ею можно пользоваться так же, как и другими
Программирование на я зыке высокого уровня ПаскальТ.А. Павловская
22
Синтаксически такая переменная отличается от константы наличием типа. Впоследствии ею можно пользоваться так же, как и другими переменными.
Раздел описания меток начинается с ключевого слова label, за которым через запятую следует перечисление всех меток, встречающихся в программе. Метки служат для организации перехода на конкретный оператор с помощью оператора безусловного перехода
goto. Метка — это либо имя, либо положительное число, не
превышающее 9999. Метка ставится перед любым исполняемым оператором и отделяется от него двоеточием:
label 1, 2, error;
Оператор присваивания
Присваивание — это занесение значения в память. В общем виде оператор присваивания записывается так:
переменная := выражение
Здесь символами := обозначена операция присваивания. Механизм выполнения оператора присваивания такой: вычисляется выражение и его результат заносится в память по адресу, который определяется именем переменной, находящейся слева от знака операции:
переменная <- выражение
Примеры операторов присваивания:
a := b + c / 2; b := a; a := b; x := 1; x := x + 0.5;
Обратите внимание: b := a и a := b — это совершенно разные действия!
Программирование на я зыке высокого уровня ПаскальТ.А. Павловская
23
данных 'налево'.
Правая и левая части оператора присваивания должны быть совместимы по присваиванию (о совместимости мы поговорим в конце третьей лекции). Например, выражение целого типа можно присвоить вещественной переменной.
Процедуры ввода-вывода
Любая программа при вводе исходных данных и выводе результатов взаимодействует с внешними устройствами. Совокупность стандартных устройств ввода и вывода, то есть клавиатуры и экрана дисплея, называется консолью. Обмен данными с консолью является частным случаем обмена с внешними устройствами.
Ввод с клавиатуры
Для ввода с клавиатуры определены процедуры read и readln.
read(список); readln[(список)];
В скобках указывается список имен переменных через запятую. Квадратные скобки указывают на то, что список может отсутствовать. Например:
read(a, b, c); readln(y); readln;
Вводить можно целые, вещественные, символьные и строковые величины. Вводимые значения должны разделяться любым количеством пробельных символов (пробел, табуляция, перевод строки).
Ввод значения каждой переменной выполняется так.
1. Значение переменной выделяется как группа символов, расположенных между разделителями.
Программирование на я зыке высокого уровня ПаскальТ.А. Павловская
24
1. Значение переменной выделяется как группа символов, расположенных между разделителями.
2. Эти символы преобразуются во внутреннюю форму представления, соответствующую типу переменной.
3. Значение записывается в ячейку памяти, определяемую именем переменной.
Например, при вводе вещественного числа 3.78 в переменную типа
real оно преобразуется из четырех символов (3, 'точка', 7 и 8) в
шестибайтовое представление в виде мантиссы и порядка.
Процедура readln после ввода всех значений выполняет переход на следующую строку исходных данных. Иными словами, если в следующей части программы есть ввод, он будет выполняться из следующей строки исходных данных. При использовании процедуры
read очередные исходные данные будут взяты из той же строки.
Процедура readln без параметров просто ожидает нажатия клавиши Enter.
Особенность ввода символов и строк состоит в том, что пробельные символы в них ничем не отличаются от всех остальных, поэтому разделителями являться не могут. Например, пусть определены переменные
var a : integer; b : real; d : char;
и в программе есть процедура ввода read(a, b, c). Допустим, переменной а надо задать значение, равное 2, переменной b — 3,78, а в c записать символ #. Любой вариант расположения исходных данных приведет к неверному результату, потому что после второго числа требуется поставить пробельный символ для того, чтобы его можно было распознать, и этот же символ будет воспринят как значение переменной c.
Правильным решением является ввод чисел и символов в разных процедурах и размещение символов в отдельной строке, например:
Программирование на я зыке высокого уровня ПаскальТ.А. Павловская
25
Ввод данных выполняется через буфер — специальную область оперативной памяти. Фактически данные сначала заносятся в буфер, а затем считываются оттуда процедурами ввода. Занесение в буфер выполняется по нажатию клавиши Enter вместе с ее кодом ( #13 #10 ). Процедура read, в отличие от readln, не очищает буфер, поэтому следующий после нее ввод будет выполняться с того места, на котором закончился предыдущий, то есть начиная с символа конца строки.
read(a); { считывается целое } write('Продолжить? (y/n) '); readln(c); { вместо ожидания ввода символа считывается символ #13 из предыдущего ввода }
Чтобы избежать подобной ситуации, следует вместо read использовать readln.
Вывод на экран
При выводе выполняется преобразование из внутреннего представления в символы, выводимые на экран. Для этого определены стандартные процедуры write и writeln.
write(список); writeln[(список)];
Процедура write выводит указанные в списке величины на экран, а
writeln вдобавок к этому переводит курсор на следующую строку.
Процедура writeln без параметров просто переводит курсор на следующую строку.
Выводить можно величины логических, целых, вещественных, символьного и строкового типов. В списке могут присутствовать не только имена переменных, но и выражения, а также их частный случай — константы. Кроме того, для каждого выводимого значения можно задавать его формат, например:
writeln('Значение a = ', a:4, ' b = ', b:6:2, sin(a) + b);
Рассмотрим этот оператор подробно (переменные a и b описаны выше). В списке вывода пять элементов, разделенных запятыми. В
Программирование на я зыке высокого уровня ПаскальТ.А. Павловская
26
Рассмотрим этот оператор подробно (переменные a и b описаны выше). В списке вывода пять элементов, разделенных запятыми. В начале записана строковая константа в апострофах, которая выводится без изменений, со всеми пробелами. В непосредственной близости от нее будет выведено значение целой переменной a. После имени переменной через двоеточие указано количество отводимых под нее позиций, внутри которых значение выравнивается по правому краю.
Третьим элементом списка является строковая константа, поясняющая расположенное после нее значение переменной b. Для b указаны две форматные спецификации, означающие, что под эту переменную отводится всего шесть позиций, причем две из них — под дробную часть (еще одна позиция будет занята десятичной точкой, итого на целую часть остается три позиции).
Последний элемент списка вывода — выражение, значение которого будет выведено в форме по умолчанию (с порядком):
Значение a = 2 b = 3.78 4.6892974268E+00
Теперь, когда мы познакомились с примером, можно сформулировать общие правила записи процедур вывода.
Список вывода разделяется запятыми. Список содержит выражения, а также их частные случаи — переменные и константы логических, целых, вещественных, символьного и строкового типов. После любого значения можно через двоеточие указать формат, то есть количество отводимых под него позиций. Если значение короче, оно 'прижимается' к правому краю отведенного поля, если длиннее, поле 'раздвигается' до необходимых размеров. Для вещественных чисел можно указать второй формат, указывающий, сколько позиций из общего количества отводится под дробную часть числа. Необходимо учитывать, что десятичная точка также занимает одну позицию. Если второй или оба формата не указаны, вещественное число выводится в форме с порядком. Если форматы не указаны, под целое число, символ и строку отводится минимально необходимое для их представления
Программирование на я зыке высокого уровня ПаскальТ.А. Павловская
27
Форматы могут быть выражениями целого типа.
Теперь наконец-то мы изучили достаточно материала, чтобы с полным пониманием написать первую законченную программу.
Пример. Программа, которая переводит температуру в градусах по Фаренгейту в градусы Цельсия по формуле: С = 5/9 (F – 32), где C — температура по Цельсию, а F — температура по Фаренгейту.
program temperature; var fahr, cels : real; { 1 } begin writeln('Введите температуру по Фаренгейту'); { 2 } readln(fahr); { 3 } cels := 5 / 9 * (fahr – 32); { 4 } writeln('По Фаренгейту: ', fahr:6:2, ' в градусах Цельсия: ', cels:6:2); { 5 } end.
Для хранения исходных данных и результатов требуется выделить место в памяти. Это сделано в операторе 1. Для переменных fahr и cels выбран вещественный тип real. Оператор 2 представляет собой приглашение ко вводу данных.
Ввод выполняется в операторе 3 с помощью процедуры readln. В операторе 4 вычисляется выражение, записанное справа от операции присваивания, и результат присваивается переменной cels. При вычислении целые константы преобразуются компилятором в вещественную форму. В пятом операторе выводятся исходное и рассчитанное значение с соответствующими пояснениями.
Программирование на я зыке высокого уровня ПаскальТ.А. Павловская
28
Управляющие операторы языка
Рассматриваются управляющие операторы языка (ветвления, циклы, передача управления).
Презентацию к данной работе Вы можете скачать здесь скачать: http://old.intuit.ru/department/pl/prinpas/2/Pascal_2.zip.
В теории программирования доказано, что программу для решения задачи любой сложности можно составить только из трех структур, называемых следованием, ветвлением и циклом. Следованием называется конструкция, представляющая собой последовательное выполнение двух или более операторов (простых или составных). Ветвление задает выполнение либо одного, либо другого оператора в зависимости от выполнения какого-либо условия. Цикл задает многократное выполнение оператора (рис. 2.1).
Рис. 2.1. Базовые конструкции структурного программирования
Следование, ветвление и цикл называют базовыми конструкциями структурного программирования. Их особенностью является то, что любая из них имеет только один вход и один выход, поэтому они могут вкладываться друг в друга. Например, цикл может содержать следование из нескольких ветвлений, каждое из которых включает вложенные циклы.
Целью использования базовых конструкций является получение программы простой структуры. Такую программу легко читать, отлаживать и при необходимости модифицировать. Язык Паскаль
Программирование на я зыке высокого уровня ПаскальТ.А. Павловская
29
способствует созданию хорошо структурированных программ, поскольку базовые конструкции реализуются в нем непосредственно с помощью соответствующих операторов.
Операторы ветвления
Операторы ветвления if и варианта case применяются для того чтобы в зависимости от конкретных значений исходных данных обеспечить выполнение разных последовательностей операторов. Оператор if обеспечивает передачу управления на одну из двух ветвей вычислений, а оператор case — на одну из произвольного числа ветвей.
Условный оператор if
Условный оператор if используется для разветвления процесса вычислений на два направления. Структурная схема оператора приведена на рис. 2.2. Формат оператора:
if выражение then оператор_1 [else оператор_2;]
Сначала вычисляется выражение, которое должно иметь логический тип. Если оно имеет значение true, выполняется первый оператор, иначе — второй. После этого управление передается на оператор, следующий за условным.
Рис. 2.2. Структурная схема условного оператора
Oператоры, входящие в состав условного оператора, могут быть
Программирование на я зыке высокого уровня ПаскальТ.А. Павловская
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]