![Page 2: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/2.jpg)
Минимум◦ Скачали Идею и настроили KotlinAsFirst
Оптимум◦ Сделали хотя бы что-то из первого урока и
отправили в Котоед
Пытались сделать, но что-то не получилось?
Ничего всю неделю не делали?◦ Срочно начать! Не откладывать!
2
![Page 3: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/3.jpg)
Суммарно 4 недели на первые 3 урока
Далее по 2 недели на каждый урок
Итого 8 уроков за 14 недель и 1-2 недели в запасе
3
![Page 4: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/4.jpg)
1. 11 октября. Ориентируйтесь на 3-4 сделанных урока.
2. ~15 ноября. Ориентируйтесь на 5-6сделанных уроков.
3. Конец семестра (~15 декабря). Ориентируйтесь на 7-8 сделанных уроков.
4
![Page 5: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/5.jpg)
Мои лекции
Туториал
Документация Котлина◦ https://kotlinlang.org/docs/reference/
◦ https://kotlinlang.ru/docs/reference
Книги◦ https://www.atomickotlin.com/
◦ Kotlin в действии (Kotlin in Action). Дмитрий Жемеров, Светлана Исакова.
◦ Kotlin for Android Developers. Antonio Leiva.
5
![Page 6: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/6.jpg)
https://www.coursera.org/learn/vvedenie-v-yazyk-kotlin
Тот же (+-) учебный проект
Видео-лекции по первым 7 урокам (свободный доступ)
Упражнения (платные в норме, бесплатные в приватной сессии Политеха)
Сертификат Coursera по завершении
6
![Page 7: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/7.jpg)
7
![Page 8: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/8.jpg)
Язык для общения человека с компьютером
8
![Page 9: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/9.jpg)
Язык для общения человека с компьютером
Язык, на котором человек даёт команды компьютеру. Зачем? Чтобы решить определённую задачу
9
![Page 10: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/10.jpg)
В некотором смысле – «книга» на языке программирования◦ Если говорить точнее – книга-квест
10
![Page 11: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/11.jpg)
В некотором смысле – «книга» на языке программирования◦ Если говорить точнее – книга-квест
Состоит из команд, сгруппированных определённым образом◦ У книги – предложения, у программы – операторы
(statements)
11
![Page 12: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/12.jpg)
В некотором смысле – «книга» на языке программирования◦ Если говорить точнее – книга-квест
Состоит из команд, сгруппированных определённым образом◦ У книги – предложения, у программы – операторы
(statements)
◦ У книги – абзацы, у программы –блоки операторов (statement blocks)
12
![Page 13: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/13.jpg)
В некотором смысле – «книга» на языке программирования◦ Если говорить точнее – книга-квест
Состоит из команд, сгруппированных определённым образом◦ У книги – предложения, у программы – операторы
(statements)
◦ У книги – абзацы, у программы –блоки операторов (statement blocks)
◦ У книги – главы, у программы –функции/методы/процедуры (functions)
13
![Page 14: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/14.jpg)
В некотором смысле – «книга» на языке программирования◦ Если говорить точнее – книга-квест
Состоит из команд, сгруппированных определённым образом
Программа реализует алгоритм(ы)
14
![Page 15: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/15.jpg)
Часть программы. Выполняет определённую задачу
15
![Page 16: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/16.jpg)
Часть программы. Выполняет определённую задачу
Имеет входы: параметры
Имеет выход: результат
Аналог: функция в математике
16
![Page 17: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/17.jpg)
17
fun sqr(x: Int) = x * x
fun = ключевое слово
sqr = имя функции
x: Int = параметр функции◦ Int = тип параметра функции
“= x * x” = тело функции◦ x * x = результат функции
* = операция
![Page 18: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/18.jpg)
Программа работает с данными, данные хранятся в памяти компьютера◦ Аналог в математике – переменные
◦ ~ Аналог в книге – имена собственные
18
![Page 19: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/19.jpg)
Программа работает с данными, данные хранятся в памяти компьютера◦ Аналог в математике – переменные
◦ ~ Аналог в книге – имена собственные
Параметр x – вид данных
19
![Page 20: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/20.jpg)
Программа работает с данными, данные хранятся в памяти компьютера◦ Аналог в математике – переменные
◦ ~ Аналог в книге – имена собственные
Параметр x: Int – вид данных
У параметра есть имя x и тип Int
20
![Page 21: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/21.jpg)
Чтобы нельзя было везде хранить что угодно – слишком большая свобода вредит в программировании
Тип определяет те значения (множество значений), которые параметр может иметь
21
![Page 22: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/22.jpg)
Как в языке C (также Java, C#, …)◦ int x
Как в языке Pascal (также Swift, Kotlin, …)◦ x: Int
Как в языке Python◦ x
22
![Page 23: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/23.jpg)
Int = целое число -231 … 231 - 1
23
![Page 24: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/24.jpg)
Int = целое число -231 … 231 – 1
Double = вещественное число (примерно) -1.7 * 10308 … 1.7 * 10308
24
![Page 25: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/25.jpg)
Int = целое число -231 … 231 – 1
Double = вещественное число (примерно) -1.7 * 10308 … 1.7 * 10308
Boolean = true или false, истина или ложь
25
![Page 26: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/26.jpg)
Int = целое число -231 … 231 – 1
Double = вещественное число (примерно) -1.7 * 10308 … 1.7 * 10308
Boolean = true или false, истина или ложь
Char = символ (из таблицы Unicode), с кодом 0 … 216 - 1
26
![Page 27: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/27.jpg)
Int = целое число -231 … 231 – 1
Double = вещественное число (примерно) -1.7 * 10308 … 1.7 * 10308
Boolean = true или false, истина или ложь
Char = символ (из таблицы Unicode), с кодом 0 … 216 - 1
27
![Page 28: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/28.jpg)
Int = целое число -231 … 231 – 1
Double = вещественное число (примерно) -1.7 * 10308 … 1.7 * 10308
Boolean = true или false, истина или ложь
Char = символ (из таблицы Unicode), с кодом 0 … 216 – 1
String = строка = любое количество Char
28
![Page 29: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/29.jpg)
Int : точный тип, Double : приближённый
29
![Page 30: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/30.jpg)
Int : точный тип, Double : приближённый
Диапазон значений Double гораздо шире
30
![Page 31: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/31.jpg)
Int : точный тип, Double : приближённый
Диапазон значений Double гораздо шире
Операции над целыми числами дают целый результат: 5 / 2 = 2
Операции над вещественными числами дают вещественный результат: 5.0 / 2.0 = 2.5, 5 / 2.0 = 2.5
31
![Page 32: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/32.jpg)
Int : точный тип, Double : приближённый
Диапазон значений Double гораздо шире
Операции над целыми числами дают целый результат: 5 / 2 = 2
Операции над вещественными числами дают вещественный результат: 5.0 / 2.0 = 2.5, 5 / 2.0 = 2.5
Преобразования: n.toDouble(), x.toInt()
32
![Page 33: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/33.jpg)
Тоже разновидность данных, но без имени
Имеют, однако, тип и значение
Варианты◦ Int : 42, -256
◦ Double : 1.0, 3.1415, 6.67e-11
◦ Boolean : true, false
◦ Char : 'a', 'z'
◦ String : "Hello", ""
33
![Page 34: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/34.jpg)
Элементарные арифметические, логические и прочие действия, обозначаемые знаком операции = оператором (operator, не путать со statement)
34
![Page 35: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/35.jpg)
Сложение a + b
Вычитание a – b
Умножение a * b
Деление a / b
Остаток от деления a % b
Скобки ( … )
35
![Page 36: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/36.jpg)
Используются, чтобы различать различные элементы программы
Есть у функций, параметров, переменных, типов, …
36
![Page 37: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/37.jpg)
Обязаны начинаться с буквы (или с символа _ что не рекомендуется)
Состоят из букв, цифр, символа _
Прописные и строчные буквы различаются◦ Как и в большинстве распространённых языков –
но не в Паскале
37
![Page 38: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/38.jpg)
Только латинские буквы, никаких моё_имя_123
Нет транслитерации, никаких dlinaOtrezka
38
![Page 39: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/39.jpg)
Только латинские буквы, никаких моё_имя_123
Нет транслитерации, никаких dlinaOtrezka
Имена функций, параметров, переменных начинаются со строчной буквы: segmentLength или calculateArea
Имена типов начинаются с прописной: Rectangle
39
![Page 40: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/40.jpg)
https://kotlinlang.org/docs/reference/coding-conventions.html
https://kotlinlang.ru/docs/reference/coding-conventions.html
40
![Page 41: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/41.jpg)
Параметр – это объект, существительное
Функция – это действие, глагол
41
![Page 42: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/42.jpg)
Пакет (package) kotlin.math◦ abs(x: Int), abs(x: Double) – модуль◦ sqrt(x: Double) – квадратный корень◦ x.pow(y: Double) – x в степени y◦ sin/cos (x: Double) – синус / косинус, аргумент
задаётся в радианах◦ exp(x: Double) – e в степени x◦ log / log10(x: Double) – натуральный и
десятичный логарифмы◦ min / max(x: Int, y: Int) или (x: Double, y: Double) –
минимум и максимум из двух чисел◦ PI = 3.14…, E = 2.72…
42
![Page 43: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/43.jpg)
// Комментарий: дискриминант
fun discriminant(a: Double, b: Double, c: Double) = sqr(b) - 4 * a * c
// sqr(b) = вызов функции sqr
// b = аргумент функции sqr
43
![Page 44: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/44.jpg)
// Комментарий: дискриминант
fun discriminant(a: Double, b: Double, c: Double) = sqr(b) - 4 * a * c
// Комментарий: корень квадратного уравнения
fun sqRoot(a: Double, b: Double, c: Double) = (-b + sqrt(discriminant(a, b, c))) / (2 * a)
// sqrt(…) – вызов функции sqrt из пакета kotlin.math
// discriminant(a, b, c) – вызов функции discriminant
// и одновременно аргумент функции sqrt
44
![Page 45: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/45.jpg)
То, что в определении функции – параметр
То, что в вызове функции - аргумент
45
![Page 46: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/46.jpg)
kotlin.math.sqrt = полное имя (с указанием пакета)◦ В IDEA можно сократить автоматически: Alt+Enter
sqrt = короткое имя
// Директива импорта – в верхней части файлаimport kotlin.math.sqrt
// …
fun sqRoot(a: Double, b: Double, c: Double) = (-b + sqrt(discriminant(a, b, c))) / (2 * a)
46
![Page 47: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/47.jpg)
fun quadraticRootProduct(a: Double, b: Double, c: Double
): Double /* тип результата */ {
// Тело в виде блока
}
47
![Page 48: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/48.jpg)
fun quadraticRootProduct(a: Double, b: Double, c: Double
): Double /* тип результата */ {
// Тело в виде блока
// val = переменная
val sd = sqrt(discriminant(a, b, c))
}
48
![Page 49: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/49.jpg)
fun quadraticRootProduct(a: Double, b: Double, c: Double
): Double /* тип результата */ {
// Тело в виде блока
// val = переменная
val sd = sqrt(discriminant(a, b, c))
// Ещё две переменных
val x1 = (-b + sd) / (2 * a)
val x2 = (-b - sd) / (2 * a)
}
49
![Page 50: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/50.jpg)
fun quadraticRootProduct(a: Double, b: Double, c: Double
): Double /* тип результата */ {
// Тело в виде блока
// val = переменная
val sd = sqrt(discriminant(a, b, c))
// Ещё две переменных
val x1 = (-b + sd) / (2 * a)
val x2 = (-b - sd) / (2 * a)
// Чему равен результат?
return x1 * x2
}
50
![Page 51: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/51.jpg)
Тоже вид данных, есть имя, тип и значение◦ Каков тип у sd?
◦ val sd = sqrt(discriminant(a, b, c))
51
![Page 52: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/52.jpg)
Тоже вид данных, есть имя, тип и значение◦ Каков тип у sd?
◦ val sd = sqrt(discriminant(a, b, c))
Вывод типа → Double
Бывают двух видов – val и var (позже)◦ val ~ переменная-значение, значение постоянно
Как в математике
◦ var (позже) ~ “настоящая” переменная
52
![Page 53: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/53.jpg)
оператор возврата =определяет результат и завершает функцию
53
![Page 54: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/54.jpg)
fun solveQuadraticEquation(a: Double, b: Double, c: Double
) /* no result */ {
val sd = sqrt(discriminant(a, b, c))
val x1 = (-b + sd) / (2 * a)
val x2 = (-b - sd) / (2 * a)
}
54
![Page 55: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/55.jpg)
fun solveQuadraticEquation(a: Double, b: Double, c: Double
) /* no result */ {
val sd = sqrt(discriminant(a, b, c))
val x1 = (-b + sd) / (2 * a)
val x2 = (-b - sd) / (2 * a)
// Вывод на экран значений x1 и x2
println(x1)
println(x2)
}
55
![Page 56: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/56.jpg)
fun solveQuadraticEquation(a: Double, b: Double, c: Double
) /* no result */ {
val sd = sqrt(discriminant(a, b, c))
val x1 = (-b + sd) / (2 * a)
val x2 = (-b - sd) / (2 * a)
// Вывод на экран значений x1 и x2
println(x1)
println(x2)
// Вывод на экран строки вида x1 = 3.0 x2 = 2.0
println("x1 = $x1 x2 = $x2")
}
56
![Page 57: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/57.jpg)
fun solveQuadraticEquation(a: Double, b: Double, c: Double
) /* no result */ {
val sd = sqrt(discriminant(a, b, c))
val x1 = (-b + sd) / (2 * a)
val x2 = (-b - sd) / (2 * a)
// Вывод на экран значений x1 и x2
println(x1)
println(x2)
// Вывод на экран строки вида x1 = 3.0 x2 = 2.0
println("x1 = $x1 x2 = $x2")
// Вывод на экран произведения корней
println("x1 * x2 = ${x1 * x2}")
}
57
![Page 58: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/58.jpg)
Особый вид функций
Контролируют правильность работы других функций
Обычно реализуются на основе специальных тестирующих библиотек (пример = JUnit)
58
![Page 59: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/59.jpg)
// Test = аннотация@Test
fun testSqr() {// Проверить, что квадрат нуля это 0assertEquals(0, sqr(0))// Проверить, что квадрат двух это 4assertEquals(4, sqr(2))// Проверить, что квадрат -3 это 9assertEquals(9, sqr(-3))
}
59
![Page 60: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/60.jpg)
Проверка на равенство◦ Ничего не делает, если аргументы равны
◦ Прекращает тест с ошибкой, если аргументы не равны
60
![Page 61: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/61.jpg)
«Точка входа» в программу = отсюда программа начинает свою работу
Во многих языках называется main (C, C++, C#, Java, Kotlin)
~ первая глава книги (хотя в программе она не обязана находиться вначале!)
61
![Page 62: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/62.jpg)
fun main() {
// Решаем x^2 - 3*x + 2 = 0
val x1x2 = quadraticRootProduct(1.0, -3.0, 2.0)
println("Root product: $x1x2")
}
62
![Page 63: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/63.jpg)
lesson1/task1 в обучающем проекте
63
![Page 64: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/64.jpg)
Прочитать chapter02 в tutorial и/или послушать лекции второго урока на Coursera
Задачи второго урока
64
![Page 65: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2020/kaf/Kotlin01.pdf · Суммарно 4 недели на первые 3 урока](https://reader034.vdocuments.mx/reader034/viewer/2022052101/603bc41ff8ada91fe97052db/html5/thumbnails/65.jpg)
Если что-то осталось непонятным –обязательно спросите или напишите мне!
65