lab 1
lab 2
lab 3
lab 4
lab 5
lab 6
lab 7
Темы:
- константы и переменные
- основные типы данных
- коллекции: массив, словарь, набор (или множество)
- преобразование типов
- опциональный тип
- опциональная привязка
- значение по умолчанию
Задание:
- Решить квадратное уравнение: задаёте параметры a, b и c в начале программы, выводите в консоль корни.
- Даны катеты прямоугольного треугольника. Найти площадь, периметр и гипотенузу треугольника.
- В начале программы задаётся сумма вклада в банк и годовой процент. Найти сумму вклада через 5 лет.
Темы:
- базовые операторы и их полиморфизм
- присваивание
- арифметические операторы
- составные выражения и присваивания
- операторы сравнения
- логические операторы
- тернарный оператор, конструкция если-иначе, switch
- for-in, while, repeat-while
- операторы передачи управление
- функции и параметры
- область видимости
Задание:
-
Написать функцию, которая определяет четное число или нет.
-
Написать функцию, которая определяет, делится ли число без остатка на 3.
-
Создать возрастающий массив из 100 чисел.
-
Удалить из этого массива все четные числа и все числа, которые не делятся на 3.
-
Написать функцию, которая добавляет в массив новое число Фибоначчи и добавить при помощи нее 100 элементов:
Числа Фибоначчи определяются соотношениями Fn=Fn-1 + Fn-2. -
Заполнить массив из 100 элементов различными простыми числами. Натуральное число, большее единицы, называется простым, если оно делится только на себя и на единицу. Для нахождения всех простых чисел, не больше заданного числа n, следуя методу Эратосфена, нужно выполнить следующие шаги:
- Выписать подряд все целые числа от двух до n (2, 3, 4, ..., n).
- Пусть переменная p изначально равна двум — первому простому числу.
- Зачеркнуть в списке числа от 2p до n, считая шагами по p (это будут числа кратные p: 2p, 3p, 4p, ...).
- Найти первое не зачёркнутое число в списке, большее, чем p, и присвоить значению переменной p это число.
- Повторять шаги c и d, пока возможно.
Темы:
- простые перечисления
- перечисления со значением
- связанные значения
- структуры
Задание:
-
Описать несколько структур - любой легковой автомобиль и любой грузовик.
-
Структуры должны содержать марку авто, год выпуска, объем багажника/кузова, стоятние запущен ли двигатель, открыты ли окна, заполненный объем багажника.
-
Описать перечисление с возможными действиями с автомобилем - запустить/заглушить двигатель, открыть/закрыть окна, погрузить/выгрузить из кузова/багажника груз определенного объема.
-
Добавить в ваши структуры метод с одним аргументом типа вашего перечисления, который будет менять свойства структуры в зависимости от действия.
-
Инициализировать несколько экземпляров ваших структур. Применить к ним различные действия.
-
Вывести значения свойств экземпляров в консоль.
Темы:
- классы: свойства и методы
- ссылочный тип
- наследование
- деинециализация
- Arc и управление памятью
- счётчик ссылок
- циклы удержания и слабые ссылки
Задание:
-
Описать класс Car c общими свойствами автомобилей и пустым методом действия.
-
Описать пару его наследников tunkCar и sportСar. Описать в них свойства, отличающиеся для спортивного автомобиля и цистерны.
-
В каждом подклассе реализовать метод действия с автомобилем в соответствии с его классом.
-
Создать несколько объектов каждого класса. Применить к ним различные действия.
-
Вывести значения свойств экземпляров в консоль.
Темы:
- протоколы
- расширения
- полиморфизм
- композиция
- стандартные протоколы
Задание:
-
Создать протокол Car и описать свойства, общие для автомобилей, а также метод действия.
-
Создать расширения для протокола Car и реализовать в нем методы конкретных действий с автомобилем - открыть/закрыть окно, запустить/заглушить двигатель и т.д. По одному методу на действие, реализовывать следует только те действия, реализация которых общая для всех автомобилей.
-
Создать два класса, имплементирующих протокол Car - tunkCar и sportСar. Описать в них свойства, отличающиеся для спортивного автомобиля и цистерны.
-
Для каждого класса написать расширение, имплементирующее протокол CustomStringConvertible.
-
Создать несколько объектов каждого класса. Применить к ним различные действия.
-
Вывести сами объекты в консоль.
Темы:
- дженерики
- subscripting
- замыкания
Задание:
-
Реализовать свой тип коллекции очередь (queue) c использованием дженериков.
-
Добавить ему несколько методов высшего порядка полезных для этой коллекции (пример: filter для массивов)
Темы:
- error
- nil
- guard
- try/catch
Задание:
-
Придумать класс, методы которого могут создавать непоправимые ошибки. Реализовать их при помощи throw и протокола Error.
-
Вызвать методы вашего класса, обрабатывая ошибки при помощи try и catch