Перейти к содержимому

Практика 1. Практика к лекции 1

Цель: познакомиться с установкой и запуском Swift на Linux, освоить базовый цикл разработки (редактирование → запуск), научиться использовать REPL, строковую интерполяцию и простейший ввод-вывод. Попутно — сравнить синтаксис Swift с уже знакомым Python.

Рекомендации по выполнению:

  • Все задания выполняются на Linux (Ubuntu/Fedora). Xcode не используется.
  • Каждое задание оформляйте в отдельном файле (например, task1.swift, task2.swift).
  • Запускайте через swift имя_файла.swift.
  • Для быстрых экспериментов используйте Swift REPL (swift).
  • Сравнивайте полученные ошибки компиляции с аналогичными ситуациями в Python — это поможет понять строгую типизацию.

A. Разминка — установка и проверка

  1. Установите Swift на свою систему Linux (если ещё не установлен). Выполните команду:
Окно терминала
swift --version

Скопируйте вывод в комментарий в начале файла task1.swift. Программа должна выводить строку с вашей версией Swift:

6.x.x
print("Swift установлен и работает!")

Запустите:

Окно терминала
swift task1.swift
  1. Hello, World! Создайте файл hello.swift с программой, выводящей "Hello, World!". Запустите файл через swift hello.swift. При желании сравните с запуском аналогичного скрипта на Python.

B. Константы, переменные и интерполяция строк

  1. Визитная карточка. Напишите программу card.swift, которая объявляет константы с вашим именем, возрастом и городом, а затем выводит их через строковую интерполяцию:
let name = "Азамат"
let age = 20
let city = "Москва"
print("Имя: \(name)")
print("Возраст: \(age)")
print("Город: \(city)")

Ожидаемый вывод:

Имя: Азамат
Возраст: 20
Город: Москва

Добавьте четвёртую строку, которая выводит: "Через 10 лет мне будет \(age + 10) лет".

  1. Разница let / var. Создайте файл let_var.swift:
    • Объявите константу pi со значением 3.14159.
    • Объявите переменную counter со значением 0.
    • Увеличьте counter на 1 три раза и выведите результат.
    • Попробуйте присвоить новое значение pi — закомментируйте строку с ошибкой и добавьте комментарий с текстом ошибки компилятора.

C. REPL-эксперименты

  1. Запустите Swift REPL (swift) и выполните следующие действия. Результаты каждого шага запишите в файл repl_log.swift в виде комментариев:
    • Объявите константу типа String и выведите её.
    • Объявите переменную типа Int и измените её значение.
    • Попробуйте присвоить строку "hello" целочисленной переменной — запишите сообщение об ошибке.
    • Вычислите выражение 10 / 3 и 10.0 / 3.0 — сравните результаты и объясните разницу в комментарии.
    • Выполните type(of: 3.14) и type(of: 42) — запишите результаты.

D. Арифметика и простой калькулятор

  1. Калькулятор. Напишите программу calc.swift, которая объявляет две целочисленные константы a и b, а затем выводит результаты всех базовых операций:
let a = 17
let 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 = 22
17 - 5 = 12
17 * 5 = 85
17 / 5 = 3
17 % 5 = 2

Добавьте вывод результата вещественного деления (подсказка: Double(a) / Double(b)).


E. Сравнение с Python

  1. Таблица умножения. Напишите программу, выводящую таблицу умножения для числа 7 (от 1 до 10). Реализуйте два варианта:

Вариант на Python (mult_table.py):

n = 7
for i in range(1, 11):
print(f"{n} x {i} = {n * i}")

Вариант на Swift (mult_table.swift):

let n = 7
for i in 1...10 {
print("\(n) x \(i) = \(n * i)")
}

Скомпилируйте и запустите оба. В комментариях в файле Swift отметьте минимум три синтаксических отличия между версиями.

  1. Обмен значениями. Напишите программу, которая меняет значения двух переменных местами. Сделайте это:
    • Через третью временную переменную.
    • Через кортеж (tuple swap): (a, b) = (b, a).

Выведите значения до и после обмена. Сравните с аналогичным кодом на Python.


F. Мини-проект — «Профиль студента»

  1. Создайте программу profile.swift, которая:
    • Объявляет константы: имя (String), год рождения (Int), университет (String), курс (Int), средний балл (Double).
    • Вычисляет возраст на основе текущего года (задайте let currentYear = 2026).
    • Выводит отформатированный профиль:
╔══════════════════════════════╗
║ ПРОФИЛЬ СТУДЕНТА ║
╠══════════════════════════════╣
║ Имя: Иван Петров ║
║ Возраст: 20 лет ║
║ Университет: МГУ ║
║ Курс: 2 ║
║ Средний балл: 4.75 ║
╚══════════════════════════════╝
  • Выводит сообщение: является ли студент отличником (средний балл >= 4.5).

Подсказки:

  • Используйте let, где значение не меняется, и var только там, где оно действительно изменяется.
  • Для рамки используйте Unicode-символы: , , , , , , , .
  1. Расширение профиля. Добавьте в программу 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.