Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основные операторы

 

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

V:=Exp

где V – переменная, а Exp – выражение.

Типы V и Exp должны быть согласованы. Как правило, это означает, что это одни и те же типы. С точки зрения семантики достаточно, чтобы тип выражения Exp был подтипом тип переменной V.

a) целый:= вещественный – невозможно

b) вещественный:= целый – возможно

К сожалению, реальное определение согласованности типов достаточно сложно и ориентировано не на значения и даже не на определения типов, а на их имена.

Type

Real1 = Real;

Real2 = Real;

Совет

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

 

Операторы ввода/вывода. Текстовые файлы.

В Паскале под файлом понимается последовательный набор данных с возможностью многократного использования.

Рассмотрим частный случай текстовых файлов

text (textfile)

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

Var f: text;

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

Семантика (упрощенная)

Множество значений типа text – последовательность значений стандартных типов integer, real, char, string.

Функции и операторы

1. assign (AssignFile) – в стандарте отсутствует

В реальном программировании естественно разделять понятия логического файла (файл как математический объект, тип данных) и физического файла (файл как набор данных на материальном носителе). Функция assign задает соответствие между логическими и физическими именами.

Assign(логическое имя файла (идентификатор, имя переменной), физическое имя файла (имя файла в синтаксисе ОС))

Пример:

Assign(f,’c:\dir\file.txt’);

2. Eof(f); Предикат конца файла. Семантика такая же, как и потоков.

3. Read(f, v1, …, vn); Write(f, e1, …, em); Семантика как для потоков.

4. Reset(f);

Подготовка (открытие) файла для чтения. Любой оператор reset предшествует любому read, то есть попытке чтения из файла f. Потоки Input и Output – не файлы, так как нельзя многократно записывать.

5. Rewrite(f);

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

Операторы reset и rewrite опускаются для так называемых входных и выходных файлов input и output. Имена этих файлов также опускаются в операторах чтения и записи.

6. close(f) (CloseFile(f))

Обратный по функции оператору assign, разрывает связь между логическим и физическим файлами. Хотя по умолчанию все файлы должны автоматически закрываться после выполнения программы, лучше делать это явно.

Замечание:

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

Натуральные числа: c1…cn

ci = ‘0’,’1’,…

Вещественные числа: c1…cn.d1…dm – запись с «плавающей» точкой.

DEP – экспоненциальная запись, где D – запись с «плавающей» точкой, P – целое число. DEP = D•10P

С понятием строки связаны операторы: readln(f) – найти начало следующей строки, writeln(f) – записать символ конца строки.

readln(f, x1, …, xn) Û read(f, x1, …, xn); readln(f);

writeln(f, e1, …, en) Û write(f, e1, …, en); writeln(f);

 

Композиция операторов и составной оператор

S1; S2; …; Sn

Суперпозиция соответствующих функций → функциональная семантика.

begin S1; …, Sn end

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

1. последовательность операторов S1; S2; …; Sn

2. один оператор begin S1; S2; …; Sn end

 

Условный оператор

If B then S1 [else S2]

Наличие укороченной формы вносит неоднозначность в чтение операторов. Какую семантику имеет оператор If B1 then B2 then S1 else S2

Верна вторая семантика, то есть else всегда принадлежит ближайшему оператору if.

 

 

Оператор цикла с предусловием

while B do S

B – предикат (условие выполнения)

S – оператор

 

Оператор цикла с постусловием

repeat S1; …; Sn until B

B – предикат (условие окончания)

 

Введение такого оператора часто удобно, но избыточно. Запись на паскале структурных блок-схем почти тривиальная задача. Единственная техническая проблема – записать последовательность операторов там где синтаксис допускает лишь один оператор. Проблема решается просто – навешиванием операторных скобок.

Задача: выяснить, есть ли в последовательности целых чисел а заданное х.

Решение верно, но не эффективно.

Второй вариант – так называемый побочный выход из цикла.

Третий вариант.

Program N1(input, output);

Var p,b:Boolean;

x,a:integer;

begin

 

b:=false;

read(x);

while eof=false do

begin

read(a);

if x=a then b:=true;

 

end;

write(b);

end.

 

Замечание. Более эффективное решение – см. далее «Булевский тип»

Классификация типов

<== предыдущая лекция | следующая лекция ==>
Синтаксис Паскаль-программы | Пользовательские скалярные типы данных
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 387; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.