- •Вопрос 2: «Жизненный цикл программного продукта. Спецификация программного продукта»
- •Вопрос 3: «Алгоритмы. Способы описания алгоритмов. Базовые схемы алгоритмов»
- •Вопрос 4: «Поиск. Оптимальность поиска. Статические и динамические методы поиска. Ключ. Метод дихотомии. Оценки алгоритмов поиска»
- •Вопрос 5: «Сортировка. Методы сортировка в простейших задачах»
- •Вопрос 6: «Динамические структуры данных. Стек. Очередь. Дек. Списки»
- •Вопрос 7: «Методы разработки при модульном проектировании. Сверху вниз. Снизу вверх. Конструктивный подход»
- •Вопрос 8: «Рекурсия, итерация. Косвенная и прямая рекурсия. Где используется конструкция:
- •Вопрос 9: «Символы. Примеры. Строки. Примеры. Строки типа StringBuilder. Примеры»
- •Вопрос 10: «Конструкторы. Синтаксис. Примеры»
- •Вопрос 11: «Объектно-ориентированное программирование (ооп). Объект. Инкапсуляция. Наследование. Полиморфизм»
- •Вопрос 12: «Свойства. Синтаксис. Примеры. Найдите пример программы из предложенных преподавателем»
- •Вопрос 13: «Перегрузка методов. Примеры»
- •Вопрос 15: «Массивы. Примеры записей, задающих массивы»
- •Вопрос 16: «Методы класса. Метод Main»
- •Вопрос 17: «Классы в ооп. Что содержит класс? Описание класса. Спецификаторы. Поля. Методы. Константы»
- •Вопрос 18: «Класс System.Array. Оператор foreach. Массив объектов. Примеры»
Вопрос 15: «Массивы. Примеры записей, задающих массивы»
Массив – ограниченная совокупность однотипных величин. Чтобы программа не была длиной и однообразной используют массивы. Номер элемента в массиве – индекс. Массив относится к ссылочным типам данных – располагается в динамической области памяти. Создание массива начинается с выделения памяти под его элементы. Элементы массива могут быть как значимого так и ссылочного типов. Всем элементам при создании массива присваиваются значения по умолчанию – нули для значимых, null для ссылочных.
w- массив типа int [], операция new выделяет память под десять целых элементов.
z- массив типа string[], операция new выделяет память под 100 сслок на строки.
Размерность массива может задаваться выражением
Для обращения к элементу массива после имени массива указывается номер элемента в массиве, например w[4]
Массивы одного типа можно присваивать друг другу.
Массивы: одномерные, прямоугольные и ступенчатые.
Одномерный
Прямоугольный(чаще всего 2*2)
Ступенчатый(количество элементов в разных строках может отличаться)
Вопрос 16: «Методы класса. Метод Main»
Метод – функциональный элемент класса, который реализует вычисления или другие действия, выполняемые классом или экземпляром.Методы определяют поведение класса.
Метод(функция) – законченный фрагмент кода, к которому обращаются по имени. Описывается один раз, а вызывают сколько необходимо. Один метод может обрабатывать различные данные.
Синтаксис метода: [атрибуты(заголовок метода)][спецификаторы] тип имя_метода [(параметры)] тело_метода
Тип определяет значение какого типа вычисляется с помощью метода. Если метод не возвращает значения, то задаётся тип void, а оператор return отсутствует. Параметры используются для обмена информацией с методом. Параметр – локальная переменная, которая принимает значения соответствующего аргумента. Область действия параметра – весь метод. В классе не может быть методов с одинаковыми сигнатурами. Методы класса имеют доступ к его закрытым полям. Метод со спецификатором static должен обращаться только к статическим полям класса.
Пример:
double x=0.1
double y=Math.sin(x) //sin(x)-метод
Console.WriteLine(x) // WriteLine(x)-метод
Метод Main-статический метод, которому передаётся управление после запуска программы. Он может принимать параметры из внешнего окружения и возвращать значения в вызывающую среду.
Вопрос 17: «Классы в ооп. Что содержит класс? Описание класса. Спецификаторы. Поля. Методы. Константы»
Класс в ООП — тип данных, создаваемый программистом. Класс – обобщённое понятие, определяющее характеристики и поведение некоторого множества объектов этого класса(экземпляров). Класс содержит данные, задающие свойства объектов класса и методы, определяющие их поведение.
Спецификаторы. Поля. Методы. Константы. – взять из предыдущих
Вопрос 18: «Класс System.Array. Оператор foreach. Массив объектов. Примеры»
Все массивы в С# построены на основе базового класса Array, который содержит полезные для программист свойства и методы:
Элемент |
Вид |
Описание |
Length |
Свойство |
Количество элементов массива (по всем размерностям) |
Rank |
Свойство |
Количество размерностей массива |
BinarySearch |
Статический метод |
Двоичный поиск в отсортированном массиве |
Clear |
Статический метод |
Присваивание элементам массива значений по умолчанию |
Copy |
Статический метод |
Копирование заданного диапазона элементов одного массива в другой массив |
CopyTo |
Метод |
Копирование всех элементов текущего одномерного массива в другой одномерный массив |
GetValue |
Метод |
Получение значения элемента массива |
IndexOf |
Статический метод |
Поиск первого вхождения элемента в одномерный массив |
LastIndexOf |
Статический метод |
Поиск последнего вхождения элемента в одномерный массив |
Reverse |
Статический метод |
Изменение порядка следования элементов на обратный |
SetValue |
Метод |
Установка значения элемента массива |
Sort |
Статический метод |
Упорядочивание элементов одномерного массива |
Свойство Length позволяет реализовывать алгоритмы, которые будут работать с массивами различной длины или, например, со ступенчатым массивом. Использование этого свойства вместо явного задания размерности исключает возможность выхода индекса за границы массива.
Оператор foreach применяется для перебора элементов в специальным образом организованной группе данных. Массив является именно такой группой. Удобство этого вида цикла заключается в том, что нам не требуется определять количество элементов в группе и выполнять их перебор по индексу: мы просто указываем на необходимость перебрать все элементы группы. Синтаксис оператора: foreach (тип имя in выражение) тело_цикла
Имя задает локальную по отношению к циклу переменную, которая будет по очереди принимать все значения из массива выражение. В простом или составном операторе, представляющем собой тело цикла, выполняются действия с переменной цикла. Тип переменной должен соответствовать типу элемента массива.
Пример: Пусть задан массив int[] a = {24, 50, 18, 3, 16, -7, 9, -1}; Вывод этого массива на экран выглядит следующим образом: foreach (int x in a) Console.WriteLine (x);
Массивы объектов. При создании массива, состоящего из элементов ссылочного типа, память выделяется только под ссылки на элементы, а сами элементы необходимо разместить в хипе явным образом. В качестве примера создадим массив из объектов класса Monster:
using System;
namespase ConsoleApp1
{
class Monster { ... }
class Class1
{
static void Main ()
{
Random rnd = new Random();
const int n = 5;
Monster[] stado = new Monster[n]; //1
for (int i=0; i<n; ++i) //2
{
stado[i] = new Monster (rnd.Next (1,100),
rnd.Next (1,200),
"Crazy" + i.ToString() );
}
foreach (Monster x in stado) x.Passport(); //3
}
}
}
В программе для получение случайных значений использован стандартный класс Random. В операторе 1 выделяется пять ячеек памяти под ссылки на экземпляры класса Monster, и эти ссылки заполняются значением null. В цикле 2 создаются 5 объектов: операция new выделяте память в хипе необходимого для хранения полей объекта объема, а конструктор объекта заносит в эти поля соответствующие значения (выполняется версия конструктора с тремя параметрами). Цикл 3 демонстрирует удобство применения оператора foreach для работы с массивом.