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

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

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

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

Отказ от логической модульности, представленной подпрограммой в пользу повышения скорости выполнения, нежелателен, поскольку это делает программу менее удобочитаемой, менее понимаемой и менее модифицируемой. Логическую модульность можно сохранить, не жертвуя скоростью выполнения, если подобную замену вместо программиста выполняет компилятор. Прагма 1ХЫХЕ дает указание компилятору заменить все вызовы специфицированных в ней подпрограмм нх телами: ргааша 1ХЫХЕ (3%АР); — замена вызовов подпрограммы — 5%АР копия ее тела Прагма может появиться после точки с запятой там, где может появиться оператор, описание, спецификатор, такой как «1()з и цзе, альтернатива, вариант Введение или обработчик исключения.

Существует несколько второстепенных ограничений на эти правила, относящиеся ко всем прагмам. Дальнейшие ограничения связаны с отдельными прагмами и направлены на то, чтобы гарантировать их появление в тех местах, где они осмыслены. Прагмы могут быть определенными в языке (приложение В руководства по языку Ада) илн зависящими от реализации (приложение Г руководства по языку Ада).

Приведем еще примеры прагм: ргаяша ОРТ1М1УЕ (БРАСЕ); — попытка оптимизировать использование памяти ргайша 1.1БТ (ОРГ); — прекратить печать листинга программы 1.10. Законченные примеры Для иллюстрации концепций языка Ада приводятся несколько законченных примеров. Первый пример, взятый из механики, иллюстрирует метод итерации. Остальные примеры из информатики касаются таких тем, как сортировка, матричное умножение и полиномиальные вычисления. Для иллюстрации разработки примеров программ везде, где необходимо, используется пошаговая детализация. Некоторые желательные черты хорошей методологии программирования и рекомендации для пошаговой детализации приведены в приложении. Обозначение Р; используется для 1-го шага детализации программы, а Ро — это начальный шаг.

