Смекни!
smekni.com

Основные понятия алгоритмического языка (стр. 3 из 10)

могут быть аргументами встроенных функций.

9. О П Е Р А Т О Р П Р И С В А И В А Н И Я

Тип переменной и тип выражения должны совпадать кроме случая, ког-

да выражение относится к целому типу, а переменная - к действительно-

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

действительному типу.{}

10. О П Е Р А Т О Р Ы В В О Д А

И В Ы В О Д А

Рассмотрим организацию ввода и вывода данных с терминального уст-

ройства. Терминальное устройство - это устройство, с которым работает

пользователь, обычно это экран (дисплей) и клавиатура.

Для ввода и вывода данных используются стандартные процедуры ввода

и вывода Read и Write, оперирующие стандартными последовательными файлами

INPUT и OUTPUT.

Эти файлы разбиваются на строки переменной длины, отделяемые друг

от друга признаком конца строки. Конец строки задается нажатием кла-

виши ENTER.

Для ввода исходных данных используются операторы процедур ввода:

Read(A1,A2,...AK);

ReadLn(A1,A2,...AK);

ReadLn;

Первый из них реализует чтение К значений исходных данных и прис-

ваивание этих значений переменным А1, А2, ..., АК. Второй оператор

реализует чтение К значений исходных данных, пропуск остальных значе-

ний до начала следующей строки, присваивание считанных значений пере-

менным А1, А2, ..., АК. Третий оператор реализует пропуск строки ис-

ходных данных.

При вводе исходных данных происходит преобразование из внешней

формы представления во внутреннюю, определяемую типом переменных. Пе-

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

либо к действительному, либо к символьному типам. Чтение исходных

данных логического типа в языке ПАСКАЛЬ недопустимо.

Операторы ввода при чтении значений переменных целого и

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

же время эти операторы не пропускают пробелов, предшествующих значе-

ниям символьных переменных, так как пробелы являются равноправными

символами строк. Пример записи операторов ввода:

var rV, rS: Real;

iW, iJ: Integer;

chC, chD: Char;

................

Read(rV, rS, iW, iJ);

Read(chC, chD);

Значения исходных данных могут отделяться друг от друга пробелами

и нажатием клавиш табуляции и Enter.

Для вывода результатов работы программы на экран используются

операторы:

Write(A1,A2,...AK);

WriteLn(A1,A2,...AK);

WriteLn;

Первый из этих операторов реализует вывод значений переменных А1,

А2,...,АК в строку экрана. Второй оператор реализует вывод

значений переменных А1, А2, ..., АК и переход к началу следующей

строки. Третий оператор реализует пропуск строки и переход к началу

следующей строки.

Переменные, составляющие список вывода, могут относиться к целому,

действительному, символьному или булевскому типам. В качестве элемен-

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

и строки.

Вывод каждого значения в строку экрана происходит в соот-

ветствии с шириной поля вывода, определяемой конкретной реализацией

языка.

Форма представления значений в поле вывода соответствует типу пе-

ременных и выражений: величины целого типа выводятся как целые деся-

тичные числа, действительного типа - как действительные десятичные

числа с десятичным порядком, символьного типа и строки - в виде сим-

волов, логического типа - в виде логических констант TRUE и FALSE.

Оператор вывода позволяет задать ширину поля вывода для каждого

элемента списка вывода. В этом случае

элемент списка вывода имеет вид А:К, где

А - выражение или строка, К - выражение либо константа целого типа.

Если выводимое значение занимает в поле вывода меньше позиций, чем К,

то перед этим значением располагаются пробелы. Если выводимое значе-

ние не помещается в ширину поля К, то для этого значения будет отве-

дено необходимое количество позиций. Для величин действительного типа

элемент списка вывода может иметь вид А:К:М, где А - переменная или выраже-

ние действительного типа, К - ширина поля вывода, М - число цифр

дробной части выводимого значения. К и М - выражения или константы

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

десятичного числа с фиксированной точкой.

Пример записи операторов вывода:

. . . . . . . . . . . .

var rA, rB: Real; iP,iQ:Integer;

bR, bS: Boolean; chT, chV, chU, chW: Char;

. . . . . . . . . . . .

WriteLn(rA, rB:10:2);

WriteLn(iP, iQ:8);

WriteLn(bR, bS:8);

WriteLn(chT, chV, chU, chW);

11. С Т Р У К Т У Р А П Р О Г Р А М М Ы

Программа на языке ПАСКАЛЬ состоит из заголовка, разделов описаний

и раздела операторов.

Заголовок программы содержит имя программы, например:

Program PRIM;

