Swift. Основы разработки приложений под iOS и macOS
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабын онлайн тегін оқу  Swift. Основы разработки приложений под iOS и macOS

 

Василий Усов
Swift. Основы разработки приложений под iOS, iPadOS и macOS. 6-е изд. дополненное и переработанное
2020

Литературный редактор М. Петруненко

Художник В. Мостипан

Корректоры С. Беляева, Н. Викторова


 

Василий Усов

Swift. Основы разработки приложений под iOS, iPadOS и macOS. 6-е изд. дополненное и переработанное. — СПб.: Питер, 2020.

 

ISBN 978-5-4461-1796-3

© ООО Издательство "Питер", 2020

 

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

 

Посвящается моим родным

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

Спасибо супруге за то, что рядом, за то, что стала моим вдохновением.

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

Спасибо небольшой команде начинающих и состоявшихся разработчиков и IT-специалистов. Без вас книга не была бы такой, какая она есть:

Тимуру — @tima5959

Александру — @mosariot

Виктору — @krylwte

Рустаму — @Zed_Null

Денису — @g01dt00th

Игорю — @iAryslanov

Олегу — @GodOfSwift

Читателю

Привет! Меня зовут Василий Усов. Я автор учебных материалов по разработке на Swift под iOS и macOS. Прошло уже более пяти лет с написания первой книги по Swift, но ежегодно я обновляю и дополняю ее, описывая нововведения языка, и корректирую в соответствии с вашими рекомендациями и просьбами.

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


ПРИМЕЧАНИЕ Писать книги по программированию, как и любую другую техническую литературу, — дело совершенно неприбыльное и отнимающее просто гигантское количество личного времени. Каждое издание книги пишется не менее 5 месяцев, а основная часть прибыли достается магазинам, дистрибьюторам и издателям, оставляя автору не более 5 %.

Если вы скачали книгу в Сети, но нашли ее очень полезной, то я буду благодарен, если вы внесете вклад в дальнейшее развитие проекта, совершив покупку на сайте https://swiftme.ru. С 2015 года и по сегодняшний день мои книги продаются только благодаря вашей поддержке.

Я рад каждому, кто зарегистрировался на сайте или добавился в Telegram-канал. Неважно, сколько вам лет: 15 или 40. Желание разрабатывать приложения уже само по себе бесценно, так как именно оно приведет вас к тому, чтобы создать «то самое приложение», которое совершит очередную революцию.

Если вы еще учитесь в школе, то это прекрасно, что поздно вечером вы не заставляете своих родителей переживать, а мирно сидите перед монитором с этой книгой в руках и изучаете невероятный язык Swift. Я также уверен, что вы не против купить новую модель iPhone, на который можно заработать, создав свое собственное приложение. И вот что я скажу: у вас все получится!

Если вы уже учитесь в институте, то Swift — это то, что будет держать ваш ум в тонусе. Помните, что многие из известных новаторов придумали и реализовали свои удивительные идеи именно в вашем возрасте. Сейчас вы находитесь на пике активности, воспользуйтесь этим!

Если вы старше, то наверняка у вас созрела гениальная идея, для реализации ­которой вы и пришли в разработку. Swift — это именно тот инструмент, который вам необходим. Главное, погрузившись в разработку, не забывайте о своих близких, хотя уверен, что они с полным пониманием отнесутся к вашему начинанию.

Дарите этому миру добро и прекрасные приложения! Добро пожаловать во вселенную Swift.

Присоединяйтесь к нам

Самые важные ссылки я собрал в одном месте. Обязательно посетите каждую из них, это поможет в изучении материала книги.

Сайт сообщества

https://swiftme.ru

Swiftme.ru — это развивающееся сообщество программистов на Swift. Здесь вы найдете ответы на вопросы, возникающие в ходе обучения и разработки, а также уроки и курсы, которые помогут вам глубоко изучить тему разработки приложений.

Курс с видеоуроками, тестами, домашними заданиями и дополнительными материалами

https://swiftme.ru/course16

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

Мы в Telegram

https://swiftme.ru/telegramchat или https://t.me/usovswift

Если по ходу чтения книги у вас появились вопросы, то вы можете задать их в нашем чате в Telegram.

Опечатки книги

https://swiftme.ru/typo16

Здесь вы можете посмотреть перечень всех опечаток, а также оставить информацию о найденных вами и еще не отмеченных. Документ создан в Google Docs, для доступа нужен Google-аккаунт.

Листинги

https://swiftme.ru/listings16

Здесь вы можете найти большую часть листингов и проектов, создаваемых в книге.

Введение

На ежегодной конференции для разработчиков Apple WWDC (WorldWide Developers Conference) 2 июня 2014 года компания удивила iOS-общественность, представив новый язык программирования — Swift. Это стало большой неожиданностью: максимум, на что рассчитывали разработчики, — это обзор возможностей iOS 8 и новые API для работы с ними.

Начиная с 2014 года и по настоящий момент Swift активно развивается. Сегодня он стал основным языком разработки под платформу Apple, опередив все еще популярный язык Objective-C1. Swift — это язык программирования с открытым исходным кодом, а значит, он скоро будет поддерживаться и другими операционными системами2.

Если вы когда-либо программировали на других языках, то могу предположить, что после знакомства со Swift и со всем многообразием его возможностей вы не захотите возвращаться в «старый лагерь». Имейте в виду, что Swift затягивает и не отпускает!

Для кого написана книга

Ответьте для себя на следующие вопросы:

• Хотите ли вы научиться создавать программы под iOS, iPadOS, macOS, watchOS и tvOS?

• Вам больше нравится обучение в практической форме, чем скучные и монотонные теоретические лекции?

Если вы ответили на них утвердительно, то эта книга для вас.

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

Не стоит бояться, Swift вовсе не отпугнет вас (как это мог бы сделать Objective-C), а процесс создания приложений окажется очень увлекательным. А если у вас есть идея потрясающего приложения, то совсем скоро вы сможете разработать его для современных мобильных систем iOS и iPadOS, стационарной системы macOS или Linux, смарт-часов Apple Watch или телевизионной приставки Apple TV.

Что нужно знать, прежде чем начать читать

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

