Результат: ученик представляет выполнение как последовательность состояний, объявляет и изменяет локальные переменные, выбирает статический тип по смыслу и диапазону и безопасно моделирует возможное отсутствие значения.
Содержание:
-
Понять переменную как часть состояния программы
- имя, статический тип и текущее значение;
- объявление переменной и момент появления имени;
- инициализация при объявлении;
- последующее присваивание нового значения;
- таблица состояния после каждой значимой инструкции.
-
Освоить обязательное присваивание до чтения
- объявление локальной переменной без инициализатора;
- определённое присваивание, проверяемое компилятором;
- различие объявления, записи и чтения;
- отсутствие автоматически доступного значения у неинициализированной локальной переменной;
- порядок инструкций как условие допустимости чтения.
-
Понять статическую типизацию и вывод типа
- статический тип переменной и выражения;
- допустимые операции, определяемые типом;
- проверка совместимости при компиляции;
varтолько при наличии инициализатора;- вывод конкретного статического типа без перехода к динамической типизации;
- невозможность позже присвоить значение несовместимого типа.
-
Выбирать целочисленный тип
sbyte,short,int,long;byte,ushort,uint,ulong;- размер типа, минимальное и максимальное значения;
- знаковые и беззнаковые диапазоны;
- выбор типа по предметному диапазону и последующим операциям;
- осторожность при смешивании знаковых и беззнаковых значений.
-
Записывать целочисленные литералы
- десятичная, двоичная и шестнадцатеричная формы;
- разделитель разрядов
_; - суффиксы
U,LиUL; - тип литерала без суффикса;
- влияние литерала на тип всего выражения.
-
Выбирать дробный тип
float,doubleиdecimal;- различие двоичной и десятичной моделей;
- диапазон и приблизительная точность;
- литералы без суффикса и суффиксы
FиM; - выбор
doubleдля общих вычислений иdecimalдля десятичной предметной модели; - невозможность смешивать
decimalсfloatилиdoubleбез явного решения.
-
Использовать логические, символьные и строковые значения
boolи литералыtrue,false;charкак одна кодовая единица UTF-16;stringкак строковое значение;- различие
'A'и"A"; - управляющие последовательности;
- Unicode escape-последовательности;
- дословные строки
@"...".
-
Моделировать отсутствие значения
nullкак отсутствие ссылочного либо nullable-значимого значения;- nullable-значимые типы
T?; - nullable-ссылочные типы
T?; - предупреждения nullable-анализа;
- проверки
is null,is not nullи сравнение сnull; - различие отсутствия значения и нулевого, пустого или ложного значения.
-
Управлять областью действия и временем жизни имени
- область видимости локальной переменной;
- вложенные блоки;
- доступность имени только после объявления;
- завершение области действия при выходе из блока;
- различие времени жизни имени и дальнейшего существования объекта, рассматриваемого позднее.

