Ava8 / GB-Swift

swift gb labs works

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

lab 1
lab 2
lab 3
lab 4
lab 5
lab 6
lab 7

lab 1

Темы:

  • константы и переменные
  • основные типы данных
  • коллекции: массив, словарь, набор (или множество)
  • преобразование типов
  • опциональный тип
  • опциональная привязка
  • значение по умолчанию

Задание:

  1. Решить квадратное уравнение: задаёте параметры a, b и c в начале программы, выводите в консоль корни.
  2. Даны катеты прямоугольного треугольника. Найти площадь, периметр и гипотенузу треугольника.
  3. В начале программы задаётся сумма вклада в банк и годовой процент. Найти сумму вклада через 5 лет.

lab 2

Темы:

  • базовые операторы и их полиморфизм
  • присваивание
  • арифметические операторы
  • составные выражения и присваивания
  • операторы сравнения
  • логические операторы
  • тернарный оператор, конструкция если-иначе, switch
  • for-in, while, repeat-while
  • операторы передачи управление
  • функции и параметры
  • область видимости

Задание:

  1. Написать функцию, которая определяет четное число или нет.

  2. Написать функцию, которая определяет, делится ли число без остатка на 3.

  3. Создать возрастающий массив из 100 чисел.

  4. Удалить из этого массива все четные числа и все числа, которые не делятся на 3.

  5. Написать функцию, которая добавляет в массив новое число Фибоначчи и добавить при помощи нее 100 элементов:
    Числа Фибоначчи определяются соотношениями Fn=Fn-1 + Fn-2.

  6. Заполнить массив из 100 элементов различными простыми числами. Натуральное число, большее единицы, называется простым, если оно делится только на себя и на единицу. Для нахождения всех простых чисел, не больше заданного числа n, следуя методу Эратосфена, нужно выполнить следующие шаги:

    • Выписать подряд все целые числа от двух до n (2, 3, 4, ..., n).
    • Пусть переменная p изначально равна двум — первому простому числу.
    • Зачеркнуть в списке числа от 2p до n, считая шагами по p (это будут числа кратные p: 2p, 3p, 4p, ...).
    • Найти первое не зачёркнутое число в списке, большее, чем p, и присвоить значению переменной p это число.
    • Повторять шаги c и d, пока возможно.

lab 3

Темы:

  • простые перечисления
  • перечисления со значением
  • связанные значения
  • структуры

Задание:

  1. Описать несколько структур - любой легковой автомобиль и любой грузовик.

  2. Структуры должны содержать марку авто, год выпуска, объем багажника/кузова, стоятние запущен ли двигатель, открыты ли окна, заполненный объем багажника.

  3. Описать перечисление с возможными действиями с автомобилем - запустить/заглушить двигатель, открыть/закрыть окна, погрузить/выгрузить из кузова/багажника груз определенного объема.

  4. Добавить в ваши структуры метод с одним аргументом типа вашего перечисления, который будет менять свойства структуры в зависимости от действия.

  5. Инициализировать несколько экземпляров ваших структур. Применить к ним различные действия.

  6. Вывести значения свойств экземпляров в консоль.

lab 4

Темы:

  • классы: свойства и методы
  • ссылочный тип
  • наследование
  • деинециализация
  • Arc и управление памятью
  • счётчик ссылок
  • циклы удержания и слабые ссылки

Задание:

  1. Описать класс Car c общими свойствами автомобилей и пустым методом действия.

  2. Описать пару его наследников tunkCar и sportСar. Описать в них свойства, отличающиеся для спортивного автомобиля и цистерны.

  3. В каждом подклассе реализовать метод действия с автомобилем в соответствии с его классом.

  4. Создать несколько объектов каждого класса. Применить к ним различные действия.

  5. Вывести значения свойств экземпляров в консоль.

lab 5

Темы:

  • протоколы
  • расширения
  • полиморфизм
  • композиция
  • стандартные протоколы

Задание:

  1. Создать протокол Car и описать свойства, общие для автомобилей, а также метод действия.

  2. Создать расширения для протокола Car и реализовать в нем методы конкретных действий с автомобилем - открыть/закрыть окно, запустить/заглушить двигатель и т.д. По одному методу на действие, реализовывать следует только те действия, реализация которых общая для всех автомобилей.

  3. Создать два класса, имплементирующих протокол Car - tunkCar и sportСar. Описать в них свойства, отличающиеся для спортивного автомобиля и цистерны.

  4. Для каждого класса написать расширение, имплементирующее протокол CustomStringConvertible.

  5. Создать несколько объектов каждого класса. Применить к ним различные действия.

  6. Вывести сами объекты в консоль.

lab 6

Темы:

  • дженерики
  • subscripting
  • замыкания

Задание:

  1. Реализовать свой тип коллекции очередь (queue) c использованием дженериков.

  2. Добавить ему несколько методов высшего порядка полезных для этой коллекции (пример: filter для массивов)

lab 7

Темы:

  • error
  • nil
  • guard
  • try/catch

Задание:

  1. Придумать класс, методы которого могут создавать непоправимые ошибки. Реализовать их при помощи throw и протокола Error.

  2. Вызвать методы вашего класса, обрабатывая ошибки при помощи try и catch

About

swift gb labs works


Languages

Language:Swift 100.0%