Нас интересует, насколько существенной будет «разница в показаниях». В нашем примере разница в третьем-четвёртом знаке после запятой, или в пятом значащем разряде (рис. 4.32).
Рис. 4.32. Две оценки времени
Зададим побольше итераций. Разница по-прежнему в третьем-четвёртом знаке после запятой (рис. 4.33). И это приемлемая разница — если принять во внимание, что заявленная точность библиотечной функции clock ()составляет 0,001 сек.
В следующих упражнениях мы примем дополнительные меры для повышения точности измерения времени.
Рис. 4.33. Ещё две оценки
Задание. Составьте и запустите программу (рис. 4.31). Сравните значения продолжительности вычислений, полученные двумя способами.
5. Параметры командной строки
Для организации экспериментов нам понадобится много раз запускать одну и ту же программу с разными настройками и параметрами. Конечно, можно каждый раз изменять исходный текст, компилировать исполняемый файл и вручную запускать его на выполнение. Но это дополнительные затраты времени. Мы поступим по-другому.
В нашем распоряжении есть такой инструмент, как параметры (аргументы) командной строки. Мы его уже использовали в предыдущей работе. Напомним, что это такое и как это работает.
В командной строке мы запускаем программу на выполнение. Мы пишем название файла. Расширение имени файла можно не указывать. После имени файла через пробел можно указать дополнительные параметры. Это просто символы, строки текста, разделённые пробелами. Программа может прочитать их — точно так же, как мы вводим данные с клавиатуры. Этот приём часто используется при вызове команд операционной системы.
Задание. Изучите в Википедии статью «Интерфейс командной строки». Обратите внимание на раздел «Формат команды» и выясните, что означают квадратные скобки в описании команд операционной системы. Обратите внимание на раздел «Достоинства» и выясните, какое преимущество командной строки мы используем для организации наших вычислительных экспериментов.
Рассмотрим для примера работу с командой DIR. Эта команда выводит на экран содержимое директории, то есть список файлов в текущем каталоге. Название команды — это сокращение английского слова DIRECTORY.
Задание. Прочитайте в английской версии Википедии начало статьи «Directory (computing)» и выясните, что такое «директория». Переключитесь на русский вариант статьи и выясните, какими словами может называться этот объект.
Познакомимся с командой DIR. Переходим в командное окно и вводим нашу команду. Сейчас мы вводим саму команду без параметров (рис. 5.1). Получаем сведения про текущий диск, папку и файлы.
Рис. 5.1. Команда DIR без параметров
Чтобы узнать подробности о нашей команде, вызываем её с параметром /?(рис. 5.2). То, что вводят после имени команды, называют разными словами: параметры, ключи, опции и т. п.
Нам сообщают, что делает наша команда, какой у неё формат вызова и что делают разные ключи. Видим, что параметры нужно вводить через пробел после команды.
Рис. 5.2. Справка по использованию команды
Задание.Вызовите справку и выясните, что делают параметры /B, /O и /X. Вызовите команду DIRпо очереди с каждым из этих ключей.
При запуске программы на выполнение можно получить параметры командной строки (command-line arguments). Для этого в начале программы в заголовке главной функции main указывают аргументы argcи argv:
int main (int argc, char* argv []).
argc — сокращение от выражения arguments count (the count of arguments). Это количество параметров командной строки. Если argc равен 1, значит при вызове вводили только имя исполняемого файла.
argv — сокращение от arguments values (the values of the arguments). Это массив указателей на строки символов. Каждый аргумент командной строки — это строка, состоящая из одного или нескольких символов. Квадратные скобки после argv говорят о том, что это массив. Звёздочка — что это указатель. Таким образом, argv указывает на первый элемент массива. А размер этого массива мы узнаём из предыдущего параметра argc.
Напомним, что нумерация элементов массива в языке программирования Си начинается с нуля. Таким образом, argv [0] — это имя запущенной программы (файла типа EXE), argv [1] — это первый аргумент (параметр) после имени файла и т. д.
Составим программу, которая читает параметры командной строки и выводит их на экран (рис. 5.3).
Читать дальше
Конец ознакомительного отрывка
Купить книгу