Практика 1. Практика к лекции 1
Цель: познакомиться с установкой и запуском Swift на Linux, освоить базовый цикл разработки (редактирование → запуск), научиться использовать REPL, строковую интерполяцию и простейший ввод-вывод. Попутно — сравнить синтаксис Swift с уже знакомым Python.
Рекомендации по выполнению:
- Все задания выполняются на Linux (Ubuntu/Fedora). Xcode не используется.
- Каждое задание оформляйте в отдельном файле (например,
task1.swift,task2.swift). - Запускайте через
swift имя_файла.swift. - Для быстрых экспериментов используйте Swift REPL (
swift). - Сравнивайте полученные ошибки компиляции с аналогичными ситуациями в Python — это поможет понять строгую типизацию.
A. Разминка — установка и проверка
- Установите Swift на свою систему Linux (если ещё не установлен). Выполните команду:
swift --versionСкопируйте вывод в комментарий в начале файла task1.swift. Программа должна выводить строку с вашей версией Swift:
print("Swift установлен и работает!")Запустите:
swift task1.swift- Hello, World! Создайте файл
hello.swiftс программой, выводящей"Hello, World!". Запустите файл черезswift hello.swift. При желании сравните с запуском аналогичного скрипта на Python.
B. Константы, переменные и интерполяция строк
- Визитная карточка. Напишите программу
card.swift, которая объявляет константы с вашим именем, возрастом и городом, а затем выводит их через строковую интерполяцию:
let name = "Азамат"let age = 20let city = "Москва"
print("Имя: \(name)")print("Возраст: \(age)")print("Город: \(city)")Ожидаемый вывод:
Имя: АзаматВозраст: 20Город: МоскваДобавьте четвёртую строку, которая выводит: "Через 10 лет мне будет \(age + 10) лет".
- Разница let / var. Создайте файл
let_var.swift:- Объявите константу
piсо значением3.14159. - Объявите переменную
counterсо значением0. - Увеличьте
counterна 1 три раза и выведите результат. - Попробуйте присвоить новое значение
pi— закомментируйте строку с ошибкой и добавьте комментарий с текстом ошибки компилятора.
- Объявите константу
C. REPL-эксперименты
- Запустите Swift REPL (
swift) и выполните следующие действия. Результаты каждого шага запишите в файлrepl_log.swiftв виде комментариев:- Объявите константу типа
Stringи выведите её. - Объявите переменную типа
Intи измените её значение. - Попробуйте присвоить строку
"hello"целочисленной переменной — запишите сообщение об ошибке. - Вычислите выражение
10 / 3и10.0 / 3.0— сравните результаты и объясните разницу в комментарии. - Выполните
type(of: 3.14)иtype(of: 42)— запишите результаты.
- Объявите константу типа
D. Арифметика и простой калькулятор
- Калькулятор. Напишите программу
calc.swift, которая объявляет две целочисленные константыaиb, а затем выводит результаты всех базовых операций:
let a = 17let b = 5
print("\(a) + \(b) = \(a + b)")print("\(a) - \(b) = \(a - b)")print("\(a) * \(b) = \(a * b)")print("\(a) / \(b) = \(a / b)")print("\(a) % \(b) = \(a % b)")Ожидаемый вывод:
17 + 5 = 2217 - 5 = 1217 * 5 = 8517 / 5 = 317 % 5 = 2Добавьте вывод результата вещественного деления (подсказка: Double(a) / Double(b)).
E. Сравнение с Python
- Таблица умножения. Напишите программу, выводящую таблицу умножения для числа 7 (от 1 до 10). Реализуйте два варианта:
Вариант на Python (mult_table.py):
n = 7for i in range(1, 11): print(f"{n} x {i} = {n * i}")Вариант на Swift (mult_table.swift):
let n = 7for i in 1...10 { print("\(n) x \(i) = \(n * i)")}Скомпилируйте и запустите оба. В комментариях в файле Swift отметьте минимум три синтаксических отличия между версиями.
- Обмен значениями. Напишите программу, которая меняет значения двух переменных местами. Сделайте это:
- Через третью временную переменную.
- Через кортеж (tuple swap):
(a, b) = (b, a).
Выведите значения до и после обмена. Сравните с аналогичным кодом на Python.
F. Мини-проект — «Профиль студента»
- Создайте программу
profile.swift, которая:- Объявляет константы: имя (
String), год рождения (Int), университет (String), курс (Int), средний балл (Double). - Вычисляет возраст на основе текущего года (задайте
let currentYear = 2026). - Выводит отформатированный профиль:
- Объявляет константы: имя (
╔══════════════════════════════╗║ ПРОФИЛЬ СТУДЕНТА ║╠══════════════════════════════╣║ Имя: Иван Петров ║║ Возраст: 20 лет ║║ Университет: МГУ ║║ Курс: 2 ║║ Средний балл: 4.75 ║╚══════════════════════════════╝- Выводит сообщение: является ли студент отличником (средний балл >= 4.5).
Подсказки:
- Используйте
let, где значение не меняется, иvarтолько там, где оно действительно изменяется. - Для рамки используйте Unicode-символы:
╔,╗,╠,╣,╚,╝,║,═.
- Расширение профиля. Добавьте в программу
profile.swift:
- Вывод количества полных лет обучения (текущий курс минус 1).
- Вывод оставшихся курсов до выпуска (предположим, всего 4 курса).
- Строку:
"Студент <имя> завершит обучение в <год> году"— вычислите год окончания.
G. Критерии оценивания
- Корректность компиляции и запуска всех программ на Linux: 0–4 балла
- Правильное использование
let/var, строковой интерполяции и базовых типов: 0–4 балла - Полнота выполнения заданий (все 10 пунктов): 0–4 балла
- Оформление кода: комментарии, именование, читаемость: 0–4 балла
Максимум: 16 баллов. Бонус до +2 за задания из раздела «Дополнительно».
H. Дополнительно (по желанию)
- Напишите программу, читающую ввод пользователя через
readLine()и приветствующую его по имени. - Измерьте время запуска
swift file.swiftдля файла с 1000 строкамиprint(...)— сравните с запуском аналогичного Python-скрипта. - Создайте простейший Swift Package (
swift package init --type executable) и соберите проект черезswift build.