YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Russian subtitles

← Using Variables

Get Embed Code
13 Languages

Showing Revision 1 created 10/11/2015 by sp14.

  1. В следующем наборе тестов, —

  2. Я покажу тебе, как в действительности
    используются переменные.
  3. Все программы, которые ты будешь писать
    в части 2, будут компилироваться.
  4. Это означает, что компьютер может
    понять написанный для него код, —
  5. а мы можем создать приложение.
  6. Ок, хотя программы и могут
    запускаться на телефоне, —
  7. есть риск, что они, возможно, делают не
    то, что требуется по условию задачи.
  8. В таком случае говорят, что
    в программе есть логическая ошибка.
  9. Логическая ошибка означает, что в логике,
    в соответствии с которой ты писал код, —
  10. есть ошибка.
  11. Давай посмотрим на небольшую программу —
  12. и на пример сценария и я покажу тебе,
    как нужно решить одну из таких проблем.
  13. Вот этот пример.
  14. У каждой программы будет своя цель,
    которая записывается здесь.
  15. Сама программа находится
    в зеленом блоке.
  16. Итак, цель этой программы – посчитать
    что-то, что называется «дефицит сна».
  17. Сколько нужно времени для сна, немного
    зависит от возраста, но в среднем, —
  18. людям надо около восьми
    часов ночного сна.
  19. Что эта программа пытается сделать –
    это посчитать дефицит сна за одну неделю.
  20. Пользователи программы могут указать,
    сколько они спят в среднем —
  21. в будние дни и сколько – на выходных.
  22. Для примера, мы предположим, что пользо-
    ватель спит по пять часов в будний день —
  23. и по девять часов - на выходных.
  24. Код для этого задания
    находится здесь, в зеленом блоке.
  25. Первое, что тебе надо сделать –
    прочитать код и —
  26. понять, достигает ли он цели.
  27. Затем надо проанализировать
    каждое выражение, —
  28. которое есть в коде, и понять, что на
    самом деле будет выведено на экран.
  29. Допустим, этот метод вызывается здесь,
    такие выражения со словом display, с —
  30. круглыми скобками и —
  31. чем-либо в скобках,
    выводят содержимое скобок на экран.
  32. В некоторых задачах будет по
    нескольку кусочков контента для —
  33. вывода на экран, тогда ты, возможно,
    увидишь display1, display2, display3.
  34. Ок, если ты ещё смотришь это видео, —
  35. ты, наверное, думаешь, как же
    решить одну из этих задач.
  36. Ты уже не первый раз имеешь
    дело с несколькими переменными, —
  37. значения которых могут меняться
    по несколько раз в тексте программы.
  38. Давай я сделаю первую задачу с тобой,
    а уже потом ты будешь делать их сам.
  39. Я буду использовать прием, называемый
    ручным моделированием, и суть его —
  40. состоит в том, чтобы попытаться понять,
    что делает компьютер, но —
  41. не в том смысле, чтобы неотрывно
    следить за компьютером.
    42
    00:02:03,090 --> 00:02:06,230
    Нам нужно просто проследить за тем,
    что происходит с —
  42. переменными.
  43. Ок, теперь надо пройти строку за строкой,
    давай я начну вместе с тобой.
  44. В первой строке здесь, я вижу,
    объявляется переменная, поэтому —
  45. я запишу имя переменной, weekday.
  46. Она также инициализируется
    значением 5, —
  47. поэтому под weekday я записываю 5.
  48. Это показывает, что сейчас в переменной
    weekday лежит 5.
  49. Ок, это была первая строка,
    переходим к следующей.
  50. Тут у нас переменная weekend,
    я записываю её, —
  51. и значение этой переменной – 9.
  52. Выглядит неплохо, —
  53. я перехожу к следующей строке,
    которая является объявлением и —
  54. инстанциированием переменной
    optimalHours, здесь я сделаю то же самое.
  55. Но я не буду записывать значение 7*8.
  56. Я вычислю результат этого выражения,
    потому что именно результат —
  57. записывается в переменную optimalHours.
  58. Вычислим немного в уме,
    7 умножить на 8 – будет 56.
  59. Здесь у нас ещё одно объявление.
  60. Мы создаем переменную actualHours,
    записываю её тоже.
  61. Так, она равна
    значению weekday, —
  62. текущему значению переменной weekday.
  63. Это не какое-то прошлое значение weekday
    или будущее.
  64. А следим мы за текущим значением
    weekday здесь.
  65. И я могу просто посмотреть и
    увидеть, что это - 5.
  66. Поэтому я могу просто считать,
    что это число 5.
  67. И, фактически, тут сказано int
    actualHours равно 5, поэтому —
  68. я записываю это значение здесь.
  69. Переходим к следующей строке.
  70. Мы присваиваем actualHours новое
    значение, равное текущему значению —
  71. actualHours плюс weekend умноженное на 2.
  72. Текущее значение actualHours я могу
    посмотреть здесь – это 5, а —
  73. текущее значение weekend – 9.
  74. Получаем небольшое выражение.
  75. Умножение я делаю перед сложением, —
  76. 9 умножить на 2 – это 18, и плюс 5.
  77. И ещё немного расчетов в уме,
    18 плюс 5 – это 23.
  78. В итоге получаем 23.
  79. Что мне сейчас нужно сделать – это
    зачеркнуть старое значение actualHours и
  80. записать её новое значение.
  81. Ок, сделано.
  82. Переходим к следующей строке.
  83. Мы видим int solution, это
    объявление переменной.
  84. И ей присваивается какое-то значение,
    но —
  85. сначала я записываю слово solution.
  86. А равно оно разнице optimalHours
    и actualHours.
  87. Идем сюда, optimalHours равно 56,
    а actualHours – 23, —
  88. Можешь воспользоваться калькулятором, —
  89. А я посчитаю быстрее тебя,
    я знаю, что 56 минус 23 – это 33.
  90. Ок, идем дальше и —
  91. в последней строке видим
    display(solution).
  92. Смотрим сюда и видим, что
    значение solution – 33.
  93. Значит, на экран будет выведено число 33.
  94. Значит, вот так я, или ты, или —
  95. кто угодно может понять,
    что эта программа только что сделала.
  96. Но вопрос в другом, сделала
    ли она все так, как надо?
  97. Нет ли логической ошибки
    где-нибудь здесь или —
  98. может ли быть такое, что если человек спит
    по пять часов в будние дни и по девять —
  99. часов по выходным, то он получит тридцать
    три часа дефицита сна к концу недели.
  100. И я хочу знать, что ты думаешь об этом.
  101. Ок, небольшое отступление, сейчас ты
    добавил это упражнение в приложение и —
  102. я хочу показать тебе, как ещё ты мог бы
    добавить код из упражнения —
  103. в приложение, если бы захотел
    протестировать его.
  104. Я настоятельно рекомендую сначала
    выполнять ручное моделирование, —
  105. потому что оно дает тебе лучшее
    понимание того, что происходит.
  106. Хорошо также уметь открыть
    код в Андроид Студия и —
  107. позапускать его немного.
  108. Поэтому я предлагаю копировать
    код из задания, —
  109. который дается в заметках инструктора,
    и вставлять в метод onCreate.
  110. Это первый метод, который ты будешь
    видеть в классе MainActivity здесь.
  111. Давай ещё раз для ясности,
    вот так твой метод onCreate выглядит —
  112. до изменений, и в него ты можешь вставить
    код, как это сделала я.
  113. Ок, что ещё тебе надо будет
    скопировать и вставить,
  114. без чего эта строка кода не будет
    работать – находится здесь.
  115. Вот этот код, и я также добавила
    его в заметки инструктора.
  116. И последнее, что тебе нужно будет
    сделать – это перейти в файл XML и —
  117. убедиться, что в твоей текстовой
    вьюшке есть Id/display_text_view, —
  118. и это должно в точности совпадать
    с тем, что показано здесь.
  119. Ок, если эти два места совпадают,
    когда ты запускаешь этот —
  120. код, ты получишь значение,
    напечатанное на экране.
  121. Немного трудно увидеть, но
    сейчас это 33.
  122. Ок, прослушав материал этого урока: о
    том,
    как делать ручное моделирование и —
  123. как доводить программу до
    рабочего состояния на телефоне.
  124. Можешь теперь выяснить, делает
    ли
    эта программа то, что требуется.