Файл: Константа и переменная.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 07.11.2023

Просмотров: 27

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

1 Урок
1) Прочитать доку apple касаемо этого урока
2) В
https://www.wikipedia.org найти значение слова константа и переменная и понять разницу этих значений
3) Создать характеристики студента, через константы или переменные, чтобы это было имя, фамилия, рост, вес, возраст.
Вывести красиво имя студента и фамилию в консоль, используя команду print
2 Урок
Домашнее задание:
1. Выведите в консоль минимальные и максимальные значения базовых типов, не ленитесь :)
2. Создайте 3 константы с типами Int, Float и Double
Создайте другие 3 константы, тех же типов: Int, Float и Double,
при чем каждая из них это сумма первых трех, но со своим типом
3. Сравните Int результат суммы с Double и выведите отчет в консоль
3 Урок
Домашнее задание:
1. Создать тюпл с тремя параметрами:
- максимальное количество отжиманий
- максимальное количество подтягиваний
- максимальное количество приседаний
Заполните его своими достижениями :)
Распечатайте его через print()

2. Также сделайте три отдельных вывода в консоль для каждого параметра
При том одни значения доставайте по индексу, а другие по параметру
3. Создайте такой же тюпл для другого человека (супруги или друга)
с такими же параметрами, но с другими значениями
Используйте промежуточную переменную чтобы поменять соответствующие значения первого тюпла на значения второго
4. Создайте третий тюпл с теми же параметрами, но значения это разница между соответствующими значениями первого и второго тюплов
Результат выведите в консоль
4 Урок
Домашнее задание:
1. Создать пять строковых констант
Одни константы это только цифры, другие содержат еще и буквы
Найти сумму всех этих констант приведя их к Int
(Используйте и optional binding и forced unwrapping)
2. С сервера к нам приходит тюпл с тремя параметрами:
statusCode, message, errorMessage (число, строка и строка)
в этом тюпле statusCode всегда содержит данные, но сама строка приходит только в одном поле
если statusCode от 200 до 300 исключительно, то выводите message,
в противном случает выводите errorMessage
После этого проделайте тоже самое только без участия statusCode
3. Создайте 5 тюплов с тремя параметрами:
имя, номер машины, оценка за контрольную при создании этих тюплов не должно быть никаких данных после создания каждому студенту установите имя некоторым установите номер машины некоторым установите результат контрольной выведите в консоль:
- имена студента
- есть ли у него машина
- если да, то какой номер
- был ли на контрольной
- если да, то какая оценка
5 Урок
1. Посчитать количество секунд от начала года до вашего дня рождения.
Игнорируйте високосный год и переходы на летнее и зимнее время. Но если хотите
- не игнорируйте :)
2. Посчитайте в каком квартале вы родились
3. Создайте пять переменных типа Инт и добавьте их в выражения со сложением,
вычитанием, умножением и делением. В этих выражениях каждая из переменных

должна иметь при себе унарный постфиксный или префиксный оператор.
Переменные могут повторяться.
Убедитесь что ваши вычисления в голове или на бумаге совпадают с ответом.
Обратите внимание на приоритет операций
4. Шахматная доска 8х8. Каждое значение в диапазоне 1…8. При заданных двух значениях по вертикали и горизонтали определите цвет поля. Если хотите усложнить задачу, то вместо цифр на горизонтальной оси используйте буквы a,b,c,d,e,f,g,h
6 Урок
1. Выполните задание 1 урока о базовых операторах: /skuter04

только вместо forced unwrapping и optional binding используйте оператор ??
Когда посчитаете сумму, то представьте свое выражение в виде строки
Например: 5 + nil + 2 + 3 + nil = 10
но в первом случае используйте интерполяцию строк, а во втором конкатенацию
2. Поиграйтесь с юникодом и создайте строку из 5 самых классных по вашему мнению символов,
можно использовать составные символы. Посчитайте длину строки методом SWIFT
и Obj-C
3. Создайте строку английский алфавит, все буквы малые от a до z задайте константу - один из символов этого алфавита
Используя цикл for определите под каким индексов в строке находится этот символ
7 Урок
1. создать массив "дни в месяцах"
12 элементов содержащих количество дней в соответствующем месяце используя цикл for и этот массив

- выведите количество дней в каждом месяце (без имен месяцев)
- используйте еще один массив с именами месяцев чтобы вывести название месяца + количество дней
- сделайте тоже самое, но используя массив тюплов с параметрами (имя месяца,
кол-во дней)
- сделайте тоже самое, только выводите дни в обратном порядке (порядок в массиве не меняется)
- для произвольно выбранной даты (месяц и день) посчитайте количество дней до этой даты от начала года
2. Сделайте первое задание к уроку номер 4 используя массивы:
(создайте массив опшинал интов и посчитайте сумму)
- в одном случае используйте optional binding
- в другом forced unwrapping

