3 семинар
Atom
13.02.2013


Запись урока:

Часть 1

[vk]http://vk.com/video_ext.php?oid=-66674957&id=167886014&hash=485c6ef5d7844e6f&hd=3[/vk]

Часть 2

[vk]http://vk.com/video_ext.php?oid=-66674957&id=167886016&hash=d5a74cd8c3f76bb9&hd=3[/vk]

Темы занятия:

1. Сущность и основные принципы ООП (см. стр. 42 Шилдта или Википедия об ООП):
2. Тестирование программы средствами Visual Studio 2010.
3. Использование очередей – класс Queue. (см. Справочник C#)
4. Классы: уровни доступности (см. Справочник C#), статические и нестатические методы (см. Справочник C#), интерфейсы (стр. 375 Шилдта)
5. Делегирование (см. стр. 473 Шилдта) и лямбда-выражения (см. стр. 488 Шилдта).


Домашнее задание:
1. Прочитать о следующих методах LINQ:
  • Take(), TakeWhile(), Skip(), SkipWhile();
  • First(), FirstOrDefault(), Min(), Max();
  • OrderBy(), OrderByDescending(), ElementAt();
  • ToList(), ToArray(), ToSet();
  • При желании – GroupBy().
2. Написать тесты к классу SmmIndicator по аналогии с SmaIndicator.
Тесты оформить в виде MSTest, если стоит полная версия Visual Studio или в виде самодельной функции)

3. Разработать расширяющий метод (Extension method) для IEnumerable<int>, выполняющий подсчёт выражения:
КубическийКорень(Сумма(Аi * i))
Пример использования метода в коде:
var mas = new [] {5,6,7,8,9};
double res = mas.MyMagicMethod();
// res == кубкорень(5*0 + 6*1 + 7*2 + 8*3 + 9*4);


Полезные материалы:
1. Методы расширения.

Решение домашней задачи:


Вложения:
Исходные коды

Теги:


Спасибо:


UsilaDobry

Фотография
Дата: 05.04.2013
Ответить


В ДЗ после 3-го семинара надо было изучить ряд методов класса IEnumerable, среди которых метод ToSet(). Его в библиотеке MSDN нет.
Спасибо:

IvanB

Фотография
Дата: 06.04.2013
Ответить


UsilaDobry Перейти
В ДЗ после 3-го семинара надо было изучить ряд методов класса IEnumerable, среди которых метод ToSet(). Его в библиотеке MSDN нет.


Несколько замечаний:
Если быть точным, то IEnumerable не просто класс, а интерфейс (или чисто абстрактный класс).
Нужно изучить не только интерфейс IEnumerable, а методы, которые перечислены в задании, а они реализованы не в IEnumerable (т.к. это интерфейс, в нем не может быть реализаций, а в данном случае и объявлений методов которые приведены в задании).

Ну в общем Вы правы, что метода ToSet() нет в стандартном .NET, в частности в версии 4.5. Это было специально добавлено в задание, чтобы ученики могли ориентироваться в .NET, получили некоторый опыт в этом.

Если все-таки необходимо преобразовать в коллекцию ISet<>, то можно воспользоваться готовыми расширениями LING, например MoreLINQ, или самому реализовать это расширение для IEnumerable<>.
Спасибо:

UsilaDobry

Фотография
Дата: 06.04.2013
Ответить


С чем может быть связано расхождение в значениях линий Болленжера в моем коде и в терминале Alfa-Direct?
Мой код расчета:

MeddleBB = sum / _buffer.Count;
decimal variance = 0;
foreach (int x in _buffer)
variance += (decimal)Math.Pow((double)(x - MeddleBB), 2);
StdDev = (decimal) Math.Sqrt((double)(variance / (Length - 1)));
TopBB = MeddleBB + (D * StdDev);
LowerBB = MeddleBB - (D * StdDev);

В результате у меня получается на пятиминутках 01.04.2013 в 11:35 верхняя - 140814, средняя 140527, нижняя 140239.
В терминале AD: верхняя - 140943; средняя - 140578; нижняя - 140212.
Спасибо:

IvanB

Фотография
Дата: 06.04.2013
Ответить


UsilaDobry Перейти
С чем может быть связано расхождение в значениях линий Болленжера в моем коде и в терминале Alfa-Direct?

Два варианта, либо в Alfa-Direct этот индикатор реализован с каким-то нюансом, либо Вы ошиблись в алгоритме.

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy