2compa - уроки Swift, язык программирования Swift

Xcode уроки. Урок 2. Язык Swift. Playgroung проект

В этом уроке будут кратко описаны некоторые особенности данного языка, разберём, что такое язык Swift и каков его синтаксис.

Цель урока: Знакомство с синтаксисом языка Swift: с его основными функциями, типами данных и структурами.

Что такое язык Swift?

Язык Swift – язык программирования для разработчиков iOS и macOS. Его разработка началась в июле 2010 года Крисом Лэттнером с возможным сотрудничеством многих других программистов в Apple, но основа была заложена еще в 1989–1995 годах на платформе NeXT.

Язык представляет собой альтернативу языка Objective-C и использует современные понятия теории языка программирования и стремится представить более простой синтаксис. С помощью данного языка процесс создания программ становится очень гибким и продуктивным, так как Swift вобрал в себя лучшие черты различных языков программирования (Objective–C, C, Java, RustHaskellRubyPythonC#, и ещё множество языков). Swift по производительности разрабатываемых программ приближается (а в некоторых случаях уже и обгоняет) к известному языку программирования C++ . Последняя версия этого языка (на момент написания урока) – Swift 4 (https://developer.apple.com/swift). Он до сих пор активно развивается и используется разработчиками, ввиду наличия огромного потенциала.

Язык Swift разработан с нуля со следующими отличительными особенностями:

  1. Скорость. Swift предназначен в качестве замены для Си языков (C, C++ и Objective-C). Как таковой, Swift должен быть сопоставим с этими языками в производительности для большинства задач, а в чем-то превосходить их.
  2. Ясность. Язык Swift легко читается, а код легко пишется. Его синтаксис довольно простой, понятный и последовательный.
  3. Безопасность. Swift был разработан с самого начала, чтобы быть более безопасным, чем Cи языки, и устраняет целые классы небезопасного кода. Переменные всегда инициализируются перед использованием, массивы и целые числа проверяются на переполнение, а память управляется автоматически. Синтаксис настроен так, чтобы было легко определить ваши намерения, например, простые три символа ключевые слова определяют переменную (var) или константу (let).
  4. Экономичность. Swift – небольшой язык, предоставляющий некоторые базовые операции и функциональные возможности и не более того. Остальное должно быть обеспечено вашим кодом или библиотеками кода, которые можно использовать – например, Cocoa.

Эти особенности делают использование языка Swift в разработке мобильных приложений приоритетнее. Для понимания основ программирования Swift – это гораздо более простой язык для работы. Мобильный разработчик Denis Mikan утверждает: «Swift ликвидирует трудности, которые скопились за много лет в языке Objective-C. Он призван, в первую очередь, облегчить ситуацию тех разработчиков, которые не имеют желания разбираться с огромными, сложными конструкциями Objective-C. Язык Swift так же откроет новую эру для непрофессиональных разработчиков, которые сейчас кроме разработки маленьких игр на JavaScript, так же смогут выбирать и этот язык»

Синтаксис SWIFT

Язык Swift схож с другими языками программирования. Swift активно использует переменные, константы, массивы, списки, условия, циклы, функции, классы, структуры и т.д.

Комментарии

Хорошо написанный программный код должен быть подкреплен комментариями, чтобы человек, впервые работающий с этим кодом, мог легко разобраться в нём. В языке Swift также, как и в языке Си, одиночные комментарии начинаются с двух косых черт. Многострочный комментарий начинается с «/*», после чего пишется какая-либо заметка, а заканчивается символами «*/». Пример комментариев:

1
//Это ваш одиночный комментарий

1
2
3
/*А это ваш 
многострочный 
комментарий */

Переменные

В языке Swift в конце строки не используется точка с запятой за исключением того, случая, когда в одной строке находится сразу две команды, тогда они разделяются точкой с запятой.

Объявление любой переменной выглядит следующим образом:

1
var имя_переменой = значение_переменной

После ключевого слова «var» идёт название переменной, а после оператора присваивания «=» идёт значение переменной. В языке Swift указание типа данных переменной не требуется. Swift проводит анализ заданного значения и присваивает переменной тип данных (например, числовое или строчное).

Основные типы данных: Int, Float, Double, String, bool. Чтобы изменить значение переменной достаточно обратится к переменной по её имени и, используя оператор присваивания «=» изменить значение. Повторно использовать ключевое слово «var» для уже созданной переменной не требуется.

Константа

Константа является той же переменной, но за исключением того, что изменять её значение в будущем невозможно. Объявление константы ничем не отличается от объявления любой переменной, за исключением того, что используется ключевое слово «let». Объявление константы выглядит следующим образом:

1
let имя_константы = значение_константы

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

В ходе разработки приложений очень часто требуется отследить изменения в переменной для ускорения процесса поиска ошибок. Для этой цели может использоваться встроенная глобальная функция print(), которая выводит сообщение в консоли Xcode.

Пример использования функции print(): print(a). Консоль выведет значение некой переменной «a». Для вывода определенного сообщения в консоли достаточно его заключить в кавычках внутри функции (print(«Hello, world! «)).

Арифметические действия

С числами, которые хранятся в переменных, можно производить арифметические действия (это можно делать и в других языках программирования). В языке Swift арифметические операции можно производить с числами любого типа данных (целые или дробные). Список доступных арифметический операций в Swift отображен в таблице:

Операция
Описание
+
Бинарный оператор сложения, который складывает операнд a с операндом b и выводит результат a+b.
Бинарный оператор вычитания, который вычитает из первого операнда a, операнд b и выводит результат a-b.
*
Бинарный оператор умножения, который перемножает операнд a с операндом b и выводит результат a*b.
/
Бинарный оператор деления, который выполняет деление операнда a с операндом b и выводит результат a/b.
%
Бинарный оператор остатка от деления, который делит первый операнд a на второй операнд b и возвращает остаток от деления a%b.
++
Унарный оператор инкремента, увеличивающий значение операнда на единицу.
— —
Унарный оператор декремента, уменьшающий значение операнда на единицу.

Кортежи

Одной из интересных функциональных возможностей языка являются кортежи. Кортеж – объект, который группирует значения различных типов в пределах одного составного значения.

Кортеж хранится в константах или в переменных. Объявление кортежа выглядит следующим образом:

1
let имя_константы = (Значение1, Значение2, …)

1
var имя_переменной = (Значение1, Значение2, …)

Например, объявим кортеж с тремя разными типами данных:

1
var cortege = (false, 256,"World")

В данном случае false – логическое значение типа Bool, 256 – целочисленное значение типа Int, «World» – строковое значение типа String. В результате данный кортеж группирует вместе значения трех различных типов данных, позволяя хранить их в пределах одной переменной.

Для доступа к элементам кортежа используется числовой индекс, указываемый через точку после названия кортежа:

1
2
3
4
var cortege = (false, 256,"World") 
print ("Значение bool: \(cortege.0)") 
print ("Значение Int: \(cortege.1)") 
print ("Значение String: \(cortege.2)")

В консоли отобразится:

1
2
3
Значение bool: false 
Значение Int: 256  
Значение String: World

Оператор ветвления if

Как и в других языках программирования, в Swift есть оператор ветвления if. Его синтаксис:

1
2
3
4
5
6
if условие_которое_проверяется {  
//действие, выполняемое при выполнении условия 
}  
else {  
//действие, выполняемое при невыполнении условия  
}

Массивы

Массивы хранятся в переменных или в константах, поэтому для объявления массива в языке Swift используются ключевые слова «let» или «var»:

1
let название_изменяемого_массива = ["Значение1","Значение2", …]

1
var название_незменяемого_массива = ["Значение1","Значение2", …]

Доступ к элементам массива осуществляется с помощью индекса, заключенного в скобках после названия массива (massive[2]). В языке Swift массивы имеют базовые свойства и некоторые методы для добавления, очистки, проверки на пустоту массива. Существует возможность создания многомерных массивов.

Словари

Ещё одна возможность Swift – Словари. Словари – неупорядоченные коллекции элементов одного типа, обратится к которым можно через специальные ключи. Каждый элемент словаря состоит из своего уникального ключа, который устанавливает разработчик. Синтаксис словаря выглядит следующим образом:

1
var название_словаря = ["Ключ1":"Значение1", "Ключ2":"Значение2", "Ключ3":"Значение3"]

Здесь Ключ1, Ключ2, Ключ3 – это уникальные ключи, которые служат для доступа к значениям словаря. Тип данных ключа – String, но такой тип данных не обязателен для ключа. Главное правило: ключ должен быть уникальным и не должен повторяться.

Пример объявления словаря и действий с ним:

1
2
3
4
5
6
7
8
9
var Country = ["Rus":"Russia", "USA":"America", "Ger":"Germany"] 
//получение значение элемента  
print(Country["Rus"])  
//изменение значения элемента  
Country["USA"] = "The United States of America" 
//добавление нового ключа и значения в словарь   
Country["Ita"] = "Italy"  
//удаление пары ключ-значение  
Country.removeValueForKey("Ger")

В результате в словаре появится измененное значение элемента с ключём USA, добавление нового ключа Ita и значения, а также удаление элемента с ключем Ger.

Циклы Swift

Как и другие языки программирования, Swift работает с циклами. Цикличное выполнение кода осуществляется операторами for, for-in, while и repeat while. Механизм работы циклов разный. Описание различных типов циклов, синтаксиса и их механизма работы приведены в таблице:

Оператор повторения
Механизм работы
Синтаксис
for
1. Инициализация начального значения, в котором объявляется некоторая начальная переменная.
2. Проверка условия окончания, если оно возвращает false, цикл завершает работу. Если возвращается значение true, цикл продолжает работу и выполняет блок кода.
3.После выполнения блока кода, начальное выражение меняет своё значение в зависимости от заданного действия.
4. Новая итерация и повторение действий с шага 2.
for начальное_выражение; условие_окончания; действие { блок кода }
for-in
Цикл выполняет блок кода для каждого элемента в последовательности. Перед каждой итерацией последующий элемент из последовательности присваивается объявленной переменной, которая доступна в блоке кода. После перебора всех элементов последовательности цикл завершает свою работу. for переменная in последовательность { блок кода }
While
Цикл выполняется до тех пор, пока условие истинно. Когда условие возвращает false, цикл завершает свою работу. while условие { блок кода }
repeat while
Такой цикл является циклом с последующей проверкой условия. Сначала происходит выполнение блока кода, а затем проверяется условие. Если условие возвращает true, цикл повторяется, если false – цикл завершает работу. repeat { блок кода } while условие

Playgroung проект

Playgroung проект – уникальное встроенное приложение, позволяющее изучать язык Swift интерактивно. Это среда для изучения основ программирования, созданная компанией Apple. Код, написанный пользователем, мгновенно компилируется, а результат тут же отображается.

Для создания нового playground проекта в первоначальном диалоговом окне создания проектов Xcode необходимо выбрать пункт «Get Started with a playground»:

1

Далее необходимо выбрать пустой шаблон «Blank» и нажать кнопку «Next»:

2

На следующей странице диалогового окна необходимо выбрать имя для проекта, а также путь размещения его. Проект представляет собой один специальный файл. После чего нажать кнопку «Create».

3

На экране отобразится первоначальный проект, в котором есть одна переменная str с текстом «Hello, playground» и сразу рядом в области результатов видно содержимое переменной.

4

Напишем простую программу, которая будет решать квадратное уравнение. Все коэффициенты можно менять по своему усмотрению, а содержимое всех созданных переменных отображается рядом в области результатов.

6

Вопросы для проверки себя

  1. Назовите основные базовые операторы языка Swift.
  2. Как объявляются переменные и константы?
  3. Зачем необходимо использовать комментарии в программном коде?
  4. С помощью какой встроенной функции можно выводить сообщения в консоль?
  5. В чём различие между переменными, кортежами, массивами и словарями?
  6. Назовите виды циклов в языке Swift.
  7. Что такое playground проект?