Просмотров-54
0

Пример процедурного программирования на языке Crystal

В данной статье рассматривается пример процедурного программирования на языке Crystal при решении задачи статистического анализа случайного набора чисел.

Постановка задачи. Необходимо разработать программу Stat статистического анализа случайного набора чисел. Для решения такой задачи необходимо создать ряд методов(функций), которые генерируют массив случайных чисел, суммируют элементы массива и возвращают математическое ожидание и дисперсию(среднеквадратическое отклонение) элементов массива, содержащего случайные числа с плавающей десятичной запятой. Размер массива передается в качестве аргумента в выборку.

Известно, что решение любой задачи на ЭВМ предполагает разработку алгоритма ее решения. В данном случае алгоритм простой, поэтому на его разработке останавливаться не будем. Вычисления оценок математического ожидания и дисперсии осуществляется по известным формулам математической статистики.

Метод генерации массива случайных чисел.

В методе предусмотрено применение пустого массива mas=[] вещественного типа of Float64 в качестве формального параметра.  Для создания случайного числа, соответствующего типу float, используется библиотечная функция rand. Формирование массива осуществляется путем дополнения элементов операцией “<<”.

  1. def gen(n,mas=[] of Float64)
  2.                 i=0
  3.                while i<n
  4.                 mas<< rand
  5.                   i+=1
  6.                 end    end

Метод суммирования элементов  массива случайных чисел.

В этом методе также предусмотрено применение пустого массива mas=[] вещественного типа of Float64 в качестве формального параметра. Далее применяется известный прием суммирования элементов массива в операторе цикла. В методе предусмотрено явная передача вычисленного значения оператором return sum.

  1. def sum_el_mas(n,mas=[] of Float64)
  2.    i=0
  3.     sum = 0
  4.         while i<n     
  5.            sum += mas[i]
  6.               i+=1
  7.        end
  8.             return sum
  9.   end

Метод вычисления математического ожидания элементов массива

И в этом методе также предусмотрено применение пустого массива mas=[] вещественного типа of Float64 в качестве формального параметра. Далее определяется сумма элементов массива путем вызова ранее созданного метода sum_el_mas(n,mas) с передачей ему фактических параметров(аргументов) – n  — размер массива, mas – ранее сгенерированный массив.

  1. def mat_ogid(n,mas=[] of Float64) 
  2.    i=0
  3.     sum = sum_el_mas(n,mas)
  4.           mat_og = sum/n
  5.               return mat_og
  6.   end

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

Пример процедурного программирования: отладка методов

Аналогично проводится отладка и других методов.

Метод вычисления дисперсии  элементов массива

Аналогично для передачи элементов массива в метод предусмотрено применение пустого массива mas=[] вещественного типа of Float64 в качестве формального параметра. В методе вычисляется математическое ожидание по ранее созданному методу, которое используется для вычисления центрированных значений случайных величин. Вычисление дисперсии по известной формуле.

  1. def sko_el_mas(n,mas=[] of Float64) 
  2.    i=0
  3.     sum = 0
  4.   mo = mat_ogid(n,mas)  # Матожидание элементов массива
  5.   while i<n     
  6.     sum += (mas[i]-mo)*(mas[i]-mo)  # Сумма центрированных значений
  7.      i+=1
  8.    end
  9.   disp = sum/(n-1)       #  Дисперсия элементов массива
  10.               return disp
  11.   end

После того как подготовлены все необходимые методы можно приступать к их объединению в единую программу решения поставленной задачи.

 Программа вычисления статистических характеристик элементов массива

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

В преведенном ниже коде:

  • -задана размерность массива и объявлен пустой массив типа Float64;
  • -выполнена генерация массива вещественных чисел;
  • -вычислены математическое ожидание и дисперсия элементов массива.

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

  1. n=5
  2. mas=[] of Float64    # создаем массив Array(Float64)
  3. gen(n,mas)    # генерируем массив Array(Float64) из n элементов
  4. puts «Масив случайных вещественных чисел»
  5. puts mas
  6. y= sum_el_mas(n,mas)    # суммируем элементы массива Array(Float64)
  7. puts «Сумма элементов масива»,y
  8. mo = mat_ogid(n,mas)
  9.  puts «Матожидание элементов массива», mo
  10. disp = sko_el_mas(n,mas)
  11.  puts «Дисперсия элементов массива», disp    #,sko

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

Пример процедурного программирования:  программа вычисления статистических характеристик

Созданный пример программы процедурного программирования на языке Crystal при решении задачи статистического анализа случайного набора чисел выполнен в среде программирования языка Crystal. Результаты выполнения контрольного примера показаны на следующем рисунке, из которого видно, что программа выполняется корректно.

Пример процедурного программирования: результаты программы на языке Crystal

Поступая аналогичным образом, можно составить и использовать любую программу на языке Crystal.

Таким образом, эта статья заканчивает первый цикл изучения языка программирования Crystal согласно итерационному и инкрементному подходу. Следующий цикл также начинается с изучения типов данных, но уже более сложных, так называемых, структурированных типов данных.

Заключение

Представленный в статье пример процедурного программирования на языке Crystal при решении задачи статистического анализа случайного набора чисел показал, что его использование возможно, и даже иногда необходимо, не смотря на его прочный объектно-ориентированных фундамент.

Статьи по теме.

Изучение управляющих
конструкций языка
программирования Crystal
Изучение языка программирования Crysal Управляющие конструкции Простые типы данных
языка программирования
Crystal
Язык программирования Crystal
Структурированные
типы данных языка
программирования Crystal
Структурированные типы данных Объектно — ориентированное
программирование на языке Crystal
Объектно ориентированное программирование

А также…

Внимание! Кто хочет своевременно узнавать о выходе новой статьи на сайте должен подписаться.

ПОДПИСКА НА РАССЫЛКУ

Статьи об онлайн курсах обучения

Дистанционное обучение
Обучение программированию
Проектирование информационных систем
 

brasm

Пенсионер с 33 - летним педагогическим стажем

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *