Презентация ПЯВУ. Лекция 13. Элементы ООП. Рекурсия онлайн

На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему ПЯВУ. Лекция 13. Элементы ООП. Рекурсия абсолютно бесплатно. Урок-презентация на эту тему содержит всего 28 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » ПЯВУ. Лекция 13. Элементы ООП. Рекурсия



Оцените!
Оцените презентацию от 1 до 5 баллов!
  • Тип файла:
    ppt / pptx (powerpoint)
  • Всего слайдов:
    28 слайдов
  • Для класса:
    1,2,3,4,5,6,7,8,9,10,11
  • Размер файла:
    102.70 kB
  • Просмотров:
    58
  • Скачиваний:
    0
  • Автор:
    неизвестен



Слайды и текст к этой презентации:

№1 слайд
ПЯВУ. Лекция . Элементы ООП.
Содержание слайда: ПЯВУ. Лекция 13. Элементы ООП. Рекурсия. А.М. Задорожный

№2 слайд
Контрольные вопросы Что такое
Содержание слайда: Контрольные вопросы Что такое ООП? Чему соответствуют понятия Класс и Объект в функциональном программировании? Где объявляются новые классы в C#? Что означает слово Public в ООП? Что такое Метод? Где может располагаться в программе определение метода? Что такое формальные параметры? Для чего они служат? Что такое фактические параметры? Для чего они служат?

№3 слайд
План лекции Поля данных и
Содержание слайда: План лекции Поля данных и свойства Рекурсия Понятие рекурсии Пример для задачи “Ханойские башни” Вопросы для повторения

