КаталогИндекс раздела
НазадОглавлениеВперед


Лабораторные работы к курсу
"Основы программирования и алгоритмические языки"

часть I

Общие указания

1. Введение

     Перая часть цикла лабораторных работ к курсу "Основы программирования и алгоритмические языки" посвящнна языку C в его базовом варианте, который изложенный в классической работе [1].

     Для исполнения этой части цикла пригодна любая операционная среда и любая система программирования C, так как те свойства языка, которые здесь изучаются, являются ядром языка и присутствуют во всех ее реализациях. В основном, мы проводим этот цикл в среде операционной системы PC DOS 7.0 и системы программирования Borland C++ 3.1.

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

     В лабораторной работе 1 все студенты выполняют одну и ту же последовательность действий. Начиная же с работы ╧2, каждый студент должен разработать собственную программу.

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

2. Порядок выполнения лабораторных работ

2.1. Подготовка к выполнению

     Описание каждой лабораторной работы начинается с разделов "Цель работы" и "Темы для предварительного изучения". Указанные в этих разделах темы обязательно должны быть изучены по материалам лекционного курса и по литературе до начала лабораторной работы, так же, как и материалы указаний к ее выполнению. В оптимальном варианте студент должен явится в лабораторию, уже имея предварительный вариант текста программы, план ее отладки и предварительный вариант отчета.

2.2. Задания для выполнения.

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

2.3. Выполнение задания

2.3.1. Разработка алгоритма решения
     Выполнение начинается с разработки алгоритма решения задачи. На этом этапе должны быть детально проанализированны условия задания и разработанный алгоритм программы. Вообще- то алгоритм должен быть представлен в графическом виде, как схема алгоритма по ГОСТ 19.002-80[2], 19.003-80[3]. Хотя представление схемы алгоритма не является обязательным элементом проектирования программы (для програм с линейным алгоритмом можно обойтись и без него), но схема является удобным инструментом для осмысления задачи и оптимизации решения. Графическое представление алгоритма не освобождает от необходимости его текстового описания, в котором должны быть обоснованы ключевые алгоритмические решения. При разработке алгоритма следует уделять внимание его упрощению, минимизации объема вычислений, удалению лишних операций и т.п.

2.3.2. Написание текста программы
     Написание текста программы начинается с определения переменных, которые необходимы для функционированиня алгоритма. Большая часть переменных может быть определена еще на этапе проектирования схемы алгоритма.

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

     Примите решение, есть ли смысл присваивать переменным программы начальные значения, и, если да, определите соответствующие константы.

     Если схема алгоритма сделана достаточно тщательно, написание кодовой части программы сводится к записи каждого элемента схемы оператором языка программирования. Избегайте употребления оператора goto. Если в составе оператора встречается обращение к функции, немедленно проверьте соответствие состава, последовательности и типов параметров, и возвращаемого значения спецификациям функции. Одновременно убедитесь, что Вы включили (#include) файл-заголовок с описанием этой функции в программу.

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

     При написании операторов ввода обязательно перед вводом выведите на экран приглашение.

     Никогда не ленитесь писать коментарии к Вашей программе. Хорошо написанные коментарии облегчают как Вашу работу, так и работу того, кто будет читать Вашу программу.

     Подготовленный текст программы наберите в текстовом редакторе системы программирования и сохраните его в файле.

2.3.3. Отладка программы
     Отладка начинается с устранения из программы синтаксических ошибок, т.е. таких, которые могут быть определены компилятором. Перед выполнением программы ее надо компилировать (Compile) и компонировать (Link). Если Вы сразу запускаете программу на выполнение (Run), то компиляция и компоновка происходят автоматически. Но обратите внимание на то, что компилятор C кроме сообщений об ошибках может выдавать еще и предупреждения. Предупреждения выдаются к таким конструкциям программы, которые являются формально правильными (с точки зрения синтаксиса), но компилятор "подозревает" в них семантическую ошибку. Довольно часто предупреждения компилятора действительно отражают ошибки программиста. Программа с ошибками не может компоноваться и исполняться. Программа с предупреждениями - может. Если Вы сразу (без исполнения компиляции отдельным шагом) запускаете программу на высполнение, Вы не увидете предупреждений компилятора, т.е рискуете выполнять программу с теми ошибками, которые могли быть выявленны предварительно. Мы рекомендуем всегда выполнять компиляцию отдельным шагом и не переходить к следующему шагу, пока Вы не убедитесь в том, что предупреждений компилятора нет или его "подозрения" безосновательны.

     Отладку програмного кода можно вести методом "черного ящика" или "белого ящика".

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

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

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

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

     Иногда отладка требует внесения некоторых изменений в программу: объявление дополнительных переменных, разложение сложных выражений на простейшие, дополнительных операторов вывода и т.п. После отладки эти изменения должны быть удалены. Но после их удаления не забудьте убедиться, что это не внесло в программу новых ошибок.

2.3.4. Сохранение результатов
     Зафиксируйте результаты работы программы. Если программа выдает результаты на экран, можно перенаправить их в файл. Для этого следует в командной строке DOS ввести команду:

    program > result.txt

где program - имя программы, а result.txt - имя файла, в который записывается то, что при обычном запуске программы выводится на экран.

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

3. Отчет к лабораторной работе

Отчет к лабораторной работе должен содержать :

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

4. Литература

  1. Керниган Б., Ритчи Д. Язык программирования Си./пер. с англ. - М.: Финансы и статистика, 1992.
  2. Единая Система Программной Документации. Схемы алгоритмов и программ. Правила выполнения. ГОСТ 19.002-80
  3. Единая Система Программной Документации. Схемы алгоритмов и программ. Обозначения условные графические. ГОСТ 19.003-80

     Существует большое количество учебников и справочников по языку C. Мы приводим лишь одно название, т. к. это - первоисточник, книга, которая была написана самими авторами языка. Вы можете пользоваться какими угодно учебниками. Рекомендуем, все же, иметь во внимании следующее:


КаталогИндекс раздела
НазадОглавлениеВперед