vapour-power-cycle h.pptxMahamad JawharThe document discusses vapor power cycles, specifically the Rankine cycle which is commonly used in steam power plants. It provides details on the key components and processes in the Rankine cycle, including:
1) Water is pumped and heated to become high-pressure steam in a boiler.
2) The steam expands in a turbine to produce work, which drives an electric generator.
3) The steam is then condensed into water in a condenser, rejecting heat.
4) The water is pumped back to repeat the cycle, with the ideal cycle consisting of constant temperature heat addition and constant pressure heat rejection.
Основы программирования на rubyEvgeny SmirnovРассказывается об основах программирования на ruby: переменные, типы переменных, операции и пр. В конце приводятся блок-схема решения линейного уравнения.
NumBuster! Почему связи между данными важнее самих данных.Evgeny SmirnovЧасто считается, что основную ценность в бизнесе представляют данные. Однако же весьма важными, а, возможно, и наиболее важными с нашей точки зрения являются связи между получаемыми данными, которые позволяют персонализировать работу пользователя и узнать его лояльность по отношению к различным вещам: работе, разным компаниям, сервисам и пр.
Доклад NumBuster! на конференции BigData Russia 2014.
Ruby: основы ООПEvgeny SmirnovОсновы объектно-ориентированного программирования на ruby. Разбор концепции наследования.
Оригинал: http://school.smirik.ru/show/43
Внедряем MOOC'и на уроке информатикиEvgeny Smirnov1. Какие бывают MOOC'и?
2. Какие платформы существуют?
3. Какие курсы полезны для учителя информатики?
4. Метрики по результатам эксперимента в 2014-2015 годах.
Инновации которые не мешаютEvgeny SmirnovПрезенетация с выступления на Арене #ИТНШ 2017: зачем нужны инновации, какого типа бывают инновации, как их искать и как их внедрять?
Порядок и хаос в Солнечной системеEvgeny SmirnovПрезентация на фестивале "Пулковский меридиан" (Смирнов Е.А.) об устройстве, порядке и хаосе в Солнечной системе. Рассматриваются представления человечества, начиная с Древних времён и до наших дней. Особое внимание уделено хаотической динамике астероидов.
Мобильные приложения в образованииEvgeny SmirnovПрезентация для семинара о том, как использовать мобильные приложения Plickers & Lumosity в образовании.
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Evgeny SmirnovМастер-класса "Образовательные и игровые платформы в помощь учителю и методисту", конференция "Информационные технологии для Новой школы", РЦОКОиИТ, 2014.
Образовательные и игровые платформы в помощь учителю и методистуEvgeny SmirnovСуществующий формат образования, подразумевающий достаточно длительные уроки, большое количество материала для запоминания и стандартную систему контрольных работ, не является оптимальным в XXI веке. Интернет и другие современные технологии, а также наличие игровых и соревновательных элементов, позволяют сделать обучение для детей более интересным, повысить его эффективность и улучшить понимание предмета. Электронные видео-материалы дают возможность повторить и закрепить пройденный в школе материал в привычной для подростка форме. Всё это позволит сделать образование более подходящим по стилю и духу для современных детей.
NumBuster! Почему связи между данными важнее самих данных.Evgeny SmirnovЧасто считается, что основную ценность в бизнесе представляют данные. Однако же весьма важными, а, возможно, и наиболее важными с нашей точки зрения являются связи между получаемыми данными, которые позволяют персонализировать работу пользователя и узнать его лояльность по отношению к различным вещам: работе, разным компаниям, сервисам и пр.
Доклад NumBuster! на конференции BigData Russia 2014.
Ruby: основы ООПEvgeny SmirnovОсновы объектно-ориентированного программирования на ruby. Разбор концепции наследования.
Оригинал: http://school.smirik.ru/show/43
Внедряем MOOC'и на уроке информатикиEvgeny Smirnov1. Какие бывают MOOC'и?
2. Какие платформы существуют?
3. Какие курсы полезны для учителя информатики?
4. Метрики по результатам эксперимента в 2014-2015 годах.
Инновации которые не мешаютEvgeny SmirnovПрезенетация с выступления на Арене #ИТНШ 2017: зачем нужны инновации, какого типа бывают инновации, как их искать и как их внедрять?
Порядок и хаос в Солнечной системеEvgeny SmirnovПрезентация на фестивале "Пулковский меридиан" (Смирнов Е.А.) об устройстве, порядке и хаосе в Солнечной системе. Рассматриваются представления человечества, начиная с Древних времён и до наших дней. Особое внимание уделено хаотической динамике астероидов.
Мобильные приложения в образованииEvgeny SmirnovПрезентация для семинара о том, как использовать мобильные приложения Plickers & Lumosity в образовании.
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Evgeny SmirnovМастер-класса "Образовательные и игровые платформы в помощь учителю и методисту", конференция "Информационные технологии для Новой школы", РЦОКОиИТ, 2014.
Образовательные и игровые платформы в помощь учителю и методистуEvgeny SmirnovСуществующий формат образования, подразумевающий достаточно длительные уроки, большое количество материала для запоминания и стандартную систему контрольных работ, не является оптимальным в XXI веке. Интернет и другие современные технологии, а также наличие игровых и соревновательных элементов, позволяют сделать обучение для детей более интересным, повысить его эффективность и улучшить понимание предмета. Электронные видео-материалы дают возможность повторить и закрепить пройденный в школе материал в привычной для подростка форме. Всё это позволит сделать образование более подходящим по стилю и духу для современных детей.
1. Задание 1 Задание 2 References
Задачи по ООП
Информатика
10-11 классы
6 марта 2012 г.
Информатика 10-11 классы Задачи по ООП
2. Задание 1 Задание 2 References
Задание
Создать следующие классы: человек, ученик,
ученик–раздолбай, учитель, директор.
Каждый человек имеет: фамилию, имя, отчество, год
рождения. Наследование определено в соответствии со
здравым смыслом (ученик–раздолбай — наследник
ученика). Все сущности имеют методы:
1 Посчитать возраст (getAges).
2 обратиться по имени (getName) по правилу: учитель и
директор — имя + отчество, ученик — имя,
ученик-раздолбай — “Бяка” + имя.
3 булевский метод главный (head?): для директора
возвращается истина, для остальных — ложь.
ФИО и год рождения должно задаваться в конструкторе.
После реализации создать экземпляры каждого класса и
вызвать для них методы getName, getAges, head?.
Информатика 10-11 классы Задачи по ООП
3. Задание 1 Задание 2 References
Шаг 1
Прежде всего, создадим класс Person.
В классе есть четыре свойства: first_name, last_name,
middle_name, birthday
Listing 1: Основа Person
c l a s s Person
a t t r _ a c c e s s o r : f i r s t _ n a m e , : last_name ,
: middle_name , : b i r t h d a y
end
Информатика 10-11 классы Задачи по ООП
4. Задание 1 Задание 2 References
Шаг 2
В условии задачи требуется, чтобы основные свойства
класса задавались сразу.
То есть, мы хотим, чтобы работал следующий код:
Listing 2: Пример объекта
p = P e r s o n . new ( "Иванов" , "Иван" , "Иванович" , 1 9 7 5 )
Информатика 10-11 классы Задачи по ООП
5. Задание 1 Задание 2 References
Шаг 3
Для того, чтобы при создании можно было сразу задать
какие-либо параметры, нам нужно определить конструктор.
Конструктор на вход (в соответствии с кодом предыдущего
слайда) будет принимать 4 аргумента.
Listing 3: Конструктор
c l a s s Person
a t t r _ a c c e s s o r : f i r s t _ n a m e , : last_name ,
: middle_name , : b i r t h d a y
d e f i n i t i a l i z e ( fname , lname , mname , b i r t h d a y )
@ f i r s t _ n a m e = fname
@last_name = lname
@middle_name = mname
@birthday = birthday
end
end
Информатика 10-11 классы Задачи по ООП
6. Задание 1 Задание 2 References
Шаг 4
Возраст у экземпляров класса Person и у его наследников
будет считаться всегда одинаково.
Поэтому определим соответствующий метод в самом
классе Person.
Через механизм наследования метод автоматически будет
доступен всем наследникам.
Listing 4: Метод age
c l a s s Person
...
d e f age
2012 − @ b i r t h d a y
end
end
Информатика 10-11 классы Задачи по ООП
7. Задание 1 Задание 2 References
Шаг 5
В большинстве случаев метод head? будет возвращать
ложь (за исключением объекта класса Директор).
Поэтому создадим базовый метод в классе Person, а в
классе Headmaster используем полиморфизм
(переопределение метода) для изменения результата.
Listing 5: Метод head
c l a s s Person
...
d e f head ?
false
end
end
Информатика 10-11 классы Задачи по ООП
8. Задание 1 Задание 2 References
Шаг 6
Стандартное обращение к человеку — по имени–отчеству.
Раз стандартное — значит, определяем в классе–родителе.
При необходимости используем полиморфизм.
Listing 6: Метод name
c l a s s Person
...
d e f name
@ f i r s t _ n a m e + "␣" + @middle_name
end
end
Информатика 10-11 классы Задачи по ООП
9. Задание 1 Задание 2 References
Шаг 7
Проверим класс Person, вызвав последовательно все
методы.
Listing 7: Person
p = P e r s o n . new ( "Иванов" , "Иван" , "Иванович" , 1 9 7 5 )
p u t s p . name
p u t s p . age
p u t s p . head ?
Информатика 10-11 классы Задачи по ООП
10. Задание 1 Задание 2 References
Шаг 8
Класс Teacher имеет абсолютно стандартную реализацию.
Все методы в нём совпадают с методами Person.
Поэтому достаточно просто его определить.
Listing 8: Teacher
c l a s s Teacher < Person
end
Информатика 10-11 классы Задачи по ООП
11. Задание 1 Задание 2 References
Шаг 9
У ученика другое обращение.
Используем полиморфизм для переопределения метода
name.
Listing 9: Student
c l a s s Student < Person
d e f name
@first_name
end
end
Информатика 10-11 классы Задачи по ООП
12. Задание 1 Задание 2 References
Шаг 10
Класс BadStudent также имеет отличное ото всех
обращение с приставкой «Бяка».
Listing 10: BadStudent
c l a s s Ba dS tud ent < S t u d e n t
d e f name
" Byaka ␣" + @ f i r s t _ n a m e
end
end
Информатика 10-11 классы Задачи по ООП
13. Задание 1 Задание 2 References
Шаг 11
Класс Headmaster имеет стандартное обращение по
имени–отчеству.
Значит, метод name переопределять не надо.
А вот метод head? должен возвращать истину.
Listing 11: Headmaster
c l a s s Headmaster < P e r s o n
d e f head ?
true
end
end
Информатика 10-11 классы Задачи по ООП
14. Задание 1 Задание 2 References
Сложное задание
Реализовать класс Двумерный Вектор.
Класс имеет два свойства: x-компонента, y-компонента.
Методы класса:
1 посчитать длину (модуль)
2 прибавить к текущему вектору другой
3 отнять от текущего вектора другой
4 изменить знак вектора (-вектор)
5 умножить вектор на скаляр (вещественное число)
6 скалярно умножить на другой вектор
Информатика 10-11 классы Задачи по ООП
15. Задание 1 Задание 2 References
Шаг 1
Прежде всего, определимся, что есть у вектора.
Двумерный вектор — это два числа (x,y) (аналог
радиус–вектора в геометрии).
Других свойств у вектора нет. Но как хранить эти?
Два варианта:
1 В свойствах :x, :y.
2 В едином свойстве :coords
Второй вариант универсальнее, поэтому будем
использовать его.
NB. Кстати, мы сделаем программу для векторов любой
размерности.
Информатика 10-11 классы Задачи по ООП
16. Задание 1 Задание 2 References
Шаг 2
В конструкторе по умолчанию зададим значение
координат в виде пустого массива.
Listing 12: Vector
c l a s s Vector
attr_accessor : coords
def i n i t i a l i z e ( coords = [ ] )
@coords = coords
end
end
v = V e c t o r . new ( [ 1 , 2 ] )
Информатика 10-11 классы Задачи по ООП
17. Задание 1 Задание 2 References
Шаг 3
Определим метод подсчёта модуля.
Модуль вычисляется по теореме Пифагора:
coords[i]2
i
Listing 13: Вычисление модуля
c l a s s Vector
..
d e f module
( @ c o o r d s . i n j e c t ( 0 ) { | r e s , elem | r e s+elem ∗ ∗ 2 } ) ∗ ∗ 0 . 5
end
end
Информатика 10-11 классы Задачи по ООП
18. Задание 1 Задание 2 References
Шаг 4
Заметим, что модуль будет вычисляться не только для
двумерного вектора, но и для вектора любой размерности.
Теперь определим операцию сложения.
При сложении компоненты векторов также складываются.
Важно: операция сложения должна возвращать новый
вектор — сумму текущего и того, с которым складываем.
Сложение делаем покоординатно.
Информатика 10-11 классы Задачи по ООП
19. Задание 1 Задание 2 References
Шаг 4, часть 2
Listing 14: Сложение
d e f +(v )
sum = V e c t o r . new
s i z e = @ c o o r d s . s i z e −1
for i in 0.. size
sum . c o o r d s [ i ] = @ c o o r d s [ i ] + v . c o o r d s [ i ]
end
sum
end
Информатика 10-11 классы Задачи по ООП
20. Задание 1 Задание 2 References
Шаг 4, часть 2, альтернатива
Для упрощения записи используем метод each_index,
который проходит по каждому индексу массива.
Listing 15: Упрощение
d e f +(v )
sum = V e c t o r . new
@ c o o r d s . e a c h _ i n d e x { | i | sum . c o o r d s [ i ] =
@ c o o r d s [ i ]+ v . c o o r d s [ i ] }
sum
end
Информатика 10-11 классы Задачи по ООП
21. Задание 1 Задание 2 References
Шаг 5
Операция умножения немного сложнее.
Если мы умножаем на число, то надо все компоненты
вектора умножить на данное число.
Если же мы умножаем вектор на вектор, то надо
возвращать скалярное произведение.
Как отличить, что нам передаётся в качестве аргумента?
Используем метод class, который возвращает строку с
названием класса.
Информатика 10-11 классы Задачи по ООП
22. Задание 1 Задание 2 References
Шаг 5, часть 2
Listing 16: Умножение
def ∗( v )
i f ( v . c l a s s == V e c t o r )
product = 0
@ c o o r d s . e a c h _ i n d e x { | i | p r o d u c t+=
@coords [ i ] ∗ v . coords [ i ] }
else
p r o d u c t = V e c t o r . new
@coords . each_index { | i | product . coords [ i ] =
@coords [ i ] ∗ v}
end
product
end
Информатика 10-11 классы Задачи по ООП
23. Задание 1 Задание 2 References
Шаг 6
Аналогично делаем остальные методы.
Например, метод «отрицание».
Listing 17: Отрицание
d e f −@
s e l f . c o o r d s = s e l f . c o o r d s . map { | i | − i }
end
Информатика 10-11 классы Задачи по ООП
24. Задание 1 Задание 2 References
Шаг 7
Listing 18: Упрощение
d e f −(v )
sum = V e c t o r . new
@ c o o r d s . e a c h _ i n d e x { | i | sum . c o o r d s [ i ] =
@ c o o r d s [ i ]− v . c o o r d s [ i ] }
sum
end
Информатика 10-11 классы Задачи по ООП
25. Задание 1 Задание 2 References
Мысль
Класс Vector очень и очень похож на класс Array
Информатика 10-11 классы Задачи по ООП
26. Задание 1 Задание 2 References
Расшифровка мысли
Класс Vector, как мы определили на шаге 1, имеет только
одно свойство — координаты.
Координаты представляют собой массив.
Раз всё в ruby — объекты, значит, и массивы тоже.
А, значит, логично было бы вместо определения класса
Vector, отнаследовать его от массива.
Listing 19: Вектор vs Массив
c l a s s Vector < Array
end
Информатика 10-11 классы Задачи по ООП
27. Задание 1 Задание 2 References
Работа с массивом
Теперь мы можем обращаться к i-ой координате внутри
класса так: self[i].
Пример метода:
Listing 20: Вектор как массив
c l a s s Vector < Array
d e f +(a )
sum = V e c t o r . new
s e l f . e a c h _ i n d e x { | k | sum [ k ] = s e l f [ k ]+ a [ k ] }
sum
end
end
Информатика 10-11 классы Задачи по ООП
28. Задание 1 Задание 2 References
Создание векторомассива
Listing 21: Создание
v1 = V e c t o r . new [ 1 , 2 , 3 ]
v2 = V e c t o r . new [ 3 , 4 , 5 ]
v3 = v1+v3
puts v3 . i n s p e c t
Информатика 10-11 классы Задачи по ООП
29. Задание 1 Задание 2 References
References
При подготовке данного материала использовались сайты:
http://ru.wikibooks.org/wiki/Ruby, http://rubydev.ru,
http://en.wikipedia.org, http://ruby-lang.org.
Все презентации доступны на http://school.smirik.ru!
Вопросы, предложения, д/з: smirik@gmail.com
Информатика 10-11 классы Задачи по ООП