№4 слайд
Поля данных Класс
Содержание слайда: Поля данных Класс гистограммы. public class Histogram { // Левая и правая граница public double LeftEdge; public double RightEdge; public int [] Data; // Массив public Histogram(double leftEdge, double rightEdge, int N) { … } … } LeftEdge, RightEdge и Data – поля данных

№5 слайд
Недостатки полей данных Если
Содержание слайда: Недостатки полей данных Если поле данных объекта можно читать (оно доступно), то его можно и изменить. Программно защитить или контролировать изменение поля нельзя! Как следствие, полям можно придать недопустимые значения, например, для гистограммы можно указать левую границу больше правой.

№6 слайд
Свойства Этих недостатков
Содержание слайда: Свойства Этих недостатков лишены Свойства. public class Histogram { double _leftEdge; double _rightEdge; int [] Data; public double LeftEdge { get {return _leftEdge;} set {_leftEdge = value;} } … }

№7 слайд
Свойства Используются
Содержание слайда: Свойства Используются свойства так же как и поля данных. Histogram h = new Histogram(); h.LeftEdge = 0; h.RightEdge = 100; Console.WhriteLine(“{0} – {1}”, h.LeftEdge, h.RightEdge); Их можно задавать (присваивать) и считывать.

№8 слайд
Свойства Варианты свойств.
Содержание слайда: Свойства Варианты свойств. Только для чтения. public class Histogram { double _leftEdge; double _rightEdge; int [] Data; public double LeftEdge { get {return _leftEdge;} //set {_leftEdge = value;} } … }

№9 слайд
Свойства Варианты свойств.
Содержание слайда: Свойства Варианты свойств. Проверка при присваивании. public class Histogram { double _leftEdge; double _rightEdge; int [] Data; public double LeftEdge { get {return _leftEdge;} set {if(value > 0) _leftEdge = value;} } … } В set проверяем значение value и, если оно допустимо, выполняем присваивание.

№10 слайд
Свойства C облегчает
Содержание слайда: Свойства C# облегчает использование свойств ! Можно не задавать поля данных. public class Histogram { public double LeftEdge {get; set;}; public double RightEdge {get; set;}; int [] Data; //public double LeftEdge //{ // get {return _leftEdge;} // set {if(value > 0) _leftEdge = value;} //} … }

№11 слайд
Свойства. Заключительные
Содержание слайда: Свойства. Заключительные замечания Последнее упрощение позволяет требовать применения свойств вместо полей данных без исключений. Мы не смогли заменить массив на свойства, но C# это позволяет! Обратите внимание на элемент нотации (системы имен): Свойства как public начинаются с большой буквы, а поля, как private с маленькой, да еще со знаком подчеркивания.

№12 слайд
Рекурсия Рекурсия ссылка на
Содержание слайда: Рекурсия Рекурсия – ссылка на себя Вычисление факториала в цикле: Double F(int N) { f = 1; for(int i = 1; i <= N; i++) f *= i; return f; }

№13 слайд
Рекурсия Рекурсия ссылка на
Содержание слайда: Рекурсия Рекурсия – ссылка на себя Вычисление факториала рекурсивно: Double F(int N) { if(N == 0) return 1; return N * F(N-1); }

№14 слайд
Рекурсия Структура Всегда
Содержание слайда: Рекурсия Структура Всегда имеются простейшие случаи, которые вычисляются явно! if(N == 0) return 1; Более сложные случаи вычисляются со ссылкой на более простые. return N * F(N-1);

№15 слайд
Рекурсия. Как происходит
Содержание слайда: Рекурсия. Как происходит вычисление Алгоритм вызывает сам себя, но с более простыми значениями параметров. Это позволяют сделать методы! Без методов рекурсия теряет свои преимущества. Почему? Когда наступает простой случай, начинается последовательный возврат значений и он завершается решением исходной задачи.

№16 слайд
Рекурсия. Ханойские башни
Содержание слайда: Рекурсия. “Ханойские башни” Рекурсия помогает решать задачи.

№17 слайд
Рекурсия. Ханойские башни
Содержание слайда: Рекурсия. “Ханойские башни” Рекурсия помогает решать задачи. Задача. Переместить N дисков с пирамиды i на пирамиду k. Если N = 1, то задача тривиальна. Допустим, мы умеем перемещать N-1 дисков с любой пирамиды на любую.

№18 слайд
Рекурсия. Ханойские башни
Содержание слайда: Рекурсия. “Ханойские башни” Если N = 1, то переместить с i на k Иначе: Переметить N-1 дисков с i на пирамиду j Переместить последний диск с i на k Переместить N-1 дисков с j на пирамиду k Имеются все элементы рекурсии!

№19 слайд
Ханойские башни . Реализация.
Содержание слайда: “Ханойские башни”. Реализация. Как представить пирамиды и диски? int N = 12; //Высота пирамид int [,] p = new int[3, N]; Номера пирамид : 0, 1 и 2. Диаметр диска задаем числом в массиве! for(int i = 0; i < N; i++) p[0, i] = 2*(N – i) + 1; //Что за формула 2*(N – i) + 1? //Где низ, а где верх?

№20 слайд
Ханойские башни . Реализация.
Содержание слайда: “Ханойские башни”. Реализация. /// <summary> /// Перемещает M дисков с пирамиды i на пирамиду j для системы башен p /// </summary> /// <param name="p">Ханойские башни</param> /// <param name="i">Исходная пирамида</param> /// <param name="j">Пирамида назначения</param> /// <param name="M">Количество дисков для перемещения</param> void Move (int[,] p, int i, int j, int M) { }

№21 слайд
Ханойские башни . Реализация.
Содержание слайда: “Ханойские башни”. Реализация. void Move (int[,] p, int i, int j, int M) { if(M == 1) Переместить 1 с i на j else { Переместить M-1 с i на k Переместить 1 с i на j Переместить M-1 с k на j } } Как найти k, если известно i и j? Как узнать сколько дисков на пирамидке?

№22 слайд
Ханойские башни . Реализация.
Содержание слайда: “Ханойские башни”. Реализация. /// <summary> /// Вычисляет высоту пирамиды i для системы башен p /// </summary> /// <param name="p">Ханойские башни</param> /// <param name="i">Пирамида для котороой вычисляется высота</param> /// <returns>Высоту приамиды i</returns> int Height (int[,] p, int i) { int N = p.GetLength(1); int j = N; for( ; j > 0; j--) if(p[i, j-1] > 0) return j; return 0; } Находим положение первого сверху диска.

№23 слайд
Ханойские башни . Реализация.
Содержание слайда: “Ханойские башни”. Реализация. /// <summary> /// Перемещает 1 диск с пирамиды i на пирамиду j для системы башен p /// </summary> /// <param name="p">Ханойские башни</param> /// <param name="i">Исходная пирамида</param> /// <param name="j">Пирамида назначения</param> void Move1 (int[,] p, int i, int j) { int hi = Height(p, i); int hj = Height(p, j); p[j, hj] = p[i, hi-1]; p[i, hi-1] = 0; }

№24 слайд
Ханойские башни . Реализация.
Содержание слайда: “Ханойские башни”. Реализация. void Move (int[,] p, int i, int j, int M) { if(M == 1) Move1(p, i, j); else { Move(p, i, 3-i-j, M-1); Move1(p, i, j); Move(p, 3-i-j, j, M-1); } }

№25 слайд
Заключительные замечания
Содержание слайда: Заключительные замечания Рекурсия – полезный инструмент. Существенно упрощает некоторые задачи. Декомпозиция – хорошая методика решения задач. Нам пришлось: Продумать как будут представлены в программе пирамидки Как организовать рекурсию Как определить “высоту” пирамиды Каждая задача оказалась простой, а в целом, мы решили довольно сложную задачу.

№26 слайд
Рекурсия Заключительные
Содержание слайда: Рекурсия Заключительные замечания Факториал можно вычислить рекурсивно или в цикле. Любую рекурсию можно заменить циклическим вычислением! Алгоритм замены рекурсии циклическим вычислением может оказаться довольно сложным. Рекурсия медленнее чем цикл! Злоупотреблять не следует!

№27 слайд
Контрольные вопросы и
Содержание слайда: Контрольные вопросы и упражнения Почему в ООП рекомендуется использовать свойства, а не поля данных? Что такое рекурсия? Реализуйте метод поиска решения уравнения на отрезке с использованием рекурсии.

№28 слайд
Вопросы для повторения
Содержание слайда: Вопросы для повторения Объясните синтаксис оператора for Какова область видимости счетчика, объявленного в for? Что такое оператор цикла с предусловием/постусловием? Классифицируйте каждый из операторов цикла в C#. Какие дополнительные операторы позволяют управлять исполнением циклов?

Скачать все slide презентации ПЯВУ. Лекция 13. Элементы ООП. Рекурсия одним архивом: