Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
екзамен Алгортми і стр даних.docx
Скачиваний:
3
Добавлен:
19.09.2019
Размер:
88.29 Кб
Скачать

4. Роль засобів специфікації в системних програмах.

1. Описание концепции точным и недвусмысленным образом. Составляя формальное описание концепции, спецификатор вынужден анализировать ее до мельчайших деталей, которые обычно игнорируются при неформальном описании.

2. Привлечение инструментов для выявления двусмысленностей и противоречий в описании концепции. Неформальное описание не может быть формально проанализировано, и, как следствие, программа зачастую реализует концепцию неправильно. Формальная спецификация служит средством общения между заказчиком и реализатором программы для того, чтобы быть уверенным, что реализатор правильно понимает желания заказчика. Формальная спецификация служит также средством общения между несколькими реализаторами, если программа реализуется в виде нескольких модулей, кодируемых разными лицами.

3. Достижение однозначного понимания программы ее реализатором и пользователями. Таким образом устраняются споры между пользователем и реализатором по поводу правильности исполнения программой ее функций.

4. Определение правильности реализации программы и эквивалентности различных реализаций. При этом совсем не обязательно привлечение аналитических методов проверки. Даже если проверка правильности программы осуществляется методом тестирования, возможно применение методик, основывающихся на сравнении формальной спецификации и реализации. Результатом такой методики может быть множество критических тестовых вариантов, которые устанавливают, что программа правильно реализует данную спецификацию. Формальность спецификации означает возможность привлечения вычислительной машины, например, для проверки шагов доказательства правильности программы или для генерирования тестовых вариантов.

5. Подготовка документации программы, необходимой для эксплуатации и модификации программы. В этом случае формальная спецификация способствует пониманию текста программы, написанного другим лицом. При отсутствии формальной спецификации единственный путь программиста, модифицирующего программу, – сравнить текст программы со своим интуитивным представлением о том, что она должна делать. Однако интуиция часто оказывается ненадежным помощником. При наличии формальной спецификации чтение текста программы приобретает вид неформального доказательства, каждый шаг которого основывается на понимании формального описания.

6. Обеспечение средства общения между клиентом, реализатором и спецификатором. Спецификация, полученная в процессе проектирования программы, служит для передачи намерения заказчика программы реализатору и готовой программы – пользователю.

5. Специфікації мов та задач.

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

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

Сверхвысокоуровневый язык программирования (язык программирования сверхвысокого уровня, VHLL — very high-level programming language) — язык программирования с очень высоким уровнем абстракции. В отличие от языков программирования высокого уровня, где описывается принцип «как нужно сделать», в сверхвысокоуровневых языках программирования описывается лишь принцип «что нужно сделать». Термин впервые появился в середине 1990-х годов для идентификации группы языков, используемых для быстрого прототипирования, написания одноразовых скриптов и подобных задач.

Низкоуровневый язык программирования (язык программирования низкого уровня) — язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального (например, Java, Microsoft .NET) процессора. Для обозначения машинных команд обычно применяется мнемоническое обозначение. Это позволяет запоминать команды не в виде последовательности двоичных нулей и единиц, а в виде осмысленных сокращений слов человеческого языка (обычно английских).

Иногда одно мнемоническое обозначение соответствует целой группе машинных команд, выполняющих одинаковое действие над разными ячейками памяти процессора. Кроме машинных команд языки программирования низкого уровня могут предоставлять дополнительные возможности, такие как макроопределения (макросы). При помощи директив есть возможность управлять процессом трансляции машинных кодов, предоставляя возможность заносить константы и литеральные строки, резервировать память под переменные и размещать исполняемый код по определенным адресам. Часто эти языки позволяют работать вместо конкретных ячеек памяти с переменными.

Динамическое программирование в теории управления и теории вычислительных систем — способ решения сложных задач путём разбиения их на более простые подзадачи. Он применим к задачам с оптимальной подструктурой (англ.), выглядящим как набор перекрывающихся подзадач, сложность которых чуть меньше исходной. В этом случае время вычислений, по сравнению с «наивными» методами, можно значительно сократить.

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

Линейное программирование — математическая дисциплина, посвящённая теории и методам решения экстремальных задач на множествах -мерного векторного пространства, задаваемых системами линейных уравнений и неравенств.