SlideShare a Scribd company logo
Высшая школа экономики, Москва, 2013
www.hse.ru
Язык программирования C# и платформа
.NET.
Массивы
Многомерные массивы
Максименкова Ольга Вениаминовна
Старший преподаватель
Кафедра управления разработкой программного обеспечения
МАССИВЫ
• Одномерные массивы
• Обработка одномерных массивов
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
Ссылочный тип данных
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
имя_переменной значение_адреса_данных значение_данных
Объекты ссылочных типов размещаются в «куче»
[manager heap]
Если ссылка не связана с данными, то ее значение - null
Одномерные массивы
имя_ссылки_на_массив[индексирующее_выражение]
тип[ ] имя_ссылки
Операция индексирования
Объявление ссылки на массив
Объявление
ссылки на
массив
Инициализация
элементов
массива
Работа с
элементами
массива
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
Создание
экземпляра
массива
Создание экземпляра объекта конкретного типа
new тип[размер_массива]
Допустимо
объединение
Одномерные массивы
Объявление ссылки
Описание с инициализацией
Описание и последующая инициализация
int[ ] intArr; // ссылка на целочисленный массив
double[ ] arr; // ссылка на вещественный массив
int[ ] intArr = { 1, 3, -8, 19, 0, 11 };
double[ ] arr = { 3.14, 0.0, 0.5 };
// ссылка
int[ ] intArr;
// выделение памяти
intArr = new int[5];
intArr[0] = -1;
intArr[1] = 12;
intArr[2] = 34;
intArr[3] = -23;
intArr[4] = 78;
int[ ] intArr; // ссылка
intArr = new int[5]; // выделение памяти
for (int i = 0; i < 5; i++) {
intArr[i] = i * i - 1;
Console.Write(intArr[i] + " ");
}
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
Цикл foreach
foreach (тип идентификатор in ссылка)
{
<тело_цикла>
}
int[ ] arInt = { 22, 5, 12, 63, -6, -52, 77, 41, 35, 23 };
foreach (int memb in arInt)
Console.Write(memb + " ");
for (int i = 0; i < arInt.Length; i++)
Console.Write(arInt[i] + " ");
Сравните:
По memb доступно
только значение
элемента
arInt[i] – доступ к значению
i – индекс элемента
Случайные числа
7
Предыдущее число
Датчик
Новое случайное
число
Random ran = new Random(start);
Random ran = new Random();
Ссылка на
объект-
датчик
Объект-
датчик
случайных
чисел
В 1-м случае, когда в ran заносится стартовое число start. Если его не
изменять, то при повторных запусках программы датчик всегда будет
выдавать одну и туже последовательность случайных чисел.
Во 2-м случае в датчик ran заносится число, зависящее от текущего значения
системного времени - при повторных запусках программы датчик будет
выдавать разные последовательности случайных чисел.
http://msdn.microsoft.com/ru-ru/library/system.random(v=VS.95)
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
Методы получения случайного числа
int Next () 0≤X<int.MaxValue
int Next (int B) 0≤X<B
int Next(int A, int B) A≤X<B
double NextDouble () 0≤X<1
Получение случайного вещественного числа X из
нужного диапазона A≤X<B:
X = A + (B-A) * ran.NextDouble()
или
X = ran.Next((int)A, (int)B) + ran.NextDouble()
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
/* Определить и инициализировать целочисленный массив из 10-ти
элементов. Ввести целое число и заменить им значение
максимального элемента. Окончание работы - ввод нулевого
числа.*/
using System;
class Program {
static void Main() {
int[ ] arInt = { 22, 5, 12, 63, -6, -52, 77, 41, 35, 23 };
int numb;
Console.Title = "Инициализация массива";
do { // цикл для повторения ввода числа
Console.WriteLine();
Console.WriteLine("Для выхода нажмите клавишу ESC");
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);
}
}
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
Замена максимального элемента
do Console.Write("Введите целое число: ");
while (!int.TryParse(Console.ReadLine(), out numb));
int index = 0; // индекс максимального элемента массива
for (int i = 0; i < arInt.Length; i++) // поиск
if (arInt[i] > arInt[index]) index = i;
Console.WriteLine("Заменяем arInt[{0}]={1} на {2} ",
index, arInt[index], numb);
arInt[index] = numb; // замена значения
for (int i = 0; i < arInt.Length; i++)
if ((i + 1) % 10 != 0)
Console.Write(arInt[i] + "t");
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
Замена максимального элемента
Описание одномерного массива
double[ ] dbArr; // описание ссылки на массив
dbArr = new double[10]; // определение массива из 10-ти элементов
int[ ] intArr = new int[15];
// элементы массива могут иметь ссылочный тип
string[ ] strArr = new string[3];
Решите самостоятельно:
1. Пользователем с клавиатуры вводится целое число N > 0.
Сформировать и вывести на экран целочисленный массив из N
элементов, элементами которого являются нечетные числа от 1.
2. Пользователем с клавиатуры вводится целое число N > 1.
Сформировать целочисленный массив, содержащий N первых
элементов последовательности Фибоначчи: A[0] = 1, A[1] = 1, A[2] = A[0]
+ A[1], … A[K] = A[K-1] + A[K-2], … Элементы массива вывести на экран
в обратном порядке, методы класса Array не использовать.
// описание с инициализацией
int[ ] intArr = {1, 0, 1};
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
Методы класса Array
/* Клонирование массива. */
using System;
class Program {
static void Main() {
char[ ] hi = { '1', 'A', '2', 'B', '3', 'C', '4', 'D', '5', 'E‘ };
char[ ] hiNew = (char[ ])hi.Clone(); // копирование
Array.Sort(hiNew); // сортировка
Console.Write("Сортировка: ");
foreach (char ch in hiNew) // вывод значений массива
Console.Write("" + ch);
Console.WriteLine();
Array.Reverse(hiNew); // реверсирование
Console.Write("Реверсирование: ");
foreach (char ch in hiNew)
Console.Write("" + ch);
Console.WriteLine();
Console.Write("Исходный массив: ");
foreach (char ch in hi)
Console.Write("" + ch);
Console.WriteLine();
}
} ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
/* Определить и инициализировать целочисленный массив из 10-ти
элементов. Упорядочить его элементы по возрастанию значений, методом
Sort(). Ввести целое число и методом двоичного поиска найти номер
элемента с этим значением в упорядоченном массиве.*/
using System;
class Program {
static void Main() {
int[ ] arInt = { 22, 5, 12, 63, -6, -52, 77, 41, 35, 23 };
int numb;
Console.Title = "Двоичный поиск в массиве";
Array.Sort(arInt); // Сортировка (упорядочение массива)
Console.WriteLine("Упорядоченный массив: ");
foreach (int memb in arInt) // Перебор значений элементов
Console.Write(memb + " ");
Console.WriteLine();
do {// цикл для повторения ввода числа
Console.WriteLine("Для выхода нажмите клавишу ESC");
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);
}
}
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
Бинарный поиск
do Console.Write("Введите целое число: ");
while (!int.TryParse(Console.ReadLine(), out numb));
int index = -1; // индекс найденного элемента массива
// Алгоритм двоичного поиска в упорядоченном массиве:
for (int i = 0, j = arInt.Length - 1, k = j / 2; i <= j; k = (i + j) / 2) // поиск
if (arInt[k] == numb) { index = k; break; }
else
if (numb > arInt[k]) i = k + 1;
else j = k - 1;
if (index == -1)
Console.WriteLine("В массиве нет такого элемента!");
else
Console.WriteLine("Результат поиска: arInt[{0}]={1}",
index, arInt[index]);
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
Бинарный поиск
/* Определить и инициализировать целочисленный массив из 10-ти
элементов. Упорядочить его элементы по возрастанию значений,
методом Sort(). Ввести целое число и с помощью метода BinarySearch()
найти номер
элемента с этим значением в упорядоченном массиве. */
using System;
class Program {
static void Main() {
int[] arInt = { 22, 5, 12, 63, -6, -52, 77, 41, 35, 23 };
int numb;
Console.Title = "Сортировка и поиск методами класса Array";
Array.Sort(arInt); // Сортировка
Console.WriteLine("Упорядоченный массив: ");
foreach (int memb in arInt)
Console.Write(memb + " ");
Console.WriteLine();
do { // цикл для повторения ввода числа
Console.WriteLine("Для выхода нажмите клавишу ESC");
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);
}
} ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
Бинарный поиск(2)
do Console.Write("Введите целое число: ");
while (!int.TryParse(Console.ReadLine(), out numb));
// индекс искомого элемента массива:
int index = Array.BinarySearch(arInt, numb);
if (index < 0)
Console.WriteLine("В массиве нет такого элемента!");
else
Console.WriteLine("Результат поиска: arInt[{0}]={1}",
index, arInt[index]);
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
Бинарный поиск(2)
101000, Россия, Москва, Мясницкая ул., д. 20
Тел.: (495) 621-7983, факс: (495) 628-7931
www.hse.ru

More Related Content

What's hot

Основы С++ (операторы, типы данных, функции)
Основы С++ (операторы, типы данных, функции)Основы С++ (операторы, типы данных, функции)
Основы С++ (операторы, типы данных, функции)
Olga Maksimenkova
 
Представление графов в памяти компьютера (c++).
Представление графов в памяти компьютера (c++).Представление графов в памяти компьютера (c++).
Представление графов в памяти компьютера (c++).
Olga Maksimenkova
 
1 вводное занятие
1 вводное занятие1 вводное занятие
1 вводное занятие
luis_blanco_rau
 
Основы MATLAB. Программирование
Основы MATLAB. ПрограммированиеОсновы MATLAB. Программирование
Основы MATLAB. Программирование
Theoretical mechanics department
 
Статический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутСтатический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минут
Andrey Karpov
 
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
Объектно-Ориентированное Программирование на C++, Лекции  3 и 4 Объектно-Ориентированное Программирование на C++, Лекции  3 и 4
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
Dima Dzuba
 
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Dima Dzuba
 
Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8.
Dima Dzuba
 
Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10
Dima Dzuba
 
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Platonov Sergey
 
"Вингардиум Левиоса”. Или основы декларативной магии (Матвеенко Сергей)
"Вингардиум Левиоса”. Или основы декларативной магии (Матвеенко Сергей)"Вингардиум Левиоса”. Или основы декларативной магии (Матвеенко Сергей)
"Вингардиум Левиоса”. Или основы декларативной магии (Матвеенко Сергей)
IT-Доминанта
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.
Roman Brovko
 
Лекция 1. Начало.
Лекция 1. Начало.Лекция 1. Начало.
Лекция 1. Начало.
Roman Brovko
 
C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.
Igor Shkulipa
 
Excel in Javascript
Excel in JavascriptExcel in Javascript
Excel in Javascript
Viktor Turskyi
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Platonov Sergey
 
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Nikolay Grebenshikov
 
Лекция 3. Декораторы и модуль functools.
Лекция 3. Декораторы и модуль functools.Лекция 3. Декораторы и модуль functools.
Лекция 3. Декораторы и модуль functools.
Roman Brovko
 
Лекция 6. Классы 1.
Лекция 6. Классы 1.Лекция 6. Классы 1.
Лекция 6. Классы 1.
Roman Brovko
 

What's hot (20)

Основы С++ (операторы, типы данных, функции)
Основы С++ (операторы, типы данных, функции)Основы С++ (операторы, типы данных, функции)
Основы С++ (операторы, типы данных, функции)
 
Представление графов в памяти компьютера (c++).
Представление графов в памяти компьютера (c++).Представление графов в памяти компьютера (c++).
Представление графов в памяти компьютера (c++).
 
1 вводное занятие
1 вводное занятие1 вводное занятие
1 вводное занятие
 
Основы MATLAB. Лекция 1.
Основы MATLAB. Лекция 1.Основы MATLAB. Лекция 1.
Основы MATLAB. Лекция 1.
 
Основы MATLAB. Программирование
Основы MATLAB. ПрограммированиеОсновы MATLAB. Программирование
Основы MATLAB. Программирование
 
Статический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутСтатический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минут
 
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
Объектно-Ориентированное Программирование на C++, Лекции  3 и 4 Объектно-Ориентированное Программирование на C++, Лекции  3 и 4
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
 
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
 
Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8.
 
Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10
 
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
Игорь Кудрин, «Используем неизменяемые данные и создаем качественный код»
 
"Вингардиум Левиоса”. Или основы декларативной магии (Матвеенко Сергей)
"Вингардиум Левиоса”. Или основы декларативной магии (Матвеенко Сергей)"Вингардиум Левиоса”. Или основы декларативной магии (Матвеенко Сергей)
"Вингардиум Левиоса”. Или основы декларативной магии (Матвеенко Сергей)
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.
 
Лекция 1. Начало.
Лекция 1. Начало.Лекция 1. Начало.
Лекция 1. Начало.
 
C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.
 
Excel in Javascript
Excel in JavascriptExcel in Javascript
Excel in Javascript
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
 
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
 
Лекция 3. Декораторы и модуль functools.
Лекция 3. Декораторы и модуль functools.Лекция 3. Декораторы и модуль functools.
Лекция 3. Декораторы и модуль functools.
 
Лекция 6. Классы 1.
Лекция 6. Классы 1.Лекция 6. Классы 1.
Лекция 6. Классы 1.
 

Viewers also liked

Array y Objects C#
Array y Objects C#Array y Objects C#
Array y Objects C#
Manuel Antonio
 
Современные образовательные технологии в области компьютерных наук
Современные образовательные технологии в области компьютерных наукСовременные образовательные технологии в области компьютерных наук
Современные образовательные технологии в области компьютерных наук
Olga Maksimenkova
 
Математические основы методов решений систем логических уравнений
Математические основы методов решений систем логических уравненийМатематические основы методов решений систем логических уравнений
Математические основы методов решений систем логических уравнений
Olga Maksimenkova
 
Абстрактные типы данных. Списки
Абстрактные типы данных. СпискиАбстрактные типы данных. Списки
Абстрактные типы данных. Списки
Olga Maksimenkova
 
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
Olga Maksimenkova
 
Презентация курса "Основы программирования" на C#
Презентация курса "Основы программирования" на C#Презентация курса "Основы программирования" на C#
Презентация курса "Основы программирования" на C#
Vadim Martynov
 
Решение систем логических уравнений, ЕГЭ 23 информатика
Решение систем логических уравнений, ЕГЭ 23 информатикаРешение систем логических уравнений, ЕГЭ 23 информатика
Решение систем логических уравнений, ЕГЭ 23 информатика
Olga Maksimenkova
 
Очистка данных на практике: мифы и легенты Excel и R
Очистка данных на практике: мифы и легенты Excel и RОчистка данных на практике: мифы и легенты Excel и R
Очистка данных на практике: мифы и легенты Excel и R
Olga Maksimenkova
 
язык программирования с#
язык программирования с#язык программирования с#
язык программирования с#Nitrosalat
 
Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)
Alexandr Konfidentsialno
 