1.10.1. Уапановившийся режим температурного распределения Этот пример взят из механики и связан с задачей теплопереноса. Проблема заключается в нахождении установившегося режима температурного распределения вдоль стенок воздушного канала (или кратера), показанного на рисунке, приведенном ниже, причем внутренняя и внешние температуры есть Т 1Х и Т О(1Т. 1 Т 01)т 100 т о(1Т Рнс.

1.1. Температурное распределенне влоль стенок воздушного канала Глава 1 Анализ теплопереноса для этой задачи позволяет свести ее к более простой задаче решения уравнения Лапласа ~7~! = 0 (где ! — температура) для сечения. Для решения уравнения Лапласа используется итерация Якоби (более детально о методе Якоби говорится в конце примера). Решение определяется следующим образом: Ро'. Выбор распределения температур для сечения !оор Пусть распределение температуры, вычисленное в последней итерации, будет старым распределением температур для этой итерации; Вычислить новое распределение температур на основании старого, подставляя новую температуру, являющуюся средним значением старых температур в четырех окружающих точках ех(! «'пеп, когда максимальное абсолютное изменение температуры во всех точках <ЕРБ епо !оор; где 0.0 ( ЕРБ ( ( 1.0 — требуемая точность вычислений.

Для представления канала в Ада-программе используется массив размерностью 100 х !00 (т. е. индексы имеют значения между 1 и 100); массив КЕО10Х определяется так: КЕО1ОХ (1, 1) имеет значение ТК1)Е, если точка 1, У находится внутри границ канала, и РАЕЧКЕ в противном случае Массив КЕО1ОХ упрощает проверку определения, находится ли точка внутри гранид канала. Граничные температуры являются константами, и нет необходимости просматривать граничные точки.

Исключение внешних граничных точек достигается просто повторениями цикла между 2 и 99. Следовательно, КЕО1ОХ будет определен только для точек (1, )) внутри диапазона 2 и 99. Вместо вычисления полных старого и нового температурных распределений для нахождения максимального абсолютного изменения температуры в любой точке это изменение будет вычисляться непрерывно всякий раз, когда найдена новая температура в точке. Поэтому абстрактный оператор «Вычислить новое распределение температур на основании старого...» в приведенном выше алгоритме детализируется следующим образом: МАХ СНАХОЕ:= 0.0; 1ог всех точек (1, з) в КЕО1ОХ !оор Новая температура в точке (1, Х) — это среднее значение старых температур в четырех окружающих точках; Пусть новое значение МАХ СНАХОЕ будет максимальным среди старых значений МАХ-СНАХОЕ и абсолютного значения разности старых и новых температур в точке (1, )) епо !оор; ВЗ Вве виве Оператор ехй згйеп, когда максимальное ...

теперь можно выразить как ехй згйеп МАХ СНАХОЕ ( ЕРБ; Главная Ада-программа, базирующаяся на приведенном выше алгоритме и детализациях, имеет вид ичгЬ ТЕХТ 1О; — подпрограммы ввода-вывода строк, настраиваемые пакеты — Н.ОАТ, 1ХТЕОЕК и другие подпрограммы ввода— вывода становятся доступными пзе ТЕХТ 10; — указанные выше подпрограммы нет — необходимости квалифицировать с помощью — ТЕХТ 10 ргосейпге 1ИЗСТ ТЕМРЕКАТ1ЗКЕ !и расйаяе 10 Н.ОАТ 1ч пеп И.ОАТ 10 (Н.ОАТ); — конкретизация настраиваемого пакета — Р1.ОАТ расйаяе 10 1ХТЕОЕК 1в пезг 1ХТЕОЕК 10 (1ХТЕОЕК); — конкретизация настраиваемого пакета — 1ХТЕОЕК вве 10 И.ОАТ, 10 1ХТЕОЕК; — ОЕТ и РОТ для РЬОАТ и 1ХТЕОЕК теперь видимы — непосредственно впЬгуре ООТБ11)Е 1е 1ХТЕОЕК гапйе 1..100; — внешняя граница канала 1уре 1111СТ (в аггау (О(ЗТБ11)Е, 01)ТБ1ГзЕ) о1 Н.ОАТ, 1Х-ТЕМР 015Т ТЕМР ЕРБ, МАХ СНАХОЕ: Н.ОАТ,' ОЬО ТЕМТ, ХЕчг' ТЕМР: 1)ОСТ, — содержат старые и новые температурные — распределения в канале КЕ010Х: сопв1апг аггау (2..99, 2..99) о1 ВООЬЕАХ:= (2..25 = > (2..99 = > ТЛЕ), 26..75 => (26..75 => РА1.БЕ, 2..25 ) 76..99 => ТЛЕ), 76..99 = > (2..99 = > ТК15Е)); — отметим удачное использование агрегатов — агрегат не следует записывать как — (26..75 = > (26..75 = > РА1,БЕ), о(Ьегв = > ТКЫЕ), — поскольку (1) двумерный агрегат массива — должен записываться как перечисление значений — одномерного массива и (2) альтернатива — оГЬегв может использоваться в агрегате — только тогда, когда его тип определяется — явно.

1ппсйоп МАХ(А, В: ш И.ОАТ) геГпгп НОАТ 1з Ьерп Ы А < В гегогп В; е1зе геГпгп А; епй 11; — такой способ использования оператора 1Т вместо — показанного ниже н обычно используемого способа Глава Г диктуется краткостью оператора. Стиль записи не должен быть слишком жестким; он должен быть гибким и соответствовать применениям Ы А ( В ФЬеп ге!пгп В; еЫе ге!пгп А; епй Ы; епй МАХ; Ьей!п чтение граничных температур и результирующей точности Р(ЗТ (" Какова внутренняя температура?"); ХЕ% 1.1ХЕ; ОЕТ(1Х ТЕМР); Р()Т (" Какова внешняя температура?"); ХЕ% 1.1ХЕ; ОЕТ(01)Т ТЕМР); Р13Т (" Какова желаемая точность?"); ХЕ% 1.1ХЕ; ОЕТ (ЕРБ); инициализация ХЕ% ТЕМР; границы инициализируются указанными температурами, а внутренняя область — средними значениями двух граничных температур !ог1 1п 01)ТБ11)Е !оор !ог Ю !п 01)ТБ11)Е !оор Ы 1 = 01)ТБ1РЕ'Р1ВБТ ог 1 = 01)ТБ10Е'ЬАБТ ог У = 01)ТБ10Е'Р1йБТ ог 1 = 01)ТБ10Е'ЬАБТ !Ьеп ХЕ% ТЕМР (1, 1):= 013Т ТЕМР; — внешние граничные точки е!зЫ йЕО1ОХ (1„1) !Ьеп ХЕ% ТЕМР (1, У):= (1Х ТЕМР+ 01)Т ТЕМР)/2.0; — внутренняя область е!яе ХЕ% ТЕМР (1, У):= 1Х ТЕМР; — точки на внутренней границе и внутри ее; — точки массива, ограниченные внутренней — границей, никогда не будут использоваться епй Ы; епй 1оор; епй !оор; вычисление установившегося температурного распределения нее еиив 1оор ОЫ) ТЕМР:= ХЕ% ТЕМР; — все готово для следующей итерации — отметим использование присваивания — для массивов МАХ СНАХОЕ:= 0.0; — максимальное изменение для любой точки — рассматривается как возрастающее 1ог 1 т О()ТБ1ЬЗЕ'НКБТ + Ь.ОЫТБПЭЕ'ЬАБТ вЂ” 1 !оор 1огЮ т ОЫТБ1РЕ'НКБТ + Ь.ОЫТБЮЕ'ЬАБТ вЂ” 1 1оор 11КЕО1ОХ (1, 1) !пеп ХЕ% ТЕМР (1, Я):= (01ЛЭ ТЕМР (1 — 1,5) + ОЬВ ТЕМР (1 + Ь5) + ОЬР ТЕМР (1, У вЂ” 1) + 01ЛЭ ТЕМР (1, Л + 1))/4.0; МАХ СНАХОЕ: = МАХ(МАХ СНАХОЕ, аоя (ХЕ% ТЕМР (1, Я) — ОЬР ТЕМР (1, У))); епо 11; епд 1оор; епо 1оор; ехй згвеп МАХ СНАХОЕ ( ЕРБ; епд !оор; — печать окончательной версии температурного распределения — формирование каждой новой строки 1ог 1 !п ОЫТБПЭЕ 1оор РОТ (" Строка" ); Р()Т (1); ХЕ% ЫХЕ; — значение 1 используется по умолчанию — в качестве фактического параметра при — вызове ХЕ% ЫХЕ 1ог 1 !и О()ТБ1РЕ !оор Р()Т (ХЕ% ТЕМР (1, Ю)); епо 1оор; ХЕ% ЫХЕ (2); епд 1оор; епо 1Х)СТ ТЕМРЕКАТЫКЕ; Инициализация массива ХЕ% ТЕМР для выбранных температур может быть записана в альтернативном виде с использованием агрегата: ХЕ% ТЕМР:= (1 ) 100 = > (1..100 = > 0(ЗТ ТЕМР), — верхняя и нижняя границы 26..75 = > (26..75 = > ЬХ ТЕМР, 1 ~ 100 = > ОПТ ТЕМР, 2..25 ) 76..99 = > (0(ЗТ ТЕМР + 11Ч ТЕМР)/2.0), — строки, вюпочающие внутренние границы, и точки внутри их 2..25 ~ 76..99 = > (1 ~ 100 = > ОЫТ ТЕМР, 2..99 = > (ОЫТ ТЕМР + 1Х ТЕМР)/2.0)); — остальные точки Глава г Такая инициализация, вероятно, реализуется более эффективно, чем приведенная ранее, поскольку управление потоком явно не задается, а это оставляет больше свободы компилятору при генерации кода.

Более того, такая инициализация не содержит никаких явных проверок. Решение вопроса о том, какая из инициализаций более удобочитаема, остается за читателем. Метод итерации Якоби всегда сходится. Новые значения (температуры в данном примере) в точках не используются до следующей итерации. В модификации этого метода, называемой методом Гаусса — Зайделя, новые значения используются сразу, как только они вычислены.

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

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

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

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