Шпаргалка по "Языкам программирования"

Автор: Пользователь скрыл имя, 22 Февраля 2013 в 10:03, шпаргалка

Краткое описание

работа содержит ответы на вопросы по "Языкам программирования"

Файлы: 1 файл

яп.doc

— 205.00 Кб (Скачать)

Стандартные процедуры  ввода/вывода не позволяют ввести или вывести значение переменной комбинированного типа одной операцией.

 

16.

Иногда содержимое отдельной  записи зависит от значения одного из ее полей. Такой тип записи содержит фиксированную часть, общую для  всей записи, и вариантную, содержимое которой зависит от значения одного из полей. Первое поле вариантной части предназначено для определения того, какой из вариантов имеет данная запись. Поле признака в вариантной части является необязательным. Если оно указано, то говорят о размеченном объединении типов, в противном случае — о свободном (неразмеченном) объединении типов. Последний способ используется редко, например, в случае, когда требуется по-разному трактовать одно и то же поле или последовательность полей. Его можно считать аналогом переопределений, принятых в некоторых языках программирования.

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

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

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

 

17.

Множественный тип данных имеет непосредственное отношение  к фундаментальному понятию математики — множеству. В языке программирования Паскаль допустимы только конечные множества. Максимальная мощность множеств в рассматриваемой реализации языка — 256 элементов. В общем случае она определяется реализацией языка. Все элементы множества относятся к одному типу, который должен быть ординальным. Конкретные значения множественного типа образуются из элементов, тип которых называется базовым по отношению к множественному типу.

Значением множественного типа является множество. Конкретные значения данных множественного типа задаются с помощью так называемого конструктора множеств. Он представляет собой список элементов множества, заключенный в квадратные скобки. Заключение в квадратные скобки некоторого количества элементов можно рассматривать как операцию образования множественного значения. Это одна из операций в языке, которая на основе значений одного типа позволяет получить значения совершенно другого типа. Компиляторы семейства Turbo Pascal на каждый элемент множества отводят в памяти 1 бит.

ОПЕРАЦИИ   НАД  МНОЖЕСТВАМИ

Над множествами допускаются  следующие операции:

1) присваивание;

2) объединение, пересечение,  разность;

3) сравнение.

Все операции применимы  к значениям одного множественного типа:

1) A := В, где А —  переменная; В — выражение;

2)  А + В - объединение, А * В — пересечение, А - В — разность;

3)  А = В — равенство, А <> В — неравенство, A <= В - А из В, А >= В - В из А, x in А — X из А.

 

22.

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

Недостаток некоторых  подпрограмм в том, что они  слишком жестко настроены на конкретные программные объекты основной программы. Избавиться от этого недостатка позволяет механизм аргументов-параметров. Формальные параметры представляют собой не какие-то конкретные значения, а значения вообще. При каждом обращении к процедуре(функции) ее формальные параметры конкретизируются. Конкретизация формальных параметров происходит при активации процедуры (функции). Активация осуществляется с помощью оператора процедуры. При активации процедуры между формальными и фактическими параметрами устанавливается взаимнооднозначное соответствие. При этом должно выполняться соглашение о соответствии типов между формальным и фактическим параметром.

Параметры бывают четырех  видов:

1)параметры-значения(значение);

2)параметры-переменные(var);

3)функциональные параметры (функция);

4)процедурные параметры(процедура)

Основное назначение процедурных и функциональных типов - дать возможность передать функции  и процедуры другим подпрограммам.

 

 

 

 

 

 

 

 

 

18.

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

Важной особенностью файлов является учет специфики внешних  носителей, на которые переносятся  данные. Файловый тип в языке Turbo Pascal — это единственный тип, посредством которого данные могут быть получены извне и переданы во внешний мир, который связывает программу с внешними запоминающими устройствами ЭВМ.

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

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

Данная переменная относится  к типу компонент файла. Буферную переменную можно рассматривать  как некое «окно», через которое можно либо прочитать данные, либо записать новые данные. При выполнении ряда операции окно автоматически передвигается. Если указатель достиг конца файла, то значение буферной переменной считается неопределенным.

Рассмотрим стандартные  процедуры, которые используют буферную переменную.

1.  Reset (F); — открытие  файла F на чтение. «Окно» перемещается  к первой записи, значение которой  присваивается Ft; Eof (F) = = false.

2.  Rewrite (F); — файл  заменяется на пустой,  даже  если он не существовал ранее. Значение Ft не определено, Eof (F) = true.

3.  Get (F); — продвижение  «окна» к следующей компоненте  файла и присваивание Ft значения  этой компоненты. Если Eof (F) = true, то  значение Ft считается неопределенным.

4.  Put(F); —  запись  в файл значения буферной переменной F, т.е. добавление новой записи. Если при этом eof(f)=false, то такая ситуация считается ошибочной. После выполнения операции eof(f)=TRUE, значение F не определено.

С помощью процедур 1-4 и функции eof можно описать любые  действия по обработке последовательных файлов. Стандартные процедуры Read и Write объединяют в себе перемещение "окна" с обращением к буферной переменной.

