Организация параллельных потоков. Часть 1 | страница 5



#include

Затем вызываем функцию setlocale:

setlocale (LC_ALL, «Rus»).

Пример программы представлен на рис. 3.2:


Рис. 3.2. Локализация стандартного вывода


Задание. Создайте и запустите программу, представленную на рис. 3.2.

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

3.5. Числа в командной строке

Через командную строку можно ввести число и использовать его в работе программы.

Для этого мы добавим добавляем заголовочный файл stdlib. h:

#include .

Затем вызываем функцию

int atoi (char *str).

Чтение из командной строки

В зависимости от типа переменной преобразование строки в целое число выполняется следующими функциями:

int atoi (const char *str);

long int atol (const char *str);

long long atoll (const char *str).

Этой приём нам понадобится для быстрого изменения параметров работы программы. Мы указываем параметр командной строки и преобразуем его в число. Полученное число записываем в переменную, которую используем для управления работой программы.

Задание. Добавьте в программу вызов функции преобразования строки в число. Выведите полученное число на экран.

4. Последовательные вычисления

4.1. Программа суммирования

В наших экспериментах мы будем находить сумму выбранного количества единиц (рис. 4.1).


Рис. 4.1. Последовательное суммирование


При назначении типов переменных учитываем диапазон возможных значений.

Задание. Составьте программу для нахождения суммы единиц. Запустите программу и убедитесь в правильности вычислений.

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

Задание. Введите количество единиц, выходящее за пределы диапазона значений. Обратите внимание на поведение программы.

4.2. Время работы программы

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

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

clock_t clock (void).

Эта функция не имеет входных параметров. Она просто сообщает нам, сколько тактов прошло с начала работы программы. Тип возвращаемого значения определён как

clock_t.

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

Чтобы пересчитать количество тактов в секунды, нужно разделить количество тактов на значение следующей константы: