Расскажи ребятам, что для работы программ почти всегда нужно что-нибудь запоминать: возраст пользователя, логин-пароль или тип персонажа в игре. Для этого нужны переменные - в них можно что-нибудь сохранить, и потом этим пользоваться. Но сначала переменную нужно объявить - т.е. сказать компилятору (продолжаем использовать усвоенные понятия), что нам нужна переменная такого-то типа. Разбери это на доске на примере "винрейта" (от англ. win-rate - соотношения числа побед в игре к общему числу игру). Определись с ребятами, что это - дробное число, выберите для его хранения нужный тип, пользуясь графом выбора типов данных. Запиши на доске "double" и спроси у детей: "Ок, объявили, а как к нему обратиться (получить к нему доступ)?". Приведи их к мысли об именах для переменных. Сразу договорись, что будете давать переменным только осмысленные имена! Никаких a, b, c1, someVarible!
Далее предложи группе написать вместе программку, выясняющую win-rate пользователя. Расскажи ребятам, что вся вводимая с клавиатуры информация - всегда текст! Если они удивились - хорошо. А если при этом спросили "как же тогда его умножать/делить?" - еще лучше! Расскажи про основные способы преобразования типов: Parse (приучит ребят к организации классов), кастинг (явное приведение типа).
Спроси у детей, что нужно знать, чтобы посчитать винрейт пользователя. Разбери с ребятами за несколько минут на доске основные операторы. Пускай они тебе сами расскажут, что можно делать с числами, а затем попробуй попросить их о том же со строками. Покажи им, что строки можно склеивать. Отметь также, что существует обратная операция, но она сложнее, и о ней позже. Здесь подробнее рассказать про ReadLine - это команда, на выходе которое есть строка, введенная пользователем.
|
Напиши на доске сложное арифметическое выражение (со скобочками и приоритетами операции) и попроси посчитать его значение (лучше, конечно, заготовить его заранее и не импровизировать). В случае успеха замени заранее подготовленные в нем одинаковые числа на переменные. Вначале используй математический подход (без декларирования типа данных, например, х = 3), затем поясни, что компьютеру нужно указать тип. Чтобы доказать необходимость этого, со словами "предположим, компьютер решил, что это текст" используй сначала строковый тип и покажи, что 3 + 5 = 35. Обычно это убеждает всех ребят, но непредвиденных сложностей никто не отменял: будь готов объяснять по нескольку раз. Только ни в коем случае не делай это одними и теми же словами!
Поясни ребятам смысл оператора "=": мы читаем слева направо "записать в int Х число 5". Напомни, что все действия выполняются последовательно: покажи, как выполнить одни и те же вычисления в одно большое сложное выражение и в несколько строк с сохранением промежуточного результата. Расскажи о том, что это может пригодиться, если нужно много раз считать одно и то же - проще ведь запомнить и потом использовать готовый результат! Если время позволяет, можешь перед этим пригласить кого-то к доске и попросить вычислить что-нибудь, а потом показать (или спросить у остальных), как можно было бы сделать быстрее, если "запомнить" результат вон того выражения.
Очень хорошо в этом примере будет видна разница между обычным и целочисленным делением: винрейт всегда получится нулевым! Поясни ребятам причину такого поведения программ и способы, которыми можно это исправить.
|
Пример программы-результата:
Console.WriteLine("Привет! Я - программа, вычисляющая твой винрейт! Мне нужно, чтобы ты ввел немного данных о себе!");
Console.WriteLine("Сколько игр ты успел сыграть?");
string answer = Console.ReadLine(); // объявляем переменную и сохраняем результат в нее
int totalGames = int.Parse(answer); // обрати внимание детей на всплывающую к методу подсказку
Console.WriteLine("А сколько из них ты выиграл?");
answer = Console.ReadLine(); // переменная уже есть - второй раз объявлять не нужно!
// поясни, что ее значение в целочисленном виде уже хранится в totalGames, оно не потеряется!
int gamesWon = int.Parse(answer);
double winRate = (double)gamesWon / (double)totalGames;
Console.WriteLine("Твой винрейт: " + winRate.ToString());
Console.ReadKey();
Практика - 15 минут
Напиши с ребятами несколько простеньких программок на пользовательский ввод-вывод. Это нужно для закрепления усвоенных навыков. Примеры программ:
1. "Попугай". Программа повторяет все, что введет пользователь;
2. "Введи свой возраст". Пользователь вводит свой возраст, и программа сообщает ему, сколько лет ему будет через N лет;
3. "Единицы измерения". Пользователь вводит значение в сантиметрах, а программа преобразует его в метры и выдает ответ. Это упражнение позволит детям закрепить понимание разницы между целочисленным и обычным делениями.
Будь ч у ток и внимателен: ребята могут стесняться просить помощи! Заранее предупреди, что удаление нужной скобочки или установка лишней может привести к сотне ошибок, причем часто проще написать программу сначала, чем найти проблему!
|
Турнир – 15 минут
За день до этого занятия ты должен получить задания турнира. Если этого не произошло – свяжись с методистом. Расскажи детям о том, что им предстоит делать и следи за дисциплиной. Более подробные инструкции будут в письме с заданиями.
Конец занятия - 5 минут
Отметь вместе с ребятами достижения группы, новую усвоенную информацию, выпиши все это на доске. Бегло повтори с ними теорию, потрать пару минут на сбор отзывов и пожеланий.
Затем выдай домашнее задание! Это могут быть либо задачи из учебника, либо подготовленные тобой заранее задания. Пример домашнего задания: " Учебник, страницы 31-32, задачи №№1, 2, 3, 6, 12".
Поясни им важность выполнения домашней работы: они делают ее ни в коем случае не для оценки! Они пришли, чтобы чему-то научиться, а для этого нужно каждое занятие узнавать что-нибудь новое. К сожалению, этого нельзя достичь, если каждое занятие повторять предыдущую тему (а так и будет, если не делать домашнее задание!).
Напоследок похвали их и поблагодари за занятие, каким бы странным это ни показалось им и тебе. Дерзай! Удачного занятия!
Результат
По итогам занятия ребята должны:
- понимать, что такое типы данных;
- знать основы хранения информации в двоичном виде;
- уметь выбирать тип данных для хранения информации;
- и изменять его;
- создавать более сложные программы в выбранной технологии.