Cтраница 3
В первой части рассматривается задача экономии памяти в операторных схемах программ. Конструкции и понятия, вошедшие в теоретическое программирование в связи с решением этой задачи, не только внесли существенный вклад в развитие предмета, но и стали основой широкого класса преобразований программ, применяемых в системах автоматизации программирования и при проверке правильности программ. Задача экономии памяти рассматривается как пример решения прикладной задачи с применением математических методов. Изложение разбито на главы, в каждой из которых анализируется один из неотъемлемых этапов полного решения прикладной задачи: содержательная постановка задачи, точная постановка и общая теория, поиски конструктивного метода решения, затем его алгоритмизация и, наконец, составление программ на алгоритмическом языке. [31]
В книге рассмотрены вопросы разработки, применения и эксплуатации математического обеспечения ЭВМ для автоматизации производства и научных исследований. Даны классификация и структуры языков программирования и рекомендации по их выбору в конкретных задачах. Приведены примеры организации структурных данных и процедур их обработки для проверки правильности программ. Описаны основные принципы построения программного обеспечения локальных и региональных сетей ЭВМ. [32]
Авторы справедливо отмечают, что в настоящее время computer science находится в долгу перед потребностями практики использования ЭВМ. Однако следует отдать дань несомненным успехам этой науки, а также достижениям смежной с ней дисциплины - исследованиям по искусственному интеллекту. Весьма интенсивно в настоящее время развиваются исследования по алгоритмическим языкам, работы по синтезу программ и по проверке правильности программ, которые проводятся на базе логических исчислений; имеются также некоторые успехи в развитии общей теории информационных систем и моделей баз данных. Ниже мы приводим ( далеко не полный) перечень ссылок на работы, информирующие читателей об упомянутых проблемах. [33]
Авторы справедливо отмечают, что в настоящее время computer science находится в долгу перед потребностями практики использования ЭВМ. Однако следует отдать дань несомненным успехам этой науки, а также достижениям смежной G ней дисциплины - исследованиям по искусственному интеллекту. Весьма интенсивно в настоящее время развиваются исследования по алгоритмическим языкам, работы по синтезу программ и по проверке правильности программ, которые проводятся на базе логических исчислений; имеются также некоторые успехи в развитии общей теории информационных систем и моделей баз данных. Ниже мы приводим ( далеко не полный) перечень ссылок на работы, информирующие читателей об упомянутых проблемах. [34]
Если во время выполнения этой команды ключ, упомянутый в ее адресе, выключен, следующая за этой командой очередная команда выполняется. В противном случае она пропускается. Включение ключей производится перед началом выполнения программы. Применяется оно с целью проверки правильности программы. Как и в Стреле, при выполнении ряда операций арифметическое устройство Урала вырабатывает сигнал ш, равный нулю или единице в зависимости от результата операции. Значение сигнала ш используется для управления ходом вычислительного процесса с помощью команд условного перехода. [35]
Идеи структурного программирования базируются на наблюдении того факта, что человеку легче читать и понимать какой-либо текст, если он читает фразы в порядке их следования в этом тексте. Если же по ходу чтения его будут довольно часто отсылать на фрагменты текста, находящиеся, например, на других страницах, го восприятие и понимание текста человеком значительно затрудняется. Точно так же, чем больше разрывов в последовательности выполнения операторов ( блоков), входящих в состав программы ( а эти разрывы как раз и реализуются операторами перехода), тем труднее прослеживать логику программы, понимать ту последовательность действий, которая в ней предусмотрена, и проверять ее правильность. Структурное программирование как раз и является методом составления хорошо структурированных программ, удобных для чтения и понимания человеком, для проверки правильности программ и внесения в них исправлений и других изменений. [36]
Все шаги процесса совершенствования программы, начиная с верхнего уровня и заканчивая нижним, должны быть выполнены с достаточной степенью строгости, чтобы имелась возможность проверки правильности каждого шага. При использовании языка PDL, операции которого выражаются в краткой форме на английском языке, строгость доказательства не теряется. Строгое отображение всех уровней программы является решающим фактором для структурного программирования. Уверенность в правильности структурированных программ основывается на правильности их отдельных небольших частей, раскрываемых последовательно. Проверка правильности программы невозможна, если последовательные шаги совершенствования программы отображаются не строго или если переход к программному коду осуществляется непосредственно с уровня описания заданной функции. Поэтому необходимо убедиться в том, что каждый шаг процесса совершенствования отображен ясно и является обозримым, после чего осуществляется проверка правильности шага и переход к продолжению процесса. [37]
Существуют два принципиально отличных способа убедиться в правильности программы: теоретическое доказательство правильности и экспериментальная проверка, получившая название тестирования. Теоретические методы доказательства правильности достаточно сложны и пока недоступны рядовому программисту. Кроме того, методы теоретического доказательства разработаны для сравнительно простых программных модулей. Практическое применение теоретические доказательства могут иметь при разработке типовых программных средств, при разработке методики программирования. Надо отметить, что доказательство правильности существенно упрощается при применении для построения программных текстов типовых управляющих конструкций. При разработке конкретных программ, особенно при их массовом производстве, наиболее эффективным методом проверки правильности программ оказывается их тестирование. [38]