Описания могут включать в себя раздел подключаемых библиотек (мо-

дулей), раздел описания меток, раздел описания констант, раздел опи-

сания типов, раздел описания переменных, раздел описания процедур и

функций.

Раздел описания модулей определяется служебным словом USES и со-

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

системы TURBO PASCAL, так и написанных пользователем. Раздел описания

модулей должен быть первым среди разделов описаний. Имена модулей от-

деляются друг от друга запятыми:

uses CRT, Graph;

Любой оператор в программе может быть помечен меткой. В качестве

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

четырех цифр, либо имена. Метка ставится перед оператором и отделяет-

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

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

label 3, 471, 29, Quit;

Описание констант позволяет использовать имена как синонимы конс-

тант, их необходимо определить в разделе описаний констант:

const K= 1024; MAX= 16384;

В разделе описания переменных необходимо определить тип всех пере-

менных, используемых в программе:

var P,Q,R: Integer;

A,B: Char;

F1,F2: Boolean;

Описание типов, прцедур и функций будет рассмотрено ниже. Отдель-

ные разделы описаний могут отсутствовать, но следует помнить, что в

ПАСКАЛЬ - программе должны быть обязательно описаны все компоненты

программы.

Раздел операторов представляет собой составной оператор, который

содержит между служебными словами

begin.......end

последовательность операторов. Операторы отделяются друг от друга

символом ;.

Текст программы заканчивается символом точка.

Кроме описаний и операторов ПАСКАЛЬ - программа может содержать

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

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

{ и закрывающей скобкой комментариев }.

Текст ПАСКАЛЬ - программы может содержать ключи компиляции, кото-

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

пиляции записываются как комментарии. Ключ компиляции содержит символ

$ и букву-ключ с последующим знаком + (включить режим) или - (выклю-

чить режим). Например:

{$E+} - эмулировать математический сопроцессор;

{$F+} - формировать дальний тип вызова процедур и функций;

{$N+} - использовать математический сопроцессор;

{$R+} - проверять выход за границы диапазонов.

Некоторые ключи компиляции могут содержать параметр, например:

{$I имя файла} - включить в текст компилируемой программы назван-

ный файл.

Пример записи простой программы:

Program TRIANG;

var A, B, C, S, P: Real;

begin

Read(A,B,C);

WriteLn(A,B,C);

P:=(A+B+C)/2;

S:=Sqrt(P*(P-A)*(P-B)*(P-C));

WriteLn('S=',S:8:3)

end.

12. Б И Т О В А Я А Р И Ф М Е Т И К А

Битовая или поразрядная арифметика введена в TURBO PASCAL для

обеспечения возможности работы с двоичными разрядами (битами). Опера-

ции битовой арифметики применимы только к целым типам.

Первая группа операций - логические операции not, and, or и xor.

Операция not является одноместной, она изменяет каждый бит целого

числа на обратный.

Операции and, or и xor - двуместные, операнды этих операций - целые

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

двоичными разрядами операндов.

Вторая группа операций - это операции сдвига влево shl и сдвига

вправо shr:

I shl N

I shr N.

Эти операции сдвигают двоичную последовательность значения I влево

или вправо на N двоичных разрядов. При этом биты, уходящие за пределы

разрядной сетки, теряются, а освободившиеся двоичные разряды заполня-

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

разряды заполняются единицами.

13. О П Е Р А Т О Р П Е Р Е Х О Д А

Обычно операторы в программе выполняются в том порядке, в каком

они записаны. Оператор перехода прерывает естественный порядок выпол-

нения программы и указывает, что дальнйшее выполнение должно продол-

жаться, начиная с оператора, помеченного меткой, указанной в операто-

ре перехода. Пример записи оператора перехода:

goto 218;

14. Э Л Е М Е Н Т Ы С Т Р У К Т У Р Н О Г О

П Р О Г Р А М М И Р О В А Н И Я

Структуризованная программа (или подпрограмма) - это программа,

составленная из фиксированного множества базовых конструкций. Расс-

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

схемах алгоритмов.

{}

Из операций, развилок и слияний строятся базовые конструкции: сле-

дование, ветвление, цикл. Применяя только эти три конструкции, можно

реализовать алгоритм решения любой задачи.

Конструкция, представляющая собой последовательное выполнение двух

или более операций, называется следованием.

Конструкция, состоящая из развилки, двух операций и слияния, назы-

вается ветвлением. Одна из операций может отсутствовать.

Конструкция, имеющая линии управления, ведущие к предидущим опера-

циям или развилкам, называется циклом.

Конструкции следование, ветвление и цикл можно представить как

операции, так как они имеют единственный вход и единственный выход.