С нуля до джуна #10

Как же долго меня не было жесть. Кароче краткий пересказ почему меня не было и че я делал.

Ну сначала мне просто лень было чет учить первую недельку, потом тетя решила помочь мне с этим начинанием и мы наняли репетитора посмотреть че как. Занимаюсь с ним уже месяц примерно, занимаюсь каждый понедельник с ним по 2 часа, мне нравится, приятный парень, спокойный, много практики и хорошо учит вроде.

Да, я все еще учу котлин, сейчас мы учим еще язык, позже перейдем к android studio и будем учиться делать приложения, ура!

Собственно что мы учили.

1 УРОК. у нас был как бы пробный, мы знакомились и он смотрел что я знаю, мы повторили типы данных и условный оператор if, for, when, while. пример дз с использованием do while, нужно было написать код, который проверяет введенный пароль на соответствие с заданным паролем:

val password = "29fns2" var user = "" do { print("Введите пароль: ") user = readln() if (user != password){ println("Пароль неверный") } else { println("Пароль верный") } } while (user != password)

Мы его еще потом усложнили, но этого кусочка кода у меня не осталось, извините

2 УРОК. мы еще делали задачи на when, while, do while и повторяли list, map. Задачи:

1. Дан map с названием города и численностью жителей, нужно узнать город с наибольшей численностью

fun main() { val cities = mutableMapOf("Moskow" to 12500, "Ekaterinburg" to 1500, "Novosibirsk" to 1560, "Smolensk" to 300) var notes = 0 var a = "" for((name, count) in cities){ if(count > notes){ notes = count a = name } } println("Город с наибольшей численностью: $a") }
Вывод: Город с наибольшей численностью: Moskow

2. Задано число до которого нужно складывать рандомно выбранное число от 1 до 100

import kotlin.random.Random fun main() { val result = 1000 var notes = 0 do { val a = Random.nextInt(1, 101) if(a + notes < result){ println("$a + $notes = ${notes + a}") notes += a } }while (notes != result) }

3. ну и начали учить классы. Вот пример класса Human с заданными свойствами: имя, возраст, вес. В функции main мы создаем объект human1 с заданными значениями свойств(не уверен что правильно написал, но думаю вы поняли): Имя: Alex, возраст: 14, вес: 46,9. Ну и выводим возраст этого человека.

class Human(val name: String, val age: Int, val weight: Double) fun main() { val human1 = Human("Alex", 14, 46.9) println(human1.age) }
Вывод: 14

3 УРОК. мы проходили подробнее классы и ООП. Делали задачу(скопировал то, что я записывал когда мне ее диктовали):

Класс animals имеет имя, вес, тип, переменная maxRun - максимально растояние, которое может пробежать и maxSwim - которое может проплыть, maxJump - прыгнуть. Всего 3 типа: кошачьи, тигринный и собачий. Тигр умеет всё, собака тоже все, кошка не умеет плавать. 3 функции, пробежать, проплыть, прыгнуть. передаем сколько должна пробежать и проверить может ли она столько пробежать. Если может, то смог. Продумать как каждому животному установить состояние спит или не спит. Функция усыплять или пробуждать. не передаю этот параметр, по умолчанию не спит.

fun main() { val dog1 = Animals("Петя", 15.5, Animals.DOG_TYPE, 50, 20, 5) val cat1 = Animals("Барсик", 8.2, Animals.CAT_TYPE, 100, 0, 10) val tiger1 = Animals("Лео", 40.1, Animals.TIGER_TYPE, 80, 30, 15) dog1.animalInfo() dog1.run(25) dog1.swim(17) dog1.activateSleep() dog1.jump(38) println("--------------------------------------------") cat1.animalInfo() cat1.run(293) cat1.activateSleep() cat1.swim(118) cat1.jump(3) println("--------------------------------------------") tiger1.animalInfo() tiger1.run(38) tiger1.swim(68) tiger1.activateSleep() tiger1.jump(7) }
import kotlin.math.max class Animals { companion object { const val DOG_TYPE = "Собака" const val CAT_TYPE = "Кот" const val TIGER_TYPE = "Тигр" } val name: String val weight: Double val type: String val maxRun: Int val maxSwim: Int val maxJump: Int var sleep: Boolean = false constructor(valName: String, valWeight: Double, valType: String, valMaxRun: Int, valMaxSwim: Int, valMaxJump: Int) { name = valName weight = valWeight type = valType maxRun = valMaxRun maxSwim = valMaxSwim maxJump = valMaxJump } constructor(valName: String, valWeight: Double, valType: String, valMaxRun: Int, valMaxSwim: Int, valMaxJump: Int, valSleep: Boolean) { name = valName weight = valWeight type = valType maxRun = valMaxRun maxSwim = valMaxSwim maxJump = valMaxJump sleep = valSleep } fun animalInfo() { println("Имя: $name \nВес: $weight \nТип: $type \nМакс. пробег: $maxRun \nМакс. Проплыв: $maxSwim \nМакс. Прыжок: $maxJump \nСпит: $sleep") } fun activateSleep() { sleep = !sleep println("Cпит: $sleep") } fun run(distance: Int) { if(distance <= maxRun && !sleep) { println("$name может пробежать $distance") } else if(sleep){ println("$name не может пробежать, потому что спит") } else{ println("$name не может пробежать $distance") } } fun swim(distance: Int) { if(distance <= maxSwim && type != CAT_TYPE && !sleep) { println("$name может проплыть $distance") } else if(sleep){ println("$name не может проплыть, потому что спит") } else{ println("$name не может проплыть $distance") } } fun jump(distance: Int) { if(distance <= maxJump && !sleep) { println("$name может прыгнуть $distance") } else if(sleep){ println("$name не может прыгнуть, потому что спит") } else{ println("$name не может прыгнуть $distance") } } }
Вывод: Имя: Петя Вес: 15.5 Тип: Собака Макс. пробег: 50 Макс. Проплыв: 20 Макс. Прыжок: 5 Спит: false Петя может пробежать 25 Петя может проплыть 17 Cпит: true Петя не может прыгнуть, потому что спит -------------------------------------------- Имя: Барсик Вес: 8.2 Тип: Кот Макс. пробег: 100 Макс. Проплыв: 0 Макс. Прыжок: 10 Спит: false Барсик не может пробежать 293 Cпит: true Барсик не может проплыть, потому что спит Барсик не может прыгнуть, потому что спит -------------------------------------------- Имя: Лео Вес: 40.1 Тип: Тигр Макс. пробег: 80 Макс. Проплыв: 30 Макс. Прыжок: 15 Спит: false Лео может пробежать 38 Лео не может проплыть 68 Cпит: true Лео не может прыгнуть, потому что спит

4 УРОК. Все еще повторял классы и ООП, в этот раз делали библиотеку по сути, если туда книг добавить миллион, то их легко будет найти, и автора, и все его книги, и даже все НЕ ЕГО книги. Подробное условие:

Есть книги, у книги есть название, количество страниц, есть id автора, стоимость, жанр, дата публикации. Есть авторы, отдельный класс, автор имеет фио и дата рождения. Класс avtorList, добавляет удаляет и передает id. И класс библиотеки, который содежит список книг. функция вывести все книги, но не этого автора и все книги этого автора. Когда вывожу информацию о книги, выводить и о авторе