SlideShare 101
SlideShare 101SlideShare 101
SlideShare 101
Amit Ranjan
 

Viewers also liked (11)

Array y Objects C#
Array y Objects C#Array y Objects C#
Array y Objects C#
 
Современные образовательные технологии в области компьютерных наук
Современные образовательные технологии в области компьютерных наукСовременные образовательные технологии в области компьютерных наук
Современные образовательные технологии в области компьютерных наук
 
Математические основы методов решений систем логических уравнений
Математические основы методов решений систем логических уравненийМатематические основы методов решений систем логических уравнений
Математические основы методов решений систем логических уравнений
 
Абстрактные типы данных. Списки
Абстрактные типы данных. СпискиАбстрактные типы данных. Списки
Абстрактные типы данных. Списки
 
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...
 
Презентация курса "Основы программирования" на C#
Презентация курса "Основы программирования" на C#Презентация курса "Основы программирования" на C#
Презентация курса "Основы программирования" на C#
 
Решение систем логических уравнений, ЕГЭ 23 информатика
Решение систем логических уравнений, ЕГЭ 23 информатикаРешение систем логических уравнений, ЕГЭ 23 информатика
Решение систем логических уравнений, ЕГЭ 23 информатика
 
Очистка данных на практике: мифы и легенты Excel и R
Очистка данных на практике: мифы и легенты Excel и RОчистка данных на практике: мифы и легенты Excel и R
Очистка данных на практике: мифы и легенты Excel и R
 