Если вы раньше программировали на каких-либо языках, это очень поможет, так как у вас уже достаточно базовых знаний для успешного освоения материала. Если же это не так, не переживайте — я попытаюсь дать максимально полный материал, который позволит проходить урок за уроком.

Особенности Swift

Swift — это быстрый, современный, безопасный и удобный язык программирования. С его помощью процесс создания программ становится очень гибким и продуктивным, так как Swift вобрал в себя лучшее из таких языков, как C, Objective-C и Java. Swift на редкость удобен для изучения, восприятия и чтения кода. У него очень перспективное будущее.

Изучая Swift, вы удивитесь, насколько он превосходит другие языки программирования, на которых вы раньше писали. Его простота, лаконичность и невероятные возможности просто поразительны!

Современность

Swift — это комбинация последних изысканий в области программирования и опыта, полученного в процессе работы по созданию продуктов экосистемы Apple. Более того, Swift имеет очень большое сообщество и открытый исходный код, что позволяет оперативно добавлять в него новые возможности.

Объектно-ориентированность

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

Читабельность, экономичность и лаконичность кода

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

Безопасность

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

Производительность

Swift еще очень молод, но по производительности разрабатываемых программ он приближается (а в некоторых случаях уже и обгоняет) ко всем известному «старичку» — языку программирования C++.3

Актуальность

Благодаря активно растущему сообществу разработчиков, штаб-квартирой которых стал портал swift.org, язык Swift поддерживает свою актуальность и стабильность работы. Для русскоязычного сообщества есть несколько профильных сайтов, одним из которых является swiftme.ru.

Все это делает Swift по-настоящему удивительным языком программирования.

О том, как работать с книгой

Использование смартфонов для решения возникающих задач стало нормой. Поэтому все больше компаний используют приложения для своего бизнеса и выделяют большие бюджеты на их обслуживание. Операционная система iOS является одной из популярнейших мобильных систем в мире, и в такой ситуации спрос на Swift-разработчиков растет необычайными темпами.

Книга является вводным курсом для всех желающих научиться программировать на замечательном языке Swift, чтобы создавать собственные приложения или устроиться на работу iOS-разработчиком.

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

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

Проекты студентов

https://swiftme.ru/projects

Здесь вы можете найти проекты некоторых студентов, которые уже прошли обучение по нашим книгам и курсам. При желании вы сможете разместить здесь и свои работы. Просто напишите об этом в чате в Telegram.

 

Код и проекты в книге написаны с использованием Swift 5.3, iOS 14, Xcode 12 beta и операционной системы macOS 10.15 Catalina. Если у вас более свежие версии программного обеспечения (например, macOS 11 Big Sur и стабильная версия Xcode 12), то вполне возможно, что показанный на скриншотах интерфейс будет немного отличаться от вашего. При этом весь приведенный программный код с большой долей вероятности будет работать без каких-либо правок. Тем не менее если вы встретитесь ситуацией, при которой интерфейс или код необходимо исправить, то прошу сообщить мне об этом одним из способов:

