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

Методическое пособие 555

.pdf
Скачиваний:
4
Добавлен:
30.04.2022
Размер:
2.33 Mб
Скачать

Символьный тип данных char – предназначен для хранения одного символа.

Перечислимый тип определяется упорядоченным набором идентификаторов и объявляется в специальном разделе программы type – разделе объявления типов:

type

typeName = (value1, value2, ..., valuen);

Диапазонный тип представляет собой подмножество значений целого, символьного или перечислимого типа и описывается в виде a..b, где a – нижняя, b – верхняя граница

(a < b).

Среди простых типов данных выделяют т.н. порядковые типы, т.е. такие типы данных, каждому элементу которых можно сопоставить уникальный порядковый номер, позволяющий определить, который из элементов больше, а который меньше. К порядковым типам относятся Integer (порядковый номер равен значению), Boolean (false имеет номер 0, a true – 1), Char (каждому символу соответствует кодовый номер).

К порядковым данным применимы операции Ord, Pred Succ, Inc и Dec, ознакомьтесь с их назначением с помощью справочной системы PascalABC.Net (Справка -> Справочник по языку -> Системный модуль PABCSystem -> Общие подпрограммы).

Помимо простых типов, в языке Pasal существуют структурированные типы данных, определяющие наборы одно- или разнотипных компонент. К ним, в частности, относятся массивы – упорядоченные наборы элементов одного типа, они будут рассмотрены в работе № 5.

Частным случаем массива является строковый тип данных string, предназначенный для хранения строк – последовательно расположенных символов типа char. К симво-

71

лам в строке можно обращаться, используя индекс: s[i] обозначает i-й символ в строке s, нумерация начинается с единицы.

В Pascal для работы со строками и символами имеется большое количество стандартных подпрограмм, информацию о которых можно найти в справочной системе PascalABC.Net (Справка -> Справочник по языку -> Системный модуль PABCSystem -> Подпрограммы для работы с символами и строками).

1.3. Структура программы

Рассмотрим структуру программы на языке Pascal:

program program_name; //заголовок программы

uses

//раздел подключения модулей

 

 

label

//подраздел объявления меток

 

 

Раздел

 

type

//подраздел объявления типов

 

const

//подраздел объявления констант

описаний

 

var

//подраздел объявления переменных

 

 

 

 

begin

 

 

 

 

 

 

Основной

 

 

 

 

блок

 

end.

 

 

программы

 

 

 

 

 

 

Итак, программа состоит из следующих основных разделов: заголовка программы (его наличие не обязательно), раздела подключения модулей uses, раздела описаний (который может включать подразделы объявления меток, типов, констант, переменных, а также объявления подпрограмм) и основного блока («тела») программы, заключенного в операторные скобки begin - end. Программа должна оканчиваться символом ‘.’ (точка).

72

1.4. Константы и переменные

Константа – идентификатор, обозначающий некоторую неизменную величину определенного типа. Могут быть целочисленные и вещественные, символьные и строковые. Объявляются в подразделе const. Примеры объявления констант:

const

A = 10; //целочисленная константа B = 1.35 ; //вещественная

Kb = 1.38E-23; //вещественная

CH1 = 'a'; //символьная - указывается символ

в

// апострофах,

CH2 = #97; // или номер символа в кодовой // таблице ASCII

S = 'Зачет по информатике'; //строковая, //указывается цепочка символов в апострофах

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

var

a: Integer; //целочисленная переменная b,c,d: Integer; //несколько переменных одного

//типа можно перечислить через запятую x: Real; //вещественная переменная

str: String; //строковая переменная,

//макс. длина строки 255 символов s: String[5]; //строковая переменная,

//макс. длина строки 5 символов vvv: 10..35; //переменная диапазонного типа

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

73

байт в оперативной памяти компьютера. Имя переменной содержит адрес ячеек памяти, в которых хранится ее значение. Значения переменных сразу после выделения под них памяти будут непредсказуемыми, поэтому перед первым использованием они должны быть заданы явно («инициализация переменной») каким-либо способом, например, при помощи оператора присваивания (см. далее).

1.5. Операторы

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

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

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

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

Переменная и выражение, стоящие по разные стороны от знака « := », должны иметь одинаковый тип, за исключением двух случаев: переменной вещественного (Real) типа можно присвоить значение целого (Integer) типа, а переменной строкового (String) типа можно присвоить значение символьного (Char) типа (но не наоборот).

74

Приведем пару примеров:

a := b + c - 1; //Будет вычислено значение //выражения b + c - 1 и результат записан

в

//переменную a

a := a + 5; //Значение переменной a будет //увеличено на 5

Как хорошо видно из последнего примера, не следует путать знак присваивания « := » со знаком отношения « = ».

Рассмотрим еще один пример. Пусть нам необходимо поменять местами значения переменных а и b. Чтобы это сделать, нам потребуется третья переменная c и следующая последовательность операторов присваивания:

с := a; //«запоминаем» исходное значение перемен-

//ной a в дополнительной переменной c a := b; //в переменную a записываем значение b b := c; // в переменную b записываем значение c

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

x := sin(30*Pi/180); y := 2*Power(x,3/2);

Ознакомьтесь с назначением этих и других стандартных математических функций при помощи справочной системы

75

PascalABC.Net (Справка -> Справочник по языку -> Системный модуль PABCSystem -> Математические подпрограммы).

Арифметические операции *, / , div, mod имеют более высокий приоритет по сравнению с операциями -, +. Как и в математике, для изменения приоритета применяются круглые скобки:

a := 2+2*2; a := (2+2)*2;

Оператор вывода. Служит для отображения на экране значений переменных, констант, арифметических выражений. Имеет две возможные формы записи:

write(список); writeln(список);

Оператор writeln, в отличие от write, после завершения вывода переводит курсор на следующую строку экрана. Элементы списка перечисляются через запятую. Рассмотрим следующий пример:

writeln('R = ', r, ' кОм');

Данный оператор сначала выведет на экран строковую константу 'R = ', затем значение переменной r, затем еще одну строку ' кOм', после чего переведет курсор на следующую строчку экрана. В итоге в консольном окне программы появится примерно такая надпись: R = 5.7 кОм.

Можно задать ширину вывода, т.е. количество символов, следующим образом:

writeln(переменная : ширина);

При выводе вещественных чисел можно кроме ширины задать точность – число знаков, отводимых на дробную часть числа:

writeln(переменная : ширина : точность);

76

Оператор ввода. Служит для изменения значений переменных путем ввода с клавиатуры. Имеет две возможных формы записи:

read(список переменных); readln(список переменных);

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

Отличие между операторами read и readln заключается в следующем. Все избыточные значения во введенной пользователем строке оператором read не считываются и эти «лишние» данные могут быть считаны следующим оператором read или readln. Оператор Readln работает подругому: она считывает сразу все данные из строки, введенной пользователем, при этом «лишние» значения в конце строки игнорирует.

Далее приведен пример программы, которая вычисляет сумму двух чисел, введенных пользователем:

Var

a, b : Real; // объявляем две переменные a и b

//типа Real

Begin

//Выводим пользователю поясняющее сообщение writeln('Введите два числа');

//ввод значений переменных a и b

readln (a, b);

//Выводим результат

writeln('Cумма введенных чисел равна ', a + b); end.

77

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

Полный условный оператор (конструкция «if-then-else» – «если-то-иначе») записывается так:

if условие then begin

операторы_1; end

else begin

операторы_2; end;

Блок-схема данного оператора показана на рисунке. Роль условия может играть логическое выражение или переменная типа Boolean. Группа операторов «операторы_1» будет выполнена только в том случае, если условие истинно. Группа операторов «операторы_2» будет выполнена только в том случае, если условие ложно. Если группа операторов содержит только один оператор, то его необязательно заключать в операторные скобки begin – end. Обратите также внимание, что в виде исключения из общего правила перед else не ставится точка с запятой.

Приведем пример. Значение m = min(x, y) можно вычислить с использованием оператора if так:

if (x < y) then m := x else m := y;

78

Условие

True

Выполнить

операторы_1

False

Выполнить

операторы_2

Блок-схема полного условного оператора

Короткий условный оператор отличается от полного от-

сутствием инструкции else («иначе»):

if Условие then begin

операторы; end;

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

вольное число условий и ветвей расчета:

if условие_1 then begin

операторы_1; end

else if условие_2 then begin

операторы_2; end

… … … … …

else if условие_N then begin

операторы_N; end

else begin

операторы_0; end;

79

Группа операторов «операторы_1» выполняется только тогда, когда «Условие_1» истинно, группа операторов «операторы_2» выполняется только тогда, когда «Условие_1» ложно, а «Условие_2» истинно и т.д.; наконец группа операторов «операторы_N» будет выполняться, когда все N-1 предыдущих условий ложны, а «условие_N» истинно. Группа операторов «операторы_0» будет выполнятся, когда ложными окажутся все N условий.

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

case управляющее_выражение of список_значений_1: begin

операторы_1; end;

список_значений_2: begin операторы_2;

end;

. . .

список_значений_N: begin операторы_N;

end;

else begin

операторы_0; end;

end;

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

80