язык программирования с#
язык программирования с#язык программирования с#
язык программирования с#
 
Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)Программирование на языке C Sharp (СИ решетка)
Программирование на языке C Sharp (СИ решетка)
 
SlideShare 101
SlideShare 101SlideShare 101
SlideShare 101
 

Similar to 3. Массивы в C#

Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Javametaform
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Technopark
 
AlgoCollections (RUS)
AlgoCollections (RUS)AlgoCollections (RUS)
AlgoCollections (RUS)
Anton Bukov
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программиста
Andrey Karpov
 
!Predictive analytics part_2
!Predictive analytics part_2!Predictive analytics part_2
!Predictive analytics part_2
Vladimir Krylov
 
массивы в паскале
массивы в паскалемассивы в паскале
массивы в паскалеAnn Eres
 
Практикум по выполнению блока с информатика
Практикум по выполнению блока с информатикаПрактикум по выполнению блока с информатика
Практикум по выполнению блока с информатикаЕкатерина Луговова
 
C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.
Igor Shkulipa
 
Deep Dive C# by Sergey Teplyakov
Deep Dive  C# by Sergey TeplyakovDeep Dive  C# by Sergey Teplyakov
Deep Dive C# by Sergey TeplyakovAlex Tumanoff
 
Основы языка R
Основы языка RОсновы языка R
Основы языка R
Sergey Mastitsky
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
Mikhail Kurnosov
 
