Задание 3 cs193p Winter 2015 Графический Калькулятор

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Developing iOS 8 app: Programming: Project 3″.  Текст Домашнего задания на русском  языке доступен на 

Задание 3 iOS 8_new.pdf

Для выполнения этого Задания необходимо освоение материала Лекции 5, Лекции 6 и Лекции 7.

Результаты выполнения заданий можно посылать на форум Swift[ru] для обсуждения. Выкладывайте решения в Github или давайте ссылку на Dropbox или используйте другие системы управления версиями. Xcode  работает напрямую с Github.

 

Задание 2. Решение — Возвращаем enum Result (дополнительные пункты 2, 3) Swift 1.2 и Swift 2.0

Screen Shot 2015-03-31 at 5.32.05 PM
Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Developing iOS 8 app: Programming: Project 2″.  Текст Домашнего задания на русском  языке доступен на

Задание 2 iOS 8_new.pdf

Результаты выполнения задания можно обсуждать на форуме Swift[ru] . Ваше решение может быть лучше и интереснее. Выкладывайте его в Github, давайте ссылку на Dropbox или используйте другие системы управления версиями. Xcode  работает напрямую с Github.

Это окончание решения Задания 2- дополнительные пункты 2 и 3, предыдущие пункты можно посмотреть:

Задание 2. Решение — обязательные пункты 1-4. 

Задание 2. Решение — обязательные пункты 5-8. 

Задание 2. Решение — обязательные пункты 9-12. 

Задание 2. Решение — Убираем лишние скобки. Дополнительный пункт 1. 

Окончательный вариант кода (включая все обязательные и дополнительные пункты) для Задания 2  можно найти на Githubиспользование паттерна проектирования Singleton для NSNumberFormatter можно посмотреть в посте

Как создать NSNumberFormatter Singleton в Swift (1.2  и 1.1) —  дополнение к Заданию 2, а код на Github

Пункт 2 дополнительный

Добавьте “Undo” к вашему калькулятору: в дополнительном пункте Задания 1 вы добавляли  кнопку  “backspace”, если пользователь ввел неверную цифру. Теперь мы говорим о комбинации “backspace” и реального “Undo” в единственной кнопке. Если пользователь находится в середине ввода числа, то это кнопка работает как  “backspace”. Если пользователь не находится  в середине ввода числа, то должно выполняться Undo последней вещи, которая была выполнена в CalculatorBrain.     

Читать далее

Задание 2. Решение — Убираем лишние скобки (дополнительный пункт 1) Swift 1.2 и Swift 2.0

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Developing iOS 8 app: Programming: Project 2″.  Текст Домашнего задания на русском  языке доступен на

Задание 2 iOS 8_new.pdf

Результаты выполнения задания можно обсуждать на форуме Swift[ru] . Ваше решение может быть лучше и интереснее. Выкладывайте его в Github, давайте ссылку на Dropbox или используйте другие системы управления версиями. Xcode  работает напрямую с Github.

Пункт 1 дополнительный

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

Теоретическая часть согласно подсказке в Задании 2 потребует добавления концепции “приоритета (precedence) операций” в Op вашего CalculatorBrain

Заметим, что все нижеприведенные рассуждения касаются только перевода нашего стэка, записанного в форме обратной польской записи (RPN), не требующей применения скобок, в инфиксную форму со скобкамиИнфиксная форма нужна только для представления описания стэка в привычной для пользователя форме var description и не влияет на вычисления нашего калькулятора.

Читать далее

Задание 2. Решение — продолжение (обязательные пункты 9-12) Swift 1.2 и Swift 2.0

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Developing iOS 8 app: Programming: Project 2″.  Текст Домашнего задания на русском  языке доступен на

Задание 2 iOS 8_new.pdf

Результаты выполнения задания можно обсуждать на форуме Swift[ru] . Ваше решение может быть лучше и интереснее. Выкладывайте его в Github, давайте ссылку на Dropbox или используйте другие системы управления версиями. Xcode  работает напрямую с Github.

Пункт 9 обязательный

Добавьте две новых кнопки на цифровую клавиатуру вашего калькулятора  Calculator:→M и M. Эти две кнопки устанавливают и получают соответственно переменную в CalculatorBrain, называемую M.

  • →M  устанавливает значение переменной M в CalculatorBrain в текущее значение на дисплее.
  • →M не должна автоматичски выполнять↵ (хотя она должна переустановить  “пользователь в середине печати числа”)
  • Касание M должно помещать (push) переменную M в стэк (не значение M) в CalculatorBrain
  • Касание любой другой кнопки должно показывать оценку  CalculatorBrain (то есть результат evaluate()) на дисплее.
  • →M и M являются механизмом Controller, а не механизмом Model (хотя они оба используют механизм “переменных” Model).
  • Это не выдающаяся кнопка “memory” на нашем калькуляторе, но она является хорошим инструментом для тестирования правильно ли работает наша переменная функция, реализованная выше.

Примеры …

7 M + √ ⇒ description имеет вид (7+M)display — пустой, та как M не установлена

9 →M  display показывает 4 (квадратный корень 16), description все еще показывает (7+M)

14 + ⇒ display показывает 18description теперь (7+M)+14

Делаем словарь variableValues с переменными private, а в API калькулятора добавляем non-private методы setVariablegetVariable и clearVariable

Читать далее

Задание 2. Решение — продолжение (обязательные пункты 5-8) Swift 1.2 и Swift 2.0

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Developing iOS 8 app: Programming: Project 2″.  Текст Домашнего задания на русском  языке доступен на

Задание 2 iOS 8_new.pdf

Результаты выполнения задания можно обсуждать на форуме Swift[ru] . Ваше решение может быть лучше и интереснее. Выкладывайте его в Github, давайте ссылку на Dropbox или используйте другие системы управления версиями. Xcode  работает напрямую с Github.

Начало решения Задания 2 находится здесь.

Пункт 5 обязательный

Добавьте способности вашему CalculatorBrain  помещать “переменные”  в его  внутренний стэк. Сделайте это путем реализации следующего API в вашем CalculatorBrain …

func pushOperand (symbol:String) -> Double?

var variableValues:Dictionary<String, Double>

Это должно делать точно то, что говорят названия : первая функция “толкает” “переменную” во внутренний стэк CalculatorBrain (например, pushOperand (“x”)  будет помещать переменную с именем х), а вторая переменная ввиде словаря позволит пользователю CalculatorBrain установить любое значение для любой переменной (например, brain.variableValues [“x”] = 35.0) . pushOperand должен вернуть результат evaluate() после помещения переменной в стэк (как pushOperand делает в других случаях).

В нашей Модели CalculatorBrain добавляем в перечисление enum вариант для переменных Variable:

Screen Shot 2015-03-26 at 2.57.03 PM
Функция func pushOperand (symbol:String) -> Double? для переменных будет выглядеть точно также, как и уже существующая, только вместо операнда мы будем добавлять в стэк переменную

Читать далее

Задание 2. Решение — начало (обязательные пункты 1-4) Swift 1.2 и Swift 2.0

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Developing iOS 8 app: Programming: Project 2″.  Текст Домашнего задания на русском  языке доступен на 

Задание 2 iOS 8_new.pdf

Результаты выполнения задания можно обсуждать на форуме Swift[ru] . Ваше решение может быть лучше и интереснее. Выкладывайте его в Github, давайте ссылку на Dropbox или используйте другие системы управления версиями. Xcode  работает напрямую с Github.

Пункт 1 обязательный

Все изменения, сделанные с калькулятором Calculator на лекции, должны быть внесены в код вашего Задания 1. Сделайте полученный Calculator полностью функционирующим прежде, чем вы приступите к выполнению остальных обязательных заданий. И, как и в прошлый раз “печатайте” изменения в коде, а не используйте copy / paste.

В этом пункте мы должны совместить изменения в коде, сделанные на Лекции 3, когда происходит разделение на Модель и Controller, и калькулятор, который получился при выполнении Задания 1 без разделения на Модель и Controller. Это калькулятор описан в посте.

Код можно посмотреть на Github.

Читать далее

Задание 2 cs193p Winter 2015 Умный Калькулятор

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Developing iOS 8 app: Programming: Project 2″.  Текст Домашнего задания на русском  языке доступен на 

Задание 2 iOS 8_new.pdf

 Задание 2 — очень трудное, но выполнимое. Если вам удастся выполнить его так, как планировал Пол Хэгерти, то есть в соответствии с логикой Swift, а не логикой того языка программирования (C++, C#, Java, Python и т.д.), с которого вы пришли, то можете считать себя «гуру» в Swift и представлять, что вы стоите на «Эвересте» и «снисходительно» смотрите на остальных. Что я имею ввиду под логикой Swift, которую так изобретательно использует Пол Хэгерти? Если вы смотрели предыдущий его курс по iOS 7, то там он в буквальном смысле «жонглирует» nil, чтобы ваш код из одной строчки  выполнял кучу работы. То же самое здесь, он будет также хитроумно использовать Optionals. Почти в каждом пункте Задания 2 он призывает рассмотреть вариант решения, состоящий из одной — двух строк. Помимо этого, Задание 2 содержит множество подсказок, которые помогут вам почувствовать «дух»  Swift.

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

Результаты выполнения заданий можно посылать на форум Swift[ru] для обсуждения. Выкладывайте решения в Github или давайте ссылку на Dropbox или используйте другие системы управления версиями. Xcode  работает напрямую с Github. Если у кого-то есть затруднения с этим — обращайтесь на форум, проведем ускоренный курс по выкладывание кода на Github. Если состоится обсуждение ( пока этого на форуме почти нет совсем) — будет интересно.

Специально привела возможное решение Задания 1 ( у вас может быть лучше), чтобы каждый, кто даже «застрял» по какой-то причине,  мог «приступить к выполнению Задания 2.

Задание 1 cs193p Winter 2015 Калькулятор

Содержание

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Developing iOS 8 app: Programming: Project 1″На русском языке вы можете скачать здесь:

Задание 1 iOS 8.pdf

Решение Задания 1 для Swift 1.2 и Swift 2.0 находится в посте Задание  1 cs193p Winter 2015 Калькулятор для Swift 1.2 и Swift 2.0.

Stanford CS 193P iOS 7 — Домашнее задание 2

Screen Shot 2014-07-13 at 3.34.28 PMСодержание

Текст Домашнего задания на английском языке доступен на  iTunes в пункте  “Developing iOS 7 app:Assignment 2″На русском языке 

Задание 2 Matchismo 2 fall 2013.pdf

Пункт 1

Следуйте детальной инструкции на слайдах лекции (отдельный документ) для воссоздания последней версии Matchismo, которую мы построили на лекции (то есть вариант с множеством карт) и запустите его на симуляторе iPhone (iPhone Simulator) в Xcode 5. Не переходите к следующим шагам до тех пор, пока ваша карточная игра “на совпадение” не будет функционировать без ошибок и предупреждений.

 

Слайды  Лекции 3 содержат подробную пошаговую инструкцию для выполнения Домашнего задания 1 и для всех шагов, описанных выше. Следуя этой инструкции (если вы уже не сделали это в течение лекции), вы полностью выполните пункт 2 Домашней работы 2.

Читать далее

Stanford CS 193P iOS 7 — Домашнее задание 1

Начало игрыСодержание

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Developing iOS 7 app:Assignment 1″На русском языке

Задание 1 Matchismo fall 2013.pdf

Пункт 1

Следуйте пошаговой инструкции на слайдах лекции (отдельный документ) для построения и запуска Matchismo на симуляторе iPhone (iPhone Simulator) в Xcode 5. Не переходите к следующим шагам до тех пор, пока ваша карта не будет переворачиваться “лицевой” и обратной стороной без ошибок и предупреждений

 

Вторая часть слайдов Лекции 2 содержит пошаговую инструкцию для выполнения  демонстрационного проекта, в котором создаются классы для Домашнего задания. Следуя этой пошаговой инструкции, вы полностью выполните пункт 1 первого домашнего задания. Рекомендуется не пользоваться copy/paste, а набирать весь код вручную для лучшего освоения Xcode.

 

Читать далее