1.1. Решение задачи
1.1. Решение задачи
Программы обычно пишутся для того, чтобы решить какую-то конкретную задачу. Например, книжный магазин ведет запись проданных книг. Регистрируется название книги и издательство, причем запись идет в том порядке, в каком книги продаются. Каждые две недели владелец магазина вручную подсчитывает количество проданных книг с одинаковым названием и количество проданных книг от каждого издателя. Этот список сортируется по издателям и используется для составления последующего заказа книг. Нас попросили написать программу для автоматизации этой деятельности.
Один из методов решения большой задачи состоит в разбиении ее на ряд задач поменьше. В идеале, с маленькими задачами легче справиться, а вместе они помогают одолеть большую. Если подзадачи все еще слишком сложны, мы, в свою очередь, разобьем их на еще меньшие, пока каждая из подзадач не будет решена. Такую стратегию называют пошаговой детализацией или принципом "разделяй и властвуй". Задача книжного магазина делится на четыре подзадачи:
Прочитать файл с записями о продажах.
Подсчитать количество продаж по названиям и по издателям.
Отсортировать записи по издателям.
Вывести результаты.
Решения для подзадач 1, 2 и 4 известны, их не нужно делить на более мелкие подзадачи. А вот третья подзадача все еще слишком сложна. Будем дробить ее дальше.
3a. Отсортировать записи по издателям.
3b. Для каждого издателя отсортировать записи по названиям.
3c. Сравнить соседние записи в группе каждого издателя. Для каждой одинаковой пары увеличить счетчик для первой записи и удалить вторую.
Эти подзадачи решаются легко. Теперь мы знаем, как решить исходную, большую задачу. Более того, мы видим, что первоначальный список подзадач был не совсем правильным. Правильная последовательность действий такова:
Прочитать файл с записями о продажах.
Отсортировать этот файл: сначала по издателям, внутри каждого издателя - по названиям.
Удалить повторяющиеся названия, наращивая счетчик.
Вывести результат в новый файл.
Результирующая последовательность действий называется алгоритмом. Следующий шаг - перевести наш алгоритм на некоторый язык программирования, в нашем случае - на С++.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Решение
Решение Создайте табличный контроллер вида (так, как описано в разделе 4.9) и задайте в качестве значения его свойства refreshControl новый экземпляр класса UIRefreshControl, как показано далее:— (id)initWithStyle:(UITableViewStyle)style{self = [super initWithStyle: style];if (self) {[self.tableView registerClass: [UITableViewCell
Решение
Решение Либо воспользуйтесь экземпляром UICollectionView, который в таком случае нужно сделать дочерним видом одного из видов вашего приложения (если хотите создать полноэкранный сборный вид), либо примените класс
Решение
Решение Присвойте сборному виду источник данных, воспользовавшись свойством dataSource класса UICollectionView. Источник данных должен быть объектом, который соответствует протоколу UICollectionViewDataSource. Кроме того, само собой разумеется, что объект источника данных обязательно должен
Решение
Решение Создайте экземпляр класса UICollectionViewFlowLayout, инстанцируйте контроллер сборного вида с помощью выделенного метода-инициализатора initWithCollectionViewLayout: из класса UICollectionViewController, а затем передайте этому методу ваш макетный
Решение
Решение Для представления ваших ячеек либо напрямую воспользуйтесь классом UICollectionViewCell, либо произведите от него подкласс, на базе которого уже сможете написать собственную реализацию. Кроме того, как будет показано далее, у вас может быть файл. xib, ассоциированный с
Решение
Решение Выполните следующие шаги.1. Создайте подкласс UICollectionViewCell и назовите его (в данном примере мы будем использовать имя CollectionViewCell).2. Создайте пустой. xib-файл и назовите его MyCollectionViewCell.xib.3. Поместите в конструктор интерфейса ячейку сборного вида (ее вы найдете в
Решение
Решение Присвойте делегат сборному виду. В других случаях не придется делать даже этого. Порой достаточно просто слушать интересующие вас события в классах ячеек и обрабатывать их прямо в этих
Решение
Решение Выполните следующие шаги.1. Создайте по файлу. xib для верхнего и для нижнего колонтитулов.2. Найдите в библиотеке объектов конструктора интерфейса по одному объекту Collection Reusable View и перетащите их в ваши. xib-файлы. Убедитесь, что эти многоразовые сборные виды
Решение
Решение Инстанцируйте механизм распознавания жестов, а потом просмотрите распознаватели жестов, уже имеющиеся в сборном виде, и проверьте, нет ли среди них такого, который похож на нужный вам. Если найдете такой механизм, вызовите в нем метод requireGestureRecognizerToFail: и передайте
Решение
Решение Контекстные меню по умолчанию встроены в сборные виды. Чтобы активизировать их, потребуется всего лишь реализовать следующие методы из протокола UICollectionViewDelegate.• collectionView: shouldShowMenuForItemAtIndexPath: — среда времени исполнения передает этому методу индексный путь к
Решение
Решение Вот здесь GCD и проявляется во всей красе: при асинхронном выполнении блоков кода в главной очереди, последовательных и параллельных очередях. Не сомневаюсь, что, дочитав этот раздел, вы будете совершенно убеждены в том, что будущее многопоточных приложений
Решение
Решение Выполните следующие шаги.1. Настройте профиль инициализации для вашего приложения, активизировав в нем возможность получения пуш-уведомлений.2. В приложении зарегистрируйте устройство для получения пуш-уведомлений для этого приложения.3. Возьмите
Решение
Решение Убедитесь, что вы собрали маркеры-идентификаторы пуш-уведомлений этих приложений (см. раздел 15.7). Затем сгенерируйте SSL-сертификаты, которые будут использоваться вашими веб-сервисами для отправки пуш-уведомлений на устройства. Затем создайте простой веб-сервис
Решение
Решение Реализуйте метод application: didReceiveRemoteNotification: делегата вашего
Решение
Решение Следуя инструкциям из введения к данной главе, создайте проект Core Data. Потом найдите в пакете вашего приложения файл с расширением xcdatamodel и откройте его в визуальном редакторе данных (рис. 16.2). Рис. 16.2. Визуальный редактор данных в
Решение
Решение Выполните следующие шаги.1. В Xcode найдите созданный для вашего приложения файл с расширением xcdatamodel. Он был заготовлен на этапе создания самого приложения в Xcode. Щелкните на этом файле — и вы должны увидеть, как в правой части окна Xcode открывается