Массивы. Виды массивов. Работа с массивами

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

Рубрика Математика
Вид лабораторная работа
Язык русский
Дата добавления 10.12.2013
Размер файла 129,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Лабораторная работа

по вычислению в дробях

Массивы. Виды массивов. Работа с массивами

Массивы в C# являются объектами, производными от базового класса System Array. Поэтому в отличие от других языков C и языка Pascal в C# происходит создание экземпляра класса, унаследованного от System Array. Отсюда следует, что массив представляет собой ссылочный объект, память ему отводится динамически в "куче".

Массив задает способ организации данных. Массивом называют упорядоченную совокупность элементов одного типа. Каждый элемент массива имеет индексы, определяющие порядок элементов. Число индексов характеризует размерность массива. Каждый индекс изменяется в некотором диапазоне [a, b]. В языке C#, как и во многих других языках, индексы задаются целочисленным типом. Диапазон [a, b] называется граничной парой, a - нижней границей, b - верхней границей индекса.

Объявление одномерного массива выглядит следующим образом:

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

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

Варианты описания массива:

Примеры описаний:

Динамические массивы.

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

Чисто синтаксически нет существенной разницы в объявлении статических и динамических массивов. Выражение, задающее границу изменения индексов, в динамическом случае содержит переменные. Единственное требование - значения переменных должны быть определены в момент объявления. Это ограничение в C# выполняется, поскольку C# контролирует инициализацию переменных.

Рассмотрим пример, в котором описана работа с динамическим массивом:

Здесь размерность массива определяется пользователем.

Многомерные массивы. Очевидно, что одномерные массивы - это частный случай многомерных. Одномерные массивы позволяют задавать такие математические структуры, как векторы, двумерные - матрицы, трехмерные - кубы данных, массивы большей размерности - многомерные кубы данных. Размерность массива это характеристика типа. Синтаксически размерность массива задается за счет использования запятых. Вот как выглядит объявление многомерного массива в общем случае:

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

Чаще всего в программах используются двумерные массивы. Варианты описания двумерного массива:

Примеры описаний (один пример на каждый вариант описания):

К элементу двумерного массива обращаются, указывая номера строки и столбца, на пересечении которых он расположен, например:

Ступенчатые массивы.

Еще одним видом массивов C# являются массивы массивов, называемые также ступенчатыми массивами (jagged arrays). Такой массив массивов можно рассматривать как одномерный массив, его элементы являются массивами, элементы которых, в свою очередь снова могут быть массивами, и так может продолжаться до некоторого уровня вложенности. Эти массивы могут применяться для представления деревьев, у которых узлы могут иметь произвольное число потомков. Таковым может быть, например, генеалогическое дерево.

Вершины первого уровня - Fathers, представляющие отцов, могут задаваться одномерным массивом, так что Fathers[i] - это i-й отец.

Вершины второго уровня представляются массивом массивов - Children, так что Children[i] - это массив детей i-го отца, а Children[i][j] - это j-й ребенок i-го отца. Для представления внуков понадобится третий уровень, так что GrandChildren [i][j][k] будет представлять к-го внука j-го ребенка i-го отца.

Есть некоторые особенности в объявлении и инициализации таких массивов. Если при объявлении типа многомерных массивов для указания размерности использовались запятые, то для изрезанных массивов применяется более ясная символика - совокупности пар квадратных скобок, например, int[][] задает массив, элементы которого - одномерные массивы элементов типа int.

Сложнее с созданием самих массивов и их инициализацией. Здесь нельзя вызвать конструктор new int[3][5], поскольку он не задает изрезанный массив. Фактически нужно вызывать конструктор для каждого массива на самом нижнем уровне. В этом и состоит сложность объявления таких массивов:

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

Оператор foreach.

Оператор foreach применяется для перебора элементов в специальным образом организованной группе данных. Массив является именно такой группой.

Удобство этого вида цикла заключается в том, что нам не требуется определять количество элементов в группе и выполнять их перебор по индексу: мы просто указываем на необходимость перебрать все элементы группы. Синтаксис оператора: foreach (тип имя in выражение).

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

Например, пусть задан массив:

Этот оператор выполняется так: на каждом проходе цикла очередной элемент массива присваивается переменной X и с ней производятся действия, записанные в теле цикла.

Случайные числа.

Для генерирования последовательного ряда случайных чисел служит класс Random.

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

В классе Random определяются два конструктора:

- public Random(); математический инициализация число

- public Random(int seed).

Первый конструктор создает объект типа Random, использующий системное время для определения начального числа. А во втором конструкторе используется начальное значение seed, задаваемое явным образом. Пример генерации случайного вещественного числа в диапазоне от 0 до 1:

Таблица - Методы класса Random:

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

Компьютерный вариант пары игральных костей:

Размещено на Allbest.ru

...

Подобные документы

  • Закон сохранения количества чисел Джойнт ряда в натуральном ряду чисел как принцип обратной связи чисел в математике. Структура натурального ряда чисел. Изоморфные свойства рядов четных и нечетных чисел. Фрактальная природа распределения простых чисел.

    монография [575,3 K], добавлен 28.03.2012

  • Важная роль простых чисел (ПЧ) в криптографии, генерации случайных чисел, навигации, имитационном моделировании. Необходимость закономерности распределения ПЧ в ряду натуральных чисел. Цель: найти закономерность среди ПЧ + СЧ, а потом закономерность среди

    доклад [217,0 K], добавлен 21.01.2009

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

    контрольная работа [185,7 K], добавлен 10.05.2010

  • Примеры изучение дробных и многозначных чисел путем ребусов и головоломок. Основные принципы получения трехзначных чисел, путем шестикратного сложения. Математические задачи, направленные на развитие логического мышления и быстрого усваивания материала.

    презентация [195,1 K], добавлен 04.02.2011

  • Применение способа решета Эратосфена для поиска из заданного ряда простых чисел до некоторого целого значения. Рассмотрение проблемы простых чисел-близнецов. Доказательство бесконечности простых чисел-близнецов в исходном многочлене первой степени.

    контрольная работа [66,0 K], добавлен 05.10.2010

  • Свойства чисел натурального ряда. Периодическая зависимость от порядковых номеров чисел. Шестеричная периодизация чисел. Область отрицательных чисел. Расположение простых чисел в соответствии с шестеричной периодизацией.

    научная работа [20,2 K], добавлен 29.12.2006

  • Сумма n первых чисел натурального ряда. Вычисление площади параболического сегмента. Доказательство формулы Штерна. Выражение суммы k-х степеней натуральных чисел через детерминант и с помощью бернуллиевых чисел. Сумма степеней и нечетных чисел.

    курсовая работа [8,2 M], добавлен 14.09.2015

  • Понятие математического моделирования: выбор чисел случайным образом и их применение. Критерий частот, серий, интервалов, разбиений, перестановок, монотонности, конфликтов. Метод середины квадратов. Линейный конгруэнтный метод. Проверка случайных чисел.

    контрольная работа [55,5 K], добавлен 16.02.2015

  • Изучение основных подгрупп алгоритмов проверки простоты больших чисел: детерминированные и вероятностные проверки. Исследование методов генерации и проверки на простоту больших чисел с помощью метода Ферма (малая теорема Ферма), составление программы.

    лабораторная работа [11,7 K], добавлен 27.12.2010

  • История отрицательных чисел: их отрицание в Древнем Египте, Вавилоне, Греции, узаконивание в Китае и Индии. Математические действия с ними. Подходы к определению положению нуля как натурального числа. Изучение отрицательных чисел в школьной программе.

    презентация [178,6 K], добавлен 13.05.2011

  • Поиски и доказательства простоты чисел Мерсенна. Окончание простых чисел Мерсенна на цифру 1 и 7. Вопрос сужения диапазона поиска. Эффективный алгоритм Миллера-Рабина. Разделение алгоритмов на вероятностные и детерминированные. Числа джойнт ряда.

    статья [127,5 K], добавлен 28.03.2012

  • Понятие и специфика Аддитивной теории чисел, ее содержание и значение. Описание основных проблем Аддитивной теории чисел: Варинга, Гольдбаха, Титчмарша. Методы решения данных проблем: редукция к производящим функциям, исследование структуры множеств.

    курсовая работа [150,0 K], добавлен 18.12.2010

  • Вычисление среднего одномерных случайных величин. Определение доверительного интервала для математического ожидания и для дисперсии. Построение эмпирической и приближенной линий регрессии Y по X. Дисперсионный анализ греко-латынского куба второго порядка.

    курсовая работа [698,0 K], добавлен 08.05.2012

  • Числа натурального ряда, их закономерное периодическое изменение: сведение бесконечного к конечному путем выявления периодичности. Обоснование метода поиска простых чисел с помощью "решета" Баяндина. Закон динамического сохранения относительных величин.

    книга [359,0 K], добавлен 28.03.2012

  • Случайный процесс в теории вероятностей. Математическое ожидание и дисперсия. Многомерные законы распределения. Вероятностные характеристики "входной" и "выходной" функций. Сечение случайной функции. Совокупность случайных величин, зависящих от параметра.

    курсовая работа [1,8 M], добавлен 23.12.2012

  • Согласование выборочных распределений. Отбор статистических данных с помощью таблицы случайных чисел. Расчет числовых характеристик распределения выборочных частот. Проверка предположения, что распределение генеральной совокупности является нормальным.

    курсовая работа [276,6 K], добавлен 19.01.2016

  • Идея элементарного доказательства великой теоремы Ферма исключительно проста: разложение чисел a, b, c на пары слагаемых, группировка из них двух сумм U' и U'' и умножение равенства a^n + b^n – c^n = 0 на 11^n (т.е. на 11 в степени n, а чисел a, b, c на 1

    статья [12,9 K], добавлен 07.07.2005

  • Описание случайных ошибок методами теории вероятностей. Непрерывные случайные величины. Числовые характеристики случайных величин. Нормальный закон распределения. Понятие функции случайной величины. Центральная предельная теорема. Закон больших чисел.

    реферат [146,5 K], добавлен 19.08.2015

  • Алгебраический расчет плотности случайных величин, математических ожиданий, дисперсии и коэффициента корреляции. Распределение вероятностей одномерной случайной величины. Составление выборочных уравнений прямой регрессии, основанное на исходных данных.

    задача [143,4 K], добавлен 31.01.2011

  • Свойства действительных чисел, их роль в развитии математики. Анализ построения множества действительных чисел в историческом аспекте. Подходы к построению теории действительных чисел по Кантору, Вейерштрассу, Дедекинду. Их изучение в школьном курсе.

    презентация [2,2 M], добавлен 09.10.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.