В семействе компиляторов Turbo Pascal буферные переменные недоступны, однако это не снижает ценности этого  языка.

Рассмотрим стандартные  процедуры языка Паскаль для  работы с файлами:

1. Процедура Assing организует  связь между файловой переменной  и реальным файлом на диске.

2. Процедура Close используется  для закрытия файла, после чего  связь между файловой переменной и файлом не теряется.

3. Процедура Rename предназначена  для переименования файла: Rename(<файловая  переменная>,<новое имя>)

4. Процедура Erase предназначена  для удаления файла с диска: Erase(<файловая переменная>)

5. Процедура Seek предназначена  для установки указателя файла на конкретную запись. Записи нумеруются с нуля. Seek(<файловая переменная>,<номер записи>)

6. Функция Filesize возвращает  размер файла в логических  единицах: Filesize(<файловая переменная>):Longint

7. Функция Filepos возвращает  текущую позицию указателя файла.

 

20.

Существует особая разновидность  файлов — текстовые, которые отличаются по организации от любых других файлов. Текстовый файл представляет собой  последовательности из литер (Char), разделенных  на строки. Каждая такая строка отделена от другой специальной управляющей комбинацией CR/LF (CR — Carriage Return — возврат каретки; LF — Line Feed — перевод строки). Всякий такой файл завершается символом Ctrl + Z

Для описания текстовых  файлов используют спецификатор Text. Следует  заметить, что текстовый файл не эквивалентен файлу типа Т, где Type Т = File of char. Файл типа Т — это единая цепочка символов, в то время как в текстовом файле цепочки символов отделены друг от друга управляющей комбинацией CR/LF. Эти цепочки являются логическими строками текста.

Стандартная функция Eoln (F) имеет непосредственное отношение  к обработке комбинации CR/LF, а  стандартные процедуры Readln и Writeln осуществляют пропуск (при чтении) или добавление в файл (при записи) именно этой комбинации.

Независимо от положения указателя в каком либо месте текста выполнение readln приводит к перемещению указателя к началу следующей строки этого текста.

Для проверки корректности ввода/вывода при работе с файлами  используют встроенную функцию IOResult: Integer, которую можно применять только в том случае, когда отключены стандартные средства обработки ошибок ввода/вывода. Эти средства отключаются директивой {$I-}, а включаются директивой {$I+}. Довольно часто встречаются ситуации, когда функция IOResult возвращает следующие значения: 2 - файл не найден, 3 - путь не найден, 105 - файл недоступен для вывода.

 

21.

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

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

1.  Assembler. Тело подпрограммы  реализуется с помощью встроенного  ассемблера.

2.  External. Подпрограмма вызывается  как внешняя.

3.  Far. Генерация кода программы,  рассчитанного на дальнюю модель  вызова.

4.  Near. Генерация кода программы,  рассчитанного на ближнюю модель  вызова. (По умолчанию все подпрограммы  интерфейсной части модуля ориентированы  на дальнюю модель вызова, а все остальные — на ближнюю. Ближняя модель предполагает вызов в пределах кодового сегмента CS, т. e. в пределах 64 Кб. Дальняя модель вызова требует дополнительной памяти и несколько больше машинного времени.)

5.  Forward. Опережающее (предварительное) описание подпрограммы.

6. Inline. Тело подпрограммы реализуется  с помощью встроенных машинных  команд.

7.  Interrupt. Подпрограмма предназначена  для обработки прерывания.

 

 

23.

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

Когда в подпрограмме встречается  имя переменной, оно сначала ищется в списке локальных переменных. Если это имя не найдено, то поиск происходит в списке глобальных переменных.

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

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

 

26.

Все ранее рассмотренные  программные объекты относились к статическим. Это объекты, которые  порождаются перед началом выпол  нения программы, существуют в течение всего времени ее выполне ния и размер их значений не изменяется в ходе выполнения про граммы. Статические объекты описываются в соответствующем разделе.

Достоинство данных объектов состоит в том, что размер их значений заранее известен, память для них можно выделить уже на этапе трансляции программы. Ссылка на статический объект записывается виде его имени, т. e. доступ осуществляется по имени. Однако c точки зрения получения эффективной программы использование только статических объектов не всегда оправданно. Действительно, не всегда известен размер значения того или иного объекта, даже неиз^ вестно, понадобится ли вообще тот или иной программный объект в процессе данного выполнения программы. Эти проблемы можно устранить с помощью динамических объектов.

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

 

27.

Значением ссылочного типа является ссылка на некоторый программный объект. На машинном языке такая ссылка представляет собой указатель (адрес) на некоторую ячейку памяти. При работе с динамическими объектами каждому из них соответствует статическая переменная ссылочного типа. С помощыо статических переменных и описываются все действия над динамическими объектами.Переменные ссылочного типа описываются обычным способом в соответствующем разделе. Примеры

Информация о работе Шпаргалка по "Языкам программирования"