Пояснения к статье про Copy-Paste
Пояснения к статье про Copy-PasteПояснения к статье про Copy-Paste
Пояснения к статье про Copy-Paste
Tatyanazaxarova
 
Одномерные массивы целых чисел
Одномерные массивы целых чиселОдномерные массивы целых чисел
Одномерные массивы целых чисел
Andrey Dolinin
 
Lec 3
Lec 3Lec 3
Презентация на тему: Методические особенности подготовки учащихся к выполнени...
Презентация на тему: Методические особенности подготовки учащихся к выполнени...Презентация на тему: Методические особенности подготовки учащихся к выполнени...
Презентация на тему: Методические особенности подготовки учащихся к выполнени...2berkas
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013AliyaAringazinova
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
metaform
 
Простая линейная регрессия в системе R
Простая линейная регрессия в системе RПростая линейная регрессия в системе R
Простая линейная регрессия в системе R
Sergey Mastitsky
 

Similar to 3. Массивы в C# (20)

Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1
 
AlgoCollections (RUS)
AlgoCollections (RUS)AlgoCollections (RUS)
AlgoCollections (RUS)
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программиста
 
!Predictive analytics part_2
!Predictive analytics part_2!Predictive analytics part_2
!Predictive analytics part_2
 
массивы в паскале
массивы в паскалемассивы в паскале
массивы в паскале
 
