
- •1. Объектно-ориентированное программирование как идеология программирования и как технология. Достоинства и недостатки
- •2.Основные понятия объектно-ориентированного программирования — класс, объект, поле, метод, свойство.
- •4.Конструкторы и деструкторы. Функциональное назначение. Виды конструкторов.
- •5.Объекты и их жизненный цикл. Создание и уничтожение объектов.
- •6.Инкапсуляция. Определение. Функциональное назначение. Реализация. Примеры применения
- •7 Инкапсуляция. Свойства. Функциональное назначение. Реализация. Создание индексатора. Примеры применения.
- •8.Инкапсуляция. Скрытие членов класса. Функциональное назначение. Реализация. Примеры применения.
- •9.Наследование. Функциональное назначение. Реализация. Примеры применения.
- •10.Наследование. Конструктор по умолчанию. Назначение.
- •11. Методы. Определение. Функциональное назначение. Способы реализации. Примеры применения.
- •12.Полиморфизм. Функциональное назначение. Способы реализации. Примеры применения.
- •13.Перегрузка методов. Функциональное назначение. Способ реализации. Примеры применения.
- •14.Виртуальные методы. Функциональное назначение. Примеры применения.
- •15.Перегрузка операций. Функциональное назначение. Способ реализации. Примеры применения.
- •17.Исключительные ситуации. Понятие. Способы обработки исключительных ситуаций. Примеры применения.
- •18.Интерфейсы. Функциональное назначение. Иерархия интерфейсов. Множественное наследование: проблемы и способы их разрешения.
- •Концепция типа данных. Встроенные типы данных и их реализация в языке с#
- •2. Концепция типа данных. Соглашения о совместимости и приведение типов
- •4. Концепция типа данных. Символьные типы данных.
- •5. Концепция типа данных. Составные типы данных. Массивы и их реализация в с#. Структуры.
- •7. Концепция типа данных. Определение собственных типов данных.
- •8. Концепция типа данных. Значащие (размерные) (Value type) и ссылочные (Reference type) типы данных. Упаковка и распаковка (Boxing, Unboxing).
- •9. Концепция типа данных. Переменные и константы и их реализация в с#.
- •10. Принцип модульности программ. Глобальные и локальные имена. Область видимости имен. Выбор области видимости.
- •12. Унарные и мультипликативные операции. Примеры применений.
- •13. Аддитивные и сдвиговые операции. Примеры применений.
- •11. Принцип модульности программ. Метод, как отдельный модуль программы. Интерфейсная и скрытая часть метода. Формальные и фактические параметры метода. Примеры применения.
- •14. Операции отношения и действий над типами данных. Примеры применений.
- •15. Логические операции. Примеры применений.
- •17. Операторы перехода и оператор присваивания.
- •16. Организация циклов в с#. Примеры применений.
- •18. Операторы условного перехода. Примеры применений.
16. Организация циклов в с#. Примеры применений.
Оператор for
For (инициализаторы; условие; список_выражений) тело цикла
Сколько раз будет выполняться тело цикла, зависит от трех управляющих элементов, заданных в скобках. Инициализаторы задают начальное значение одной или нескольких переменных, часто называемых счетчиками или просто переменными цикла. В большинстве случаев цикл for имеет один счетчик, но часто полезно иметь несколько счетчиков. Условие задает условие окончания цикла. Список выражений, записанный через запятую, показывает, как меняются счетчики цикла на каждом шаге выполнения. Если условие цикла истинно, то выполняется тело цикла, затем изменяются значения счетчиков и снова проверяется условие. Как только условие становится ложным, цикл завершает свою работу.
В качестве примера рассмотрим классическую задачу: является ли строка текста палиндромом. Напомню, палиндромом называется симметричная строка текста, читающаяся одинаково слева направо и справа налево. Здесь используются два счетчика — один возрастающий, другой убывающий.
public bool Palindrom(string str)
{ for (int i =0, j =str.Length-1; i<j; i++,j--)
if(str[i]!=str[j]) return(false); return(true); }
Циклы While
While (выражение) оператор
Эта модификация соответствует стратегии: "сначала проверь, а потом делай". В результате проверки может оказаться, что и делать ничего не нужно. Тело такого цикла может ни разу не выполняться. Конечно же, возможно и зацикливание.
Цикл, проверяющий условие завершения в конце, соответствует стратегии: "сначала делай, а потом проверь". Тело такого цикла выполняется, по меньшей мере, один раз.
Цикл foreach
Цикл foreach, удобный при работе с массивами, коллекциями и другими подобными контейнерами данных. Его синтаксис: foreach(тип имя_переменной in коллекция) оператор
Здесь элементы тип и имя_переменной задают тип и имя итерационной переменной, которая при функционировании цикла fоreach будет получать значения элементов из коллекции. Элемент коллекция служит для указания опрашиваемой коллекции. Таким образом, элемент тип должен совпадать (или быть совместимым) с базовым типом массива.
int sum = 0; int [ ] nums = new int[10];
for (int i = 0; i < 10; i++)// Присваиваем элементам массива nums значения,
nums[i] - i;
foreach(int x in nums) {// отображение значений элементов массива и их суммирование
Console.WriteLine("Значение элемента равно: " + х); sum += х; }
Цикл работает в полном соответствии со своим названием — тело цикла выполняется для каждого элемента в массиве. Предполагается также, что элементы коллекции (массива, коллекции) упорядочены. На каждом шаге цикла переменная, задающая текущий элемент массива, получает значение очередного элемента в соответствии с порядком, установленным на элементах массива. С этим текущим элементом и выполняется тело цикла — выполняется столько раз, сколько элементов находится в коллекции. Цикл заканчивается, когда полностью перебраны все элементы коллекции. Серьезным недостатком циклов foreach в языке C# является то, что цикл работает только на чтение, но не на запись элементов.