- а в третьем оператор ??
3. создайте строку алфавит и пустой массив строк в цикле пройдитесь по всем символам строки попорядку, преобразовывайте каждый в строку и добавляйте в массив, причем так, чтобы на выходе получился массив с алфавитом задом-наперед
8 Урок
1. Создайте дикшинари как журнал студентов, где имя и фамилия студента это ключ, а оценка за контрольную значение. Некоторым студентам повысьте оценки - они пересдали. Потом добавьте парочку студентов, так как их только что перевели к вам в группу. А потом несколько удалите, так как они от вас ушли :(
После всех этих пертурбаций подсчитайте общий балл группы и средний бал
2. Создать дикшинари дни в месяцах, где месяц это ключ, а количество дней - значение.


В цикле выведите ключ-значение попарно, причем один раз выведите через тюплы,
а другой раз пройдитесь по массиву ключей и для каждого из них доставайте значения.
3. Создать дикшинари , в которой ключ это адрес шахматной клетки (пример: a5,
b3, g8), а значение это Bool. Если у клетки белый цвет, то значение true, а если черный - false. Выведите дикшинари в печать и убедитесь что все правильно.
Рекомендация: постарайтесь все сделать используя вложенный цикл (объяснение в уроке).
9 Урок
1. Создать строку произвольного текста, минимум 200 символов. Используя цикл и оператор свитч посчитать количество гласных, согласных, цифр и символов.
2. Создайте свитч который принимает возраст человека и выводит описание жизненного этапа
3. У вас есть имя отчество и фамилия студента (русские буквы). Имя начинается с
А или О, то обращайтесь к студенту по имени, если же нет, то если у него отчество начинается на В или Д, то обращайтесь к нему по имени и отчеству, если же опять нет, то в случае если фамилия начинается с Е или З, то обращайтесь к нему только по фамилии. В противном случае обращайтесь к нему по полному имени.
4. Представьте что вы играете в морской бои и у вас осталось некоторое количество кораблей на поле 10Х10 (можно буквы и цифры, а можно только цифры). Вы должны создать свитч, который примет тюпл с координатой и выдаст один из вариантов: мимо, ранил, убил.
10 Урок
1. Создайте пару функций с короткими именами, которые возвращают строку с классным символом или символами. Например heart() возвращает сердце и т.п.
Вызовите все эти функции внутри принта для вывода строки этих символов путем конкатенации.
2. Опять шахматные клетки. Реализовать функцию, которая принимает букву и
символ и возвращает строку “белая” или “черная”. Строку потом распечатайте в консоль
3. Создайте функцию, которая принимает массив, а возвращает массив в обратном порядке. Можете создать еще одну, которая принимает последовательность и возвращает массив в обратном порядке. Чтобы не дублировать код, сделайте так,
чтобы функция с последовательностью вызывала первую.
4. Разберитесь с inout самостоятельно и выполните задание номер 3 так, чтобы функция не возвращала перевернутый массив, но меняла элементы в существующем. Что будет если убрать inout?
5. Создайте функцию, которая принимает строку, убирает из нее все знаки препинания, делает все гласные большими буквами, согласные маленькими, а цифры меняет на соответствующие слова (9 -> nine и тд)
11 Урок
1. Написать функцию, которая ничего не возвращает и принимает только один клоужер, который ничего не принимает и ничего не возвращает . Функция должна просто посчитать от 1 до 10 в цикле и после этого вызвать клоужер. Добавьте println в каждый виток цикла и в клоужер и проследите за очередностью выполнения команд.
2. Используя метод массивов sorted, отсортируйте массив интов по возрастанию и убыванию. Пример показан в методичке.
3. Напишите функцию, которая принимает массив интов и клоужер и возвращает инт. Клоужер должен принимать 2 инта (один опшинал) и возвращать да или нет. В
самой функции создайте опшинал переменную. Вы должны пройтись в цикле по массиву интов и сравнивать элементы с переменной используя клоужер. Если клоужер возвращает да, то вы записываете значение массива в переменную. в конце функции возвращайте переменную.
используя этот метод и этот клоужер найдите максимальный и минимальный элементы массива.


4. Создайте произвольную строку. Преобразуйте ее в массив букв. Используя метод массивов sorted отсортируйте строку так, чтобы вначале шли гласные в алфавитном порядке, потом согласные, потом цифры, а потом символы
5. Проделайте задание №3 но для нахождения минимальной и максимальной буквы из массива букв (соответственно скалярному значению)
12 Урок
1. Создать энум с шахматными фигруами (король, ферзь и т.д.). Каждая фигура должна иметь цвет белый либо черный (надеюсь намек понят), а так же букву и цифру для позиции. Создайте пару фигур с расположением на доске, так, чтобы черному королю был мат :) Поместите эти фигуры в массив фигур
2. Сделайте так, чтобы энумовские значения имели rawValue типа String. Каждому типу фигуры установите соответствующее английское название. Создайте функцию, которая выводит в консоль (текстово, без юникода) название фигуры,
цвет и расположение. Используя эту функцию распечатайте все фигуры в массиве.
3. Используя красивые юникодовые представления шахматных фигур, выведите в консоли вашу доску. Если клетка не содержит фигуры, то используйте белую или черную клетку. Это должна быть отдельная функция, которая распечатывает доску с фигурами (принимает массив фигур и ничего не возвращает)
4. Создайте функцию, которая будет принимать шахматную фигуру и тюпл новой позиции. Эта функция должна передвигать фигуру на новую позицию, причем перемещение должно быть легальным: нельзя передвинуть фигуру за пределы поля и нельзя двигать фигуры так, как нельзя их двигать в реальных шахматах (для мегамонстров программирования). Вызовите эту функцию для нескольких фигур и распечатайте поле снова.
5. Следите чтобы ваш код был красивым!
13 Урок
1. Создайте структуру студент. Добавьте свойства: имя, фамилия, год рождения,
средний бал. Создайте несколько экземпляров этой структуры и заполните их данными. Положите их всех в массив (журнал).

