tehnologia (Г.С. Иванова - Учебник - Технология программирования), страница 13

PDF-файл tehnologia (Г.С. Иванова - Учебник - Технология программирования), страница 13 Информационные технологии (10060): Книга - 2 семестрtehnologia (Г.С. Иванова - Учебник - Технология программирования) - PDF, страница 13 (10060) - СтудИзба2017-07-08СтудИзба

Описание файла

Файл "tehnologia" внутри архива находится в папке "Учебник - Технология программирования". PDF-файл из архива "Г.С. Иванова - Учебник - Технология программирования", который расположен в категории "". Всё это находится в предмете "информационные технологии" из 2 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информационные технологии" в общих файлах.

Просмотр PDF-файла онлайн

Текст 13 страницы из PDF

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

Дляуменьшения времени выполнения некоторой программы в первую очередь следуетпроанализировать циклические фрагменты с большим количеством повторений: экономиявремени выполнения одной итерации цикла будет умножена на количество итераций.Не следует забывать и о том, что многие способы снижения временных затрат приводятк увеличению емкостных и, наоборот, уменьшение объема памяти может потребоватьдополнительного времени на обработку.И тем более не следует «платить» за увеличение эффективности снижениемтехнологичности разрабатываемого программного обеспечения. Исключения возможнылишь при очень жестких требованиях и наличии соответствующего контроля за качеством.Частично проблему эффективности программ решают за программиста компиляторы.Средства оптимизации, используемые компиляторами, делят на две группы:• машинно-зависимые, т.

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

Учитывая, что анализировать имеетсмысл только операции размещения данных, существенно влияющие на характеристикуэффективности, следует обращать особое внимание на выделение памяти под данныеструктурных типов (массивов, записей, объектов и т.п.).68Прежде всего при наличии ограничений на использование памяти следует выбиратьалгоритмы обработки, не требующие дублирования исходных данных структурных типов впроцессе обработки. Примером могут служить алгоритмы сортировки массивов,выполняющие операцию в заданном массиве, например, хорошо известная сортировкаметодом «пузырька».Если в программе необходимы большие массивы, используемые ограниченное время, тоих можно размещать в динамической памяти и удалять при завершении обработки.Также следует помнить, что при передаче структурных данных в подпрограмму «позначению» копии этих данных размещаются в стеке.

Избежать копирования иногда удается,если передавать данные «по ссылке», но как неизменяемые (описанные const). В последнемслучае в стеке размещается только адрес данных, например:Type Massiv=array[l.. 100] of real;function Summa (f Const; a Massiv; ...)...Способы уменьшения времени выполнения. Как уже упоминалось выше, дляуменьшения времени выполнения в первую очередь необходимо анализировать циклическиеучастки программы с большим количеством повторений. При их написании необходимо повозможности:• выносить вычисление константных, т.е. не зависящих от параметров цикла, выраженийиз циклов;• избегать «длинных» операций умножения и деления, заменяя их сложением,вычитанием и сдвигами:• минимизировать преобразования типов в выражениях;• оптимизировать запись условных выражений – исключать лишние проверки;• исключать многократные обращения к элементам массивов по индексам (особенномногомерных, так как при вычислении адреса элемента используются операции умноженияна значение индексов) – первый раз прочитав из памяти элемент массива, следует запомнитьего в скалярной переменной и использовать в нужных местах;• избегать использования различных типов в выражении и т.п.Рассмотрим следующие примеры.Пример 2.2.

Пусть имеется цикл следующей структуры (Pascal):for у: =0 to 99 dofor x:=0 to 99 doa[320*x+y]:=S[k,l];В этом цикле операции умножения и обращения к элементу S[k] выполняются 10000 раз.Оптимизируем цикл, используя, что 320 = 28 + 26:69skl:=S[k,l];{выносим обращение к элементу массива из цикла}for x:=0 to 99 do{меняем циклы местами}begini: =х skl 8+x skl 6;{умножение заменяем на сдвиги и выносим из цикла}for y:=0 to 99 do a[i+y]: =skl;end; ...В результате вместо 10000 операций умножения будут выполняться 200 операцийсдвига, а их время приблизительно сравнимо со временем выполнения операции сложения.Обращение к элементу массива S[k] будет выполнено один раз.Пример 2.3. Пусть имеется цикл, в теле которого реализовано сложное условие:for k: =2 to n dobeginif x[k]>yk then S:=S+y[k]-x[k];if (x[k]<=yk) and (y[k]<yk) then S:=S+yk-x[k];end;...В этом цикле можно убрать лишние проверки:for к: =2 to n do beginif x[k]>yk then S:=S+y[k]-x[k] elseif y[k]<yk then S:=S+yk-x[k];end;...Обратите внимание на то, что в примере 2.2 понять, что делает программа, сталосложнее, а в примере 2.3 – практически нет.

Следовательно, оптимизация, выполненная впервом случае, может ухудшить технологичность программы, а потому не очень желательна.2.7. Программирование «с защитой от ошибок»Любая из ошибок программирования, которая не обнаруживается на этапах компиляциии компоновки программы, в конечном счете может проявиться тремя способами: привести квыдаче системного сообщения об ошибке, «зависанию» компьютера и получению неверныхрезультатов.70Однако до того, как результат работы программы становится фатальным, ошибкиобычно много раз проявляются в виде неверных промежуточных результатов, неверныхуправляющих переменных, неверных типах данных, индексах структур данных и т.п. (рис.2.10).

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

Причинами неверногоопределения исходных данных могут являться, как внутренние ошибки – ошибки устройствввода-вывода или программного обеспечения, так и внешние ошибки – ошибкипользователя. При этом принято различать:• ошибки передачи – аппаратные средства, например, вследствие неисправности,искажают данные;71• ошибки преобразования – программа неверно преобразует исходные данные извходного формата во внутренний;• ошибки перезаписи – пользователь ошибается при вводе данных, например, вводитлишний или другой символ;• ошибки данных – пользователь вводит неверные данные.Ошибки передачи обычно контролируются аппаратно.Для защиты от ошибок преобразования данные после ввода обычно сразудемонстрируют пользователю («эхо»). При этом выполняют сначала преобразование вовнутренний формат, а затем обратно.

Однако предотвратить все ошибки преобразования наданном этапе обычно крайне сложно, поэтому соответствующие фрагменты программытщательно тестируют [31], используя методы эквивалентного разбиения и граничныхзначений (см. § 9.4).Обнаружить и устранить ошибки перезаписи можно только, если пользователь вводитизбыточные данные, например контрольные суммы.

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

Поэтому имеет смысл проверять не все промежуточные результаты, атолько те, проверка которых целесообразна, т.е. возможно позволит обнаружить ошибку, ине сложна. Например:• если каким-либо образом вычисляется индекс элемента массива, то следуетпроверить, что этот индекс является допустимым;• если строится цикл, количество повторений которого определяется значениемпеременной, то целесообразно убедиться, что значение этой переменной неотрицательно;• если определяется вероятность какого-либо события, то целесообразно проверить,что полученное значение не более 1, а сумма вероятностей всех возможных независимыхсобытий равна 1 и т.д.Предотвращение накопления погрешностей. Чтобы снизить погрешности результатоввычислений, необходимо соблюдать следующие рекомендации:72• избегать вычитания близких чисел (машинный ноль);• избегать деления больших чисел на малые;• сложение длинной последовательности чисел начинать с меньших по абсолютнойвеличине;• стремиться по возможности уменьшать количество операций;• использовать методы с известными оценками погрешностей;• не использовать условие равенства вещественных чисел:• вычисления производить с двойной точностью, а результат выдавать – с одинарной.Обработка исключений.

Поскольку полный контроль данных на входе и в процессевычислений, как правило, невозможен, следует предусматривать перехват обработкиаварийных ситуаций.Для перехвата и обработки аппаратно и программно фиксируемых ошибок в некоторыхязыках программирования, например, Delhi Pascal, C++ и Java, предусмотрены средстваобработки исключений.

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