- •1 Концепция структурного программирования. Причины появления концепции. Модульность и функции. Ограничения на логические конструкции. Использование оператора goto.
- •Теорема о структурном программировании (Теорема Бёма — Якопини)
- •3 Платформа .Net Framework. Многоязыковое программирование. Кроссплатформенность по. Web-ориентированные приложения.
- •Преимущества технологии динамической компиляции
- •5 Построение приложения Windows в интегрированной среде программирования
- •6 Основные типы данных
- •7 Символы и строки. Символы, строки и массивы строк. Операции над строками
- •8 Структура программы на языке c#. Понятие пространства имен. Иерархия пространств имен. Видимость имен.
- •9 Операторы. Основные языка с#. Арифметические и логические операторы. Бинарные и унарные операторы. Составные операторы. Понятие перегрузки операторов.
- •10 Выражения. Приоритет и ассоциативность операторов. Порядок вычисления выражения.
- •11 Преобразования типов. Иерархия численных типов. Явное и неявное преобразование типов. Возможные ошибки.
- •12 Тема: Модификаторы доступа языка c#. Необходимые знания: Назначение и функции модификаторов private, public, protected, internal, protected internal, private protected.
- •13 Выбор вариантов.
- •If (Условие)
- •14 Циклы.
- •15 Классы памяти
- •16 Функции в языке с#
- •17 Массивы. Создание и инициализация. Ссылки на массив. Двухмерные и многомерные массивы. Инициализация массивов. Невыровненные массивы.
- •18 Понятие класса. Определение класса и экземпляр класса. Данные и методы. Ключевое слово partial.
- •19 Создание объекта класса.
- •20 Деструкторы и «сборка мусора». Оператор «new». Резервирование и освобождение памяти. Деструкторы и «сборка мусора».
- •21 Полиморфизм и перегрузка операторов. Перегрузка унарных и бинарных операторов. Семантика перегрузки операторов в с#.
- •Понятие полиморфизма и шаблоны. Назначение и преимущества использования шаблонов. Параметры универсального типа.
- •23 Свойства c# (Понятие инкапсуляции и свойства в c#. Использование ключевых слов «get» и «set». Преимущества использования свойств.)
- •24 Механизм исключений (Назначение исключений. Основные категории исключений. Ключевые слова try, catch и finally, throw.)
- •25 Наследование в c#. Понятие наследования в c#. Механизм наследования. Базовый и производный классы. Наследование и модификаторы доступа.
1 Концепция структурного программирования. Причины появления концепции. Модульность и функции. Ограничения на логические конструкции. Использование оператора goto.
Структу́рное программи́рование — парадигма программирования, в основе которой лежит представление программы в виде иерархической структуры блоков.
В соответствии с парадигмой, любая программа, которая строится без использования оператора goto, состоит из трёх базовых управляющих конструкций: последовательность, ветвление, цикл; кроме того, используются подпрограммы. При этом разработка программы ведётся пошагово, методом «сверху вниз».
Методология структурного программирования появилась как следствие возрастания сложности решаемых на компьютерах задач, и соответственно, усложнения программного обеспечения.
Первоначально идея структурного программирования появилась на свет в связи с оператором goto и сомнениями в целесообразности его применения.
Структурное программирование призвано, в частности, устранить беспорядок и ошибки в программах, вызванные трудностями чтения кода, несистематизированным, неудобным для восприятия и анализа исходным текстом программы. Такой текст нередко характеризуют как «спагетти-код».
Код с goto трудно форматировать, так как он может нарушать иерархичность выполнения (парадигму структурного программирования) и потому отступы, призванные отображать структуру программы, не всегда могут быть выставлены правильно. Кроме того, оператор goto мешает оптимизации компиляторами управляющих структур.
Цель структурного программирования: повысить производительность труда программистов, в том числе при разработке больших и сложных программных комплексов, сократить число ошибок, упростить отладку, модификацию и сопровождение программного обеспечения.
Теорема о структурном программировании (Теорема Бёма — Якопини)
Любая программа, заданная в виде блок-схемы, может быть представлена с помощью трёх управляющих структур:
последовательность — обозначается: f THEN g
ветвление — обозначается: IF p THEN f ELSE g
цикл — обозначается: WHILE p DO f,
где f, g — блок-схемы с одним входом и одним выходом, р — условие, THEN, IF, ELSE, WHILE, DO — ключевые слова. Пояснение. Формула f THEN g означает следующее: сначала выполняется программа f, затем выполняется программа g
Подпрограмма (функция, процедура). Исторически сруктурное программирование тесно связано с технологией процедурного программирования, когда сложная программа строится по иерархической структуре в виде дерева функций (подпрограмм, процедур), вызывающих друг друга и обменивающихся данными через списки входных и выходных параметров.
Главная функция подпрограммы – структуризация программы. Любое изменение (исправление ошибки, оптимизация, расширение функциональности), сделанное в подпрограмме, автоматически отражается на всех её вызовах, в то время как при дублировании каждое изменение необходимо вносить в каждое вхождение изменяемого кода.
2 Основные понятия концепции объектно-ориентированного программирования. Причины появления концепции. Объект или класс. Отличие класса от функции. Понятия абстракции, инкапсуляции, полиморфизма, наследования.
Недостатки структурного программирования:
Концепция структурного программирования является цельной и самодостаточной. Как таковых, недостатков у нее фактически нет.
Но: эта концепция идеологически тесно связана с процедурным програмированием. В рамках такого подхода чрезвычайно затруднительно (по трудоемкости) создание очень крупных программных комплексов, способных эффективно загрузить ресурсы современного компьютера.
Проблемы:
сложность и неудобство создания новых программ на основе ранее разработанных (необходимость разбираться в исходных программах и в списках параметров);
сложность и громоздскость манипуляций со сложными объектами и использования укрупненных функций (сложные объекты или функции приходится описывать через громоздкие структуры, содержащие многочисленных параметры);
сложность организации многозадачного или многоканального режима обработки данных (многозадачность или многоканальность приходится прописывать в коде программ в явном виде, что очень усложняет и увеличивает код).
Для решения перечисленных проблем была разработана новая концепция, получившая название «Объектно-ориентированное программирование».
Концепция структурного программирования тем не менее остается очень важным базовым принципом.
Объект (класс) – совокупность программного кода и связанных с ним данных, реализующая единую функцию.
Определение класса – программный код, описание логики функционирования.
Экземпляр класса – выделенное в памяти компьютера пространство для размещения данных, связанных с отдельным вызовом класса.
Основные понятия
Абстракция данных. Абстрагирование означает выделение значимой информации и исключение из рассмотрения незначимой. В ООП рассматривают лишь абстракцию данных (нередко называя её просто «абстракцией»), подразумевая набор наиболее значимых характеристик объекта, доступных остальной программе. Абстракция связана с понятием «Черный ящик» - система, описанная только выполняемой функцией, входами и выходами. Инкапсуляция
Инкапсуляция — свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе. Сокрытие внутренних данных класса. Ограничение доступа внешних программ к данным класса (private,public, protected).
Наследование — свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником, дочерним или производным классом. Доступ производных классов к методам и свойствам родительского.
Полиморфизм — свойство системы, позволяющее использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. Встроенный полиморфизм языков программирования (одинаковые знаки арифметических операций для разных типов чисел). Полиморфизм данных, операторов, методов.