Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
09.03.2016
Размер:
48.64 Кб
Скачать

6

Лекция №3

5. Операторы языка

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

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

5.1. Простые операторы

Простыми называются те операторы, которые не содержат других операторов. К ним относятся:

  • оператор присваивания;

  • обращение к процедуре;

  • пустой оператор.

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

С помощью этого оператора переменной или функции присваивается значение выражения. Для этого используется знак присваивания  .

 идентификатор  выражение 

Тип выражения и тип переменной (или функции) должны быть совместимы для присваивания.

Пример.

x:=y;

z:=sqr(sin(x+5))-15.8*exp(ln(y)/7);

c:=(m<=6) or (m>1);

5.1.3. Пустой оператор

Пустой оператор не выполняет никакого действия и никак не отображается в программе.

5.2. Структурированные операторы

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

  • составной оператор;

  • условный оператор IF;

  • условный оператор CASE;

  • оператор цикла REPEAT;

  • оператор цикла WHILE;

  • оператор цикла FOR;

  • оператор над записями WITH.

5.2.1. Составной оператор

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

Можно считать, что и само тело программы тоже является составным оператором.

6. Организация ввода-вывода

В языке Турбо Паскаль ввод-вывод информации осуществляется только с файлами через файловые переменные.

Перед тем, как осуществлять ввод-вывод, файловая переменная должна быть связана с конкретным внешним файлом с помощью процедуры ASSIGN. Этим файлом может быть файл на магнитном диске, а также устройство вычислительного комплекса (клавиатура, экран дисплея, принтер, и т.д.). Затем файл должен быть открыт для чтения или/и записи. После этого можно осуществлять организацию ввода-вывода.

В Турбо Паскале имеется три категории файлов: текстовые (тип TEXT), типизированные (FILE OF тип ) и файлы без типа (FILE). Работа с этими категориями файлов несколько отличается друг от друга.

Имеется две стандартные файловые переменные типа TEXT: INPUT и OUTPUT. Переменная INPUT стандартно связана с клавиатурой, а OUTPUT – с экраном дисплея. При запуске программ эти файлы автоматически открываются.

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

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

6.1. Стандартные процедуры и функции для всех категорий файлов.

Процедуры:

ASSIGN

связать файловую переменную с внешним файлом

CLOSE

закрыть открытый файл

RESET

открыть существующий файл для чтения

REWRITE

создать и открыть новый файл для записи

Функции

Определение некоторых процедур:

CLOSE (FileVar: <файловый тип>);

RESET (FileVar: <файловый тип>);

REWRITE (FileVar: <файловый тип>);

Если внешний файл, с которым связана файловая переменная уже существует и в нём содержится некоторая информация, то по процедуре REWRITE содержимое файла будет стерто.

6.2. Стандартные процедуры и функции для текстовых файлов

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

Особенностью работы с текстовыми файлами является то, что переменные, значения которых вводятся и выводятся с помощью процедур READ или WRITE, могут быть не обязательно типа STRING или CHAR, а других простых типов (целых, вещественных при вводе, целых, вещественных, типа BOOLEAN - при выводе).

Две стандартные файловые переменные INPUT и OUTPUT автоматически связаны с клавиатурой и экраном дисплея, т.е. фактически выполняются процедуры:

assign(input,’ ‘); reset(input);

assign(output,’ ‘);rewrite(output);

Эти файлы также автоматически закрываются после окончания работы программы.

Процедуры и функции для организации ввода-вывода текстовых файлов:

READ([var f:text;]v1[v2,…vn]) – считывание осуществляется из связанного с f файла. По умолчанию принята стандартная переменная INPUT. Переменные vi могут иметь тип char, integer, real или string.

Если переменная vi имеет тип char, то READ считывает символ из файла f и присваивает его переменной vi. Если Eof(f)=True, то считывается символ Chr(26). Если Eof(f)=False, то считывается символ Chr(13) (“возврат каретки).

Если vi имеет тип integer, то процедура READ считывает последовательность символов, синтаксически оформленную как целое число со знаком. При этом предшествующие пробелы, табуляции и символы конца строки игнорируются. Считывание последовательности символов заканчивается, если встречается пробел, знак табуляции или символ конца строки, а также если Eof(f)=True. Если считываемая последовательность не удовлетворяет установленному формату (типу), происходит ошибка ввода-вывода.

Если vi имеет тип real, то считываемая последовательность должна быть синтаксически оформлена соответствующим образом. В остальном работа процедуры READ аналогична случаю, когда vi имеет тип integer.

Если vi имеет тип string, то READ считывает строку символов (при этом символ конца строки не считывается). Считанная последовательность символов присваивается переменной vi. Если длина считанной последовательности превосходит длину переменной vi, то последние символы отбрасываются. При последующем обращении к READ считывание продолжается с того места, где оно было остановлено.

Если файл заканчивается раньше, чем выполнение процедуры READ, оставшимся переменным присваивается значение 0.

Примечание. Ели vi имеет тип string, то после считывания строки символов процедура READ не переходит на другую строку. При последующем обращении к первым будет следовать символ конца строки, и поэтому READ будет считывать последовательность нулевой длины (пустую строку). Во избежание такой ситуации следует пользоваться процедурой READLN.

WRITE([var f:text]v1[v2,…vn]) – осуществляет запись в файл, связанный с файловой переменной f. Если f опущена предполагается стандартная файловая переменная OUTPUT. Каждый из параметров vi является выражением, значение которого должно записываться в файл. Параметр записи может также содержать указания ширины поля и количества десятичных знаков. Выражения вывода могут быть следующих типов: char, integer, real или string или boolean. Параметр записи имеет следующую форму:

vi[:m[:n]],

где m, n – выражения типа integer. m устанавливает минимальную ширину поля, которая должна быть больше 0. Если m опущено, выделяется число разрядов, достаточное для представления величины vi. n устанавливает количество десятичных знаков в величинах с фиксированной точкой. Оно может быть установлено, только если vi типа real и задано m.

Запись величины типа char. Если m опущено, значение vi типа char записывается в 1 разряд. В противном случае, записываются ещё m-1 пробелов, следующих за значением vi.

Запись величины типа integer. Если m опущено, десятичное представление значения записывается в файл без n предшествующих пробелов. Если m точно определено, и его значение больше, чем количество десятичных разрядов vi, необходимое число пробелов записывается перед этой величиной.

Запись величины типа real. Формат представления зависит от величины n. Если n опущено (или имеет отрицательное значение), записывается десятичная последовательность с плавающей точкой. Если m тоже опущено, то по умолчанию оно предполагается равным 17; в противном случае, если m меньше 8, оно предполагается равным 8.

WRITELN([var f:text]v1[v2,…vn]) – исполняется также как процедура WRITE и в конце записывает метку конца строки в файл. (f) без параметров записывает метку конца строки в файл. WRITELN соответствует WRITELN(Output).

Пример выполнения лабораторной работы №1.

Вычислить

;

program lab_1;

var x,y,a,b:real;

c1,c2,c3,c4:real;

begin

read(x,y);

c1:=abs(x)/(abs(x)+1);

c2:=arctan(sqrt(1-c1*c1)/c1);

a:=exp(ln(c1+1)/3)+c2;

c1:=sin(x)/cos(x);

c2:=y*y;

c3:=c1*c1;

c4:=c1/c2;

b:=c4; c4:=c4*c3/c2; b:=b+c4;

c4:=c4*c3/c2; b:=b+c4;

writeln(' a=',a:5:3,' b=',b:5:3)

end.

Кафедра информатики

Иванов Борис Алексеевич. Файл

Соседние файлы в папке Lecture_Pascal