Общая схема решения задачи на персональном компьютере

Общая схема решения задачи на персональном компьютере

С.А. Григорьев

В общем виде процесс решения любой программистской задачи на ПК можно представить в виде последовательности следующих действий:

1) разработка алгоритма решения задачи;

2) создание текста программы;

3) отладка программы;

4) тестирование программы.

Все эти этапы (иногда в неявной форме) обязательно выполняются любым программистом при решении любой задачи. Рассмотрим их подробнее.

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

На этапе создания текста программы вы записываете алгоритм на языке программирования. Один и тот же алгоритм можно запрограммировать множеством различных способов, но вы должны стремиться написать оптимальную программу. Хорошо написанная программа, как правило, содержит меньше ошибок и гораздо быстрее отлаживается.

Этап отладки включает в себя компиляцию программы и проверку ее на простейших тестах. Компиляция (или трансляция) программы - это процесс перевода ее с языка программирования на машинный язык, его осуществляет специальная программа - компилятор (транслятор). При этом вы постепенно исправляете допущенные при написании программы синтаксические ошибки, следите за сообщениями компилятора - он указывает, какая обнаружена ошибка и где именно. После того, как вы исправите все синтаксические ошибки и компилятор сообщит об успешном завершении компиляции, будет создан файл с именем, таким же, как у вашего исходного файла, и с расширением exe (от EXEcutive - выполняемый); этот файл содержит программу (в отличие от исходного файла, содержащего лишь текст программы), которая может быть выполнена. Необходимо отчетливо понимать, что задачей компилятора ни в коем случае не является поиск ошибок в ваших программах, он сообщает о них лишь в том случае, когда не может правильно интерпретировать ваш текст. Успешно осуществив компиляцию, запустите свою программу. Не следует думать, что эта программа не содержит ошибок! Все логические ошибки, допущенные вами, остались в программе, и на этапе отладки вы должны найти их и исправить. (Не верьте тем программистам, которые утверждают, что они могут сразу написать правильную программу, - таких людей не бывает). Не существует никаких общих рецептов для отладки - класс программиста, главным образом, как раз и проявляется в том, как он отлаживает программы. Но один полезный совет можно дать: аккуратно и подробно выводите при отладке все вычисляемые вашей программой величины.

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

Следует четко разграничивать два понятия - верная программа и хорошая программа. Всякая хорошая программа верна, но далеко не всякая верная программа хороша - она может использовать неэффективный (или неэффективно запрограммированный) алгоритм, занимать много лишней памяти, быть неряшливо оформленной и т.д. Старайтесь писать не только верные, но и хорошие программы!

Введение в язык Паскаль. Общая структура программы. 

Запишем для начала программу на языке Паскаль :

     { эта программа просто выводит сообщение }

      BEGIN WRITELN('Привет !!!'); END.

Это правильная программа, и если вам удастся ее откомпилировать и запустить, она выведет на экран сообщение: "Привет !!!". Эту программу мы могли бы записать и так:

      CONST Message='Привет !!!';

         BEGIN

            WRITELN(Message);

                     END.

и так :

      VAR Message:STRING[10];

      BEGIN Message:='Привет !!!'; WRITELN(Message); END.

и еще множеством различных способов, но в каждой программе обязательно будет слово BEGIN, и в конце программы всегда будет стоять END. - признак конца программы. Перед BEGIN может что-то быть (как правило, это так), или может не быть ничего. То, что находится перед BEGIN, называется разделом описаний, то, что находится между BEGIN и END. , называется разделом операторов. Слова BEGIN, END, а также CONST, VAR, STRING, WRITELN являются ключевыми словами языка Паскаль, а слово Message - это идентификатор пользователя, т.е. имя, данное нами некоторому объекту - константе, переменной, или чему-то еще. Все ключевые слова и идентификаторы пользователя есть последовательности букв и цифр, начинающиеся с буквы. Буквами языка являются все латинские буквы и символ подчеркивания. Компилятор не различает большие и малые латинские буквы, поэтому вы можете записывать идентификаторы как захотите: Begin, BEGIN, begin и т.д. Вы можете выбирать любые идентификаторы пользователя, лишь бы они не совпадали с ключевыми словами; так, в нашем примере вместо Message вы можете написать Q или __t123, или Y56_ert и т.д. Однако все эти идентификаторы не несут в себе никакого смысла, затрудняют чтение и отладку программы и делают ее неряшливой; идентификатор Message имеет то достоинство, что из него уже ясно его назначение - содержать некоторое сообщение. Старайтесь всегда использовать в программе осмысленные идентификаторы! Язык Паскаль допускает идентификаторы длиной до 63 символов (точнее, компилятор различает первые 63 символа имени), поэтому не экономьте на именах переменных и функций, пусть лучше имена будут длинными, но понятными. Кроме ключевых слов и идентификаторов всякая программа содержит также пробелы и (в идеале) комментарии. Комментарии записываются в фигурных скобках и могут стоять в любом месте программы, пробелы являются разделителями, там, где допустим один пробел, можно поставить любое количество пробелов. Комментарии и пробелы следует использовать для аккуратного оформления текста программы. Хорошая программа обязательно должна быть документирована, т.е. содержать комментарии, поясняющие, как она работает.