КАТЕГОРИИ: Архитектура-(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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |