Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


В) Поиск-??? ты же не тупой, и сам можешь догадаться…..даже википедия не знает, потому что надеется на то, что ты не труба.




С) операции над файлами

· Создание файла, не содержащего данных. Смысл данного вызова - объявить, что файл существует, и присвоить ему ряд атрибутов. При этом выделяется место для файла на диске и вносится запись в каталог.

· Удаление файла и освобождение занимаемого им дискового пространства.

· Открытие файла. Перед использованием файла процесс должен его открыть. Цель данного системного вызова - разрешить системе проанализировать атрибуты файла и проверить права доступа к нему, а также считать в оперативную память список адресов блоков файла для быстрого доступа к его данным. Открытие файла является процедурой создания дескриптора или управляющего блока файла. Дескриптор (описатель) файла хранит всю информацию о нем. Иногда, в соответствии с парадигмой, принятой в языках программирования, под дескриптором понимается альтернативное имя файла или указатель на описание файла в таблице открытых файлов, используемый при последующей работе с файлом. Например, на языке Cи операция открытия файла fd=open(pathname,flags,modes); возвращает дескриптор fd, который может быть задействован при выполнении операций чтения или записи.

· Закрытие файла. Если работа с файлом завершена, его атрибуты и адреса блоков на диске больше не нужны. В этом случае файл нужно закрыть, чтобы освободить место во внутренних таблицах файловой системы.

· Позиционирование. Дает возможность специфицировать место внутри файла, откуда будет производиться считывание (или запись) данных, то есть задать текущую позицию.

· Чтение данных из файла. Обычно это делается с текущей позиции. Пользователь должен задать объем считываемых данных и предоставить для них буфер в оперативной памяти.

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

 

Вопрос 16

Синтаксис обращения к процедурам

Текст включающий в себя области описаний (констант, типов, процедур и функций) и составной оператор, наз

 

 

Имена → значения

Procedure → имя (список формальных параметров).

Блок → тело процедуры (запись, алгоритм вычислений).

 

Любая функция (процедура) определяется некоторым выражением, но выражение определяет несколько функций. Список формальных параметров состоит из выражений вида: v:t или var v:t, где t – имя типа, v – идентификатор.

V – это не имя переменной (в программистском смысле), она не именует никакую область памяти. С другой стороны, это переменная в математическом смысле, поскольку определена область значений.

 

Область описаний ← Блок → Составные операторы

Объекты, определённые в соответствие определения процедуры в блоке, называются локальными; определённые вне этого блока – глобальными.

Блоки могут быть вложены друг в друга.

(Рисунок)

Фрагмент блока, начинающийся с описания объекта до конца блока, называется областью действия этого объекта. Именно в этом фрагменте соответствующее определению имя имеет заданные этим определением значения. Вне области действия имя либо имеет другой смысл, либо не имеет никакого смысла.

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

Описание функции

Function – пользовательское имя функции (список формальных параметров) (как в случае процедур).

Тип значений функций (имя типа) (в стандартном Паскале скалярный)

Блок.

Соответствующий составной оператор, тело функции, обязан в любом случае определять значения функции, что семантически выглядит как оператор присваивания имени функции (имя функции:= выражение того же типа).

Чистая ошибка – применение имени функции справа. Справа имя функции может появиться только в специальном случае. В Delphi то же самое может выглядеть так:

Result:= выражение, где result – стандартная переменная соответствующего типа.

Function max(var a: tVector; n: tIndex): tComponent;

Begin

M:=a[1];

For I:=2 to n do

If m<a[i] then m:=a[i]; max:=m;

End.

 

Обращение к функции

Синтаксис: имя функции: список фактических параметров.

Семантика: выражение соответствующего типа. Может использоваться выражение этого типа.

Формальная семантика: достаточно ограничения случаем

V:= обращение к функции, где V – переменная, подставляемая вместо имени функции.

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

 

Синтаксис использования или обращения к процедурам.

Имя программы (список фактических параметров).

Список фактических параметров, разделённых запятыми, список выражений вида е1,…,еn.

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

 

Правила построения модифицированного тела:

1) Избавление от коллизии имён. При наличии коллизии заменить имена локальных переменных или других объектов с дублированными именами на новые, ещё не использованные в программе.

M:=a[i];

For i:=1 to n do

If m>a[i] then m:=a[i];

2) Параметры переменные заменяются на имена фактических параметров

3) Параметры значения вычисляются и копируются.

 

Вопрос 17

Семантика процедур и функций.

Одна из трактовок понятия функции – функция с несколькими входами (аргументами) и несколькими результатами (выходами). Когда число результатов равно 1 получаем понятие многоместной функции. В этом случае Паскаль позволяет вернуться к обычной функциональной нотации.

 

Семантика обращений - правила построения модифицированного тела процедуры: коллизия имен, семантика параметров.

 

Семантика

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

Для нас привычно вход и выход процедуры.

Имена переменных входа называются входными, выхода – выходными.

К паскалевским процедурам используется другое деление: изменяемые значения (имени всех выходов, которые могут быть входными) и значения (чистые входы, выходами не являющиеся).

X:=x+y;

Внутри процедуры могут использоваться вспомогательные объекты (локальные объекты). После установления типового соответствия между определениями процедур семантика обращения к процедуре ясна – это вычисление функции в заданной точке.

Это действительно так, если все результаты процедуры объявлены как var-переменные, все оставшиеся коды объявлены как параметры значения, если все остальные используемые в теле процедуры имена локальны.

Мы не обязаны это делать, что чаще всего мотивируется соображениями эффективности.

Пример. Процедура вычисления максимального среди первых элементов массива.

Type tIndex=1..100;

tVector=array [tIndex] of real;

procedure max;

a: tVector;

n: tIndex;

Var m:real;

Begin

M:=a[i];

For i:=2 to n do

If m>a[i] then m:=a[i];

End.

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

Как описывать «нестандартную» семантику обращения?

Max(b,10,x);

Понять семантику обращения (то, как оно работает), уметь написать вместо обращения (пользовательского имени) соответствующее ему значение.

Понятно, что этим значением будет тело процедуры, но не в точности оно, поэтому фрагмент программы, эквивалентный обращению, называется модифицированным телом процедуры.

 

Правила построения модифицированного тела:

1. Избавление от коллизии имён. При наличии коллизии заменить имена локальных переменных или других объектов с дублированными именами на новые, ещё не использованные в программе.

M:=a[i];

For i:=1 to n do

If m>a[i] then m:=a[i];

2) Параметры переменные заменяются на имена фактических параметров

3) Параметры значения вычисляются и копируются.

 

 

Правила локализации. Побочные эффекты.

 

Глобальные значения можно понимать как мат. параметр, именованную константу.

Правило полной локализации: не использовать глобальных объектов (подразумевалось в предыдущей лекции).

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

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

 





Поделиться с друзьями:


Дата добавления: 2016-11-23; Мы поможем в написании ваших работ!; просмотров: 668 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Надо любить жизнь больше, чем смысл жизни. © Федор Достоевский
==> читать все изречения...

2300 - | 1987 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.