🗊Презентация ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы

Нажмите для полного просмотра!
ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №1ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №2ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №3ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №4ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №5ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №6ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №7ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №8ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №9ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №10ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №11ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №12ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №13ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №14ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №15ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №16ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №17ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №18ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №19ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №20ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №21ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №22ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №23ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №24ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №25ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №26ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №27ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы, слайд №28

Содержание

Вы можете ознакомиться и скачать презентацию на тему ПЯВУ. Основы программирования. Лекция 11. Гистограммы. Основы ООП на примере гистограммы. Доклад-сообщение содержит 28 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

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


Слайд 1





ПЯВУ. Лекция 11.
Основы программирования.
А.М. Задорожный
Описание слайда:
ПЯВУ. Лекция 11. Основы программирования. А.М. Задорожный

Слайд 2





Контрольные вопросы
Что такое Метод?
Где может располагаться в программе определение метода?
Что такое формальные параметры? Для чего они служат?
Что такое фактические параметры? Для чего они служат?
Что такое фильтрация данных?
Что означает “Виртуальный массив” в алгоритме фильтрации с вычислением среднего?
Для чего применялся “Виртуальный массив”?
Описание слайда:
Контрольные вопросы Что такое Метод? Где может располагаться в программе определение метода? Что такое формальные параметры? Для чего они служат? Что такое фактические параметры? Для чего они служат? Что такое фильтрация данных? Что означает “Виртуальный массив” в алгоритме фильтрации с вычислением среднего? Для чего применялся “Виртуальный массив”?

Слайд 3





Содержание
Гистограммы
Данные описывающие гистограмму
Алгоритм построения гистограммы
Основы объектно-ориентированного программирования на примере гистограммы
Объявления классов
Конструкторы
Методы и данные
Статические классы и методы
Описание слайда:
Содержание Гистограммы Данные описывающие гистограмму Алгоритм построения гистограммы Основы объектно-ориентированного программирования на примере гистограммы Объявления классов Конструкторы Методы и данные Статические классы и методы

Слайд 4





Гистограммы
Гистограмма – частотное представление данных (диаграмма).




Гистограмма – программное средство, позволяющее обрабатывать входные данные и подсчитывать появления событий каждого из заданных типов.
Описание слайда:
Гистограммы Гистограмма – частотное представление данных (диаграмма). Гистограмма – программное средство, позволяющее обрабатывать входные данные и подсчитывать появления событий каждого из заданных типов.

Слайд 5





Гистограмма (анализ)
Имеется поток входных данных.  	Что это? 
Входной поток определяет события. О чем это? 
Виды событий заранее известны и пронумерованы.
Задача. Определить, сколько событий каждого типа было представлено во входном потоке.
Описание слайда:
Гистограмма (анализ) Имеется поток входных данных. Что это? Входной поток определяет события. О чем это? Виды событий заранее известны и пронумерованы. Задача. Определить, сколько событий каждого типа было представлено во входном потоке.

Слайд 6





Гистограмма (анализ 2)
Задача. Имеется N типов событий. Имеется так же входной поток данных, представляющий последовательность событий. 
Определить, сколько событий каждого типа было представлено во входном потоке.
Вопрос. Какие вспомогательные данные понадобятся в программе для решения данной задачи?
Описание слайда:
Гистограмма (анализ 2) Задача. Имеется N типов событий. Имеется так же входной поток данных, представляющий последовательность событий. Определить, сколько событий каждого типа было представлено во входном потоке. Вопрос. Какие вспомогательные данные понадобятся в программе для решения данной задачи?

Слайд 7





Гистограмма (конкретизация)
Задача. Имеется входной поток данных, представляющий собой числа в диапазоне от А до B. 
Событием типа i считается попадание числа в интервал от А + i*(B-A)/N до А + (i + 1)*(B-A)/N.
Определить, сколько событий каждого типа было представлено во входном потоке.
d = (B-A)/N будем называть шагом гистограммы.
Вопрос. В каком диапазоне будет меняться i? Сколько всего видов событий определено в данной задаче?
Описание слайда:
Гистограмма (конкретизация) Задача. Имеется входной поток данных, представляющий собой числа в диапазоне от А до B. Событием типа i считается попадание числа в интервал от А + i*(B-A)/N до А + (i + 1)*(B-A)/N. Определить, сколько событий каждого типа было представлено во входном потоке. d = (B-A)/N будем называть шагом гистограммы. Вопрос. В каком диапазоне будет меняться i? Сколько всего видов событий определено в данной задаче?

Слайд 8





Гистограмма (проектирование)
Очевидно, для хранения гистограммы нужен массив длины N. Назовем его hist.
Хорошо бы иметь метод, который будет подсчитывать события по мере поступления данных.

Вопрос. Какова сигнатура метода?
Описание слайда:
Гистограмма (проектирование) Очевидно, для хранения гистограммы нужен массив длины N. Назовем его hist. Хорошо бы иметь метод, который будет подсчитывать события по мере поступления данных. Вопрос. Какова сигнатура метода?

Слайд 9





Гистограмма (реализация)
static void Hist(double x, int [] h, double A, double B)
{
	int i = (int) ((x-A)/((B-A)/h.Length));
	if(i >= 0 && i < h.Length)
		h[i]++;
}
- Что за формула?
- Зачем if?
Описание слайда:
Гистограмма (реализация) static void Hist(double x, int [] h, double A, double B) { int i = (int) ((x-A)/((B-A)/h.Length)); if(i >= 0 && i < h.Length) h[i]++; } - Что за формула? - Зачем if?

Слайд 10





Гистограмма 
Вспомогательный метод
static void WriteHist(int [] h)
{
	Console.Write(h[0]);
	for(int i = 1; i < h.Length; i++)
		Console.Write(“, {0}”, h[i]);
	Console.WriteLine();
}
Что это?
Зачем первый Console.Write(h[0]);?
Описание слайда:
Гистограмма Вспомогательный метод static void WriteHist(int [] h) { Console.Write(h[0]); for(int i = 1; i < h.Length; i++) Console.Write(“, {0}”, h[i]); Console.WriteLine(); } Что это? Зачем первый Console.Write(h[0]);?

Слайд 11





Гистограмма 
Использование.
{
	Random r = new Random();
	int [] hist = new int [10];
	for(int i = 0; i < 1000; i++)
		Hist(10*r.NextDouble(), hist, 0, 10);
	WriteHist(hist);
}
Сколько чисел мы увидим на консоли?
Описание слайда:
Гистограмма Использование. { Random r = new Random(); int [] hist = new int [10]; for(int i = 0; i < 1000; i++) Hist(10*r.NextDouble(), hist, 0, 10); WriteHist(hist); } Сколько чисел мы увидим на консоли?

Слайд 12





Гистограмма. Применение.
Можно ли вычислить среднее значение входных данных по гистограмме?
Какие данные нужны кроме массива hist?
Какова сигнатура метода для вычисления среднего?
Можно ли выяснить, какое событие было самым частым?
Можно ли вычислить разницу между количеством самых частых событий и самых редких?
Какие для этого нужны данные?
Какие можно рассматривать величины (вместо количества самых частых событий, количества самых редких, разницы между количеством самых частых и самых редких) что бы они не зависели от общего количества событий?
Описание слайда:
Гистограмма. Применение. Можно ли вычислить среднее значение входных данных по гистограмме? Какие данные нужны кроме массива hist? Какова сигнатура метода для вычисления среднего? Можно ли выяснить, какое событие было самым частым? Можно ли вычислить разницу между количеством самых частых событий и самых редких? Какие для этого нужны данные? Какие можно рассматривать величины (вместо количества самых частых событий, количества самых редких, разницы между количеством самых частых и самых редких) что бы они не зависели от общего количества событий?

Слайд 13





Гистограмма. Применение.
static double MeanValue (double A, double B, int[]h)
{
	double sum = 0, d = (B-A)/h.Length;
	int N = 0;
	for(int i=0; i<h.Length; i++)
	{
		N += h[i];
		sum += h[i]*((i+0.5)*d+A);
	}
	if(N>0)
		return sum/N;
	else
		return 0;
}
Зачем 0.5 в sum += h[i]*((i+0.5)*d+A)?
Описание слайда:
Гистограмма. Применение. static double MeanValue (double A, double B, int[]h) { double sum = 0, d = (B-A)/h.Length; int N = 0; for(int i=0; i<h.Length; i++) { N += h[i]; sum += h[i]*((i+0.5)*d+A); } if(N>0) return sum/N; else return 0; } Зачем 0.5 в sum += h[i]*((i+0.5)*d+A)?

Слайд 14





Вопросы для повторения
Какими свойствами обладает переменная?
Где можно и где нельзя использовать каждую конкретную переменную, например double x? (Где она определена, видна?)
Зачем в программировании 2 числовых типа? Почему один из них называется “с плавающей точкой”?
Описание слайда:
Вопросы для повторения Какими свойствами обладает переменная? Где можно и где нельзя использовать каждую конкретную переменную, например double x? (Где она определена, видна?) Зачем в программировании 2 числовых типа? Почему один из них называется “с плавающей точкой”?

Слайд 15





Вопросы для повторения
Сформулируйте задачу фильтрации методом бегущего среднего. Всегда ли она имеет решение?
Сформулируйте задачу построения гистограммы. Всегда ли она имеет решение?
В чем заключается задача сортировки массива? Всегда ли она имеет решение?
В чем заключается задача поиска заданного элемента последовательности? Всегда ли она имеет решение?
Описание слайда:
Вопросы для повторения Сформулируйте задачу фильтрации методом бегущего среднего. Всегда ли она имеет решение? Сформулируйте задачу построения гистограммы. Всегда ли она имеет решение? В чем заключается задача сортировки массива? Всегда ли она имеет решение? В чем заключается задача поиска заданного элемента последовательности? Всегда ли она имеет решение?

Слайд 16





Гистограмма (недостатки)
Гистограмма в программе была представлена: 
массивом, 
двумя числами (границами диапазона)
отдельным методом для вычисления события и его учета в массиве. 
static void Hist(double x, int [] h, double A, double B)
Собственно недостатки:
Если гистограмму нужно передать в другой метод (MeanValue), то нужно передавать все три эти параметра.
Программист должен следить, за тем, какая пара значений связана с каким из массивов.
Программист может изменить значения переменных или содержание массива.
Описание слайда:
Гистограмма (недостатки) Гистограмма в программе была представлена: массивом, двумя числами (границами диапазона) отдельным методом для вычисления события и его учета в массиве. static void Hist(double x, int [] h, double A, double B) Собственно недостатки: Если гистограмму нужно передать в другой метод (MeanValue), то нужно передавать все три эти параметра. Программист должен следить, за тем, какая пара значений связана с каким из массивов. Программист может изменить значения переменных или содержание массива.

Слайд 17





Объектно-ориентированное программирование (ООП)
ООП – программирование, которое опирается на классы и объекты.
Класс – описание типа объектов, т.е. их свойств, множества значений и действий, который можно выполнять над объектами данного типа.
Объект (экземпляр класса) – конкретный представитель класса.
Класс – фактически тип данных, объект – переменная. 
Попробуем применить ООП для решения проблем гистограммы!
Описание слайда:
Объектно-ориентированное программирование (ООП) ООП – программирование, которое опирается на классы и объекты. Класс – описание типа объектов, т.е. их свойств, множества значений и действий, который можно выполнять над объектами данного типа. Объект (экземпляр класса) – конкретный представитель класса. Класс – фактически тип данных, объект – переменная. Попробуем применить ООП для решения проблем гистограммы!

Слайд 18





ООП. Реализация в C#
Класс можно располагать внутри пространства имен.
Его можно даже внутри класса, но пока этого делать не будем.
Если пользоваться мастером добавления в Visual Studio, то он добавит класс и в другой файл с тем же названием.
Контекстное меню на проекте->Добавить новый класс
Описание слайда:
ООП. Реализация в C# Класс можно располагать внутри пространства имен. Его можно даже внутри класса, но пока этого делать не будем. Если пользоваться мастером добавления в Visual Studio, то он добавит класс и в другой файл с тем же названием. Контекстное меню на проекте->Добавить новый класс

Слайд 19





ООП. Объявление класса в C#
public class Histogram
{	// Левая и правая граница
	public double LeftEdge;
	public double RightEdge;
	public int [] Data; 	// Массив
}
Для использования класса нужно создать объект и работать с ним. Например, в Main:

Histogram h = new Histogram ();
h.LeftEdge = 0; h.RightEdge = 10; h.Data = new int [10];
Теперь вместо 3-х параметров в методы Hist и MeanValue можно передавать ТОЛЬКО ОДИН.
Описание слайда:
ООП. Объявление класса в C# public class Histogram { // Левая и правая граница public double LeftEdge; public double RightEdge; public int [] Data; // Массив } Для использования класса нужно создать объект и работать с ним. Например, в Main: Histogram h = new Histogram (); h.LeftEdge = 0; h.RightEdge = 10; h.Data = new int [10]; Теперь вместо 3-х параметров в методы Hist и MeanValue можно передавать ТОЛЬКО ОДИН.

Слайд 20





ООП. Конструкторы в C#
Конструктор – специальный метод, который позволяет создавать объекты данного типа.
public class Histogram {	// Левая и правая граница
	public double LeftEdge;
	public double RightEdge;
	public int [] Data; 	// Массив
	public Histogram(double leftEdge, double rightEdge, int N)
	{
		LeftEdge = leftEdge;
		RightEdge = rightEdge;
		Data = new int[N];
	}
}
Теперь можно в Main:
Histogram h = new Histogram (0,  10,  10); // Без дополнительных присваиваний
Описание слайда:
ООП. Конструкторы в C# Конструктор – специальный метод, который позволяет создавать объекты данного типа. public class Histogram { // Левая и правая граница public double LeftEdge; public double RightEdge; public int [] Data; // Массив public Histogram(double leftEdge, double rightEdge, int N) { LeftEdge = leftEdge; RightEdge = rightEdge; Data = new int[N]; } } Теперь можно в Main: Histogram h = new Histogram (0, 10, 10); // Без дополнительных присваиваний

Слайд 21





ООП. Конструкторы в C#
Конструктор – специальный метод, который позволяет создавать объекты данного типа.
public class Histogram {	
	…
	public Histogram(double leftEdge, double rightEdge, int N)
	{
		…
	}
}
Конструктор имеет то же имя, что и класс .
При объявлении конструктора нельзя указать тип возвращаемого значения.
Описание слайда:
ООП. Конструкторы в C# Конструктор – специальный метод, который позволяет создавать объекты данного типа. public class Histogram { … public Histogram(double leftEdge, double rightEdge, int N) { … } } Конструктор имеет то же имя, что и класс . При объявлении конструктора нельзя указать тип возвращаемого значения.

Слайд 22





ООП. Добавляем методы в C#
public class Histogram {	
	…
	public Histogram(double leftEdge, double rightEdge, int N)
	{
		…
	}
	
	//Метод автоматически получает доступ к данным объекта!
	public void Hist(double x)
	{
		int i = (int) ((x-LeftEdge)/((RightEdge-LeftEdge)/Data.Length));
		if(i >= 0 && i < Data.Length)
			Data[i]++;
	}
}
Теперь можно в Main:
Histogram h = new Histogram (0,  10,  12); 
h.Hist(x);
Описание слайда:
ООП. Добавляем методы в C# public class Histogram { … public Histogram(double leftEdge, double rightEdge, int N) { … } //Метод автоматически получает доступ к данным объекта! public void Hist(double x) { int i = (int) ((x-LeftEdge)/((RightEdge-LeftEdge)/Data.Length)); if(i >= 0 && i < Data.Length) Data[i]++; } } Теперь можно в Main: Histogram h = new Histogram (0, 10, 12); h.Hist(x);

Слайд 23





ООП. Добавляем методы в C#
public class Histogram {	
	…
	public Histogram(double leftEdge, double rightEdge, int N){   …	}
	public void Hist(double x){ 	… }
	public double MeanValue () {
		double sum = 0, d = (RightEdge -LeftEdge)/Data.Length;
		int N = 0;
		for(int I = 0; I < Data.Length; i++)
		{
			N += Data [i];
			sum += Data [i]*((i+0.5)*d + LeftEdge);
		}
		if(N>0) 	return sum/N;
		else	return 0;
	}
}
Теперь можно в Main:
Double a = h.MeanValue();
Описание слайда:
ООП. Добавляем методы в C# public class Histogram { … public Histogram(double leftEdge, double rightEdge, int N){ … } public void Hist(double x){ … } public double MeanValue () { double sum = 0, d = (RightEdge -LeftEdge)/Data.Length; int N = 0; for(int I = 0; I < Data.Length; i++) { N += Data [i]; sum += Data [i]*((i+0.5)*d + LeftEdge); } if(N>0) return sum/N; else return 0; } } Теперь можно в Main: Double a = h.MeanValue();

Слайд 24





ООП Общие замечания
Класс позволил Histogram нам объединить в одном понятии объединить данные гистограммы (int [] Data, double LeftEdge, RightEdge ) и методы (Hist, MeanValue).
При создании каждого объекта класса Histogram все данные создаются автоматически.
При вызове метода Hist количество параметров уменьшилось, программист не сможет внести путаницы, ошибочно указывая с каким массивом и какими границами.
При вызове метода MeanValue вообще не нужны параметры!
При построении большого (3-20) количества гистограмм это существенные преимущества!
Описание слайда:
ООП Общие замечания Класс позволил Histogram нам объединить в одном понятии объединить данные гистограммы (int [] Data, double LeftEdge, RightEdge ) и методы (Hist, MeanValue). При создании каждого объекта класса Histogram все данные создаются автоматически. При вызове метода Hist количество параметров уменьшилось, программист не сможет внести путаницы, ошибочно указывая с каким массивом и какими границами. При вызове метода MeanValue вообще не нужны параметры! При построении большого (3-20) количества гистограмм это существенные преимущества!

Слайд 25





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

Слайд 26





Статические методы и классы
Объект объединяет в себе данные и методы. 
Бывают ситуации, когда данных связанных с конкретным объектом нет!
Например, sin, sqrt, … Все необходимые данные каждый раз передаются параметром!
В этом случае применяются статические классы и методы.
Описание слайда:
Статические методы и классы Объект объединяет в себе данные и методы. Бывают ситуации, когда данных связанных с конкретным объектом нет! Например, sin, sqrt, … Все необходимые данные каждый раз передаются параметром! В этом случае применяются статические классы и методы.

Слайд 27





Класс фильтра “бегущее среднее”
Массив данных, ширина фильтра.
public static class Filter
{
	static double GetVal(double [] a, int j)
	 {
	        int N = a.Length-1;
	        return a[Math.Abs(Math.Abs(j + N) % (2*N) - N)];
	}
	public static double [] RunningAvrgFilter(double[] d, int N)
	{
		Double [] r = new Double[a.Length];
		n = 2 * (n / 2) + 1;             // Обеспечили нечетность
		Double currentSum = 0;
		for(int i = -n/2 ; i <= n/2; i++)
			currentSum += GetVal(a,i);
		for(int j = 0; j < r.Length; j++) {
			r[j] = currentSum/n;
			currentSum = currentSum 
				- GetVal(a, j - n / 2) + GetVal(a, j + 1 + n / 2);
		}
	}
}
Описание слайда:
Класс фильтра “бегущее среднее” Массив данных, ширина фильтра. public static class Filter { static double GetVal(double [] a, int j) { int N = a.Length-1; return a[Math.Abs(Math.Abs(j + N) % (2*N) - N)]; } public static double [] RunningAvrgFilter(double[] d, int N) { Double [] r = new Double[a.Length]; n = 2 * (n / 2) + 1; // Обеспечили нечетность Double currentSum = 0; for(int i = -n/2 ; i <= n/2; i++) currentSum += GetVal(a,i); for(int j = 0; j < r.Length; j++) { r[j] = currentSum/n; currentSum = currentSum - GetVal(a, j - n / 2) + GetVal(a, j + 1 + n / 2); } } }

Слайд 28





Класс фильтра “бегущее среднее”
Пусть задан массив данных:
double [] d = ….
Теперь для выполнения фильтрации достаточно написать следующий код:
double [] fd = Filter. RunningAvrgFilter(d, N);
Где N – некоторая заданная ширина фильтра.
Описание слайда:
Класс фильтра “бегущее среднее” Пусть задан массив данных: double [] d = …. Теперь для выполнения фильтрации достаточно написать следующий код: double [] fd = Filter. RunningAvrgFilter(d, N); Где N – некоторая заданная ширина фильтра.



Похожие презентации
Mypresentation.ru
Загрузить презентацию