Валентин Юльевич Арьков - Организация параллельных потоков. Часть 2 стр 11.

Шрифт
Фон

Затем мы организуем цикл от 0 до (argc  1) и выводим номер и значение аргументов. Для вывода строки символов на экран мы используем формат %s  от слова string  «строка».


Рис. 5.3. Чтение и вывод параметров


Запускаем программу из среды разработки

Ctrl + F5.

Рассматриваем результаты (рис. 5.4).

У нас один параметр командной строки.

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


Рис. 5.4. Запуск из среды разработки


Задание. Составьте программу (рис. 5.3) и запустите её из среды разработки.


Среда разработки позволяет нам проводить отладку программы (debugging) с передачей параметров командной строки.

Открываем свойства проекта:

Project  Properties.

В окне параметров проекта переходим к следующему пункту:

Configuration Properties  Debugging  Command Arguments  Edit (рис. 5.5).


Рис. 5.5. Аргументы командной строки


Далее в окне Command Arguments вводим параметры, разделяя их пробелом (рис. 5.6).

Нажимаем OK.


Рис. 5.6. Ввод аргументов


Снова запускаем программу из среды разработки.

Теперь на экран выводятся все наши параметры (рис. 5.7).

Убеждаемся, что программа распознала параметры и вывела их на экран.

Удаляем наши параметры в свойствах проекта.


Рис. 5.7. Вывод параметров


Задание. Задайте несколько параметров командной строки для отладки и запустите программу из среды разработки.


Мы убедились, что программа работает.

Запустим её в командном окне.

Указываем несколько параметров через пробел и рассматриваем результаты (рис. 5.8).

Среди прочего, мы видим, было ли указано расширение имени фала при запуске программы.


Рис. 5.8. Вывод аргументов


Задание. Запустите программу в командном окне с несколькими аргументами и рассмотрите результаты.

5.3. Использование параметров

Мы научились читать параметры (аргументы) командной строки. Теперь разберёмся с тем, как делать «разбор» (parsing) этих строк. Нам нужно взять строку и «вытащить» из неё число.

Будем использовать функцию преобразования строки символов в целое число:

int atoi (const char *str).

Название функции atoi можно расшифровать так:

Convert «a» (string of symbols) to integer.

Текст программы приводится на рис. 5.9.

Мы возьмём первый параметр и преобразуем его в целое число (строка 4).

Затем выведем исходную строку символов (строка 5) и полученное число (строка 6).

КОНЕЦ ОЗНАКОМИТЕЛЬНОГО ОТРЫВКА

Текст программы приводится на рис. 5.9.

Мы возьмём первый параметр и преобразуем его в целое число (строка 4).

Затем выведем исходную строку символов (строка 5) и полученное число (строка 6).

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


Рис. 5.9. Преобразование строки в целое число


Запускаем программу и проверяем разные входные значения (рис. 5.10).

Напомним, что целое число типа int хранится в виде 4 байтов. Соответственно можно оценить диапазон значений для целого числа со знаком. Максимальное значение  это 2 в 31-й степени, то есть чуть больше двух миллиардов.

При выходе за пределы возможных значений мы получаем минимальное и максимальное число соответственно:

 231  2311.


Рис. 5.10. Результаты преобразования


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


В наших опытах нам потребуется значение больше, чем два миллиарда. Для этого придётся использовать другой целый тип  long long (8 байт).

Немного изменим нашу программу (рис. 5.11).

Для преобразования строки символов в длинное целое тоже нужна другая функция с похожим названием:

long long atoll (const char *str).

Расшифровка названия:

Convert «a» (string of symbols) to long long integer.

Вывод на экран длинного целого тоже требует своего, особого формата:

%lld.


Рис. 5.11. Преобразование строки в длинное целое


Запускаем нашу новую программу с разными входными значениями (рис. 5.12).

Здесь мы тоже можем найти пределы, выше которых подняться не удаётся.

Результаты нас устраивают. Нам пока что такое большое число не грозит.


Рис. 5.12. Результаты преобразования


Задание. Составьте программу (рис. 5.11) и проверьте правильность её работы.

5.4. Управление циклом

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

Возьмём нашу «большую задачу» параллельного суммирования из раздела 4 и немного её усложним (рис. 5.13).

Зададим число итераций цикла из командной строки (строка 11).

А программа пусть выводит на экран время расчётов (строка 25).


Рис. 5.13. Управление циклом из командной строки


Запускаем программу в командной строке и подбираем число итераций в цикле. Нам нужно получить приемлемое время выполнения программы  около 20 секунд. Затем запускаем программу несколько раз (рис. 5.14).

Тем временем следим за загрузкой ядер процессора. Должно быть 100%


Рис. 5.14. Четыре запуска


Задание. Составьте программу (рис. 5.13) и подберите приемлемое число итераций. Запустите программу несколько раз и обратите внимание на длительность решения задачи.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке

Скачать книгу

Если нет возможности читать онлайн, скачайте книгу файлом для электронной книжки и читайте офлайн.

fb2.zip txt txt.zip rtf.zip a4.pdf a6.pdf mobi.prc epub ios.epub fb3