Массивы. Виды массивов. Работа с массивами
Изучение способа организации данных. Математические структуры, описываемые одномерными и многомерными массивами. Их создание и инициализация. Процесс генерации последовательного ряда случайных чисел. Пример компьютерного варианта пары игральных костей.
Рубрика | Математика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 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