87
8787
87
 
Практикум по выполнению блока с информатика
Практикум по выполнению блока с информатикаПрактикум по выполнению блока с информатика
Практикум по выполнению блока с информатика
 
одномерные массивы
одномерные массивыодномерные массивы
одномерные массивы
 
C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.
 
Deep Dive C# by Sergey Teplyakov
Deep Dive  C# by Sergey TeplyakovDeep Dive  C# by Sergey Teplyakov
Deep Dive C# by Sergey Teplyakov
 
Основы языка R
Основы языка RОсновы языка R
Основы языка R
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
 
Пояснения к статье про Copy-Paste
Пояснения к статье про Copy-PasteПояснения к статье про Copy-Paste
Пояснения к статье про Copy-Paste
 
Одномерные массивы целых чисел
Одномерные массивы целых чиселОдномерные массивы целых чисел
Одномерные массивы целых чисел
 
Lec 3
Lec 3Lec 3
Lec 3
 
Презентация на тему: Методические особенности подготовки учащихся к выполнени...
Презентация на тему: Методические особенности подготовки учащихся к выполнени...Презентация на тему: Методические особенности подготовки учащихся к выполнени...
Презентация на тему: Методические особенности подготовки учащихся к выполнени...
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
 
Простая линейная регрессия в системе R
Простая линейная регрессия в системе RПростая линейная регрессия в системе R
Простая линейная регрессия в системе R
 

More from Olga Maksimenkova

Информатика в школе: методы и технологии активного обучения
Информатика в школе: методы и технологии активного обученияИнформатика в школе: методы и технологии активного обучения
Информатика в школе: методы и технологии активного обучения
Olga Maksimenkova
 
Взаимное оценивание в дисцилине "Программирование"
Взаимное оценивание в дисцилине "Программирование"Взаимное оценивание в дисцилине "Программирование"
Взаимное оценивание в дисцилине "Программирование"
Olga Maksimenkova
 
2020 maksimenkova-dist learning
2020 maksimenkova-dist learning2020 maksimenkova-dist learning
2020 maksimenkova-dist learning
Olga Maksimenkova
 
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
Olga Maksimenkova
 
Геймификация образования: фан, мотивация и преодоление себя
Геймификация образования: фан, мотивация и преодоление себяГеймификация образования: фан, мотивация и преодоление себя
Геймификация образования: фан, мотивация и преодоление себя
Olga Maksimenkova
 
2019-01-11-Digital Transformation of Education
2019-01-11-Digital Transformation of Education2019-01-11-Digital Transformation of Education
2019-01-11-Digital Transformation of Education
Olga Maksimenkova
 
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
Olga Maksimenkova
 
Collaborative Learning in Data Science Education: a Data Expedition as a Form...
Collaborative Learning in Data Science Education: a Data Expedition as a Form...Collaborative Learning in Data Science Education: a Data Expedition as a Form...
Collaborative Learning in Data Science Education: a Data Expedition as a Form...
Olga Maksimenkova
 
Инженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдевуИнженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдеву
Olga Maksimenkova
 
Video Game Design History
Video Game Design HistoryVideo Game Design History
Video Game Design History
Olga Maksimenkova
 
Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25
Olga Maksimenkova
 
Lec 04. The way to production: game testing and analytics
Lec 04. The way to production: game testing and analyticsLec 04. The way to production: game testing and analytics
Lec 04. The way to production: game testing and analytics
Olga Maksimenkova
 
Lec 03. The fates of the Games. Game engines, development
Lec 03. The fates of the Games. Game engines, developmentLec 03. The fates of the Games. Game engines, development
Lec 03. The fates of the Games. Game engines, development
Olga Maksimenkova
 
Lec 01. Mobile games development
Lec 01. Mobile games developmentLec 01. Mobile games development
Lec 01. Mobile games development
Olga Maksimenkova
 
[Maksimenkova_ Neznanov]apkit 2017
[Maksimenkova_ Neznanov]apkit 2017[Maksimenkova_ Neznanov]apkit 2017
[Maksimenkova_ Neznanov]apkit 2017
Olga Maksimenkova
 
Что скрывают открытые образовательные ресурсы?
Что скрывают открытые образовательные ресурсы?Что скрывают открытые образовательные ресурсы?
Что скрывают открытые образовательные ресурсы?
Olga Maksimenkova
 

More from Olga Maksimenkova (16)

Информатика в школе: методы и технологии активного обучения
Информатика в школе: методы и технологии активного обученияИнформатика в школе: методы и технологии активного обучения
Информатика в школе: методы и технологии активного обучения
 
Взаимное оценивание в дисцилине "Программирование"
Взаимное оценивание в дисцилине "Программирование"Взаимное оценивание в дисцилине "Программирование"
Взаимное оценивание в дисцилине "Программирование"
 
2020 maksimenkova-dist learning
2020 maksimenkova-dist learning2020 maksimenkova-dist learning
2020 maksimenkova-dist learning
 
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
Intelligent Virtual Reality Tutoring Systems as a New Generation of Simulator...
 
Геймификация образования: фан, мотивация и преодоление себя
Геймификация образования: фан, мотивация и преодоление себяГеймификация образования: фан, мотивация и преодоление себя
Геймификация образования: фан, мотивация и преодоление себя
 
2019-01-11-Digital Transformation of Education
2019-01-11-Digital Transformation of Education2019-01-11-Digital Transformation of Education
2019-01-11-Digital Transformation of Education
 
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...
 
Collaborative Learning in Data Science Education: a Data Expedition as a Form...
Collaborative Learning in Data Science Education: a Data Expedition as a Form...Collaborative Learning in Data Science Education: a Data Expedition as a Form...
Collaborative Learning in Data Science Education: a Data Expedition as a Form...
 
Инженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдевуИнженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдеву
 
Video Game Design History
Video Game Design HistoryVideo Game Design History
Video Game Design History
 
Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25Maksimenkova edu infosystems-2018-05-25
Maksimenkova edu infosystems-2018-05-25
 
Lec 04. The way to production: game testing and analytics
Lec 04. The way to production: game testing and analyticsLec 04. The way to production: game testing and analytics
Lec 04. The way to production: game testing and analytics
 
Lec 03. The fates of the Games. Game engines, development
Lec 03. The fates of the Games. Game engines, developmentLec 03. The fates of the Games. Game engines, development
Lec 03. The fates of the Games. Game engines, development
 
Lec 01. Mobile games development
Lec 01. Mobile games developmentLec 01. Mobile games development
Lec 01. Mobile games development
 
[Maksimenkova_ Neznanov]apkit 2017
[Maksimenkova_ Neznanov]apkit 2017[Maksimenkova_ Neznanov]apkit 2017
[Maksimenkova_ Neznanov]apkit 2017
 
Что скрывают открытые образовательные ресурсы?
Что скрывают открытые образовательные ресурсы?Что скрывают открытые образовательные ресурсы?
Что скрывают открытые образовательные ресурсы?
 

