Главная » Просмотр файлов » Лекции по информатике

Лекции по информатике (984119), страница 30

Файл №984119 Лекции по информатике (Лекции по информатике) 30 страницаЛекции по информатике (984119) страница 302015-07-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 30)

Тйповый контроль может быть определен также в терминах синтаксиса и семанти- ки [21]: ° рассматриваются синтаксически правильные программы, удовлетворяющие контекстным условиям (вроде согласованности формальных и фактических параметров при вызовах процедур); эта, задача эффективно разрешима алгоритмически: ° среди синтаксически правильных программ — тоже а>п»ритмически — могут быть выделены типово-правильные программы, удовлетворяющие правилам типизации языка приписывашно типов переменным и константам, определению типов выражений по типам их частей, согласование типов частей конструкций (например, присваиваний) и т. п., так что понятие типово-правильной программы становится частью синтаксиса языка как свойство текста, проверяемое в период компиляции до выполнения программы; ° семантика вьшолнепия программы на языке предусматривает понятие т!1новой ои!ибки, зависящее от понятия типа в языке (несоответствие типа текущего значения переменной (параметра и т.

д.) типу, требуемому операцией, процедурой., вообще конструкцией, в которой находится этй переменная (парам! тр и т. д.). Например, если текущее значение индекса 1 в выражении а[к] выходит за границы массива и, то это типовйя опгибкй, если грйнипы вх~дят в поняти!." типй массива, (кг>к в 11йскагге), и гцпг!гпе еггог в Фортране: ° динамический контроль требует от семантики языка наличия возможности продолжения выполнения программы после типовой огпибки (оставляя ее иезаыеченногз!) лиоо осуществ;!опия предварительного димамического типового контроля. Обьединяя в различной комбинации эти требования, можно получать языки с полным и неполным. с динамическим, статическим и смешанным контролем типов.

Тйким обрйзом, типизецгия языка и контроль типов являются вйжнейпгими элементами аппарата защиты языка программирования. Они прогнозируют (обьявляк>т) такие свойства поведения обьектов.,как принадлежность к определенному типу, указание области действия и ограничений на допустимые значения в определенных контекстах,и осуществляют контроль за соблюдением ограничений (в частности, управление реакцией на нарушение обьявленного поведения). 7.3.3 Преобразование и передача типов Если в яз!.гкс программирования разрешается о:!повременное использование данных несколь- ких типов, например, в одном выражении или разных частях оператора присваивания, то вступает в действие механизм согласования типов 11!)1.

Этот механизм может быть полностью отключен, и тогда внутреннее представление обьекта одного типа (отведенная ему пал)ять) предоставляется для обработки средствами другого тина. Например, печать указателя в виде це;!ого числа с помощью вариантной записи Паскаля. Другой пример бинарная запись данных в файл без преобразования значений в изображение. Для этого, например, в языке Си можно преобразовать указатель на переменную данного типа к типу с)еаг*, после чего записать байты непосредственно в файл. В Паскале запись двоичного кода без преобразования происходит всегда при обмене с тт)екстоеыс)! файлом.

Такая ПСРЕДЙ, Еа ЗНсВЮНИЯ ОсЧНОГО ТИПЙ ПОД ЮРИСДИКЦИК) ДРУГОГО ТИПй ИНОГДЙ ТЙК И НЙЗЫВЙЕТ- ся -- передача типа (1ГЙЫег1)ед 1уре). Если согласуемые типы в математическом или ином смысле родственные, то может иметь смысл определение соответствук>щих функций преобразования всех значений одного типа в допустимые значения другого типа и наоборот, задающих приведение исходного типа к целевому. Например, целый, вещественный и комплексный типы как математические множества, (алгебраические структуры) естественно вкладываются друг в друга .'Е б ек Е С. Но аппаратные (и программные) реализации этих типов не идеальны и существенно отличаются.

В силу известных причин преобразование значений может осуществляться неточно, быть необратимым и требовать некоторого немалого чаще всего линейного времени (схема Горнера). То есть память преобразуемого к новому типу значения существенно меняется. Даже в таких строгих языках как Паскаль многие преоб)разования выполняются неявно и необходимо понимать происходящие при этом закулисные действия. В отличие от преобразования значений согласованных типов передача типо, трактовка данных одного типа как значений другого типа 1бэ1. В современных версиях Паскаля имя любого типа, как предопределенного, так и обьявленного программистом, является также именем функции преобразования типа. Передача типа преобразует лишь тип (интерпрет))Елею) дйнного кйк Облйсги пймяти, Й н!) Гймо хрйнимое знйюние.

Тйк, функция ЛОЙ1, согласующая целый и вещественный типы. превра)цаст делос значение аргумента, в эквивалентное данное, хранимое как значение типа Геа!: Х1оае(3) = 3.0. Функция передачи типа геа1 присваивает этот тип области памяти с целым значением 3, не делая ПОпытОк прсВрй'!'игь сс)мО этО ЗЕЕЙ)юнис В экВиВален ПЕое знйчее)и!' типа Геа1, т. е. зеЕЙ>юнис геа1 (3) почти наверняка не равно 3.0 ! 7.3.4 Адресный тип Для обеспечения процессов разнотишюй интерпретации памяти необходимо применение родовых типов.

Родовые типы данных уже заложены в конструкцию универсальных ЭВМ, пймЯть кОтоРых ПРедстс)влсяет собой слОВЙ., ПРеднйзнстченныс ДЛЯ ХРан!.'ниЯ Данных ПРО- извольных т)лпов Щ. Ослабляя ограничения строго типизированных языков, можно ввести родовой тип данных и)огс1, не предполагающий какого-лиоо особенного использования памяти, выделяемой для его обьектов. Для типа ее)огс1 определены лишь операция присваивання и отношение равенства.

Также, как и тип множество, тип ъъ'огс1 является внутримашинным, нетекстовым, непечатным. По этой причине в этом типе нет констант, изображающих конкретные значения. Основное применени!' типа тчогг1 связано с ослаблением контроля типов при передаче параметров. Любой формальный параметр типа жогг1 считастся совместимым !.' любым фактическим параметром, занимйклцим ровно одно слово в памяти ЭВМ. В обычном употреблении тип ч>огс1 чужд другим типам, что уменыпает потенциальную опасность его применения и локализует места его использования. Другой, более универсальный способ ослабления тйпового контроля,основан на применении бестиповых, родовы>в указателей. В стандартном Паскале указатель может ссылаться на обьекты не более, чем одного типа. В современных версиях Паскаля бестиповые указатели вводятся как роп>!е>' ~о и>огс1 ('! и>огс1), распостраняя типовук> свобх>ду и~огс1 на мир ссылок и указателей.

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

7.3.5 Родовые модули Понятие родового модуля противоречит строгой типизации данных. Родовой модуль, реализующий стек, способен вталкивать и выталкивать элементы различных типов данных !59]. Один программист может импортировать ,'этот модуль и использовать его в качестве стека целых значений, а другой — применять его как стек текстовых строк.

Однако в Паскале целые числа и строки считаются несовместимыми типами. Правильность типов данных для операций обы шо контролируется. Если же контроль типов ослабляется, возникает нарушение строгой типизации данных. Для большинства родовых операций характерна та или иная форма нарушения строгой типизации. Например., можно хранить в целочисленном стеке коды литер, допустив легкое и полностьк> контролируемое нарушение строгой типизации данных !2Ц. В качестве примера, ограниченно родового модуля часто приводят родовую очередь скалярных значений, реализуемую с помощью типа ъ~огс1 как очередь слов [59~.

аггау оГ э> огс1 без указания индексных границ устраняет все виды контроля типов и допустим лишь в качестве типа формальных параметров, которому может соответствовать фактический параметр лк>бого типа, и длины. 7.3.6 Полиморфизм Параме>призоаанные или полпморфные типы это один из аспектов общего понятия полиморфизма, !многоликости вообще и многотиповости в частности) !461.

Понятие полиморфной операции, т. е. операции, у которой хотя бы один аргумент допускает значения не одного, а нескольких типов, встречается почти в любом языке программирования, начиная с Фортрана, где операция !- может применяться как к вещественным значениям, так и к целым !211, '!'оже можно сказать и о присваивании: один и тот же синтаксический обьскт:= перегружен и интерпретируется по-разному в зависимости ог контекста чаг 1, ): шСенег; чаг х, у: геа1; :.

†. 3 ' х загружая разнотипные регистры машины фон Неймана. От абстракции имен относительно конкретных значений можно перейти к абстрагированию конструкций по отношению к имени типа, Например, можно определить абстрактную по отношению к типу или полиморфную процедуру виар: ргосес)иге э~чар (Т: Суре, чаг р, с1: Т); чагС: Т; Ьецш С: — р; р й: еп<1; Здесь в отличие от примера со знаком: =- внутри процедуры эзар смысл присваиваний неизвестен, поскольку тип Т не фиксируется, и мы имеем дело с типовой абстракцией. Абстракция заключается уже в неопределенности типа, и может стать явной, .как это сделано с помощью параметра-типа в процедуре вжар, вызов которой имеет вид эюар~шСедег, .х, у); При компиляции такой процедуры надо запланировать передачу набора атрибутов типа ~операций, отношений, ...) в процедуру например в виде вектора ссылок или как множество ссылок па процедуры (конкретных значений процедурного типа).

Характеристики

Тип файла
DJVU-файл
Размер
675,15 Kb
Тип материала
Высшее учебное заведение

Список файлов лекций

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее