Главная » Просмотр файлов » Н. Джехани - Язык Ада (1988)

Н. Джехани - Язык Ада (1988) (1160771), страница 27

Файл №1160771 Н. Джехани - Язык Ада (1988) (Н. Джехани - Язык Ада (1988)) 27 страницаН. Джехани - Язык Ада (1988) (1160771) страница 272019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

4.2. Эти задачи имеют следующие спецификации: сад1с РКО1Н/СЕК; сав!с СОХЯ5МЕК 1в епсгу КЕСЕ1ЧЕ(С: !и СНАКАСТЕК); — С вЂ” формальный параметр (как в подпрограмме) еид СОХЯ)МЕК; Г) льяоогь Задача РКОО()СЕК считывает по одному символу из стандартного входного файла и передает их задаче СО)ЧЯ)МЕК: (аяй Ь7и!у РКОО()СЕК 1з С:СНАКАСТЕК; Ьей1в иЫ!е по! Е)9(Р ОР Р)ЬЕ(БТА)511)АК() 1)ЧР()Т) !оор ОЕТ(С); СОЫБОМЕК.КЕСЕ!ЧЕ(С); ев3 !оор; епо' РКОР()СЕК; Вызовы входов аналогичны вызовам процедур, за тем исключением, что при вызове входа должно указываться имя задачи, содержащей этот вход, например СО)5)Я)МЕК.КЕСЕ1ЧЕ(С).

(Вызовы входов можно рассматривать как вызовы процедур, происходящие в момент выполнения рандеву между задачами.) Задача РКОР()СЕК завершится, когда будут исчерпаны данные во входном файле. Задача СО)5)Я)МЕК принимает символы от задачи РКО?)()СЕК и печатает их в стандартном выходном файле. !аяй Ьоду СО1ЧЯЗМЕК 1з Х:СНАКАСТЕК; Ьей(в 1оор ассер! КЕСЕ1ЧЕ(С: )п СНАКАСТЕК) 5)о — имена вызывающих задач не определяются Х: С; — переменная Х необходима, чтобы значение С вЂ” можно было использовать вне оператора принятия ассерг, так как переменная С является локальной в нем еп7! КЕСЕ1ЧЕ; Р()Т(()РРЕК(Х) ); — печатает прописные буквы. Процедура Р13Т находится — вне оператора принятия, поэтому вызвавшая задача не приостанавливается на время выполнения процедуры Р()Т.

еп5! !оор; еп5! СО)9(В() МЕК; Две задачи выполняют рандеву, когда задача РКО191)СЕК вызвала вход КЕСЕ1ЧЕ, а задача СОНЯ)МЕК готова принять этот вызов. Задачи синхронизируются на входе КЕСЕ1ЧЕ. Выполнение задачи РКОР()СЕК приостанавливается до тех пор, пока задача СО)51Я)МЕК не запишет переданный ей символ (т. е. до тех пор, пока задача СО)5!Я)МЕК не достигнет конца оператора принятия, связанного с входом КЕСЕ1ЧЕ). Как упоминалось ранее, задача РКОО()СЕК завершится, когда будет достигнут конец ее тела. Задача СОХЯЗМЕК не завершится, так как конец ее тела никогда не будет достигнут.

Тело содержит бесконечный цикл, поэтому задача ожидает выполнения оператора принятия, что выражается в готовности принять еще один вызов входа и выполнить рандеву. Глеее 4 В соответствии с правилами языка Ада только подпрограммы и пакеты являются компилируемыми модулями и могут компилироваться раздельно, поэтому текстуально задачи должны находиться внутри подпрограммы или пакета. Поместив задачи РКО1)1)СЕК и СОХБ()МЕК, а также функцию 1)РРЕК в тело процедуры СОХЧЕКТ ТО (ЗРРЕК САБЕ, получим главную программу: аЬЬ ТЕХТ 10; аее ТЕХТ 10; — пакет ТЕХТ 10 содержит процедуры — ввода-вывода ОЕТ и Р1)Т функцию БТА)чРАКО 1)чР()Т и Е1чР ОР Р11.Е ргосейаге СОНЧЕКТ ТО 1)РРБК САБЕ Ь гаяЬ РКОР()СЕК; (аяЬ СОЫБПМЕК Ь еаЬу КБСЕ1ЧЕ(С: ш СНАКАСТЕЮ; еай СОЫБ()МЕК; — символы а — г и А — Е появляются в наборе символов — языка Ада (АБСП) последовательно.

Относитель— ные позиции соответствующих строчных и пропис— ных букв одинаковы. Преобразование строчных — букв в прописные основано на этом факте. 1аасаоа 1)РРЕК(С: Ь СНАКАСТЕЮ геааа СНАКАСТБК Ь Ье)р)а 1(С) а аЫС< и ГЬеа геаиа СНАКАСТБК'ЧАЕ(СНАКАСТЕК'РОБ(С) — СНАКАСТЕК'РОБ('а') + СНАКАСТЕК'РОБ( А')); — СНАКАСТЕК' РОБ(С) — позиция символа С в — перечислимом типе СНАКАСТЕК. — 'СНАКАСТЕК'ЧА1.

(1) — возвращает символ, имеющий — позицию 1 в перечислимом типе СНАИАСТЕК. — В условном операторе можно было бы — использовать проверку С 1п 'а' ... 'г'. еЬе геаиа С; еа4 1К еай 1)РРЕК; агеЬ Ьоду РК01Н 1СЕК 1а С: СНАКАСТЕК; Ьефа згЬКе аог ЕЫ() ОР Р)?.Б(БТАХ1)АК1) 1НР()Т) !оор ОБТ(С); !Зз Па льноеть СО)ч)Я)МЕК.КЕСЕ1ЧЕ(С); вам Ьюр; пз(1 РКО1)к)СЕК; ЬзиЬ Ьоз$у СО)ч)Б1)МЕК !я Х:СНАКАСТЕК; Ьера !оор ассер! КЕСЕ1ЧЕ(С: !а СНАКАСТЕК) з)о Х: С; еа(! КЕСЕ1ЧЕ; Р()Т(()РРЕК(Х) ); еай !оор; евз! СО)ч(Я) МЕК; Ьея!в — задачи РКО(з()СЕК н СО)ч(Б()МЕК становятся активными авй; — в соответствии с синтаксисом тело подпрограммы — должно содержать хотя бы один оператор, — даже если он является пустым.

еаз! СО)ч(ЧЕКТ ТО 1)РРЕК САБЕ; Задачи станут активными сразу же после входа в исполнительную часть процедуры СО)з(ЧЕКТ ТО ()РРЕК САБЕ (являющейся просто пустым оператором) ". 4.3.1. Очередность обрабоиии вызовов входа [9.51 Несколько задач могут вызвать один и тот же вход другой задачи. Эти вызовы помещаются в очередь, связанную с соответствующим входом, и обрабатываются согласно дисциплине первым пришел — первым вышел (Р1РО).

В изображенном на рис. 4.3 примере задачи А и В хотят выполнить рандеву с задачей С на входе Е. Задачи А и В вызывают вход Е раньше, чем задача С будет готова принять эти вызовы. Задача С выполняет сначала рандеву с задачей В, так как она вызвала вход раньше, чем задача А. 4.4. Входы и операторы принятия [9.51 Описания и вызовы входов синтаксически аналогичны описаниям и вызовам подпрограмм. Описание входа может появиться только в спецификации задачи. Соответствующий оператор принятия (ассер() помещается в теле задачи. Для каждого описания входа может быть задано несколько операторов принятия. Передача данных между задачами осуществляется во время рандеву через фактнче- "Цикл в теле задачи РКООЦСЕК можно написать проше; )овр ОЕТ(С); СО)ЧЕЦМЕК.КЕСЕ1ЗГЕ; еао )вар; При достижении конца файла выполнение процедуры ОЕТ возбудит исключении которое вызовет завершение задачи, так как обработчик исключений ие был задан (см.

гл. 5). Глава 4 132 ЯЯО ЯЯЯ Я Я Я Я Я Я Я Я-Я Я О Я ЯОЯ О Я Я Время Задача С вызывается сначала задачей В, а затем задачей А Задача С сначала обслуживает задачу В, а затем залачу А. Рнс. 4.3. окне параметры в вызове входа и формальные параметры из соответствующего оператора принятия. Пусть некоторая задача вызывает вход, а задача, которой этот вход принадлежит, не готова принять вызов (т. е. не готова к рандеву).

В этом случае вызывающая задача приостанавливается и помещается в очередь к соответствующему входу. Задачи из очереди выбираются последовательно, одна за другой, по мере того, как принимаются вызовы входа. Число ожидающих задач к входу Е задачи Т можно определить с помощью атрибута Е'СОБХТ. В любой заданный момент времени задача может находиться только в одной очереди. Задача, принявшая вызов входа, приостанавливает выполнение вызвавшей задачи на время, необходимое для обмена значениями. Продолжительность задержки равна времени, необходимому для выполнения последовательности операторов оператора принятия. Вызвавшая задача не может приостановить выполнение вызванной задачи.

Такая односторонняя задержка является еще одним примером асимметрии в механизме задач языка программирования Ада. Задачи могут ожидать принятия вызовов входов от более чем одной задачи, а также выполнять вызовы для осуществления рандеву немедленно либо в пределах заданного промежутка времени. ззз Ля ь ность Если задача вызывает свой собственный вход, возникает состояние, называемое тупдкохн хотя задача и не завершена, она не в состоянии продолжить свое выполнение Тупик возникает потому, что выполнение вызвавшей задачи, которая в данном случае одновременно является и вызванной, приостановлено.

Подобные вызовы не запрещены в языке Ада, однако в рамках конкретной реализации языка такие вызовы можно запретить либо предупреждать пользователя об их последствиях. Рассмотрим пример, иллюстрирующий способность вызванной задачи приостанавливать выполнение вызвавшей задачи. Пусть задача А осуществляет обмен значениями с задачей 0АТАВАБЕ, которая управляет базой данных, Когда задача А выполняет рандеву с задачей 0АТАВАБЕ для добавления информации к базе данных, задача 0АТАВАБЕ вызывает задержку задачи А только на время, необходимое для получения информации от А.

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

С помощью атрибута Т'САЬЬАВЬЕ, имеющего логический тип, можно определить, закончилась ли задача, была ли она завершена или стала аварийной. 4.4.1. Синтаксис Синтаксис описания входов, вызовов входов и операторов принятия показан на примерах. Примеры описания входов: еп!гу ЯО1ЧАЬ; — без параметров еп!гу БЕТ(Т: !и 0()КАТ10М); еп(гу КЕА0(С: ои! СНАКАСТЕК); еп!гу %К!ТЕ(С: !и СНАКАСТЕК); Примеры описаний семейств входов (т. е.

массивов входов): еп!гу КЕО1БТЕК КЕ()()ЕБТ(10) (О: 1п ов! 0АТА); — зарегистрировать для обслуживания еп!гу 0 %К!ТЕ(1..5)(В: !п ВЬОСК); — для 5 дисков Примеры вызовов входов: АЬАКМ.БЕТ()ЧЕХТ МОЧЕ Т1МЕ); В()РЕЕК.КЕА0(С); 01БКБ.0 %К1ТЕО) (В); — пишет блок В на диск У Примеры операторов принятия: ассер! ЯОНАЬ; ассер! БЕТ(Т: !и 0()КАТ!ОХ) йо РЕК100: Т; — вызвавшая задача приостанавливается на время — выполнения этого присваивания евй БЕТ; ассой( КЕАГу(С: овг СНАКАСТЕК) «)о С: Я(!ХВ шов Х); епй КЕАР; — оператор принятия, соответствующий 1-ому члену — семейства входов О 'узгК!ТЕ ассерг Р ЪУК1ТЕ(1) (В: 1п В(.ОСК) йе — последовательность операторов епа Р %К1ТЕ; Как упоминалось ранее, вызвавшая задача блокируется на время обмена информацией.

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

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

Список файлов книги

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