Глухих Михаил Игоревич mailto:...
Transcript of Глухих Михаил Игоревич mailto:...
![Page 2: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/2.jpg)
Рекурсия: прямое или косвенное использование функцией самой себя
2
![Page 3: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/3.jpg)
Рекурсия: прямое или косвенное использование функцией самой себя
Цикл: многократное повторение одного и того же блока в функции
3
![Page 4: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/4.jpg)
n! = n(n-1)!
4
![Page 5: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/5.jpg)
n! = n(n-1)!
0! = 1, 1! = 1
5
![Page 6: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/6.jpg)
n! = n(n-1)!
0! = 1, 1! = 1 (база)
6
![Page 7: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/7.jpg)
n! = n(n-1)!
0! = 1, 1! = 1 (база)
fun factorial(n: Int): Double =
if (n < 2) 1.0 else n * factorial(n - 1)
7
![Page 8: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/8.jpg)
Сколько раз цифра M входит в число N ≥ 0?
8
![Page 9: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/9.jpg)
Сколько раз цифра M входит в число N ≥ 0?
Решение: разбить число N на◦ Младшую цифру
◦ Все остальные цифры
9
![Page 10: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/10.jpg)
Сколько раз цифра M входит в число N ≥ 0?
Решение: разбить число N на◦ Младшую цифру N % 10
◦ Все остальные цифры N / 10
Для числа из одной цифры задача тривиальна
10
![Page 11: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/11.jpg)
Сколько раз цифра M входит в число N ≥ 0?
fun digitCountInNumber(n: Int, m: Int): Int =
if (n == m) 1
else if (n < 10) 0
else digitCountInNumber(n / 10, m) +
digitCountInNumber(n % 10, m)
11
![Page 12: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/12.jpg)
Первое равно 1, второе тоже 1
F(N+2) = F(N) + F(N+1)
Напрашивается рекурсивное решение?
12
![Page 13: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/13.jpg)
Первое равно 1, второе тоже 1
F(N+2) = F(N) + F(N+1)
Напрашивается рекурсивное решение?
На самом деле возможны проблемы…
13
![Page 14: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/14.jpg)
n! = 1 * 2 * … * (n-1) * n
14
![Page 15: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/15.jpg)
n! = 1 * 2 * … * (n-1) * n
fun factorial(n: Int): Double {
var result = 1.0
for (i in 1..n) {
result = result * i
}
return result
}
15
![Page 16: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/16.jpg)
n! = 1 * 2 * … * (n-1) * n
fun factorial(n: Int): Double {
var result = 1.0
for (i in 1..n) {
result = result * i
}
return result
}
// for = цикл: для (каждого) i в (интервале) 1..n …
16
![Page 17: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/17.jpg)
n! = 1 * 2 * … * (n-1) * n
fun factorial(n: Int): Double {
var result = 1.0
for (i in 1..n) {
result = result * i
}
return result
}
// for = цикл: для (каждого) i в (интервале) 1..n …
// var = мутирующая переменная (или просто переменная)
17
![Page 18: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/18.jpg)
fun factorial(n: Int): Double {
var result = 1.0
for (i in 1..n) {
result *= i // result = result * i
}
return result
}
18
![Page 19: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/19.jpg)
+= увеличить на ...
-= уменьшить на ...
*= домножить на ...
/= разделить и присвоить
%= взять остаток от деления и присвоить
19
![Page 20: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/20.jpg)
a++ или ++a – увеличить на 1
a-- или --a – уменьшить на 1
20
![Page 21: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/21.jpg)
a++ или ++a – увеличить на 1
a-- или --a – уменьшить на 1
fun foo() {
var a = 3
val b = a++
}
21
![Page 22: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/22.jpg)
a++ или ++a – увеличить на 1
a-- или --a – уменьшить на 1
fun foo() {
var a = 3
val b = a++ // a = 4, b = 3
}
22
![Page 23: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/23.jpg)
a++ или ++a – увеличить на 1
a-- или --a – уменьшить на 1
fun foo() {
var a = 3
val b = ++a
}
23
![Page 24: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/24.jpg)
a++ или ++a – увеличить на 1
a-- или --a – уменьшить на 1
fun foo() {
var a = 3
val b = ++a // a = 4, b = 4
}
24
![Page 25: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/25.jpg)
a++ или ++a – увеличить на 1
a-- или --a – уменьшить на 1
Значение a++ или a--равно старому значению a
25
![Page 26: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/26.jpg)
a++ или ++a – увеличить на 1
a-- или --a – уменьшить на 1
Значение a++ или a--равно старому значению a
А значение ++a или --a равно новому значению a
26
![Page 27: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/27.jpg)
// Заголовок
for (i in 1..10) {
// Тело цикла
}
27
![Page 28: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/28.jpg)
// Заголовок
for (i in 1..10) {
// Тело цикла
}
// Итерация = одно выполнение тела
28
![Page 29: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/29.jpg)
for (i in 1..10) { … } // интервал
29
![Page 30: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/30.jpg)
for (i in 1..10) { … } // интервал
for (i in 10 downTo 1) { … } // прогрессия
30
![Page 31: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/31.jpg)
for (i in 1..10) { … } // интервал
for (i in 10 downTo 1) { … } // прогрессия
for (i in 1..99 step 2) { … } // прогрессия
31
![Page 32: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/32.jpg)
for (i in 1..10) { … } // интервал
for (i in 10 downTo 1) { … } // прогрессия
for (i in 1..99 step 2) { … } // прогрессия
for (i in 100 downTo 2 step 2) { … } // прогрессия
32
![Page 33: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/33.jpg)
for (i in 1..10) { … } // интервал
for (i in 0 until 10) { … } // интервал от 0 до 9 (!)
for (i in 10 downTo 1) { … } // прогрессия
for (i in 1..99 step 2) { … } // прогрессия
for (i in 100 downTo 2 step 2) { … } // прогрессия
33
![Page 34: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/34.jpg)
Число N простое, если у него ровно 2 делителя: 1 и N
34
![Page 35: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/35.jpg)
Число N простое, если у него ровно 2 делителя: 1 и N
Проверка на простоту: убедиться, что в интервале 2..N-1 нет ни одного делителя
35
![Page 36: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/36.jpg)
Число N простое, если у него ровно 2 делителя: 1 и N
Проверка на простоту: убедиться, что в интервале 2..N-1 нет ни одного делителя
fun isPrime(n: Int): Boolean {
if (n < 2) return false
for (m in 2..n - 1) {
if (n % m == 0) return false
else return true
}
}
36
![Page 37: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/37.jpg)
Число N простое, если у него ровно 2 делителя: 1 и N
Проверка на простоту: убедиться, что в интервале 2..N-1 нет ни одного делителя
fun isPrime(n: Int): Boolean {
if (n < 2) return false
for (m in 2..n - 1) {
if (n % m == 0) return false
else return true
}
return true
}
37
![Page 38: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/38.jpg)
Число N простое, если у него ровно 2 делителя: 1 и N
Проверка на простоту: убедиться, что в интервале 2..N-1 нет ни одного делителя
fun isPrime(n: Int): Boolean {
if (n < 2) return false
for (m in 2..n - 1) {
if (n % m == 0) return false
}
return true
}
38
![Page 39: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/39.jpg)
Число N простое, если у него ровно 2 делителя: 1 и N
Проверка на простоту: убедиться, что в интервале 2..N-1 нет ни одного делителя
fun isPrime(n: Int): Boolean {
if (n < 2) return false
for (m in 2 until n) {
if (n % m == 0) return false
}
return true
}
39
![Page 40: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/40.jpg)
Оператор break используется, если необходимо прервать выполнение цикла
40
![Page 41: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/41.jpg)
Оператор break используется, если необходимо прервать выполнение цикла
Оператор continue используется, если необходимо завершить текущую итерациюцикла и продолжить цикл со следующей итерации
41
![Page 42: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/42.jpg)
Совершенное число равно сумме всех своих делителей, кроме него самого
42
![Page 43: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/43.jpg)
Совершенное число равно сумме всех своих делителей, кроме него самого
6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 + 14
43
![Page 44: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/44.jpg)
Совершенное число равно сумме всех своих делителей, кроме него самого
6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 + 14
fun isPerfect(n: Int): Boolean { var sum = 1 for (m in 2..n/2) {
if (n % m == 0) { sum += m if (sum > n) break
} } return sum == n
}
44
![Page 45: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/45.jpg)
Совершенное число равно сумме всех своих делителей, кроме него самого
6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 + 14
fun isPerfect(n: Int): Boolean { var sum = 1 for (m in 2..n/2) {
if (n % m > 0) continue sum += m if (sum > n) break
} return sum == n
}
45
![Page 46: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/46.jpg)
for = цикл с фиксированным количеством итераций (не считая break / return)
while = цикл с неопределённым количеством итераций
do…while = то же, но с другим порядком выполнения
46
![Page 47: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/47.jpg)
Сколько раз цифра M входит в число N ≥ 0?
fun digitCountInNumber(n: Int, m: Int): Int { var count = 0 var number = n while (number > 0) {
if (m == number % 10) { count++
}number /= 10
}return count
}
47
![Page 48: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/48.jpg)
Сколько раз цифра M входит в число N ≥ 0?
fun digitCountInNumber(n: Int, m: Int): Int { var count = 0 var number = n do {
if (m == number % 10) { count++
}number /= 10
} while (number > 0)return count
}
48
![Page 49: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/49.jpg)
while = цикл с предусловием (тело может не выполниться ни разу)
do … while = цикл с постусловием (тело обязано выполниться хотя бы раз)
Условие = ВСЕГДА условие продолжения
49
![Page 50: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/50.jpg)
В реальном мире программисты часто используют чужой код◦ В виде подключаемых библиотек (лучше)
◦ В виде copy-paste
50
![Page 51: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/51.jpg)
В реальном мире программисты часто используют чужой код◦ В виде подключаемых библиотек (лучше)
◦ В виде copy-paste
Права? Зависят от лицензии
51
![Page 52: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/52.jpg)
В реальном мире программисты часто используют чужой код◦ В виде подключаемых библиотек (лучше)
◦ В виде copy-paste
Права? Зависят от лицензии◦ Иногда можно как угодно
◦ Иногда можно только в виде библиотеки
◦ Иногда можно только за деньги
◦ Иногда можно только с разрешения владельца кода
◦ Иногда нужно иметь ту же лицензию
52
![Page 53: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/53.jpg)
В реальном мире программисты часто используют чужой код◦ В виде подключаемых библиотек (лучше)
◦ В виде copy-paste
Права? Зависят от лицензии
А как у нас?◦ Copy-paste чужого кода допускается *только* с
явной ссылкой на источник
◦ Плюс ограничения владельца
◦ Выставляемая оценка зависит от своего кода, а не заимствованного
53
![Page 54: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/54.jpg)
Плагиат – использование чужого кода с нарушением лицензии
Как определить, что ваш код незаконно использован? Есть специальные методы и программы
54
![Page 55: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/55.jpg)
Плагиат – использование чужого кода с нарушением лицензии
Как определить, что ваш код незаконно использован? Есть специальные методы и программы
WARNING◦ В Котоед такая программа встроена
55
![Page 56: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2018/kaf/Kotlin03.pdf · a++ или ++a –увеличить на 1 a-- или --a](https://reader034.fdocument.pub/reader034/viewer/2022042414/5f2e843433fc6470392913e4/html5/thumbnails/56.jpg)
См. lesson3/task1 в обучающем проекте Решите хотя бы одно из заданий Протестируйте решение с помощью
готовых тестов Добавьте ещё хотя бы один тестовый
случай Попробуйте придумать рекурсивное
решение хотя бы одной задачи Добавьте коммит в свой репозиторий Создайте Kotoed Submission и убедитесь в
правильности решения
56