Общие сведения о массивах




ЛАБОРАТОРНАЯ РАБОТА № 3

по МДК 01.02:

Программное обеспечение компьютерных сетей

Наименование работы:

Массивы.

по специальности:

 

2.09.02.03 Прикладное программирование.

 

Направление подготовки: базовая

 

Работа рассчитана на 2 часа

 

 

Смоленск, 2017

1. Цель работы:

Освоить синтаксис типов, переменных и значений при написании консольного приложения на языке С#.

2. Информационные ресурсы:

2.1. Фленов, М. Библия С# / М. Фленов — СПб.: БХВ-Петербург, 2009. — 768с.: ил. — (Профессиональное программирование), ISBN 978-5-9775-0429-4.

 

 

3. Вопросы допуска:

3.1. Что такое типы?

3.2. Что такое переменные?

3.3. Какие типы переменных вы знаете?

3.4. Что такое массивы?

 

4. Основное оборудование:

4.1. ПЭВМ;

4.2. ПО

4.2.1. Блокнот

4.2.2. Microsoft: Visual Studio 2015

4.2.3. Visual Studio 2017

5. Задание:

5.1. Создайте консольное приложение, при помощи которого можно найти сумму всех элементов массива, кратных заданному числу n. Заполните массив случайными числами в диапазоне [1; 100]. Запишите код программы.

5.2. Создайте консольное приложение, при помощи которого можно заменить все наименьшие элементы массива на наибольшие. Заполнение массива случайными числами в диапазоне [1; 100]. Запишите код программы.

5.3. Создайте консольное приложение, при помощи которого, можно вывести на экран квадратные корни чисел от 1 до 100. Запишите код программы.

5.4. Создайте консольное приложение, при помощи которого можно найти сумму всех элементов массива, кратных заданному числу n. Запишите код программы.

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

 

 

Порядок выполнения работы.

6.1. Вопросы ОТ

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

6.1.2. Студент включает персональный компьютер только с разрешения преподавателя

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

6.1.4. При работе необходимо, чтобы экран находился на расстоянии 55-65 см. от глаз перпендикулярно линии взгляда.

6.1.5. Не касаться экрана монитора, проводов.

6.1.6. После окончания работы студент оповещает преподавателя и последовательно отключает ПК, точно выполняя указания преподавателя.

6.1.7. Рабочее место студент оставляет аккуратно, дисциплинированно.

6.1.8. При появлении запаха гари, студент оставляет рабочее место и немедленно сообщает преподавателю. Преподаватель в свою очередь сообщает администрации колледжа.

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

 

6.2. Ознакомиться с пунктами лабораторной работы

6.3. Выполнить задание 5.1. – 5.5.

6.4. Подготовить ответы на контрольные вопросы.

 

7. Содержание отчета:

7.1. Наименование, цель, задание лабораторной работы

7.2. Выполненное задание 5.1.- 5.5.

7.3. Необходимо переписать порядок выполнения работы.

7.4. Письменно ответить на контрольные вопросы.

7.5. Вывод о проделанной работе.

 

8. Контрольные вопросы:

 

8.1. Объяснить выполнение задания 5.1-5.5.

 

8.2. Ответить на такие вопросы.

· Что такое массивы? Приведите пример задания массива.

· Какие массивы вы знаете?

· Что такое одномерный массив? Приведите пример одномерного массива.

· Что такое многомерный массив? Приведите пример многомерного массива.

· Какой тип элементов следует указать для того, чтобы задать массив?

Составил преподаватель __________Марченкова Е А.

 

(Подпись)

Приложение

Класс массива

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

C #Копировать

[System.Runtime.InteropServices.ComVisible(true)]public abstract class Array: ICloneable, System.Collections.IList, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable

наследование

объект

массив

Атрибуты

ComVisibleAttribute

инвентарь

IList IStructural Сопоставимого IStructural Equatable ICloneable

Примеры

В следующем примере кода показано, как Array.Copy копирует элементы между массивом типа integer и массивом типа Object.

C #Копировать

using System;public class SamplesArray { public static void Main() { // Creates and initializes a new integer array and a new Object array. int[] myIntArray = new int[5] { 1, 2, 3, 4, 5 }; Object[] myObjArray = new Object[5] { 26, 27, 28, 29, 30 }; // Prints the initial values of both arrays. Console.WriteLine("Initially,"); Console.Write("integer array:"); PrintValues(myIntArray); Console.Write("Object array: "); PrintValues(myObjArray); // Copies the first two elements from the integer array to the Object array. System.Array.Copy(myIntArray, myObjArray, 2); // Prints the values of the modified arrays. Console.WriteLine("\nAfter copying the first two elements of the integer array to the Object array,"); Console.Write("integer array:"); PrintValues(myIntArray); Console.Write("Object array: "); PrintValues(myObjArray); // Copies the last two elements from the Object array to the integer array. System.Array.Copy(myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, myIntArray.GetUpperBound(0) - 1, 2); // Prints the values of the modified arrays. Console.WriteLine("\nAfter copying the last two elements of the Object array to the integer array,"); Console.Write("integer array:"); PrintValues(myIntArray); Console.Write("Object array: "); PrintValues(myObjArray); } public static void PrintValues(Object[] myArr) { foreach (Object i in myArr) { Console.Write("\t{0}", i); } Console.WriteLine(); } public static void PrintValues(int[] myArr) { foreach (int i in myArr) { Console.Write("\t{0}", i); } Console.WriteLine(); } } /* This code produces the following output. Initially, integer array: 1 2 3 4 5 Object array: 26 27 28 29 30 After copying the first two elements of the integer array to the Object array, integer array: 1 2 3 4 5 Object array: 1 2 28 29 30 After copying the last two elements of the Object array to the integer array, integer array: 1 2 3 29 30 Object array: 1 2 28 29 30 */

Следующий пример кода создает и инициализирует массив и отображает его свойства и его элементы.

C #Копировать

using System;public class SamplesArray2{ public static void Main() { // Creates and initializes a new three-dimensional Array of type Int32. Array myArr = Array.CreateInstance(typeof(Int32), 2, 3, 4); for (int i = myArr.GetLowerBound(0); i <= myArr.GetUpperBound(0); i++) for (int j = myArr.GetLowerBound(1); j <= myArr.GetUpperBound(1); j++) for (int k = myArr.GetLowerBound(2); k <= myArr.GetUpperBound(2); k++) { myArr.SetValue((i*100)+(j*10)+k, i, j, k); } // Displays the properties of the Array. Console.WriteLine("The Array has {0} dimension(s) and a total of {1} elements.", myArr.Rank, myArr.Length); Console.WriteLine("\tLength\tLower\tUpper"); for (int i = 0; i < myArr.Rank; i++) { Console.Write("{0}:\t{1}", i, myArr.GetLength(i)); Console.WriteLine("\t{0}\t{1}", myArr.GetLowerBound(i), myArr.GetUpperBound(i)); } // Displays the contents of the Array. Console.WriteLine("The Array contains the following values:"); PrintValues(myArr); } public static void PrintValues(Array myArr) { System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator(); int i = 0; int cols = myArr.GetLength(myArr.Rank - 1); while (myEnumerator.MoveNext()) { if (i < cols) { i++; } else { Console.WriteLine(); i = 1; } Console.Write("\t{0}", myEnumerator.Current); } Console.WriteLine(); } } /* This code produces the following output. The Array has 3 dimension(s) and a total of 24 elements. Length Lower Upper 0: 2 0 1 1: 3 0 2 2: 4 0 3 The Array contains the following values: 0 1 2 3 10 11 12 13 20 21 22 23 100 101 102 103 110 111 112 113 120 121 122 123 */

Класс Array не входит в пространство имен System.Collections. Тем не менее, он по-прежнему считается коллекцией, поскольку он основан на интерфейсе IList.

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

Элемент представляет собой значение в массиве. Длина массива - это общее количество элементов, которые он может содержать. Нижняя граница массива - это индекс его первого элемента. Массив может иметь любую нижнюю границу, но она имеет нижнюю границу нуля по умолчанию. При создании экземпляра класса Array с помощью CreateInstance может быть определена другая нижняя граница. Многомерный массив может иметь разные границы для каждого измерения. Массив может иметь максимум 32 размера.

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

По умолчанию максимальный размер массива составляет 2 гигабайта (ГБ). В 64-разрядной среде вы можете избежать ограничения размера, установив enabledатрибут элементаконфигурации gcAllowVeryLargeObjectstrue в среду выполнения. Однако массив будет по-прежнему ограничен общим количеством 4 миллиардов элементов и максимальным индексом 0X7FEFFFFF в любом заданном размере (0X7FFFFFC7 для массивов байтов и массивов однобайтовых структур).

Single-dimensional arrays implement the System.Collections.Generic.IList<T>, System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyList<T> and System.Collections.Generic.IReadOnlyCollection<T> generic interfaces. The implementations are provided to arrays at run time, and as a result, the generic interfaces do not appear in the declaration syntax for the Arrayкласс. Кроме того, нет никаких эталонных тем для членов интерфейса, которые доступны только путем литья массива в общий тип интерфейса (явные реализации интерфейса). Ключевым моментом, который следует учитывать при создании массива на одном из этих интерфейсов, является то, что члены, которые добавляют, вставляют или удаляют элементы, бросают NotSupportedException.

Объекты типа предоставляют информацию о объявлениях типа массива. Объекты массива с одним и тем же типом массива имеют один и тот же объект типа.

Type.IsArray и Type.GetElementType могут не возвращать ожидаемые результаты с помощью массива, потому что если массив применяется к типу Array, результатом будет объект, а не массив. То есть, typeof(System.Array).IsArrayвозвращает falseи typeof(System.Array).GetElementTypeвозвращает null.

Метод Array.Copy копирует элементы не только между массивами того же типа, но и между стандартными массивами разных типов; он автоматически обрабатывает литье.

Some methods, such as CreateInstance, Copy, CopyTo, GetValue, and SetValue, provide overloads that accept 64-bit integers as parameters to accommodate large capacity arrays. LongLength and GetLongLength return 64-bit integers indicating the length of the array.

The Array is not guaranteed to be sorted. You must sort the Array prior to performing operations (such as BinarySearch) that require the Array to be sorted.

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

Свойства

Есть Фиксированный размер Возвращает значение, указывающее, имеет ли Array фиксированный размер.
Является Читать только Возвращает значение, указывающее, является ли массив только для чтения.
Является ли Синхронное Возвращает значение, указывающее, синхронизирован ли доступ к массиву(поточно-безопасный).
длина Получает общее количество элементов во всех измерениях массива.
Длинная Длина Получает 64-разрядное целое число, которое представляет общее число элементов во всех измерениях массива.
Ранг Возвращает ранг (количество измерений) массива. Например, одномерный массив возвращает 1, двумерный массив возвращает 2 и т. Д.
Синхронизация корня Получает объект, который может использоваться для синхронизации доступа к массиву.

Массивы

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

type[] arrayName;

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

C#Копировать

class LINQQueryExpressions{ static void Main() { // Specify the data source. int[] scores = new int[] { 97, 92, 81, 60 }; // Define the query expression. IEnumerable<int> scoreQuery = from score in scores where score > 80 select score; // Execute the query. foreach (int i in scoreQuery) { Console.Write(i + " "); } }}// Output: 97 92 81

Общие сведения о массивах

Массив имеет следующие свойства:

· Массив может быть одномерным, многомерным или массивом массивов.

· Количество измерений и длина каждого из измерений задаются, когда создается экземпляр массива. Эти значения нельзя изменить во время существования экземпляра.

· Используемые по умолчанию значения числовых элементов массива равны нулю, и элементам ссылки присвоено значение NULL.

· В массиве массивов элементы являются ссылочными типами и инициализируются значением null.

· Массивы индексируются от нуля: массив с n элементами индексируется от 0 до n-1.

· Элементы массива могут иметь любой тип, в том числе тип массива.

· Типы массивов — это ссылочные типы, производные от абстрактного базового типа Array. Поскольку этот тип реализует IEnumerable и IEnumerable<T>, вы можете просматривать в цикле foreach любые массивы C#.

 

Одномерные массивы

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

C#Копировать

int[] array = new int[5];

Этот массив содержит элементы с array[0] по array[4]. С помощью оператора new можно создать массив и инициализировать его элементы, используя значения по умолчанию. В этом примере при инициализации всем элементам массива присваиваются нулевые значения.

Таким же образом можно объявить массив, в котором хранятся строковые элементы. Пример:

C#Копировать

string[] stringArray = new string[6];

Инициализация массива

Массив можно инициализировать при объявлении. В этом случае не требуется спецификатор ранга, поскольку он уже задается по числу элементов в списке инициализации. Пример:

C#Копировать

int[] array1 = new int[] { 1, 3, 5, 7, 9 };

Массив строк можно инициализировать таким же образом. Ниже приведено объявление массива строк, где каждый элемент массива инициализируется с использованием названия дня:

C#Копировать

string[] weekDays = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

Если массив инициализируется при объявлении, вы можете использовать следующие сочетания клавиш:

C#Копировать

int[] array2 = { 1, 3, 5, 7, 9 };string[] weekDays2 = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

Переменную массива можно объявить без инициализации, однако при присвоении массива этой переменной необходимо использовать оператор new. Пример:

C#Копировать

int[] array3;array3 = new int[] { 1, 3, 5, 7, 9 }; // OK//array3 = {1, 3, 5, 7, 9}; // Error

В C# 3.0 представлены неявно типизированные массивы. Дополнительные сведения см. в разделе Неявно типизированные массивы.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-04-04 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: