Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
НТП ТЕСТИРОВАНИЕ.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
360.96 Кб
Скачать

Постановка задачи и спецификация программы

Постановка задачи и спецификация программ.

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

Способы записи алгоритмов.

Графический вид представлений, например, в виде блок-схемы, либо текстовый вид на псевдоязыке. Графическая форма наглядна, но громоздка и подходит только для понимания общего смысла алгоритма. Запись на псевдоязыке, в котором присутствует ограничение для алгоритмических конструкций, более предпочтительна для детализированных описаний. Такая запись называется псевдокод. При составлении псевдокода можно учитывать конструкции того языка программирования, на котором, скорее всего, будет производиться реализация.

Способы записи алгоритмов

Для записи алгоритмов используют самые разнообразные средства. Выбор средства определяется типом исполняемого алгоритма. Выделяют следующие основные способы записи алгоритмов:

- вербальный, когда алгоритм описывается на человеческом языке;

- символьный, когда алгоритм описывается с помощью набора символов;

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

Общепринятыми способами записи являются графическая запись с помощью блок-схем и символьная запись с помощью какого-либо алгоритмического языка.

Программа на языке высокого уровня.

Программа – алгоритм, записанный на языке программирования + структура данных, с которыми работает программа. Этапы существования ПО (не жизненный цикл программы): подвергается трансляции – процедура перевода с языка высокого уровня на машинный язык. В ходе трансляции может использоваться переход на промежуточный язык – кросстрансляции, в качестве промежуточного языка может использоваться язык ассемблера. Ассемблер – программа, осуществляющая перевод с языка ассемблера на машинный язык. Машинный язык – язык, использующий машинные команды, записанные в формате воспринимаемом конкретным вычислительным устройством. Транслятор – программа, выполняющая процедуру трансляции. Существует 2 вида: компилятор и интерпретатор.

Компилятор – осуществляет перевод текста программы на машинный язык целиком. Результат работы – объектный файл, содержащий программу на машинном языке и информацию о данных, используемых программой. Объектный файл обрабатывается компоновщиком (линкером) или редактором связи. Компоновщик обрабатывает объектные файлы, разрешает внешние ссылки (делает доступным вызовы объектов функций или данных из других объектных файлов или стандартных библиотек), осуществляет необходимую подготовительную работу для последующей загрузки программы на исполнение. Загрузчик программ, осуществляющих размещение исполняемого кода и данных в памяти ЭВМ и передающий управление первой исполняемой команде программы. В случае персональных ЭВМ функции загрузчика распределены между ОС и кодом, включаемым в исполняемый файл. Исполнение программы начинается с загрузки в регистр счетчика исполняемых команд ЦП, адреса первой исполняемой команды программы. Устройство управления считывает по этому адресу код команды, в соответствии с ним считывает значения операндов, передает код и операнды АЛУ, которое выполняет необходимые операции. По завершению выполнения команды значение регистра счетчика команд увеличивается на значение длины команды, которая известна по коду операции. Процедура повторяется до тех пор, пока не будет встречена команда stop. Исполняемая программа обычно завершается возвратом управления программе, вызвавшей данную программу (ОС).

Интерпретатор – покомандно или построчно считывает программу на исходном языке, переводит на машинный язык и отправляет на выполнение. Входом является программа на языке программирования. Результат – построчно выполняемая команда.

Компилятор языка С воспринимает исходный файл, содержащий программу на языке С, как последовательность текстовых строк. Каждая строка завершена символом новой строки. Этот символ вставляется текстовым редактором при нажатии клавиши ENTER (ВВОД).

Компилятор языка С последовательно считывает строки программы и разбивает каждую из считанных строк на группы символов, называемые лексемами. Лексема—это единица текста программы, которая имеет самостоятельный смысл для компилятора языка С и которая не содержит в себе других лексем. Никакие лексемы, кроме символьных строк, не могут продолжаться на последующих строках текста программы. Знаки операций, константы, идентификаторы и ключевые слова, описанные в этом разделе, являются примерами лексем. Разделители, например квадратные скобки [], фигурные скобки {}, круглые скобки (), угловые скобки < > и запятые, также являются лексемами. Внутри идентификаторов, ключевых слов, а также знаков операций, состоящих из нескольких символов, пробельные символы недопустимы. Когда компилятор языка Си выделяет отдельную лексему, он пытается включить в нее последовательно столько символов, сколько возможно, прежде чем перейти к выделению следующей лексемы. Рассмотрим, например, следующее выражение: i+++j В этом примере компилятор языка Си вначале сформирует из первых двух знаков "плюс" операцию инкремента (++), а из оставшегося знака плюс — операцию сложения. Выражение проинтерпретируется как (i++)+(j), а не как (i)+(++j).В подобных случаях рекомендуется для ясности разделять лексемы пробельными символами или круглыми скобками.