Intelligence Domain Group, Rakuten Institute of Technology is working on developing various kinds of solutions utilizing Rakuten Data in order to assist Rakuten services.
In this presentation, we cover:
- Item category classification
- Item Attribute extraction using machine learning
- Item Recommender System with distributed representation.
- Item classification with LDA
- Search Assist Systems
- Item Review Analysis
- Time Series Data Analysis
Intelligence Domain Group, Rakuten Institute of Technology is working on developing various kinds of solutions utilizing Rakuten Data in order to assist Rakuten services.
In this presentation, we cover:
- Item category classification
- Item Attribute extraction using machine learning
- Item Recommender System with distributed representation.
- Item classification with LDA
- Search Assist Systems
- Item Review Analysis
- Time Series Data Analysis
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишковcorehard_by
Вот уже более двух лет мы создаём онлайн-специализацию по С++ на платформе Coursera. Её цель — обучить языку C++ с нуля до уровня, достаточного для решения практических задач, с которыми приходилось сталкиваться авторам в своей практике. В своём докладе я расскажу, как мы создаём наши онлайн-курсы, и уделю особое внимание техническим проблемам, которые нам пришлось решить в процессе создания автоматической системы проверки программ студентов.
Статический и динамический полиморфизм в C++, Дмитрий ЛевановYandex
На примере некоторых архитектурных решений Крипты Дмитрий расскажет о способах реализации полиморфного поведения в программах на C++, о преимуществах и недостатках этих способов, а также о новых возможностях C++11.
Опыт разработки статического анализатора кодаAndrey Karpov
Один из основателей проекта PVS-Studio расскажет об опыте разработки статического анализатора кода C++. У инструментов статического анализа кода существует "проблема айсберга". От пользователей скрыты сложные механизмы анализа кода, и иногда им кажется, что статические анализаторы – это просто какие-то утилиты, ищущие опечатки с помощью регулярных выражений. Автор доклада постарается в общих чертах описать, как всё обстоит на самом деле. Он покажет на примерах, почему нормальный анализ с помощью регулярных выражений нереализуем, что такое Data Flow анализ, а также расскажет о других технологиях, применяемых при анализе кода. Вкратце будет затронут вопрос использования нейронных сетей, обсуждение которых сейчас является очень модной темой, и рассказано, почему с точки зрения анализа кода отношение к этому направлению является очень скептическим.
3. Языки программирования
• Машинно-ориентированные (низкого уровня) каждая команда соответствует одной команде
процессора (Ассемблер)
• Языки высокого уровня – приближены к
естественному (английскому) языку, легче
воспринимаются человеком, не зависят от
конкретного компьютера
• для обучения: Бейсик, Паскаль, Python
• профессиональные: С++, Python, Паскаль
• для задач робототехники и искусственного
интеллекта: Пролог, ЛИСП, С++, Python
• для Интернета: HTML, CSS, JavaScript, Java,
Python, PHP, ASP
3
4. Язык Python
1991 – разработан Гвидо ван Россумом
• объектно-ориентированный язык
• успешно применяться в Google
4
5. Программа
Программа – это
• алгоритм, записанный на каком-либо языке
программирования
• набор команд для компьютера
Команда – это описание действий, которые
должен выполнить компьютер.
• откуда взять исходные данные?
• что нужно с ними сделать?
Переменная – изменяющаяся величина,
имеющая имя (ячейка памяти).
Функция – вспомогательный алгоритм для
выполнения вычислений (вычисление
квадратного корня, sin).
5
7. Все программы строятся по Алгоритму
Алгоритм – это четко определенный план
действий для исполнителя.
Свойства алгоритма
• дискретность: состоит из отдельных шагов
(команд)
• понятность: должен включать только команды,
известные исполнителю (входящие в СКИ)
• определенность: при одинаковых исходных
данных всегда выдает один и тот же результат
• конечность: заканчивается за конечное число
шагов
• массовость: может применяться многократно при
различных исходных данных
• корректность: дает верное решение при любых
допустимых исходных данных
7
9. Переменные
Язык Python чувствителен к регистру. Переменная
Z и z – разные переменные. Python, в отличие от
многих языков, не требует описания переменных.
Типы переменных:
• int
{ целая }
{ вещественная }
• float
{ список, аналог массивов}
• list
{ символьная строка }
• str
• bool
{ логическая }
Объявление переменных (выделение памяти):
int(“88”) результат 88
str(88) результат “88”
float(88) результат 88.00
9
10. Имена программы, констант, переменных
Имена могут включать
• латинские буквы (A-Z)
заглавные и строчные буквы не различаются
• цифры
имя не может начинаться с цифры
• знак подчеркивания _
Имена НЕ могут включать
• русские буквы
• пробелы
• скобки, знаки +, =, !, ? и др.
Какие имена правильные??
AXby
R&B
4Wheel
Вася
“PesBarbos”
TU154
[QuQu]
_ABBA
A+B
10
11. 11
Как изменить значение переменной?
Оператор – это команда языка программирования
высокого уровня.
Оператор присваивания служит для изменения
значения переменной.
Пример:
a=5
b=a+2
a=b*4
print(a)
a
5
?
5
b
?
7
5+2
a
28
5
7*4
12. 12
Оператор присваивания
<имя переменной> = <выражение>;
Арифметическое выражение может включать
• имена переменных
• знаки арифметических операций:
+ *
/
//
%
**
умножение
деление
• вызовы функций
• круглые скобки ( )
деление
нацело
остаток от
деления
Возведение
в степень
13. Какие операторы неправильные?
имя переменной должно
быть слева от знака =
a :=
10 =
y =
b =
x =
a =
5
x
7,8
2.5
2*(a + y)
b + x
целая и дробная часть
отделяются точкой
13
14. Порядок выполнения операций
• вычисление выражений в скобках
• умножение, деление, //, % слева направо
• сложение и вычитание слева направо
2 3 5 4 1
7 8 6 9
Z = (5*a*c+3*(c-d))/a*(b-c)/ b
a 2 + 5c 2 − d ( a + b)
x=
(c + d )(d − 2a )
5ac + 3(c − d )
z=
(b − c)
ab
2 6 3 4 7 5 1
12 8 11 10 9
X =(a*a+5*c*c-d*(a+b))/((c+d)*(d-2*a))
14
15. 15
Оператор ввода
a=input( )
{ ввод значения переменной a}
a=input(“Введите число”)
c = a + 2
print ( ‘c=“, c )
Протокол:
компьютер
Введите число
25
пользователь
c=27
16. Оператор вывода
print ( a ) { вывод значения переменной a}
print (' Hello!‘) { вывод текста}
print ( ‘Otvet: ', c ) { вывод текста и
значения переменной c}
print ( a+b ) { вывод суммы чисел }
16
17. Сложение двух чисел
Задача. Ввести два целых числа и вывести на
экран их сумму.
Простейшее решение:
a=input()
b=input()
c = a + b
print ( c )
17
18. Форматирование вывода
import math
x=math.pi
print ('Pi=',"%.50f" % (x))
18
вызов
библиотеки
в дробной
части
Результат выполнения программы:
Pi=3.141592653589793115997963468544185
16159057617187500
19. Задания
«4»: Ввести три числа, найти их сумму и
произведение.
Пример:
Введите три числа:
4 5 7
4+5+7=16
4*5*7=140
«5»: Ввести три числа, найти их сумму,
произведение и среднее арифметическое.
Пример:
Введите три числа:
4 5 7
4+5+7=16
4*5*7=140
(4+5+7)/3=5.33
19
21. Разветвляющиеся алгоритмы
Задача. Ввести два целых числа и вывести на экран
наибольшее из них.
Идея решения: надо вывести на экран первое число,
если оно больше второго, или второе, если оно больше
первого.
Особенность: действия исполнителя зависят от
некоторых условий (если … иначе …).
Алгоритмы, в которых последовательность шагов
Алгоритмы, в которых последовательность шагов
зависит от выполнения некоторых условий, называются
зависит от выполнения некоторых условий, называются
разветвляющимися.
разветвляющимися.
21
24. Условный оператор
if <условие> :
{что делать, если условие верно}
else :
{что делать, если условие неверно}
Особенности:
• вторая часть (else …) может отсутствовать
(неполная форма)
24
26. Вариант 2. Программа
print(‘input 2 number‘)
a=input()
b=input()
неполная
форма
max = a
условного
if b > a :
оператора
max = b
print (‘Max number', max)
26
27. Задания
«4»: Ввести три числа и найти наибольшее из них.
Пример:
Введите три числа:
4 15 9
Наибольшее число 15
«5»: Ввести пять чисел и найти наибольшее из них.
Пример:
Введите пять чисел:
4
15
9
56
4
Наибольшее число 56
27
29. Сложные условия
Задача. Фирма набирает сотрудников от 25 до 40 лет
включительно. Ввести возраст человека и
определить, подходит ли он фирме (вывести ответ
«подходит» или «не подходит»).
Особенность: надо проверить, выполняются ли два
условия одновременно.
?
Можно ли решить известными методами?
29
31. Вариант 1. Программа
x=input('Введите возраст')
x=int(x)
if x >= 25 :
if x <= 40 :
print ('Подходит')
else :
print ('Не подходит')
else :
print ('Не подходит')
31
34. 34
Сложные условия
Сложное условие – это условие, состоящее из
нескольких простых условий (отношений), связанных
с помощью логических операций:
• not – НЕ (отрицание, инверсия)
• and – И (логическое умножение, конъюнкция,
одновременное выполнение условий)
• or – ИЛИ (логическое сложение, дизъюнкция,
выполнение хотя бы одного из условий)
• xor – исключающее ИЛИ (выполнение только
одного из двух условий, но не обоих)
Простые условия (отношения)
<
<=
>
>=
==
равно
не равно
!=
35. Сложные условия
Порядок выполнения (приоритет = старшинство)
• выражения в скобках
• not
• and
• or, xor
• <, <=, >, >=, ==, !=
Особенность – каждое из простых условий
обязательно заключать в скобки.
Пример
4
1
6
2
5
3
if not (a > b) or (c <> d) and (b <> a) :
35
36. 36
Задания
«4»: Ввести номер месяца и вывести название
времени года.
Пример:
Введите номер месяца:
4
весна
«5»: Ввести возраст человека (от 1 до 150 лет) и
вывести его вместе с последующим словом
«год», «года» или «лет».
Пример:
Введите возраст:
24
Вам 24 года
Введите возраст:
57
Вам 57 лет
38. Циклы
Цикл – это многократное выполнение одинаковой
последовательности действий.
• цикл с известным числом шагов
• цикл с неизвестным числом шагов (цикл с
условием)
Задача. Вывести на экран квадраты и кубы целых
чисел от 1 до 8 (от a до b).
Особенность: одинаковые действия выполняются 8
раз.
?
Можно ли решить известными методами?
38
40. Алгоритм (с блоком «цикл»)
начало
i = 1,8
i2 = i * i
i3 = i2 * i
i, i2, i3
блок «цикл»
конец
тело цикла
40
41. 41
Программа
for i in range(1, 9):
i2 = i*i
i3 = i2*i
print(i, i2, i3)
конечное значение
переменная
цикла
42. 42
Цикл с переменной
Увеличение переменной на 1:
for <переменная> in <конечное значение> :
{тело цикла}
Чему равно значение переменной а?
a=1
for i in range(3): a= a+1
a= 4
43. Как изменить шаг?
Идея: Надо вывести всего 7 чисел, переменная i
изменяется от 1 до 15. Начальное значение a равно 1, с
каждым шагом цикла i увеличивается на 2.
Решение:
a = 1
for i in range(1, 15, 2) :
a = a+i
print(a)
43
44. Задания
«4»: Ввести a и b и вывести квадраты и кубы чисел
от a до b.
Пример:
Введите границы интервала:
4 6
4 16 64
5 25 125
6 36 216
«5»: Вывести квадраты и кубы 10 чисел следующей
последовательности: 2, 4, 6, 8, 10, …
Пример:
1
1
1
2
4
8
4
16
64
44
46. Цикл с неизвестным числом шагов
Пример: Отпилить полено от бревна. Сколько раз надо
сделать движения пилой?
Задача: Ввести целое число (<2000000) и определить
число цифр в нем.
Идея решения: Отсекаем последовательно последнюю
цифру, увеличиваем счетчик.
n
count
123
0
12
1
1
2
0
3
Проблема: Неизвестно, сколько шагов надо сделать.
Решение: Надо остановиться, когда n = 0, т.е. надо делать
«пока n <> 0».
46
48. Программа
n=input('Введите целое число')
n = int(n)
выполнять
s=n
«пока n <> 0»
count = 0
while n != 0 :
count = count + 1
n= n // 10
print('В числе ', s, ' нашли ', count, '
цифр')
48
49. Цикл с условием
while <условие> :
{тело цикла}
Особенности:
• можно использовать сложные условия:
while (a<b) and (b<c) :
{тело цикла}
49
50. Цикл с условием
Особенности:
• условие пересчитывается каждый раз при входе в
цикл
• если условие на входе в цикл ложно, цикл не
выполняется ни разу
a = 4 b = 6
while a > b :
a = a – b
• если условие никогда не станет ложным,
программа зацикливается
a = 4 b = 6
while a < b :
d := a + b
50
51. Замена for на while и наоборот
for i in range(1, 10):
{тело цикла}
I = 1
while i <= 10 :
{тело цикла}
i := i + 1
Замена цикла for на while возможна всегда.
Замена while на for возможна только тогда, когда
можно заранее рассчитать число шагов цикла.
51
52. Задания
«4»: Ввести целое число и найти сумму его цифр.
Пример:
Введите целое число:
1234
Сумма цифр числа 1234 равна 10.
«5»: Ввести целое число и определить, верно ли,
что в его записи есть две одинаковые цифры.
Пример:
Введите целое число: Введите целое число:
1234
1224
Нет.
Да.
52
54. Функции
Функция – это вспомогательный алгоритм
(подпрограмма), результатом работы которого
является некоторое значение.
Примеры:
x ,
• вычисление sin x cos x
,
• расчет значений по сложным формулам
• ответ на вопрос (простое число или нет?)
Зачем?
• для выполнения одинаковых расчетов в различных
местах программы
• для создания общедоступных библиотек функций
54
55. 55
Функции
Задача: составить функцию, которая вычисляет
наибольшее из двух значений, и привести пример
ее использования формальные параметры
формальные параметры
Функция:
def Max(a,b):
if a > b :
max = a
else :
max = b
return max
a=input()
b=input()
print(Max(a,b))
это результат
функции
56. 56
Функции
Особенности:
• заголовок начинается словом def
def Max ():
• можно использовать параметры-переменные
def Max (a, b):
• в конце функции присутствует инструкция return. она
передает то или иное значение в основную ветку
программы
• функции располагаются ВЫШЕ основной программы
57. Функции
Особенности:
• Глобальные переменные объявляются вне функций и
могут быть прочитаны без каких либо объявлений. Но
если необходимо изменить значение глобальной
переменной из функции, то вам необходимо объявить ее
в начале функции ключевым словом «global»
def Myfyn () :
global number
number = 3
return number
number = 5
print (Myfyn())
57
58. 58
Задания
«4»: Составить функцию, которая определяет сумму всех
чисел от 1 до N и привести пример ее использования.
Пример:
Введите число:
100
сумма = 5050
«5»: Составить функцию, которая определяет, сколько зерен
попросил положить на N-ую клетку изобретатель шахмат
(на 1-ую – 1 зерно, на 2-ую – 2 зерна, на 3-ю – 4
зерна, …)
Пример:
Введите номер клетки:
28
На 28-ой клетке 134217728 зерен.