ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 28
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
2. Добавьте сабскрипт, который устанавливает значение клетки по ряду и столбцу,
причем вы должны следить за тем, чтобы программа не падала если будет введен несуществующий ряд или столбец.
3. Также следите за тем, чтобы нельзя было устанавливать крестик либо нолик туда, где они уже что-то есть. Добавьте метод очистки поля.
4. Если хотите, добавьте алгоритм, который вычислит победителя
Морской бой (Тяжелый уровень)
1. Создайте тип корабль, который будет представлять собой прямоугольник. В нем может быть внутренняя одномерная система координат (попахивает сабскриптом).
Корабль должен принимать выстрелы по локальным координатам и вычислять когда он убит
2. Создайте двумерное поле, на котором будут располагаться корабли врага.
Стреляйте по полю и подбейте вражеский четырех трубник :)
3. Сделайте для приличия пару выстрелов мимо, красивенько все выводите на экран :)
18 Урок
1. У нас есть базовый класс "Артист" и у него есть имя и фамилия. И есть метод "Выступление". У каждого артиста должно быть свое выступление: танцор танцует,
певец поет и тд. А для художника, что бы вы не пытались ставить, пусть он ставит что-то свое (пусть меняет имя на свое артистическое). Когда вызываем метод "выступление" показать в консоле имя и фамилию артиста и собственно само выступление.
Полиморфизм используем для артистов. Положить их всех в массив, пройтись по нему и вызвать их метод "выступление"
2. Создать базовый класс "транспортное средство" и добавить три разных проперти: скорость, вместимость и стоимость одной перевозки (computed).
Создайте несколько дочерних классов и переопределите их компютед проперти у всех. Создайте класс самолет, корабль, вертолет, машина и у каждого по одному
объекту. В компютед пропертис каждого класса напишите свои значения скорости,
вместимости, стоимости перевозки. + у вас должен быть свой метод который считает сколько уйдет денег и времени чтобы перевести из пункта А в пункт В
определенное количество людей с использованием наших транспортных средств.
Вывести в консоль результат (как быстро сможем перевести, стоимость, количество перевозок).
Используем полиморфизм
3. Есть 5 классов: люди, крокодилы, обезьяны, собаки, жирафы. (в этом задании вы будете создавать не дочерние классы, а родительские и ваша задача создать родительский таким образом, чтобы сгруппировать эти 5).
- Создайте по пару объектов каждого класса.
- Посчитайте пресмыкающихся (создайте массив, поместите туда пресмыкающихся и скажите сколько в нем объектов)
- Сколько четвероногих?
- Сколько здесь животных?
- Сколько живых существ?
19 Урок
Домашнее задание к этому уроку лежит на совести у каждого :)
20 Урок
Домашнее задание к этому уроку лежит на совести у каждого :)
21 Урок
Домашнее задание к этому уроку лежит на совести у каждого :)
22 Урок
Рассмотрим такую ситуацию: есть семья - папа, мама и дети.
Папа глава семьи, у него есть Мама, Мама контролирует детей, т.е. иерархия: Папа
- Мама - Дети, Дети на одном уровне.
Дети могут вызывать друг друга и они могут искать пути, как общаться с другими
Детьми, например говорить "дай игрушку", спрашивать Маму: "Мама, дай конфетку", общаться с Папой: "Папа, купи игрушку".
Вся эта иерархия лежит в объекте класса Семья, у которого есть методы, например распечатать всю Семью, т.е. метод вернёт массив всех членов Семьи.
У Папы есть 3 кложера (closures) - 1. когда он обращается к Семье - распечатать всю Семью, 2. распечатать Маму, 3. распечатать всех Детей.
Создать всю иерархию со связями. При выходе из зоны видимости все объекты должны быть уничтожены. Используем Command-Line Tool.
вместимости, стоимости перевозки. + у вас должен быть свой метод который считает сколько уйдет денег и времени чтобы перевести из пункта А в пункт В
определенное количество людей с использованием наших транспортных средств.
Вывести в консоль результат (как быстро сможем перевести, стоимость, количество перевозок).
Используем полиморфизм
3. Есть 5 классов: люди, крокодилы, обезьяны, собаки, жирафы. (в этом задании вы будете создавать не дочерние классы, а родительские и ваша задача создать родительский таким образом, чтобы сгруппировать эти 5).
- Создайте по пару объектов каждого класса.
- Посчитайте пресмыкающихся (создайте массив, поместите туда пресмыкающихся и скажите сколько в нем объектов)
- Сколько четвероногих?
- Сколько здесь животных?
- Сколько живых существ?
19 Урок
Домашнее задание к этому уроку лежит на совести у каждого :)
20 Урок
Домашнее задание к этому уроку лежит на совести у каждого :)
21 Урок
Домашнее задание к этому уроку лежит на совести у каждого :)
22 Урок
Рассмотрим такую ситуацию: есть семья - папа, мама и дети.
Папа глава семьи, у него есть Мама, Мама контролирует детей, т.е. иерархия: Папа
- Мама - Дети, Дети на одном уровне.
Дети могут вызывать друг друга и они могут искать пути, как общаться с другими
Детьми, например говорить "дай игрушку", спрашивать Маму: "Мама, дай конфетку", общаться с Папой: "Папа, купи игрушку".
Вся эта иерархия лежит в объекте класса Семья, у которого есть методы, например распечатать всю Семью, т.е. метод вернёт массив всех членов Семьи.
У Папы есть 3 кложера (closures) - 1. когда он обращается к Семье - распечатать всю Семью, 2. распечатать Маму, 3. распечатать всех Детей.
Создать всю иерархию со связями. При выходе из зоны видимости все объекты должны быть уничтожены. Используем Command-Line Tool.
23 Урок
Сегодня будем строить свою небольшую социальную сеть.
1. Сделать класс Человек, у этого класса будут проперти Папа, Мама, Братья,
Сестры (всё опционально).
Сделать примерно 30 человек, взять одного из них, поставить ему Папу/Маму. Папе и Маме поставить Пап/Мам/Братьев/Сестер. Получится большое дерево иерархии.
Посчитать, сколько у этого человека двоюродных Братьев, троюродных Сестёр,
Теть, Дядь, итд
2. Все сестры, матери,... должны быть класса Женщина, Папы, братья,... класса
Мужчины.
У Мужчин сделать метод Двигать_диван, у Женщин Дать_указание (двигать_диван).
Всё должно работать как и ранее.
Всех этих людей положить в массив Семья, пройти по массиву посчитать количество Мужчин и Женщин, для каждого Мужчины вызвать метод
Двигать_диван, для каждой женщины Дать_указание.
3. Расширить класс человек, у него будет проперти Домашние_животные.
Животные могут быть разные (попугаи, кошки, собаки...) их может быть несколько,
может и не быть вообще.
Раздать некоторым людям домашних животных. Пройти по всему массиву людей.
Проверить каждого человека на наличие питомца, если такой есть - добавлять всех животных в массив животных. Посчитать сколько каких животных в этом массиве.
Вся эта живность должна быть унаследована от класса Животные. У всех животных должен быть метод Издать_звук(крик) и у каждого дочернего класса этот метод переопределен на свой, т.е. каждое животное издаёт свой звук.
Когда проходим по массиву животных, каждый представитель вида животных должен издать свой звук.
Обязательно используем в заданиях Optional chaining и Type casting
24 Урок
1. Создайте расширение для Int с пропертисами isNegative, isPositive, bool
2. Добавьте проперти, которое возвращает количество символов в числе
3. Добавьте сабскрипт, который возвращает символ числа по индексу:
let a = 8245
a[1] // 4
a[3] // 8
Профи могут определить и сеттер :)
4. Расширить String, чтобы принимал сабскрипт вида s[0..<3] и мог также устанавливать значения используя его
5. Добавить стрингу метод truncate, чтобы отрезал лишние символы и , если таковые были, заменял их на троеточие:
let s = "Hi hi hi"
s.truncate(4) // Hi h...
s.truncate(10) // Hi hi hi
25 Урок
1. Расширьте енум из урока и добавьте в него метод, помогающий установить соответствующий бит в переданную маску и метод, помогающий его прочитать. Эти методы должны принимать и возвращать маску, либо принимать адрес маски и менять его
2. Создать цикл, который будет выводить 1 байтное число с одним установленным битом в такой последовательности, чтобы в консоли получилась вертикальная синусоида
3. Создайте 64х битное число, которое представляет клетки на шахматной доске.
Установите биты так, что 0 - это белое поле, а 1 - черное. Младший бит это клетка а1 и каждый следующий байт начинается с клетки а (а2, а3, а4) и заканчивается клеткой h(h2, h3, h4). Выбирая клетки но индексу столбца и строки определите цвет клетки опираясь исключительно на значение соответствующего бита
a[1] // 4
a[3] // 8
Профи могут определить и сеттер :)
4. Расширить String, чтобы принимал сабскрипт вида s[0..<3] и мог также устанавливать значения используя его
5. Добавить стрингу метод truncate, чтобы отрезал лишние символы и , если таковые были, заменял их на троеточие:
let s = "Hi hi hi"
s.truncate(4) // Hi h...
s.truncate(10) // Hi hi hi
25 Урок
1. Расширьте енум из урока и добавьте в него метод, помогающий установить соответствующий бит в переданную маску и метод, помогающий его прочитать. Эти методы должны принимать и возвращать маску, либо принимать адрес маски и менять его
2. Создать цикл, который будет выводить 1 байтное число с одним установленным битом в такой последовательности, чтобы в консоли получилась вертикальная синусоида
3. Создайте 64х битное число, которое представляет клетки на шахматной доске.
Установите биты так, что 0 - это белое поле, а 1 - черное. Младший бит это клетка а1 и каждый следующий байт начинается с клетки а (а2, а3, а4) и заканчивается клеткой h(h2, h3, h4). Выбирая клетки но индексу столбца и строки определите цвет клетки опираясь исключительно на значение соответствующего бита
26 Урок
1. Для нашей структуры Point перегрузить операторы: -, -=, prefix —, postfix —, /, /=,
*=
2. Создать структуру Rect, аналог CGRect, содержащую структуру Size и Point.
Перегрузить операторы +, +=, -, -= для этой структуры.
3. Перегрузить оператор + и += для String, но второй аргумент должен быть Int
4. Создать свой оператор, который будет принимать 2 String и в первом аргументе,
при совпадении буквы с вторым аргументом, менять совпадения на заглавные буквы
27 Урок
1. Объявить протокол Food, который будет иметь проперти name (только чтение) и метод taste(), который будет выводить текст со вкусовыми ощущениями
2. Все продукты разных типов, которые вы принесли из супермаркета, находятся в сумке (массив) и все, как ни странно, реализуют протокол Food. Вам нужно пройтись по сумке, назвать предмет и откусить кусочек. Можете отсортировать продукты до имени. Используйте для этого отдельную функцию, которая принимает массив продуктов
3. Некоторые продукты могут испортиться, если их не положить в холодильник.
Создайте новый протокол Storable, он наследуется от протокола Food и содержит еще булевую проперти - expired. У некоторых продуктов замените Food на Storable.
Теперь пройдитесь по всем продуктам и, если продукт надо хранить в холодильнике, то перенесите его туда, но только если продукт не испорчен уже,
иначе просто избавьтесь от него. Используйте функцию для вывода продуктов для вывода содержимого холодильника
4. Добавьте проперти daysToExpire в протокол Storable. Отсортируйте массив продуктов в холодильнике. Сначала пусть идут те, кто быстрее портятся. Если срок совпадает, то сортируйте по имени.
5. Не все, что мы кладем в холодильник, является едой. Поэтому сделайте так,
чтобы Storable не наследовался от Food. Мы по прежнему приносим еду домой, но некоторые продукты реализуют теперь 2 протокола. Холодильник принимает только
те продукты, которые еще и Storable. функция сортировки должна по прежнему работать.