2. Напишите функцию, которая принимает массив студентов и выводит в консоль данные каждого. Перед выводом каждого студента добавляйте порядковый номер в
“журнале”, начиная с 1.
3. С помощью функции sorted отсортируйте массив по среднему баллу, по убыванию и распечатайте “журнал”.
4. Отсортируйте теперь массив по фамилии (по возрастанию), причем если фамилии одинаковые, а вы сделайте так чтобы такое произошло, то сравниваются по имени. Распечатайте “журнал”.
5. Создайте переменную и присвойте ей ваш существующий массив. Измените в нем данные всех студентов. Изменится ли первый массив? Распечатайте оба массива.
6. Теперь проделайте все тоже самое, но не для структуры Студент, а для класса.

Какой результат в 5м задании? Что изменилось и почему?
007. Уровень супермен
Выполните задание шахмат из урока по энумам используя структуры либо классы
14 Урок
1. Самостоятельно повторить проделанное в уроке
2. Добавить студенту property «Дата рождения» (пусть это будет еще одна структура, содержащая день, месяц, год) и два computed property: первое —
вычисляющее его возраст, второе — вычисляющее, сколько лет он учился (считать,
что он учился в школе с 6 лет, если студенту меньше 6 лет — возвращать 0)
3. Создать структуру «Отрезок», содержащую две внутренние структуры «Точки».
Структуру «Точка» создать самостоятельно, несмотря на уже имеющуюся в Swift’е.
Таким образом, структура «Отрезок» содержит две структуры «Точки» — точки A и
B (stored properties). Добавить два computed properties: « середина отрезка» и
«длина» (считать математическими функциями)


4. При изменении середины отрезка должно меняться положение точек A и B. При изменении длины, меняется положение точки B
15 Урок
1. Создать структуру “Описание файла” содержащую свойства:
- путь к файлу
- имя файла
- максимальный размер файла на диске
- путь к папке, содержащей этот файл
- тип файла (скрытый или нет)
- содержимое файла (можно просто симулировать контент)
Главная задача - это использовать правильные свойства там, где нужно, чтобы не пришлось хранить одни и те же данные в разных местах и т.д. и т.п.
2. Создайте энум, который будет представлять некую цветовую гамму. Этот энум должен быть типа Int и как raw значение должен иметь соответствующее 3 байтное представление цвета. Добавьте в этот энум 3 свойства типа: количество цветов в гамме, начальный цвет и конечный цвет.
3. Создайте класс человек, который будет содержать имя, фамилию, возраст, рост и вес. Добавьте несколько свойств непосредственно этому классу чтобы контролировать:
- минимальный и максимальный возраст каждого объекта
- минимальную и максимальную длину имени и фамилии
- минимально возможный рост и вес
- самое интересное, создайте свойство, которое будет содержать количество созданных объектов этого класса
16 Урок
Сделаем с вами небольшую игру
1. Создайте тип Комната. У комнаты есть размеры W на H. И создайте тип
Персонаж. У него есть координата в комнате X и Y. Реализуйте функцию, которая красивенько текстом будет показывать положение персонажа в комнате

2. Персонажу добавьте метод идти, который принимает энумчик лево, право, вверх,
вниз
Этот метод должен передвигать персонажа. Реализуйте правило что персонаж не должен покинуть пределы комнаты. Подвигайте персонажа и покажите это графически
3. Создать тип Ящик. У ящика также есть координата в комнате X и Y. Ящик также не может покидать пределы комнаты и ящик также должен быть распечатан вместе с персонажем в функции печати.
4. Теперь самое интересное, персонаж может двигать ящик, если он стоит на том месте, куда персонаж хочет попасть. Главное что ни один объект не может покинуть пределы комнаты. Подвигайте ящик :)
5. Добавьте точку в комнате, куда надо ящик передвинуть и двигайте :)
Для суперменов: можете добавить массив ящиков и можете сделать консольное приложение
17 Урок
Шахматная доска (Легкий уровень)
1. Создайте тип шахматная доска.
2. Добавьте сабскрипт, который выдает цвет клетки по координате клетки (буква и цифра).
3. Если юзер ошибся координатами - выдавайте нил
Крестики нолики (Средний уровень)
1. Создать тип, представляющий собой поле для игры в крестики нолики
На каждой клетке может быть только одно из значений: Пусто, Крестик, Нолик
Добавьте возможность красиво распечатывать поле