Windows использует аргументы как средство коммуникации с программой. Проведите следующий эксперимент. Соберите описанную программу и найдите её с помощью Windows Explorer. Например, пусть она имеет имя X:\Cpp_Program\Chap09\PrintArgs.exe. Возьмите произвольный файл и перетащите его на имя файла программы — после этого запустится программа PrintArgs, и вы увидите имя перемещённого файла. Попробуйте перетащить несколько файлов одновременно ( выделив их при нажатой клавише или выделив группу при помощи клавиши ). Программа выведет имена всех перемещённых вами файлов.

Вот как выглядит вывод программы, если перетащить на неё файлы из папки Dev-C++.

    Аргументами программы E:\Tmp\PrintArgs.exe являются

    1: C:\Dev-Cpp\devcpp.exe

    2: C:\Dev-Cpp\copying.txt

    3: C:\Dev-Cpp\NEWS.txt

    4: C:\Dev-Cpp\Packman.exe

    5: C:\Dev-Cpp\uninstall.exe

    6: C:\Dev-Cpp\vRoach.exe

    7: C:\Dev-Cpp\vUpdate.exe

    Вот и всё

    Press any key to continue...

Обратите внимание, что каждое имя файла представлено как отдельный аргумент; кроме того, как видите, Windows передаёт в качестве параметра полное имя файла.

_________________

127 стр. Глава 9. Второе знакомство с указателями

<subtitle id="chapter10"><emphasis>Глава 10. ОТЛАДКА ПРОГРАММ НА С++...128</emphasis></subtitle>

ОГЛАВЛЕНИЕ

        В этой главе...

►Определение типа ошибки 128

►Использование отладочной печати 128

►Использование отладчика  134

Не часто случается ( особенно с "чайниками" ), что программа идеально работает с первого раза. Крайне редко удаётся написать нетривиальную программу и не допустить ни одной ошибки.

Чтобы избавиться от ошибок, можно пойти двумя путями. Первый — стереть программу и написать её заново, а второй — найти и исправить ошибки. Освоение первого пути я оставляю читателю, а в этой главе расскажу о том, как выследить и исправить ошибку в программе. 

<p id="chapter10.1"><strong>►Определение типа ошибки...127</strong></p>

Можно выделить два типа ошибок: те, которые компилятор может найти, и те, которые не может. Первый тип называют ошибками компиляции ( compile-time error ). Их довольно легко найти, поскольку компилятор сам указывает место в программе, где встретилась ошибка. Правда, иногда описание ошибки бывает не совсем точным ( компьютер так легко сбить с толку! ), однако, зная капризы своего компилятора, нетрудно разобраться в его жалобах.

Ошибки, которые компилятор не может найти, проявляются при запуске программы и называются ошибками времени исполнения ( run-time error ). Их найти намного труднее, поскольку, кроме сообщения об ошибке, нет и намёка на то, какая именно ошибка возникла и где ( сообщения, которые генерируются при возникновении ошибок выполнения, вполне достойны "звания" ошибочных ).

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

<p id="chapter10.2"><strong>►Использование отладочной печати...128</strong></p>

Добавление команд вывода в ключевых точках помогает понять, что происходит в программе, и называется методом отладочной печати ( иногда именуемым WRITE ).  Метод WRITE появился во времена, когда программы писались на языке FORTRAN, в котором вывод осуществляется с помощью команды WRITE.

_________________

128 стр. Часть 2. Становимся функциональными программистами

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

«Данная программа имеется на прилагаемом компакт-диске под именем ErrorProgram1.срр.»

[Диск]

      /* ErrorProgram — эта программа усредняла бы ряд чисел, если бы не содержала как минимум одну фатальную ошибку */

      #include

      #include

      #include

      using namespace std ;

Перейти на страницу:

Все книги серии Для чайников

Похожие книги