Учебная работа. Реферат: Программирование 2
Программирование
, процесс составления упорядоченной последовательности действий (программки
) для ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач); научная дисциплина, изучающая программки для ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) и методы их составления, проверки и улучшения.
Любая ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) является автоматом, состоящим из памяти, образуемой наружным и оперативным запоминающими устройствами, устройства управления (УУ) и арифметические устройства (АУ), в каком могут производиться некие деяния либо операции. память имеет вид занумерованной последовательности ячеек, в каждой из которых хранится порция двоичной инфы в виде серии нулей и единиц. Автоматическая работа ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач), управляемая программкой, состоит из последовательности тактов. На любом такте УУ выбирает из предписанной ему ячейки памяти порцию инфы. Эта порция трактуется как команда, т. е. предписание АУ выполнить некую операцию. Обычно в ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) выполнение операции заключается в том, чтоб из определённых ячеек памяти взять лежащую там информацию, передать её в АУ для выполнения над ней подходящего деяния, итог которого выслать в обозначенную ячейку памяти, и сказать УУ номер ячейки последующей команды. Отдельные деяния, совершаемые ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач), очень ординарны — это арифметические и логические операции, операции сопоставления, переписывания порции инфы и т.п. Т. о., составить программку для ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) — это означает представить метод решения задачки в виде таковой совокупы машинных установок (программки), чтоб они, будучи размещенными в памяти, поочерёдно выполняясь и вызывая одна другую, реализовали нужные вычисления.
Мысль Программирование
возникает ещё в школе при составлении «плана решения» арифметической задачки в виде серии вопросцев. Существенное отличие настоящего Программирование
от школьного опыта состоит в том, что программка, обычно, задаёт не одну, а несколько последовательностей действий (разветвлений), выбор меж которыми зависит от значения промежных результатов решения задачки; делает некие группы установок неоднократно, автоматом определяя необходимое число повторений; может предписанным образом сама себя поменять либо отчасти сформировывать в процессе собственного выполнения.
Доборной индивидуальностью Программирование
является его трудность: размеры почти всех настоящих программ исчисляются тыщами установок, а количество выполняемых ими действий — десятками миллионов. Такие объёмы в сочетании с простым нравом машинных установок делают Программирование
сразу и весьма сложным, и весьма однообразным действием.
Для преодоления этого противоречия Программирование
придан нрав многоэтапного процесса, любой шаг которого есть постепенная задачки на неком шаге будут точными, формальными и всепригодными, т. е. применимыми к хоть какой задачке, то тогда можно гласить о существовании некого языка Программирование
, применяемого при составлении программки.
Языки программирования
как метод четкого формулирования задачки на различных шагах подготовки её к решению на ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) сыграли фундаментальную роль в развитии Программирование
А именно, они разрешают трактовать Программирование
как процесс перевода задания для ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач), выраженного в неком языке, на иной язык — «язык машинки». Если отыскать и обрисовать четкие правила такового перевода, то эти правила, в свою очередь, можно запрограммировать на ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач). Приобретенные программки, автоматизирующие процесс Программирование
, именуют трансляторами.
Процесс Программирование
обычно состоит из последующих шагов:
Содержание всякого шага Программирование
можно объяснить на примере решения квадратного уравнения.
Начальная формулировка. нужно отыскать корешки 50 квадратных уравнений вида ax2
+ bx
+ c
= 0, коэффициенты которых заданы в виде трёх таблиц Ai
, B
i
и Ci
(i
= 1,…, 50).
Алгоритмическое описание задачки выходит в итоге полного математического исследования её постановки, выбора обычных либо поиска новейших алгоритмов выполнения всех подходящих вычислений, также уточнения, какие начальные данные нужно ввести в ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) и какие результаты нужно получить. В данном случае алгоритмическое описание может иметь таковой вид: ввести в ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) таблицы коэффициентов Ai
, B
i
и Ci
, решить каждое уравнение по общей формуле
с исследованием дискриминанта b2
—
4ac
для определения варианта всеохватывающих корней; для единообразия любой корень уравнения выдавать как всеохватывающее число x
= u
+ iv
, полагая в случае вещественных корней надуманную часть равной нулю.
язык Программирование
высочайшего уровня — основное средство составления программ для ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач). Общая изюминка этих языков — их независимость от системы установок определенных ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) и фразовая структура, что в сочетании с внедрением т. н. служебных слов приближает их к естественным языкам. Фразы делятся обычно точкой с запятой; соподчинённость фраз указывается при помощи «операторных скобок» начало и конец; фразы делятся на два типа — операторы и описания. Оператор является единицей деяния в языке. Различают последующие их типы: операторы присваивания, производящие подсчёт по обозначенной формуле и присваивающие вычисленное одной либо иной ветки вычислений; операторы цикла, обеспечивающие повторное выполнение группы операторов. В описаниях указываются характеристики переменных величин и остальных обозначений, применяемых в программке. Принципиальным свойством является «процедурный» нрав языка: для хоть какой уже составленной программки, решающей некую личную задачку, можно ввести символическое функциональное обозначение. текст данной нам программки вкупе с её обозначением именуется описанием процедуры либо подпрограммой. Тогда при составлении новейшей программки везде, где может потребоваться внедрение данной нам описанной процедуры, довольно упомянуть её функциональное обозначение в виде оператора процедуры заместо переписывания полного текста подпрограммы.
В 70-х гг. 20 в. существует целое семейство таковых языков Программирование
: алгол-60, фортран для решения инженерных и научных задач, кобол для экономических расчётов, симула для Программирование
математических моделей, наиболее массивные языки алгол-68 и ПЛ/1, обхватывающие все виды применений ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач). Для всех из их есть трансляторы, обеспечивающие автоматическое построение машинных программ для задач, выраженных в этих языках.
Машинно-ориентированный язык представляет программки в определениях установок ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач), но выраженных в наиболее комфортной для потребления символике, нежели прямое двоичное язык Программирование
, когда программка по существу сходу обязана быть сконструирована в определениях машинных установок. В крайнем случае роль языка высочайшего уровня нередко играет язык блок-схем, когда структура программки, т. е. последовательность выполнения её «блоков», наличие разветвления и циклических участков показываются в графической форме, а функции всякого блока записываются в случайной текстовой форме. Ниже следует пример блок-схемы решения квадратного уравнения:
Опосля составления программки неотъемлемым шагом Программирование
является «отладка» программки, т. е. обнаружение и исправление ошибок, допускаемых при Программирование
Основное средство отладки — т. н. отладочные пуски, когда в программку добавляются доп «измерительные» деяния, дозволяющие по ходу выполнения программки на ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) выдавать «протокол» её работы (порядок выполнения установок, значения промежных результатов и т.п.). исследование протокола дозволяет судить о том, в которой степени программка соответствует плану программера.
Обширное внедрение вычислительной техники в разные сферы деятельности человека стимулировало развитие автоматических способов и инструментальных средств сотворения прикладного программного обеспечения (ПО (то есть программное обеспечение — комплект программ для компьютеров и вычислительных устройств)). Создание современного ПО (то есть программное обеспечение — комплект программ для компьютеров и вычислительных устройств) происходит на фоне больших требований к его качеству, потому что сложность и ответственность выполняемых им функций безпрерывно увеличивается. Создание высококачественной программки, как и хоть какого другого продукта, зависит не только лишь от опыта разраба, да и от инструмента, которым он пользуется. “Безупречной” технологией программирования была бы таковая разработка, которая по некому неформальному описанию объекта программирования автоматом генерировала бы текст синтаксически и семантически корректной программки.
Разработка хоть какого программного средства быть может представлена как процесс, состоящий из ряда поочередных преобразований 1-го описания решаемой задачки в другое
, начиная от постановки задачки и заканчивая программкой, реализованной в кодах определенной ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач).
Все время существования программного средства, от зарождения идеи по его созданию до окончания его эксплуатации, обычно определяют как актуальный цикл.
Укрупнено можно выделить 5 более принципиальных шагов актуального цикла программного средства (ЖЦ ПС): спецификацию (10%),
проектирование (10%),
кодирование (10%),
отладку (20%) и сопровождение (50%).
В скобках записаны относительные Издержки ресурсов на создание ПС.
По затратам времени, человечьих и машинных ресурсов все эти этапы не схожи. Более “дорогими”, в этом смысле, являются этапы, связанные с поиском ошибок в программках
. Издержки ресурсов на их могут быть равными, либо даже превосходить совокупные Издержки ресурсов на других шагах. В эталоне DOD-STD-2167-A около 30% требований, документов и соответственных им действий конкретно соединены с отладкой, тестированием и испытаниями программ
. Данный эталон является неотклонимым при выполнении заказов Министерства обороны США (Соединённые Штаты Америки — стремительно растут при возрастании требований к качеству ПС. По оценкам, приведенным в работе [111], на долю устранения ошибок и сопровождение ПС приходится практически 75% всех издержек
. Следует учесть, что значимая часть работ, выполняемых на шаге сопровождения, связана с поиском и устранением оставшихся в программке ошибок.
Ретроспектива развития способов и средств автоматизации программирования тут гласит сама за себя. Сначало все усилия были сосредоточены на шаге программирования, что позволило решить ряд заморочек, связанных с ограничениями многофункциональных способностей имеющихся к тому моменту языков программирования.
На этом шаге следует выделить развитие специализированных языков программирования, таковых как КОБОЛ, СИМУЛА, СИМСКРИПТ [40], АСПИД [140], АНАЛИТИК [157] и т.д.
Спец либо проблемно-ориентированные языки
[34], построенные для решения определенных задач, непременно упрощают процесс разработки программных товаров в избранной предметной области, но в то же время для новейших языков свойственна неувязка преемственности, а для специализированных — ограниченности области внедрения.
Постепенное усложнение решаемых задач, а вкупе с ними кодов и размеров разрабатываемых программных средств, принудило критически переосмыслить сложившийся к концу 60-х годов стиль и технику программирования. В связи с чем, начиная с 70-х годов усилиями рабочей группы Технического комитета по программированию Интернациональной федерации по обработке инфы (ИФИП), состоящей из таковых узнаваемых ученых как Н. Вирт, Д. Грис, Э. Дейкстра, У. Отдал, Д. Парнас, Ч. Хоар (руководимой доктором В. Турским), формируются базы методологии и теории программирования.
В среде программистов утверждается принцип структурного программирования
,
как более производительного и симпатичного стиля программирования [26, 41]. Развитие концепции структуризации
привело к пониманию необходимости структуризации данных [2], что и обусловило возникновение в языках программирования устройств абстрагирования типов данных
(Клу [166], Модула [25] и д.р.). Крайнее легло в базу техники модульного программирования
, содержательной основой которой является интерпретация типа как алгебры над обилием объектов и обилием операций, а модуля как программного эквивалента абстрактного типа.
В модульном программировании упор делается на разбиение программки на модули таковым образом, чтоб данные (обрабатываемые модулем) были спрятаны в нем. Эта доктрина, популярная как “принцип ограничения доступа к данным”, в значимой степени повысила модифицируемость и эффективность порождаемого кода.
Эволюция техники модульного программирования привела к возникновению объектно-ориентированного стиля программирования
[154, 158, 170], который почти во всем унифицировал процесс сотворения ПС. К плюсам этого способа относится то, что в нем наиболее много реализуется разработка структурного программирования, облегчается процесс сотворения сложных иерархических систем, возникает комфортная возможность сотворения пользовательских библиотек объектов в разных областях внедрения.
Наряду с развитием процедурного стиля программирования сначала 70-х годов возникают непроцедурные языки логического программирования и программирования искусственного ума
(LISP [51, 122], PROLOG [15, 114], РЕФАЛ [149], ПРИЗ [61,144]) . программка в таковых языках представляет собой совокупа правил
(определяющих дела меж объектами) и цели
(запроса). процесс выполнения программки трактуется как процесс установления общезначимости логической формулы по правилам, установленным семантикой того либо другого языка. Итог вычислений является побочным продуктом процедуры вывода. Таковой способ являет собой полную противоположность программирования на каком-либо из процедурных языков. сейчас PROLOG — язык, созданный для программирования приложений, использующих средства и способы искусственного ума, сотворения экспертных систем и представления познаний.
В 80-х годах исследование обстоятельств неудач при реализации огромных программных проектов [167] показало, что число ошибок в спецификациях на программки существенно превосходит их количество в программных кодах. Так около 56% ошибок допускаются на шаге формулировки требований к программке при всем этом расходуется в среднем 82% всех усилий, затраченных коллективом на устранение ошибок проекта. В то время как на шаге кодировки программ допускается соответственно 7% ошибок и тратится 1% усилий на их ликвидацию [167].
В это время формулируется тезис о том, что целью программирования является не порождение программки как такой, а создание технологических критерий, когда разрабатываемое программное обеспечение просто приспосабливается к новеньким происшествиям и новенькому осознанию решаемой задачки [20, 100]. Р. Хемминг так определяет этот тезис: “Здравая вычислительная практика просит неизменного исследования изучаемой задачки не только лишь перед организацией вычислений, но также в процессе его развития и в особенности на той стадии, когда приобретенные числа переводятся назад и истолковываются на языке начальной задачки” [148].
Вышеперечисленные предпосылки привели посреди 80-х годов к пониманию необходимости реализации интегрированного окружения поддержки всего актуального цикла ПС и, сначала, шага проектирования ПС, что определило возникновение инструментальных средств автоматизации проектирования программных систем (CASE-технологий
) [155, 171, 172].
Сначало CASE-средства были нацелены на решение задач автоматического сбора инфы по предметной области и проектированию грядущего ПС, что дозволяет сберегать время при разработке ПС за счет наиболее кропотливого анализа начальных требований и наилучшего исходного планирования программки. Потом в CASE-средствах 2-го поколения на сто процентов либо отчасти были автоматизированы такие принципиальные составляющие актуального цикла ПС как моделирование инфы предметной области; программирование; тестирование, отладка ПС и измерение свойства; поддержка документирования; сопровождение.
Применение CASE-инструментов дозволяет в значимой степени понизить трудозатратность сотворения ПС, а в отдельных вариантах поменять программирование автоматическим синтезом программ.
Таковым образом, развитие способов автоматизации разработки ПС происходит на разных основах (модульное программирование, объектно-ориентированный подход, логическое программирование, CASE-технологии), которые, так либо по другому, развивают концепции структуризации в программировании.
Структуризация содействует проведению действенной декомпозиции проекта, что дозволяет получать как целостное области, в целом неувязка автоматизации разработки ПС остается нерешенной по почти всем причинам как методологического, так и практического нрава.
В крайнее время в связи с совершенствованием технических средств отображения инфы утверждается новейший графический подход
к решению трудности автоматизации разработки ПС, основанный на идее вербования зрительных форм представления программ, в основном соответственных образному способу мышления человека. Применение графических способов обещает абсолютно повысить производительность труда программера. Не считая того, графическая форма записи по сопоставлению с текстовым представлением программ обеспечивает наиболее высочайший уровень их структуризации, соблюдение технологической культуры программирования, дает наиболее надежный стиль программирования [23].
В истинное время понятно довольно огромное количество успешных инструментальных средств визуализации программирования
. До этого всего это относится к зрительным средствам разработки экранных форм, меню и остальных частей программки (Microsoft Windows 3.0, Visual BASIC [38, 59,133] и т.д.), средствам автоматизации проектирования программного обеспечения (CASE-средствам), средствам резвой разработки приложений для информационных систем (Visual FoxPro), текстовым и графическим редакторам, издательским системам и т.д.
В согласовании с “формулой” Н. Вирта [26] программку можно интерпретировать как “Метод + Структуры данных”. Зрительные формы представления алгоритмов программ
известны довольно издавна это
Р-технология программирования И. В. Вельбицкого [21], сети Петри [19], в конце концов, обыденные блок-схемы можно считать в определенном смысле графической формой задания метода. Общим для вышеперечисленных методов представления алгоритмов является внедрение “языка” теории графов.
Одним из главных причин увеличения эффективности и надежности программирования можно считать придание образности формам спецификации данных и описания метода. В этом смысле основной недочет имеющихся технологий программирования заключается в в большей степени текстовых формах представления главных компонент программки, что делает программку невыразительной и очень затрудняет ее восприятие человеком.
]]>