3. Массивы в C#

  • 1. Высшая школа экономики, Москва, 2013 www.hse.ru Язык программирования C# и платформа .NET. Массивы Многомерные массивы Максименкова Ольга Вениаминовна Старший преподаватель Кафедра управления разработкой программного обеспечения
  • 2. МАССИВЫ • Одномерные массивы • Обработка одномерных массивов ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 3. Ссылочный тип данных ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В. имя_переменной значение_адреса_данных значение_данных Объекты ссылочных типов размещаются в «куче» [manager heap] Если ссылка не связана с данными, то ее значение - null
  • 4. Одномерные массивы имя_ссылки_на_массив[индексирующее_выражение] тип[ ] имя_ссылки Операция индексирования Объявление ссылки на массив Объявление ссылки на массив Инициализация элементов массива Работа с элементами массива ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В. Создание экземпляра массива Создание экземпляра объекта конкретного типа new тип[размер_массива] Допустимо объединение
  • 5. Одномерные массивы Объявление ссылки Описание с инициализацией Описание и последующая инициализация int[ ] intArr; // ссылка на целочисленный массив double[ ] arr; // ссылка на вещественный массив int[ ] intArr = { 1, 3, -8, 19, 0, 11 }; double[ ] arr = { 3.14, 0.0, 0.5 }; // ссылка int[ ] intArr; // выделение памяти intArr = new int[5]; intArr[0] = -1; intArr[1] = 12; intArr[2] = 34; intArr[3] = -23; intArr[4] = 78; int[ ] intArr; // ссылка intArr = new int[5]; // выделение памяти for (int i = 0; i < 5; i++) { intArr[i] = i * i - 1; Console.Write(intArr[i] + " "); } ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
  • 6. Цикл foreach foreach (тип идентификатор in ссылка) { <тело_цикла> } int[ ] arInt = { 22, 5, 12, 63, -6, -52, 77, 41, 35, 23 }; foreach (int memb in arInt) Console.Write(memb + " "); for (int i = 0; i < arInt.Length; i++) Console.Write(arInt[i] + " "); Сравните: По memb доступно только значение элемента arInt[i] – доступ к значению i – индекс элемента
  • 7. Случайные числа 7 Предыдущее число Датчик Новое случайное число Random ran = new Random(start); Random ran = new Random(); Ссылка на объект- датчик Объект- датчик случайных чисел В 1-м случае, когда в ran заносится стартовое число start. Если его не изменять, то при повторных запусках программы датчик всегда будет выдавать одну и туже последовательность случайных чисел. Во 2-м случае в датчик ran заносится число, зависящее от текущего значения системного времени - при повторных запусках программы датчик будет выдавать разные последовательности случайных чисел. http://msdn.microsoft.com/ru-ru/library/system.random(v=VS.95) ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
  • 8. Методы получения случайного числа int Next () 0≤X<int.MaxValue int Next (int B) 0≤X<B int Next(int A, int B) A≤X<B double NextDouble () 0≤X<1 Получение случайного вещественного числа X из нужного диапазона A≤X<B: X = A + (B-A) * ran.NextDouble() или X = ran.Next((int)A, (int)B) + ran.NextDouble() ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
  • 9. /* Определить и инициализировать целочисленный массив из 10-ти элементов. Ввести целое число и заменить им значение максимального элемента. Окончание работы - ввод нулевого числа.*/ using System; class Program { static void Main() { int[ ] arInt = { 22, 5, 12, 63, -6, -52, 77, 41, 35, 23 }; int numb; Console.Title = "Инициализация массива"; do { // цикл для повторения ввода числа Console.WriteLine(); Console.WriteLine("Для выхода нажмите клавишу ESC"); } while (Console.ReadKey(true).Key != ConsoleKey.Escape); } } ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В. Замена максимального элемента
  • 10. do Console.Write("Введите целое число: "); while (!int.TryParse(Console.ReadLine(), out numb)); int index = 0; // индекс максимального элемента массива for (int i = 0; i < arInt.Length; i++) // поиск if (arInt[i] > arInt[index]) index = i; Console.WriteLine("Заменяем arInt[{0}]={1} на {2} ", index, arInt[index], numb); arInt[index] = numb; // замена значения for (int i = 0; i < arInt.Length; i++) if ((i + 1) % 10 != 0) Console.Write(arInt[i] + "t"); ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В. Замена максимального элемента
  • 11. Описание одномерного массива double[ ] dbArr; // описание ссылки на массив dbArr = new double[10]; // определение массива из 10-ти элементов int[ ] intArr = new int[15]; // элементы массива могут иметь ссылочный тип string[ ] strArr = new string[3]; Решите самостоятельно: 1. Пользователем с клавиатуры вводится целое число N > 0. Сформировать и вывести на экран целочисленный массив из N элементов, элементами которого являются нечетные числа от 1. 2. Пользователем с клавиатуры вводится целое число N > 1. Сформировать целочисленный массив, содержащий N первых элементов последовательности Фибоначчи: A[0] = 1, A[1] = 1, A[2] = A[0] + A[1], … A[K] = A[K-1] + A[K-2], … Элементы массива вывести на экран в обратном порядке, методы класса Array не использовать. // описание с инициализацией int[ ] intArr = {1, 0, 1}; ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
  • 12. Методы класса Array /* Клонирование массива. */ using System; class Program { static void Main() { char[ ] hi = { '1', 'A', '2', 'B', '3', 'C', '4', 'D', '5', 'E‘ }; char[ ] hiNew = (char[ ])hi.Clone(); // копирование Array.Sort(hiNew); // сортировка Console.Write("Сортировка: "); foreach (char ch in hiNew) // вывод значений массива Console.Write("" + ch); Console.WriteLine(); Array.Reverse(hiNew); // реверсирование Console.Write("Реверсирование: "); foreach (char ch in hiNew) Console.Write("" + ch); Console.WriteLine(); Console.Write("Исходный массив: "); foreach (char ch in hi) Console.Write("" + ch); Console.WriteLine(); } } ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
  • 13. /* Определить и инициализировать целочисленный массив из 10-ти элементов. Упорядочить его элементы по возрастанию значений, методом Sort(). Ввести целое число и методом двоичного поиска найти номер элемента с этим значением в упорядоченном массиве.*/ using System; class Program { static void Main() { int[ ] arInt = { 22, 5, 12, 63, -6, -52, 77, 41, 35, 23 }; int numb; Console.Title = "Двоичный поиск в массиве"; Array.Sort(arInt); // Сортировка (упорядочение массива) Console.WriteLine("Упорядоченный массив: "); foreach (int memb in arInt) // Перебор значений элементов Console.Write(memb + " "); Console.WriteLine(); do {// цикл для повторения ввода числа Console.WriteLine("Для выхода нажмите клавишу ESC"); } while (Console.ReadKey(true).Key != ConsoleKey.Escape); } } ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В. Бинарный поиск
  • 14. do Console.Write("Введите целое число: "); while (!int.TryParse(Console.ReadLine(), out numb)); int index = -1; // индекс найденного элемента массива // Алгоритм двоичного поиска в упорядоченном массиве: for (int i = 0, j = arInt.Length - 1, k = j / 2; i <= j; k = (i + j) / 2) // поиск if (arInt[k] == numb) { index = k; break; } else if (numb > arInt[k]) i = k + 1; else j = k - 1; if (index == -1) Console.WriteLine("В массиве нет такого элемента!"); else Console.WriteLine("Результат поиска: arInt[{0}]={1}", index, arInt[index]); ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В. Бинарный поиск
  • 15. /* Определить и инициализировать целочисленный массив из 10-ти элементов. Упорядочить его элементы по возрастанию значений, методом Sort(). Ввести целое число и с помощью метода BinarySearch() найти номер элемента с этим значением в упорядоченном массиве. */ using System; class Program { static void Main() { int[] arInt = { 22, 5, 12, 63, -6, -52, 77, 41, 35, 23 }; int numb; Console.Title = "Сортировка и поиск методами класса Array"; Array.Sort(arInt); // Сортировка Console.WriteLine("Упорядоченный массив: "); foreach (int memb in arInt) Console.Write(memb + " "); Console.WriteLine(); do { // цикл для повторения ввода числа Console.WriteLine("Для выхода нажмите клавишу ESC"); } while (Console.ReadKey(true).Key != ConsoleKey.Escape); } } ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В. Бинарный поиск(2)
  • 16. do Console.Write("Введите целое число: "); while (!int.TryParse(Console.ReadLine(), out numb)); // индекс искомого элемента массива: int index = Array.BinarySearch(arInt, numb); if (index < 0) Console.WriteLine("В массиве нет такого элемента!"); else Console.WriteLine("Результат поиска: arInt[{0}]={1}", index, arInt[index]); ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В. Бинарный поиск(2)
  • 17. 101000, Россия, Москва, Мясницкая ул., д. 20 Тел.: (495) 621-7983, факс: (495) 628-7931 www.hse.ru