fun main() { val litlePrince = Books("Маленький принц", 129, 1902035309, 190.90, "Повесть", "19.02.2024", 3928473) val citadel = Books("Цитадель", 290, 1902035309, 280.99, "Философия", "08.04.2024", 293849) val warAndPeace = Books("Война и мир", 2839, 1932982, 900.99, "Роман", "19.08.2023", 12784284) val antoaneDeSantExuperi = Avtor("Антуан", "Жан батист", "Экзюпери", "29.06.1900", 1902035309) val levTolstoy = Avtor("Лев", "Толстой", "Николаевич", "28.08.1828", 1932982) val avtorList1 = AvtorList() val library1 = Library() avtorList1.addList(antoaneDeSantExuperi) avtorList1.addList(levTolstoy) library1.addBooks(litlePrince) library1.addBooks(warAndPeace) library1.addBooks(citadel) library1.allBooksAvtor(antoaneDeSantExuperi.id, avtorList1) // все книги этого автора println("---------------------------------------------------------------------------") library1.allBooksDontThisAvtor(antoaneDeSantExuperi.id, avtorList1) // все книги не этого автора }
class Library { var libraryBooks = mutableListOf<Books>() fun addBooks(books: Books) { libraryBooks.add(books) } fun removeBooks(nameBooks: String) { libraryBooks.removeIf{it.name == nameBooks} } fun libraryBooksInfo(nameBooks: String, avtorList: AvtorList) { for(i in libraryBooks){ if(i.name == nameBooks){ println("Название книги: ${i.name}, Количество страниц: ${i.numbersOfPages}, Цена: ${i.valueBooks}, Жанр: ${i.genre}, Дата публикации: ${i.publicData}") avtorList.getAvtor(i.idAvtor) } } } fun listInfo() { println(libraryBooks) } fun allBooksAvtor(idAvtors: Int, avtorList: AvtorList){ for(i in libraryBooks){ if(i.idAvtor == idAvtors){ println("Название книги: ${i.name}, Количество страниц: ${i.numbersOfPages}, Цена: ${i.valueBooks}, Жанр: ${i.genre}, Дата публикации: ${i.publicData}") avtorList.getAvtor(i.idAvtor) } } } fun allBooksDontThisAvtor(idAvtors: Int, avtorList: AvtorList) { for(i in libraryBooks){ if(i.idAvtor != idAvtors){ println("Название книги: ${i.name}, Количество страниц: ${i.numbersOfPages}, Цена: ${i.valueBooks}, Жанр: ${i.genre}, Дата публикации: ${i.publicData}") avtorList.getAvtor(i.idAvtor) } } } }
class AvtorList { var listId = mutableListOf<Avtor>() fun listInfo() { println(listId) } fun addList(avtor: Avtor) { listId.add(avtor) } fun removeList(idAvtor: Int) { listId.removeIf{it.id == idAvtor} //it является ключевым словом, которое используется для единственного параметра лямбда функций } fun getAvtor(idAvtors: Int) { for(i in listId){ if(i.id == idAvtors){ println("Имя: ${i.name}, Фамилия: ${i.surname}, Отчество: ${i.otchestvo}, Дата рождения: ${i.dateOfBirth}") } } } }
class Books { val name: String val numbersOfPages: Int val idAvtor: Int val valueBooks: Double val genre: String val publicData: String val idBooks: Int constructor(valName: String, valNumbOfPages: Int, valIdAvtor: Int, valValue: Double, valGenre: String, valPublicData: String, valIdBooks: Int) { name = valName numbersOfPages = valNumbOfPages idAvtor = valIdAvtor valueBooks = valValue genre = valGenre publicData = valPublicData idBooks = valIdBooks } fun booksInfo(){ println("$name, $numbersOfPages, $idAvtor, $valueBooks, $genre, $publicData") } } //Есть книги, у книги есть название, количество страниц, есть id автора, стоимость, жанр, дата публикации
class Avtor { val name: String val surname: String val otchestvo: String val dateOfBirth: String val id: Int constructor(valName: String, valSurname: String, valOtchestvo: String, valDateOfBirth: String, valId: Int) { name = valName surname = valSurname otchestvo = valOtchestvo dateOfBirth = valDateOfBirth id = valId } } //Есть авторы, отдельный класс, автор имеет фио и дата рождения.
Вывод: Название книги: Маленький принц, Количество страниц: 129, Цена: 190.9, Жанр: Повесть, Дата публикации: 19.02.2024 Имя: Антуан, Фамилия: Жан батист, Отчество: Экзюпери, Дата рождения: 29.06.1900 Название книги: Цитадель, Количество страниц: 290, Цена: 280.99, Жанр: Философия, Дата публикации: 08.04.2024 Имя: Антуан, Фамилия: Жан батист, Отчество: Экзюпери, Дата рождения: 29.06.1900 --------------------------------------------------------------------------- Название книги: Война и мир, Количество страниц: 2839, Цена: 900.99, Жанр: Роман, Дата публикации: 19.08.2023 Имя: Лев, Фамилия: Толстой, Отчество: Николаевич, Дата рождения: 28.08.1828

На данный момент это все. Мне нравится заниматься с репетитором, потому что так проще учить и больше интересных заданий и всегда есть у кого спросить. Ну и сам котлин мне нравится учиться и узнавать чет новое.

Спасибо за внимание :)

44
21 комментарий

Комментарий недоступен

1

а вам зачем?

1

Мне нравится заниматься с репетиторомГлавное, нравится ли тете за него платить и насколько?

Ну ей нравится что мне нравится и что у меня получается, так что с этим все ок, можете не волноваться)

1

Краткий пересказ для тех кому лень читать этот краткий пересказ - он занимался, спасибо за внимание.

можно и так

Молодец, так держать! Вот это настрой