Поиск

Упражнение: подсчет статистики

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

Для начала немного теории. Как вы должны помнить из курса средней школы, среднее арифметическое группы цифр — это их сумма, деленная на количество цифр. Медиана — это средний элемент всей группы, отсортированной по значению. При четном количестве элементов берется среднее арифметическое двух средних элементов. Стандартное отклонение характеризует распределение элементов вокруг среднего значения. Высокое значение стандартного отклонения означает, что разброс чисел велик, а малое — что они сосредоточены вокруг среднего значения, Если отложить влево и вправо от среднего значения интервал, равный стандартному отклонению, то в нем будет сосредоточено 68% чисел из набора, а если удвоить этот интервал, то в него попадет 95% всех чисел из набора.

А теперь, вооружившись теоретическими сведениями, наберите в текстовом редакторе программу, приведенную в листинге 8.1, и сохраните ее под именем Stats. He забудьте сделать файл выполняемым, воспользовавшись инструкциями из 1-го занятия, "Начало работы с Perl".

После этого попытайтесь запустить программу, набрав в командной строке

perl Stats


Проведем анализ программы.

  • Строка 1. В этой строке указывается путь к интерпретатору (измените его в
    соответствии с конфигурацией вашей системы) и ключ -w. Всегда включайте режим вывода предупреждений!
  • Строка 3. Директива use strict указывает, что все переменные должны быть/явно объявлены в программе с помощью оператора mу и строки должны быть заключены в кавычки.
  • Строки 4—11. Функция mean() находит среднее арифметическое группы чи>сел. С помощью цикла foreach вычисляется сумма чисел $sum, а затем она делится на количество чисел.
  • Строки 12—21. Функция median () вычисляет данные двумя способами. При нечетном количестве вводимых элементов она просто выбирает средний элемент. Для этого количество элементов делится на 2, получившееся значение округляется до ближайшего целого и используется в качестве индекса предварительно отсортированного массива с нашими числами. При четном количестве элементов функция находит два средних элемента. Эти числа — $upper и $lower. Их среднее находится с помощью функции mean(). Это значение и возвращается функцией вычисления медиан.
  • Строки 23—32. Функция std dev () очень проста и состоит в основном из математического выражения. В этом выражении из каждого элемента массива §data вычитается среднее значение всех элементов и получившееся число возводится в квадрат. Все подобные результаты суммируются в переменной $sq_ dev_sum. Для нахождения стандартного отклонения сумма всех квадратичных отклонений делится на количество элементов минус единица, и из получившегося значения берется квадратный корень.
  • Строки 33—35. Все необходимые переменные основной программы объявляются с помощью оператора mу. Пользователь вводит данные, которые помещаются в скаляр Sdata. Затем с помощью функции split и шаблона /[\s,]+/ введенные пользователем данные разделяются и помещаются в массив @dataset. Этот шаблон определяет в качестве разделителя символы пробела и запятую. Дополнительные пробелы и запятые игнорируются.
  • Строки 38—40. Генерируется вывод. Не забывайте, что это не единственное место, где можно вызвать функции mean(),median () и std_dev(). Они могут вызывать друг друга: обе функции std_dev() и median() используют функцию mean(). Это неплохой пример повторного использования кода.