• Отметить в специальном электронном файле (https://swiftme.ru/typo16).

• Написать в Telegram-канале (https://swiftme.ru/telegramchat или https://t.me/usovswift).

О самостоятельной работе

Очень важно, чтобы вы не давали своим рукам «простаивать». Тестируйте весь предлагаемый код и выполняйте все задания, так как учиться программировать, просто читая текст, — не лучший способ. Если в процессе изучения нового материала у вас появится желание поиграть с кодом из листингов, делайте это не откладывая. Постигайте Swift!

Не бойтесь ошибаться: пока вы учитесь, ошибки — ваши друзья. А исправлять их и избегать в будущем вам поможет среда разработки Xcode (о ней мы поговорим позже) и моя книга.

Помните: чтобы стать великим программистом, требуется время! Будьте терпеливы и внимательно изучайте материал. Желаю увлекательного путешествия!

Листинги

https://swiftme.ru/listings16

Здесь вы можете найти большую часть листингов и проектов, создаваемых в книге.

 

О домашних заданиях

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

Курс с видеоуроками, тестами, домашними заданиями и дополнительными материалами

https://swiftme.ru/course16

 

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

Заглядывайте в учебный раздел перед каждой главой книги — так вы будете в курсе всех имеющихся дополнительных материалов и заданий для самостоятельного решения.

Очень часто во время написания кода начинающие разработчики пользуются нехитрым приемом «копировать/вставить». Они копипастят все, начиная от решения домашних заданий и заканчивая найденными в Сети готовыми участками кода, решающими определенную проблему. Недостаток такого подхода в том, что чаще всего человек не разбирается в том, что копирует. Решение задачи проходит мимо и не оседает в его голове.

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

Я настоятельно советую разбирать каждый пример или рецепт и не гнаться за готовыми решениями. Каждое нажатие на клавиатуру, каждое написание символа должно быть осознанным.

Если у вас возникают проблемы с решением задания — обратитесь к нашему сообществу в Telegram.

Старайтесь решать задания самостоятельно, используя при этом помощь сообщества, книгу и другие справочные материалы. Но не ориентируйтесь на то, чтобы посмотреть (или правильнее — подсмотреть?) готовое решение.

Экспериментируйте, пробуйте, тестируйте — среда разработки выдержит даже самый некрасивый и неправильный код!

Исправления в шестом издании

В результате долгого и плодотворного общения со многими из вас была выработана масса идей, благодаря которым новое издание стало еще более полезным. Огромное спасибо всем участникам каналов в Telegram — с вашей помощью книга становится лучше и интереснее.

По сравнению с предыдущим изданием эта книга содержит следующие изменения и дополнения:

• Формат книги изменен (теперь она больше и толще).

• Учебный материал актуализирован в соответствии со Swift 5.3 и Xcode 12.

• Переписаны и обновлены большинство глав в книге.

• Добавлен новый материал, который ранее не входил в книгу:

• Пример использования фреймворка SwiftUI.

• О выборе между классами и структурами.

• О протокол-ориентированном программировании.

• О числовом типе данных Decimal.

• О ключевом слове some.

• О принципах работы ARC и хранении value type и reference type в памяти.

• О новых методах для работы с массивами.

• Добавлены разделы «Для чего это использовать», которые кратко показывают, для чего в реальных проектах могут быть использованы изученные возможности.

• Наборы (set) переименованы в множества.

Обновлены графические материалы (схемы, рисунки, графики и скриншоты).

• Исправлены найденные опечатки и учтены пожелания и замечания читателей по оформлению и содержанию.

Структура книги

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

Весь последующий материал книги разделен на шесть частей:

• Часть I. Базовые возможности Swift. После знакомства со средой разработки Xcode вы изучите базовые возможности Swift. Вы узнаете, какой синтаксис имеет Swift, что такое переменные и константы, какие типы данных существуют и как всем этим пользоваться при разработке программ.

• Часть II. Контейнерные типы данных. Что такое последовательности и коллекции и насколько они важны для создания ваших программ? В этой части книги вы познакомитесь с наиболее важными элементами языка программирования.

• Часть III. Основные возможности Swift. Третья часть фокусируется на рассмотрении и изучении наиболее простых, но очень интересных средств Swift, позволяющих управлять ходом выполнения приложений.

• Часть IV. Введение в разработку приложений. Эта часть посвящена изучению основ среды разработки Xcode, а также созданию двух первых консольных приложений.

• Часть V. Нетривиальные возможности Swift. В пятой части подробно описываются приемы работы с наиболее мощными и функциональными средствами Swift. Материал этой части вы будете использовать с завидной регулярностью при создании собственных приложений в будущем. Также здесь вас ждет большая практическая работа — создание первого интерактивного приложения в Xcode Playground.

• Часть VI. Введение в iOS-разработку. В конце долгого и увлекательного пути изучения языка и создания простых приложений вам предстоит окунуться в мир разработки полноценных программ. Из этой части вы узнаете основы создания интерфейсов и работы программ в Xcode «под капотом». Все это в будущем позволит вам с успехом осваивать новый материал и создавать прекрасные проекты.

Условные обозначения

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

Листинг

Это примеры программного кода.

Синтаксис

В таких блоках приводятся синтаксические конструкции с объяснением вариантов их использования.

 Такие блоки содержат указания, которые вам необходимо выполнить.

О важности изучения английского языка

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

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

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

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

• Мобильные приложения. Duolingo, Simpler, «Полиглот», Lingualeo и многие другие. В каждом из них есть свои положительные стороны, и каждое из них позволяет с пользой проводить 20–30 минут в общественном транспорте.

• Адаптированные книги. Вы можете купить, к примеру, «Тома Сойера» или «Алису в Стране чудес», но адаптированную для чтения новичками. Самое важное, что есть возможность выбора книг в соответствии с уровнем знания языка. К некоторым изданиям также прилагаются аудиоматериалы (тренировка восприятия речи на слух).

• Учебные видео на YouTube. Начинающим я бы посоветовал канал «Английский по плейлистам».

• Общение с носителями языка по Skype. Существует большое количество сервисов, где вы можете найти себе партнера для бесед (в большинстве случаев это платные услуги).

• Просмотр фильмов с оригинальной дорожкой. Именно это всегда было целью изучения мною английского языка!

Но, возможно, именно для вас правильным является обучение с преподавателем. Самое важное в этом деле — не бояться пробовать, не бояться ошибок! И советую — как можно раньше начинайте слушать речь: песни, фильмы с субтитрами, подкасты, так как знание не должно оканчиваться на умении читать.

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу comp@piter.com (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.

Swift отличается от Objective-C в сторону повышения удобства программирования. Однако в редких случаях при разработке программ вам, возможно, придется использовать вставки, написанные на Objective-C.

Приложения на Swift можно разрабатывать не только для операционных систем iOS, macOS, watchOS и tvOS, но и для Linux и Windows. Также есть решения, позволяющие писать на Swift и Server Side Code.

Соответствующие тесты периодически проводит и размещает на своем портале компания Primate Tabs — разработчик популярного тестера производительности Geekbench.

Соответствующие тесты периодически проводит и размещает на своем портале компания Primate Tabs — разработчик популярного тестера производительности Geekbench.

Swift отличается от Objective-C в сторону повышения удобства программирования. Однако в редких случаях при разработке программ вам, возможно, придется использовать вставки, написанные на Objective-C.

Приложения на Swift можно разрабатывать не только для операционных систем iOS, macOS, watchOS и tvOS, но и для Linux и Windows. Также есть решения, позволяющие писать на Swift и Server Side Code.

Подготовка к разработке Swift-приложений


Примечание Если вы не прочитали раздел «О том, как работать с книгой», то вернитесь к нему. В нем даны важные рекомендации по работе с книгой и дополнительными учебными материалами.

Сегодня Swift может быть использован не только для разработки приложений под платформу от Apple, но и под Linux, а также для написания Server Side-приложений. Моя цель — ввести вас в разработку под iOS, iPad и macOS. Тем не менее вы можете использовать ее и просто для изучения синтаксиса и возможностей языка для создания приложений под другие платформы.

Какие варианты обучения доступны

В этом разделе книги описаны основные доступные сегодня варианты обучения Swift. В качестве источника знаний вы будете использовать эту книгу, курс с домашними заданиями (https://swiftme.ru/course16), а также дополнительные материалы из Сети. Но вся сложность в том, где именно вам писать программный код, какую среду разработки использовать.

На сегодняшний день доступны следующие варианты:

1. Использовать компьютер Mac с операционной системой macOS и средой разработки Xcode. Данный вариант является наиболее предпочтительным и будет подробно описываться в книге.


Примечание У среды разработки Xcode есть конкурент — AppCode от JetBrains.

2. Использовать операционную систему Linux (например, Ubuntu), установив на нее пакет необходимых компонентов (https://swift.org/download), а также произвольный редактор кода с подсветкой синтаксиса Swift (один из вариантов — Sublime Text).

3. Использовать онлайн-редактор со встроенным компилятором Swift-кода (например, http://online.swiftplayground.run или один из его аналогов).

Каждый из указанных вариантов позволит вам попробовать Swift в деле, изучить его синтаксис и возможности, но если вы нацелены создавать приложения под платформу Apple, то вам необходим Mac, операционная система macOS и среда разработки Xcode (вариант № 1). Материал книги ориентирован именно на это.


Примечание О других способах изучения Swift и разработки собственных приложений, не имея при этом Mac, вы можете узнать в нашем чате в Telegram (https://swiftme.ru/telegramchat).

Подготовка к разработке на Mac

Компьютер Mac

Прежде чем приступить к разработке программ на языке Swift в macOS, вам потребуется несколько вещей. Для начала понадобится компьютер iMac, MacBook, Mac mini или Mac Pro с установленной операционной системой macOS. Лучше, если это будет macOS Catalina (10.15) или выше. В этом случае вы сможете использовать последнюю версию среды разработки Xcode и языка Swift.

Это первое и базовое требование связано с тем, что среда разработки приложений Xcode создана компанией Apple исключительно с ориентацией на собственную платформу. Под другие операционные системы ее не существует.

Если вы ранее никогда не работали с Xcode, то будете поражены широтой возможностей данной среды и необычным подходом к разработке приложений.

Зарегистрируйте учетную запись Apple ID

Следующим шагом станет получение учетной записи Apple ID и регистрация в центре Apple-разработчиков. Для этого необходимо пройти по ссылке https://developer.apple.com/register/ в вашем браузере (рис. 1).


Примечание Apple ID — это учетная запись, которая позволяет получить доступ к сервисам, предоставляемым фирмой Apple. Возможно, вы уже имеете личную учетную запись Apple ID. Она используется, например, при покупке мобильных приложений в AppStore или при работе с порталом iCloud.com.

Если у вас уже есть учетная запись Apple ID, используйте ее данные для входа в Центр разработчиков. Или нажмите кнопку Создайтесейчас и введите требуемые для регистрации данные.

Регистрация в качестве разработчика бесплатна. Таким образом, каждый может начать разрабатывать приложения, не заплатив за это ни копейки (если не учитывать стоимость компьютера). Тем не менее за 99 долларов в год вы можете участвовать в платной программе iOS-разработчиков (iOS Developer Program), которую вам предлагает Apple. Это обязательно, только когда решите опубликовать приложение в AppStore.

 

Рис. 1. Страница входа в Центр разработчиков

Советую пока не задумываться об этом, так как все навыки iOS-разработки можно получить с помощью бесплатной учетной записи и Xcode.

Скачайте и установите среду разработки Xcode

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


Примечание На момент написания книги Xcode 12 находился на этапе beta-тестирования. Именно beta-версия среды разработки была использована для учебного материала. С большой долей вероятности в данный момент на сайте разработчиков уже доступна стабильная версия Xcode 12, которую вам и следует использовать.

Чтобы скачать актуальную версию среды разработки Xcode, перейдите по ссылке Release, расположенной в верхнем правом углу страницы (рис. 2). После этого вы перейдете на страницу с релизными (стабильными) версиями программных средств. Найдите в списке Xcode, нажмите на кнопку View on the App Store, после чего произойдет переход в App Store. Для скачивания Xcode просто щелкните на кнопке Загрузить и при необходимости введите данные своей учетной записи Apple ID.

После завершения процесса установки вы сможете найти Xcode в Launchpad или в папке Программы в Доке.

 

Рис. 2. Перечень ресурсов, доступных в Центре разработчиков

Обзор Хcode

Мы начнем изучение программирования на языке Swift со знакомства со средой разработки Xcode.


Примечание Интегрированная среда разработки (Integrated Development Environment, IDE) — набор программных средств, используемых программистами для разработки программного обеспечения (ПО).

Среда разработки обычно включает в себя:

• текстовый редактор;

• компилятор и/или интерпретатор;

• средства автоматизации сборки;

• отладчик.

Xcode — это IDE, то есть среда создания приложений для iOS и macOS (и других продуктов Apple). Это наиболее важный инструмент, который использует разработчик, и он по-настоящему удивительный! Xcode предоставляет широкие возможности, и изучать их следует постепенно, исходя из поставленных и возникающих задач. Внешний вид рабочей среды приведен на рис. 3.

 

Рис. 3. Интерфейс Xcode

Именно с использованием этого интерфейса разрабатываются любые приложения для «яблочных» продуктов. При изучении Swift на первых этапах вы будете взаимодействовать с иной рабочей областью — рабочим интерфейсом playground-проектов. О нем мы поговорим чуть позже.

Xcode распространяется на бесплатной основе. Это многофункциональное приложение без каких-либо ограничений в своей работе. В Xcode интегрированы: пакет iOS SDK, редактор кода, редактор интерфейса, отладчик и многое другое. Также в него встроены симуляторы iPhone, iPad, Apple Watch и Apple TV. Это значит, что все создаваемые приложения вы сможете тестировать прямо в Xcode (без необходимости загрузки программ на реальные устройства). Подробно изу­чать состав и возможности данной IDe мы начнем непосредственно в процессе разработки приложений.

Я надеюсь, что вы уже имеете на своем компьютере последнюю версию Xcode, а значит, мы можем перейти к первому знакомству с этой замечательной средой. Для начала необходимо запустить Xcode. При первом запуске, возможно, вам придется установить некоторые дополнительные пакеты (все пройдет в автоматическом режиме при щелчке на кнопке Install в появившемся окне).

После скачивания и полной установки Xcode вы можете приступить к ее использованию. Чуть позже вы создадите свой первый проект, а сейчас просто взгляните на появившееся при запуске Xcode стартовое окно (рис. 4).

 

Рис. 4. Стартовое окно Xcode

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

• CreateanewXcodeproject — создать новый проект.

Cloneanexistingproject — подключить репозиторий (при использовании системы контроля версий Git).

OpenaProjectorFile — открыть уже существующий проект.

Правая часть окна содержит список созданных ранее проектов. В вашем случае, если вы запускаете Xcode впервые, данный список будет пустым. Но в скором времени он наполнится множеством различных проектов.


Примечание В названиях всех создаваемых в ходе чтения книги проектов я советую указывать номера глав и/или листингов. В будущем это позволит навести порядок в списке проектов и оградит вас от лишней головной боли.

Одной из потрясающих возможностей Xcode является наличие playground-проектов. Playground — это интерактивная среда разработки, своеобразная «песочница», или «игровая площадка», где вы можете комфортно тестировать создаваемый вами код и видеть результат его исполнения в режиме реального времени. С момента своего появления playground активно развивается. С каждой новой версией Xcode в нее добавляются все новые и новые возможности.

Представьте, что вам нужно быстро проверить небольшую программу. Для этой цели нет ничего лучше, чем playground-проект! Пример приведен на рис. 5.

 

Рис. 5. Пример playground-проекта

Как вы можете видеть, внешний вид интерфейса playground-проекта значительно отличается от рабочей области Xcode, которую вы видели ранее в книге. Повторю, что в playground-проекте можно писать код и сразу видеть результат его исполнения, но такой проект не служит для создания полноценных самостоятельных программ. Каждый playground-проект хранится в системе в виде особого файла с расширением playground.

Интерфейс playground-проекта

Нет способа лучше для изучения языка программирования, чем написание кода. Playground-проект предназначен именно для этого. Для создания нового playground-проекта выберите пункт главного меню File>New>Playground. Далее Xcode предложит вам выбрать типы создаваемого проекта (рис. 6), которые отличаются лишь предустановленным в проекте кодом.


Примечание Обратите внимание, что в верхней части окна есть возможность выбора платформы (iOS, tvOS, macOS).

Сейчас вам необходимо выбрать тип Blank, который содержит минимальное количество кода. После нажатия кнопки Next среда разработки попросит вас ввести имя создаваемого проекта. Измените имя на «Part 1 Basics» (или любое другое) и щелкните на кнопке Create. После этого откроется рабочий интерфейс созданного проекта (рис. 7).

 

Рис. 6. Окно выбора типа создаваемого проекта

 

Рис. 7. Рабочий интерфейс playground-проекта

С первого взгляда окно playground-проекта очень похоже на обыкновенный текстовый редактор. Но Xcode Playground имеет куда более широкие возможности.

Как показано на рис. 7, рабочее окно состоит из четырех основных областей.

• Toolbar, или панель инструментов, расположенная в верхней части окна. Данная область содержит кнопки управления окном и строку состояния.

• Navigators, или панель навигации, расположенная в левой части окна. С ее помощью вы можете производить навигацию по различным ресурсам, входящим в состав playground-проекта.

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

Нажмите на кнопку HideorshowtheNavigator
, расположенную в левой части Toolbar.

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

• Results, или панель результатов, расположенная в правой части окна. В ней будет отображаться результат выполнения кода, написанного в Code editor.

Нажмите на кнопку ExecutePlayground
, расположенную в нижней левой части Code editor.

Теперь на панели результатов отображается результат выполнения программного кода (рис. 8).

 

Рис. 8. Отображение значения в области результатов


Примечание Для принудительного запуска обработки кода вы можете использовать либо кнопку с изображением стрелки слева от строчки кода, либо кнопку Execute Playground, расположенную в нижней части окна (рис. 9).

Сейчас вы можете видеть результат выполнения строки 3 (значение параметра str) в области результатов. В дальнейшем мы вместе будем писать код и обсуждать результаты его выполнения.

Если навести указатель мыши на строку "Hello,playground" в области результатов, то рядом появятся две кнопки, как показано на рис. 10.

Левая кнопка (изображение глаза) включает отображение результата в отдельном всплывающем окне, правая — прямо в области кода.

Нажмите на каждую из кнопок и посмотрите на результат.

 

 

Рис. 9. Кнопки запуска обработки кода

Рис. 10. Дополнительные кнопки в области результатов

Возможности playground-проекта

Playground — это потрясающая платформа для разработки кода и написания обу­чающих материалов. Она просто создана для того, чтобы тестировать появляющиеся мысли и находить решения возникающих в процессе разработки проблем. У playground-проектов есть возможности, благодаря которым процесс разработки можно значительно улучшить.

В скором времени вы увидите, что в качестве результатов могут выводиться не только текстовые, но и графические данные. На рис. 11 показан проект, который будет реализован в книге.

В области результатов могут выводиться строки формата Ntimes, где N — целое число. Они говорят о том, что данная строка кода выводится N раз (рис. 12).

 

Рис. 11. Пример вывода графических элементов

 

Рис. 12. Вывод данных 5 раз в одной строке

Также Xcode имеет в своем арсенале такой полезный механизм, как автодополнение (в Xcode известное как автокомплит).

В редакторе кода на новой строке напишите латинский символ s, после чего вы увидите окно автодополнения (рис. 13).

 

Рис. 13. Окно автодополнения в Xcode

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

Одной из возможностей Хcode, которая значительно упрощает работу, является указание на ошибки в программном коде. Для каждой ошибки выводится подробная вспомогательная информация, позволяющая внести ясность и исправить недочет (рис. 14).

Также информация об ошибке выводится на консоли в области отладки (Debug Area), показанной на рис. 15. Вывести ее на экран можно одним из следующих способов:

• выбрав в меню пункт View>DebugArea>ShowDebugArea;

• щелкнув на кнопке ShowtheDebugArea

, расположенной в левом нижнем углу редактора кода.

 

Рис. 14. Отображение ошибки в окне playground-проекта

 

Рис. 15. Информация об ошибке выводится в Debug Area

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


Примечание Если Debug Area пуста, то просто запустите проект одним из рассмотренных ранее способов.

Удалите из редактора кода строку с ошибкой (с символом s).

Swift дает исчерпывающую информацию об используемых в коде объектах. Если нажать клавишу Option (Alt) и щелкнуть на любом объекте в области кода (например, на str), то появится вспомогательное окно, в котором можно узнать тип объекта, а также имя файла, где он расположен (рис. 16).

 

Рис. 16. Всплывающее окно с информацией об объекте

Среда Xcode вместе с playground-проектами предоставляет вам поистине фантастические возможности для реализации своих идей!

Часть I. Базовые возможности Swift

Вы стоите на пороге удивительного мира разработки приложений. С каждым пройденным разделом книги, с каждой изученной страницей и каждым выполненным заданием вы будете все ближе к своей цели — к карьере успешного программиста под iOS или macOS.

Swift — удобный и интересный язык программирования. Если вы работали с языками С, PHP, Python или другими, то уже скоро заметите их сходство с детищем Apple. В этой части книги вы узнаете о базовых понятиях, которые предшествуют успешному программированию. Я обучу вас основам синтаксиса и работы с различными фундаментальными механизмами, которые легли в основу разработки программ на языке Swift.

Глава 1. Отправная точка

Глава 2. Фундаментальные типы данных


Примечание Весь изученный материал должен подкрепляться решением практических задач. Для этого переходите на сайт https://swiftme.ru. Там вы найдете не только задания для самостоятельного решения, но и дополнительные главы, не вошедшие в книгу, и, в дальнейшем, видеоуроки по каждой теме.

Глава 1. Отправная точка

По моей статистике, примерно 50% читателей этой книги ранее не имели каких-либо знаний в области IT и опыта разработки (рис. 1.1). Только подумайте об этом! Каждый второй купивший книгу, каждый второй подключившийся к нашему чату в Telegram на старте обладает знаниями не большими, чем вы. Но при этом уже тысячи людей4, начавших свое обучение с моих книг, с успехом продолжают прокачивать свои навыки, создавая новые проекты.

 

Рис. 1.1. Статистика читателей книги


Примечание У каждого из вас за плечами свой уровень подготовки и разный опыт, каждый прошел свой собственный путь независимо от других. Все это накладывает определенные сложности при написании учебного материала: для кого-то он может быть слишком простым, а для кого-то чрезвычайно сложным! Найти золотую середину порой не так просто.

В первую очередь эта книга ориентирована на начинающих разработчиков. Помните, что вы всегда можете пропустить то, что уже знаете.

1.1. Вычислительное мышление

То, чем вам предстоит заниматься (разработка программ) помимо самого языка Swift и среды разработки Xcode, предоставит вам возможность получить более глубокие знания в областях устройства компьютера и теории программирования: принципы функционирования приложений, типы и структуры данных, алгоритмы, шаблоны программирования и многое-многое другое — все это откроется вам, если вы проявите достаточное упорство и стремление. И что самое важное, если вы разовьете в себе вычислительное мышление, благодаря которому сможете находить оптимальные пути решения поставленных задач. Но помните, эта книга должна стать лишь толчком, первым и самым важным шагом, но основной объем знаний вы получите именно в ходе дальнейшей самостоятельной работы.

Рассмотрим один пример5, который поможет вам понять, что такое вычислительное мышление. Представьте, что у вас есть 500-страничный телефонный справочник, в котором требуется найти телефонный номер Джона Смита (John Smith). Каким способом лучше всего решить данную задачу?


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

Самый простой вариант, который приходит на ум, — это открыть начало книги и листать страницу за страницей, пока Джон Смит не будет найден. Этот способ называется последовательным перебором. Поиск перебором довольно медленный, так как нам нужно анализировать каждую страницу (рис. 1.2). В самом плохом случае поиск Джона займет n действий, где n — количество страниц в справочнике. А при увеличении количества страниц количество действий будет расти пропорционально.

 

Рис. 1.2. Последовательный перебор каждой страницы справочника

Но мы могли бы пойти иным путем и немного изменить алгоритм поиска. Попробуем перелистывать не по одной, а по две страницы (рис. 1.3). И если вдруг на очередной странице мы поймем, что пропустили Джона, то просто перелистнем одну страницу назад. Данный вариант однозначно менее затратный, так как в самом плохом случае количество действий будет равно n/2, где n — количество страниц в справочнике. При этом если увеличить количество страниц в 2 раза (до 1000), то количество действий также пропорционально увеличится (до 500). Этот способ в 2 раза более эффективный, чем первый.

 

Рис. 1.3. Последовательный перебор каждой второй страницы справочника

Какие варианты решения данной задачи мы могли бы еще использовать? А что, если вместо последовательного просмотра страниц мы будем многократно делить справочник пополам, определяя, в какой из половин находится Джон Смит? Сперва мы делим справочник на два блока по 250 страниц и определяем, в какой из половин расположена искомая запись. Далее эту половину снова делим на два, получая блоки по 125, и повторяем данные операции, пока страница с Джоном не будет найдена.

Для нашего справочника в самом худшем случае поиск Джона будет состоять всего из 9 операций. А при увеличении количества страниц в 2 раза нам потребуется совершить всего одно дополнительное действие, чтобы разделить книгу пополам. Даже если справочник будет содержать миллиард страниц, поиск потребует не больше 30 действий!

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

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

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

 

Рис. 1.4. Программа и данные

Но программы не могут существовать без аппаратной составляющей, без компьютера. Опустимся на уровень ниже и посмотрим, как именно компьютер работает с вашими программами (алгоритмами и данными).


Примечание Включайтесь в обсуждение учебного материала книги в нашем чате в Telegram по ссылке https://swiftme.ru/telegramchat. Тут вы найдете более тысячи участников, новичков и более опытных разработчиков, способных помочь вам в процессе обучения.

1.2. Как компьютер работает с данными

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

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

 

Рис. 1.5. Функциональные уровни компьютера

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

Аппаратный уровень

Аппаратный уровень представлен физическим оборудованием компьютера. Это та основа, на которой базируются остальные уровни. Самые важные элементы аппаратного уровня — это центральный процессор (CPU, Central Processing Unit) и оперативная память.

Процессор — сердце любого современного электронного устройства (персонального компьютера, планшета, смартфона и т.д.). Компьютеры называются вычислительными машинами неспроста. Они постоянно обрабатывают числа и вычисляют значения, выполняя простые арифметические и логические операции. Все данные в любом компьютере превращаются в числа. Причем неважно, говорим мы о фотографии, любимой песне или книге, — для компьютера все это лишь нули и единицы. CPU как раз и предназначен для работы с числами. Он получает на вход несколько значений и, в зависимости от переданной команды (инструкции), выполняет с ними заданные операции.

Данные, с которыми работает процессор, хранятся во временном хранилище — оперативной памяти.

Оперативная память — это основное средство хранения данных, используемое программами в ходе их функционирования. Память компьютера состоит из миллионов отдельных ячеек, каждая из которых может хранить небольшой объем информацию. Каждая ячейка имеет уникальный адрес, по которому ее можно найти в памяти. Но размер ячейки не позволяет хранить в ней большое количество данных, по этой причине ячейки логически объединяются в хранилища данных (рис. 1.6).

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


Примечание Описание структуры и работы оперативной памяти здесь максимально упрощено. Это сделано для лучшего восприятия вами учебного материала и плавного перехода к простейшим понятиям. Их изучение — первый и обязательный шаг в вашем обучении.

Адреса ячеек (а соответственно и адреса хранилищ) — это наборы цифр, которые очень неудобны для использования программистами. По этой причине Swift, как и любой другой язык высокого уровня, вместо числовых адресов позволяет указывать удобные и понятные имена (идентификаторы), например username или myFriend, для хранения данных в оперативной памяти. Такие имена использовать намного проще, чем запоминать и передавать в программу настоящие адреса ячеек.

 

Рис. 1.6. Память с набором ячеек

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

 

Рис. 1.7. Память с записанными значениями

По идентификатору можно не только получить значение, но и изменить его. Если ВасилийУсов перестал дружить с ЖелезнымАрни, то новым другом мог бы стать СильвестрСталлоне. Для изменения потребуется лишь передать новое значение, используя уже существующий идентификатор friend1. И все, новое значение уже в памяти.


Примечание Оперативная память хранит нужные данные так долго, как этого требует ваше приложение (ограничиваясь лишь временем, пока оно запущено). Для постоянного (долговременного) хранения информации используются другие элементы аппаратного уровня, например HDD или SSD.

Уровень операционной системы

Операционная система (ОС) — это посредник между вашей программой и аппаратной частью. Благодаря ОС приложения могут использовать все возможности компьютера: воспроизводить музыку, отображать графику на экране, передавать данные по Wi-Fi и Bluetooth, выполнять математические операции и многое другое.

Операционная система предоставляет интерфейсы, которые используются в ходе работы программного обеспечения. Хотите сохранить фото своей кошки? Не вопрос! Напишите соответствующую команду, и ОС сама передаст ваши байты куда следует, после чего вернет результат.

Программный уровень

Программный уровень — это все программы, которые работают на вашем компьютере в среде операционной системы. Каждая программа решает множество задач и для этого взаимодействует с уровнем операционной системы и аппаратным уровнем (рис. 1.8).

 

Рис. 1.8. Память с записанными значениями

1. С целью решения задачи приложение может передать операционной системе команды.

2. Система обрабатывает полученные данные и передает их на аппаратный уровень.

3. Аппаратный уровень производит необходимые операции, используя при этом техническую составляющую устройства, после чего передает данные обратно на уровень операционной системы и далее на программный уровень.

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

Программный уровень подразумевает использование языка программирования, так как программы создаются именно с его помощью.

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

1.3. Базовые понятия

В предыдущем разделе, когда мы говорили об оперативной памяти, то упоминали понятие хранилища данных.

Хранилище данных — это виртуальный объект со следующими свойствами:

• записанное значение;

• идентификатор (имя);

• тип информации, для хранения которой предназначено хранилище (числовой, строковый и др.).

Практически весь процесс программирования заключается в том, чтобы создавать (объявлять) объекты, задавать (инициализировать) им значения, получать эти значения из памяти и производить с ними операции.

В программировании на Swift при работе с хранилищами данных выделяют два важнейших понятия: объявление и инициализация.

Объявление — это создание нового объекта (хранилища данных).

Инициализация — это присвоение значения объекту.

Рассмотрим простейший пример: числовое значение 23 умножить на числовое значение 145 (листинг 1.1).

Листинг 1.1

23 * 145

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

Во время вычисления значения выражения программисту надо сделать следующее:

• Объявить хранилище с именем value1 и значением 23.

• Объявить хранилище с именем value2 и значением 145.

• Объявить хранилище с именем result, а в качестве значения проинициализировать ему результат умножения значений хранилищ value1 и value2.


Примечание Имена value1, value2 и result приведены лишь для примера. В процессе работы вы сможете использовать любые имена.

• В листинге 1.1 оператор * указывает на то, что надо выполнить умножение. В результате выполнения выражения программист получит значение 3335, записанное в новую ячейку памяти (рис. 1.9).

 

Рис. 1.9. Результат умножения двух чисел помещен в новое хранилище

Если данный пример умножения чисел рассмотреть со стороны языка программирования, то его можно представить так, как показано в листинге 1.2.

Листинг 1.2

СоздатьХранилище с именем value1 и значением 23

СоздатьХранилище с именем value2 и значением 145

СоздатьХранилище с именем result и значением value1 * value2


Примечание Пример из листинга 1.2 написан не на Swift, а с помощью псевдокода. Он приведен для лучшего понимания вами описываемого процесса.

Как видно из рассмотренных примеров работы с памятью (рис 1.9), хранилища данных могут содержать в себе не только цифры, но и другие виды информации (текстовую, графическую, логическую и др.). Виды информации в программировании называются типами данных. При объявлении хранилища ему всегда назначается тип данных (это делает программист или компьютер), определяющий, какие именно данные будут храниться в нем. Это нужно затем, чтобы вы, загрузив данные из памяти, знали, для чего именно они предназначены.

Любая программа — это набор выражений, или, другими словами, набор команд, понятных компьютеру. Например, выражение «Отправь этот документ на печать» укажет компьютеру на необходимость выполнения некоторых действий в определенном порядке: загрузка документа, поиск принтера, отправка документа принтеру и т.д. Выражения могут состоять как из одной, так и из нескольких команд, как пример: «Отправь этот файл, но перед этим преобразуй его из docx в rtf».

Выражение — команда, выполняющая одну или несколько операций. Выражение может состоять из множества операторов и операндов.

Оператор — это минимальная независимая функциональная единица (символ, слово или группа слов), выполняющая определенную операцию.

Операнд — это значение, с которым оператор производит операцию.

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


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

1.4. Введение в операторы

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

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

Ваш первый программный код

Обратимся к Swift и Xcode Playground. Перед вами уже должен быть открыт созданный ранее проект.

Примечание Если вы закрыли предыдущий playground-проект, то создайте новый (рис. 1.10).

 

Рис. 1.10. Окно нового playground

Взгляните на код в Xcode Playground (листинг 1.3).

Листинг 1.3

import UIKit

var str = "Hello, playground"

В первой строке подключается библиотека UIKit, расширяющая стандартные возможности языка. О том, что это за библиотека и как работать с оператором import, поговорим далее. Сейчас же рассмотрим вторую строчку кода (лис­тинг 1.4).

Листинг 1.4

var str = "Hello, playground"

В ней объявляется хранилище данных с идентификатором (именем) str, после чего инициализируется текстовое значение Hello,playground. Данная строка представляет собой полноценное выражение. Его можно разбить на отдельные шаги (рис. 1.11):

Шаг 1. С помощью ключевого слова (оператора) var объявляется новое хранилище данных с именем str.

Шаг 2. Этому хранилищу инициализируется (присваивается) текстовое значение Hello,playground. Этот процесс и называется инициализацией значения с помощью оператора = (присваивания).

 

Рис. 1.11. Выражение, состоящее из шагов

Если представить схему оперативной памяти сейчас (с учетом записанных ранее значений), то она выглядит так, как показано на рис. 1.12.

 

Рис. 1.12. Результат создания нового хранилища данных

В данном выражении используется два оператора: на шаге 1 — оператор var, на шаге 2 — оператор =.

Классификация операторов

В Swift существуют следующие виды операторов:

• Простые операторы, выполняющие операции со значениями (операндами). В их состав входят унарные и бинарные операторы.

• Унарные операторы выполняют операцию с одним операндом. Они могут находиться перед операндом (префиксные) или после него (постфиксные).

Оператор var, с помощью которого объявляется хранилище данных, или оператор минус (-a), с помощью которого создаются отрицательные числа, являются унарными префиксными.

Далее в книге будут рассмотрены примеры постфиксных операторов, например, многоточие (...) в выражении 1... указывает на все целые числа после единицы.

• Бинарные операторы выполняют операцию с двумя операндами. Оператор, который располагается между операндами, называется инфиксным.

Оператор инициализации (=) и оператор сложения (+) являются бинарными инфиксными, так как использует в работе два операнда и находятся между ними (value1=12 или 34+12).

• Структурные операторы влияют на ход выполнения программы. Например, останавливают выполнение программы при определенных условиях или указывают программе, какой блок кода должен быть выполнен при определенных условиях. Подробно структурные операторы будут рассмотрены в главе «Операторы управления».

1.5. Оператор инициализации

Как вы уже знаете, для хранения данных компьютер использует оперативную память, выделяя под значения ячейки (хранилища данных) с уникальными именами. Прежде чем говорить о том, каким образом в Swift объявляются хранилища, разберемся, каким образом данные могут быть записаны в эти хранилища. Для этого вернемся к выражению в Xcode Playground (листинг 1.5).

Листинг 1.5

var str = "Hello, playground"

Для инициализации значения используется оператор присваивания (оператор инициализации), обозначаемый как знак равенства (=).

Оператор инициализации (присваивания) (=) — это бинарный оператор. Он используется в типовом выражении a=b, присваивая хранилищу данных с именем a значение хранилища данных с именем b. В листинге 1.5 объекту str инициализируется текстовое значение Hello,playground.

В общем случае левая и правая части оператора присваивания будут однотипными (то есть иметь одинаковый тип, предназначаться для хранения данных одного и того же типа). В примере выше строка Hello,playground — это данные строкового типа. Создаваемая переменная str — также имеет строковый тип, он определяется автоматически за счет инициализируемого значения. Об определении типа значения поговорим чуть позже.

1.6. Переменные и константы

Всего в Swift выделяют два вида хранилищ данных:

• переменные, объявляемые с помощью ключевого слова var;

• константы, объявляемые с помощью ключевого слова let.

В листинге 1.5 для объявления хранилища данных str используется оператор var, это значит, что объявляется переменная.

Любое хранилище, неважно, какого вида, имеет три важнейших свойства:

1) имя, по которому можно проинициализировать новое или получить записанное ранее значение. Ранее мы назвали его идентификатором;

2) тип данных, определяющий множество значений, которые могут храниться в этом хранилище (целые числа, строки и т.д.);

3) значение, которое в данный момент находится в хранилище.

Рассмотрим каждый вид хранилища подробнее.

Переменные

Одно из важнейших базовых понятий в любом языке программирования — переменная.

Переменная — это хранилище данных, значение которого может быть многократно изменено разработчиком в процессе работы программы. В качестве примера можно привести переменную, которая хранит текущую дату. Ее значение должно меняться ежедневно в полночь.

Для объявления переменной в Swift используется оператор var.

Синтаксис

var имяПеременной = значениеПеременной

После оператора var указывается имя объявляемой переменной. После имени указывается оператор присваивания и инициализируемое значение.

По имени переменной мы получаем доступ к значению переменной для его считывания или изменения.

Рассмотрим пример объявления переменной (листинг 1.6).


Примечание Вы можете продолжать писать код в окне Xcode Playground, не убирая предыдущие выражения.

Листинг 1.6

var age = 21

В данном примере создается переменная с именем age и значением 21. То есть код можно прочитать следующим образом: «Объявить переменную с именем age и присвоить ей целочисленное значение 21».

В ходе работы над программой можно объявлять любое количество переменных. Вы ограничены только своими потребностями (ну и конечно, объемом оперативной памяти устройства).

Изменить значение переменной можно, инициализировав ей новое значение. Повторно использовать оператор var в этом случае не надо (листинг 1.7).

Листинг 1.7

var age = 21

age = 22


Примечание Оператор var используется единожды для каждой переменной только при ее объявлении.

Будьте внимательны: во время инициализации нового значения старое уничтожается. В результате выполнения кода из листинга 1.7 в переменной age будет храниться значение 22. В области результатов выводятся два значения: старое (21) и новое (22). Старое — напротив первой строки кода, новое — напротив второй (рис. 1.13).

 

Рис. 1.13. Отображение значения переменной в области результатов



Примечание Уже на протяжении нескольких лет при работе в Xcode Playground разработчики встречаются с тем, что написанный код зачастую не выполняется, результаты не отображаются в области результатов Xco

...