Лабораторная работа №1
Разработка элементарных программ
на языке программирования C#
Цель работы:
Познакомиться с базовыми особенностями языка программирования C# и разработки программ с использованием среды Visual Studio.
Теоретические сведения.
Платформа .NET Framework определяет среду для поддержки создания и выполнения платформонезависимых гетерогенных приложений. Основными особенностями данной платформы являются не зависящая от языка среда исполнения (Common Language Runtime, CLR) и библиотека классов .NET
Система типов.
C# является языком со строгой типизацией данных. Таким образом, IL не допускает никаких действий, которые дают в результате неопределенные типы данных.
.NET Framework предоставляет общую систему типов CTS (Common Type System), использование которой позволяет разрабатывать приложение на любом из языков, поддерживающих эту среду, и при этом не заботиться о несовместимости типов при повторном использовании разработанных компонентов.
Система типов поддерживает две категории типов, каждая из которых разделена на подкатегории:
типы значений (типы–значения),
ссылочные типы (типы–ссылки).

Основные отличия ссылочных типов и типов–значений
Типы–значения value-types
Типы–ссылки reference-types

Объект представлен
непосредственно значением
ссылкой в куче

Объект располагается
в стеке
в куче

Значение по умолчанию
0, false, '\0', null
ссылка имеет значение null

При выполнении операции присваивания копируется
значение
ссылка


Для типов-ссылок необходимо явно выделять место в памяти, используя метод New().
В C# объявление любой структуры и класса основывается на объявлении предопределённого класса Object (наследует класс Object). Следствием этого является возможность вызова от имени объектов–представителей любой структуры или класса унаследованных от класса object методов. В частности, метода ToString. Этот метод возвращает строковое (значение типа string) представление объекта.
Все типы (типы-значения и типы-ссылки), за исключением простых типов-значений и пары предопределённых ссылочных типов (string и object), должны определяться (если уже не были ранее специально определены) программистами в рамках объявлений. Подлежащие объявлению типы называются производными типами.
Переменные.
CTS позволяет работать со значениями двух видов:
переменные, которые непосредственно хранят данные,
переменные, которые содержат только ссылку на данные (память в этом случае выделяется с использованием оператора new).
Выполнение оператора объявления переменной типа-значения в методе класса приводит к созданию в памяти объекта соответствующего типа, возможно проинициализированного определённым значением. Это значение может быть задано в виде литерала соответствующего типа
//определения переменных типов-значений:
int a;
System.Int32 a;
//определение и инициализация переменных типа значения:
int a = 0;
int a = new int();
System.Int32 a = 0;
System.Int32 a = new System.Int32();
Следует учитывать: CLR не допускает использования в выражениях неинициализированных локальных переменных, таких, которые объявленны в теле метода.
int a; // Объявление a.
int b; // Объявление b.
b = 10; // Инициализация b.
a=b+b; // Инициализация a.
При определении классов и методов используются фигурные скобки. Содержимое между этими скобками называется блоком. Блоки могут быть вложены друг в друга. Любая переменная, объявленная внутри конкретного блока, называется локальной переменной для этого блока, и она не существует вне, то есть ее нельзя использовать в других блоках, если они не являются вложенными.
{
{
double a=3;
. . .
{
Console.Writeln(a); //правильно
}
}
Console.Writeln(a); //ошибка компиляции
}
Не допускается объявление переменной во вложенном блоке с тем же именем, что и переменная, объявленная в основном блоке:
{
double a=3;
. . .
{
double a; //ошибка компиляции
}
}
Константы объявляются с дополнительным спецификатором const. Требуют непосредственной инициализации.
//константа инициализируется литералом 3.14.
const float Pi = 3.14;
Управляющие операторы.
Управляющие операторы применяются в рамках методов. Они определяют последовательность выполнения операторов в программе и являются основным средством реализации алгоритмов.
Различаются следующие категории управляющих операторов:
операторы выбора. Вводятся ключевыми словами if, if … else …, switch,
итеративные операторы. Вводятся ключевыми словами while, do … while, for, foreach,
операторы перехода (в рамках методов). Вводятся ключевыми словами goto, break, continue.
Операторы выбора.
После ключевого слова if располагается взятое в круглые скобки условное выражение (логического типа), следом за которым располагается оператор (блок операторов) произвольной сложности.
Далее в операторе if … else … после ключевого слова else размещается ещё один оператор.
В силу того, что в C# отсутствуют предопределённые алгоритмы преобразования значений к булевскому типу, в условное выражение должно быть выражением типа bool – переменной, константой, либо выражением на основе операций сравнения и логических операций.
if (…) { }
else { }
Оператор if часто сам в свою очередь является условным оператором произвольной сложности.
if (…) if (…) { }
else { }
else { }
Первый Else всегда относится к ближайшему if.
if (true) { int XXX = 125; }
if (true) { int XXX = 125; } else { int ZZZ = 10; }
Оператор switch представляет собой оператор, организующий множественный выбор.
switch (выражение)
{
case значение1: оператор1; break;
::::::::::
case значениеN: операторN; break;
default: операторN+1; break;
}
Каждое значение Case в обязательном порядке завершается оператором break.
char val;
:::::
switch (val)
{
case ‘A’: Console.WriteLine(" A");break;
case ‘B’: Console.WriteLine(" B");break;
default: Console.WriteLine(" unknown");break;
}
Оператор while.
while (выражение)
{
операторы
}
Правило выполнения этого итеративного опера состоит в следующем: сначала проверяется условие продолжения оператора и в случае, если значение условного выражения равно true, соответствующий оператор (блок операторов) выполняется.
Невозможно построить оператор while на основе одиночного оператора объявления. Оператор
while (true) int XXX = 0;
С самого первого момента своего существования (ещё до начала трансляции!) сопровождается предупреждением:
Embedded statement cannot be a declaration or labeled statement.
Оператор do … while.
do
{
операторы
} while (выражение)
Разница с ранее рассмотренным оператором цикла состоит в том, что здесь сначала выполняется оператор (блок операторов), а затем проверяется условие продолжения оператора.
Оператор for.
for (Инициализация;УсловиеПродолжения;изменение переменных)
Оператор
Инициализация, УсловиеПродолжения, изменение переменных в заголовке оператора цикла for могут быть пустыми. Однако наличие пары символов ';' в заголовке цикла for обязательно.
Список выражений представляет собой разделённую запятыми последовательность выражений.
Следует иметь в виду, что оператор объявления также строится на основе списка выражений (выражений объявления), состоящих из спецификаторов типа, имён и, возможно, инициализаторов. Этот список завершается точкой с запятой, что позволяет рассматривать список выражений инициализации как самостоятельный оператор в составе оператора цикла for. При этом область видимости имён переменных, определяемых этим оператором, распространяется только на операторы, относящиеся к данному оператору цикла. Это значит, что переменные, объявленные в операторе инициализации данного оператора цикла не могут быть использованы непосредственно после оператора до конца блока, содержащего этот оператор. А следующие друг за другом в рамках общего блока операторы могут содержать в заголовках одни и те же выражения инициализации.
Оператор foreach.
foreach (тип имя__переменной in коллекция) инструкци
имя__переменной обозначает переменную которая представляет элемент коллекции.
коллекция объект, представляющий массив или коллекцию.
Этим оператором обеспечивается повторение множества операторов, составляющих тело цикла, для каждого элемента массива или коллекции. После перебора всех элементов массива или коллекции и применения множества операторов для каждого элемента массива или коллекции, управление передаётся следующему за foreach оператору (разумеется, если таковые имеются).
Область видимости имён переменных, определяемых этим оператором, распространяется только на операторы, относящиеся к данному оператору цикла.
// Объявили и определили массив
int[] array = new int[10];
// Для каждого элемента массива надо сделать…
foreach (int i in array) {/*:::::*/};
Специализированный оператор, приспособленный для работы с массивами и коллекциями. Обеспечивает повторение множества (единичного оператора или блока операторов) операторов для каждого элемента массива или коллекции.
Пространство имен.
.NET Framework располагает большим набором полезных функций. Каждая из них является членом какого-либо класса.
Классы группируются по пространствам имен. Это означает, что в общем случае имя класса может иметь сложную структуру — состоять из последовательности имен, разделенных между собой точками. Последнее имя в этой последовательности собственно и является именем класса. Классы, имена которых различаются лишь последними членами (собственно именами классов) последовательностей, считаются принадлежащими одному пространству имен.
Помещение типа в пространство имен присваивает этому типу длинное имя, состоящее из всех пространств, как серии их имен, разделенных точками (.) и заканчивающееся именем класса.
Если не использовать оператор using, для корректного обращения к функциям необходимо писать полный путь класса, что является достаточно емкой работой.
Средством "навигации" по пространствам имен, а точнее, средством, которое позволяет сокращать имена классов, является оператор
using <ИмяПространстваИмен>;
В приложении может объявляться собственное пространство имен, а также могут использоваться ранее объявленные пространства.
Оператор using сам по себе не обеспечивает доступа к именам, находящимся в других пространствах имен. До тех пор, пока код из пространства имен не будет каким-либо способом привязан к нашему проекту (например, описан в исходном файле проекта или описан в каком-либо коде), привязанному к этому проекту, мы не получим доступа к содержащимся в нем именам. Более того, если код, в котором содержится некое пространство имен, привязан к нашему проекту, то мы обладаем доступом к содержащимся в нем именам независимо от использования оператора using. Оператор using всего лишь упрощает обращение к этим именам и позволяет сократить сильно удлиняющийся в противном случае код, делая его более понятным.
Расположение всех требуемых сборок указывается явно - непосредственно в Visual Studio:
при работе над проектом открыть окно Solution Explorer,
выбрать пункт References,
далее Add Reference...
там надо задать или выбрать соответствующий .DLL- или .EXE-файл.
В частности, сборка, которая содержит классы, сгруппированные в пространстве имен System, располагается в файле mscorlib.dll.
При компиляции модуля транслятор по полному имени функции (учитывая пространство имен using) находит ее код для исполнения сборки.
Практическое задание.
В среде Microsoft Visual C#, решить 5 задач по вариантам и оформить отчёт.
Задание №1
Задачи на использование операторов условия. Осуществить ввод необходимых данных, выполнить реализацию алгоритма с использованием операторов условия, обеспечить вывод полученных результатов. Не допускается использование операторов, прерывающих ход программы (break, goto).
Ввести номер года (положительное целое число). Определить количество дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный — 366 дней. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 — являются).
Ввести целочисленные координаты трех вершин прямоугольника, стороны которого параллельны координатным осям. Найти координаты его четвертой вершины. Если пользователь введёт координаты точек так, что нельзя получить прямоугольник со сторонами, параллельными координатным осям, вывести соответствующее сообщение.
На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту точку и ее расстояние от точки A. Если пользователь введёт координаты B и C так, что они будут равноотстоящими от А, совпадать с А или между собой - выдать соответствующее сообщение.
Ввести четыре целых числа A, B, C, D, одно из которых отлично от трех других, равных между собой. Определить порядковый номер числа, отличного от остальных. Если пользователь введёт числа так, что они не будут соответствовать условию задачи - выдать сообщение об ошибке.
Ввести три числа А,В,С. Если среди них имеется хотя бы одно четное вывести максимальное из них, иначе - минимальное. Если пользователь введёт числа так, что среди них нельзя будет определить лишь одно максимальное/минимальное - выдать соответствующее сообщение.
Ввести три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию или убыванию, то удвоить их; в противном случае заменить знак каждой переменной на противоположный. Вывести новые значения переменных A, B, C.
Ввести три числа A, B, C. Найти сумму двух наибольших из них. Если пользователь введёт числа так, что среди них нельзя будет определить два наибольших - выдать соответствующее сообщение.
Ввести три числа A, B, C. Вывести вначале наименьшее, а затем наибольшее из данных чисел. Если пользователь введёт числа так, что среди них нельзя будет определить одно наименьшее/наибольшее - выдать соответствующее сообщение.
Ввести три числа A, B, C. Вывести среднее из них (то есть число, расположенное между наименьшим и наибольшим). Если пользователь введёт числа так, что среди них нельзя будет определить среднее - выдать соответствующее сообщение.
Ввести три целых числа A, B, C. Найти количество положительных и количество отрицательных чисел в исходном наборе.
Задание №2
Задачи на использование операторов варианта. Осуществить ввод необходимых данных, выполнить реализацию алгоритма с использованием операторов варианта, обеспечить вывод полученных результатов. Не допускается использование массивов и операторов goto.
Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, предшествующей указанной. Если пользователь вводит D и M несоответствующие календарю - выдать сообщение об ошибке.
Мастям игральных карт присвоены порядковые номера: 1 — пики, 2 — трефы, 3 — бубны, 4 — червы. Достоинству карт, старших десятки, присвоены номера: 11 — валет, 12 — дама, 13 — король, 14 — туз. Даны два целых числа: N — достоинство (6 <= N <= 14) и M — масть карты (1 <= M <= 4). Вывести название соответствующей карты вида «шестерка бубен», «дама червей», «туз треф» и т. п. Если пользователь введёт данные не соответствующие условию задачи - выдать сообщение об ошибке.
Дано целое число в диапазоне 20–69, определяющее возраст (в годах). Вывести строку-описание указанного возраста, обеспечив правильное согласование числа со словом «год», например: 20 — «двадцать лет», 32 — «тридцать два года», 41 — «сорок один год». Если пользователь введёт данные не соответствующие условию задачи - выдать сообщение об ошибке.
Дано целое число в диапазоне 10–40, определяющее количество учебных заданий по некоторой теме. Вывести строку-описание указанного количества заданий, обеспечив правильное согласование числа со словами «учебное задание», например: 18 — «восемнадцать учебных заданий», 23 — «двадцать три учебных задания», 31 — «тридцать одно учебное задание». Если пользователь введёт данные не соответствующие условию задачи - выдать сообщение об ошибке.
Дано целое число в диапазоне 100–999. Вывести строку-описание данного числа, например: 256 — «двести пятьдесят шесть», 814 — «восемьсот четырнадцать». Если пользователь введёт данные не соответствующие условию задачи - выдать сообщение об ошибке.
В восточном календаре принят 60-летний цикл, состоящий из 12-летних подциклов, обозначаемых названиями цвета: зеленый, красный, желтый, белый и черный. В каждом подцикле годы носят названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. По номеру года определить его название, если 1984 год — начало цикла: «год зеленой крысы».
Составить программу, которая бы присваивала переменной Т значение true, если дата d1,m1 предшествует(в рамках года) дате d2,m2 и значение false иначе(d1 и d2-дата,m1 и m2-месяц). Переменную T распечатать. Год считать невисокосным. Если введённые даты не соответствуют календарю - выдать сообщение об ошибке.
Составить программу, которая бы по введённому значению некоторой длины в метрах выводила бы это значение с использованием наиболее подходящей кратной или дольной приставки (км,м,дм,см,мм,мкм,нм). Подсказка: для нахождения порядка числа использовать десятичный логарифм.
Для натурального числа К напечатать фразу "мы нашли К грибов в лесу", согласовав окончание слова "гриб" с числом К. Обратите внимание на особое согласование в случае когда 10<К<20.
Составить программу, которая бы реализовала следующий алгоритм: переменной Т присвоить значение true если сочетание D(день) M(месяц) G(год) образует правильную дату, и значение false – иначе (учитывая количество дней в месяце и название месяца). Переменную T распечатать. Примечание: високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 — являются).
Задание №3
Задачи на использование операторов цикла for . Осуществить ввод необходимых данных, выполнить реализацию алгоритма с использованием операторов цикла for, обеспечить вывод полученных результатов. Не разрешается использовать другие операторы цикла. Не допускается использование массивов и операторов, прерывающих ход программы (break, goto).
Ввести целое число N > 1 и две вещественные точки на числовой оси: A, B (A < B). Отрезок [A, B] разбит на N равных отрезков. Вывести H — длину каждого отрезка, а также значения функции f(x) = 1 – sin(x) в точках, разбивающих отрезок [A, B]: f(A), f(A + H), f(A + 2H), ..., f(B).
Ввести целое число N > 0 и вещественное a > 0. Последовательность вещественных чисел определяется следующим образом xn+1=(xn+a/xn)/2. Считая x0=a вывести первые N членов последовательности. Такой способ применяли еще в древнем Вавилоне для вычисления квадратного корня числа a. После выдачи последовательности распечатать значение квадратного корня из a, вычисленное стандартной функцией.
Ввести целое число N > 1. Последовательность чисел Фибоначчи FK (целого типа) определяется следующим образом: F1 =1, F2= 1, FK=FK-2 + FK-1, K = 3, 4, ... N. Вывести элементы F1, F2, …, FN.
Ввести целое число N > 0. Последовательность вещественных чисел AK определяется следующим образом: A0=1/0!, AK=1/K!, K=1, 2, ...,N. Вывести сумму последовательности. Примечание К! — К–факториал — обозначает произведение всех целых чисел от 1 до К. См. также: 
Логистическое отображение (также известное, как квадратичное отображение или отображение Фейгенбаума) даётся формулой xn+1=r*xn*(1-xn). Считая x0=0.333 распечатать N первых элементов отображения. Величину r, принадлежащую интервалу (0..4) вводит пользователь. (При r>3.6 должна наблюдаться хаотическая последовательность). В качестве тестового примера построить последовательности при разных значениях r. См. также: 
Ввести целое число N > 2. Последовательность целых чисел AK определяется следующим образом: A1=1, A2=2, A3=3, AK=AK–1 + AK–2 – 2*AK–3, K = 4, 5, ... N. Вывести элементы A1, A2, ..., AN.
Ввести вещественное число X и целое число N > 0. Найти значение выражения X – X3/(3!) + X5/(5!) – ... + (–1)N*X2*N+1/((2*N+1)!) , которое является приближенным значением функции sin в точке X. Отобразить сумму ряда и рассчитанное с помощью функции sin значения. См. также: 
Ввести целое число N > 0. Найти квадрат данного числа, используя для его вычисления следующую формулу: N2=1 + 3 + 5 + ... + (2*N – 1). После добавления к сумме каждого слагаемого выводить текущее значение суммы (в результате будут выведены квадраты всех целых чисел от 1 до N).
Ввести целое число N > 0. Найти значение выражения 1.1 – 1.2 + 1.3 – ... (N слагаемых, знаки чередуются). Условный оператор не использовать.
Ввести целое число N > 0. Среди цифр этого числа выделить только чётные, из которых составить другое число и вывести. Например, при N=3854972 ответом будет число 842.
Задание №4
Задачи на использование операторов цикла с постусловием. Осуществить ввод необходимых данных, выполнить реализацию алгоритма с использованием операторов цикла do - while, обеспечить вывод полученных результатов. Использование других операторов цикла недопустимо. Не допускается использование массивов и операторов, прерывающих ход программы (break, goto).
Ввести два целых числа N1 и N2. Если N1 >N2, найти сумму целых чисел в диапазоне N1 ... N2. Если N2 больше N1, найти сумму целых чисел в диапазоне N2... N1. Если N1 равно N2, вывести на экран соответствующее сообщение.
Осуществить ввод последовательности целых чисел, определить третье положительное число и подсчитать количество цифр в нем. Последовательность потенциально не ограничена, окончанием последовательности служит третье положительное число.
Осуществить ввод последовательности целых чисел, определить максимальное четное число, его порядковый номер и подсчитать сумму его цифр. Последовательность потенциально не ограничена, окончанием последовательности служит число 0. Если окажется, что чётных чисел в последовательности не было, вывести соответствующее сообщение.
Осуществить ввод последовательности целых чисел и сравнить, что больше, сумма положительных или произведение отрицательных. Последовательность потенциально не ограничена, окончанием последовательности служит число 0.
Осуществить ввод последовательности целых чисел и определить предпоследнее отрицательное число. Последовательность потенциально не ограничена, окончанием последовательности служит число 0. Если окажется, что в последовательности было менее двух отрицательных чисел, вывести соответствующее сообщение.
Осуществить ввод целого числа М. На промежутке от 1 до M найти все числа Армстронга. Натуральное число из n цифр называется числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому числу. Примеры: 153=13 + 53 + 33; 1634=14+64+34+44. 
Ввести действительное число х и натуральное число n. Вычислить x*(x - n)*(x - 2*n)(x - 3*n)…(x - n2).
Осуществить ввод последовательности целых чисел. Определить, сколько из них и какие принимают наибольшее значение. Последовательность потенциально не ограничена, окончанием последовательности служит число 0.
Осуществить ввод последовательности целых чисел в количестве не меньшем двух. Вычислить сумму тех из них, порядковые номера которых - простые числа. Последовательность потенциально не ограничена, окончанием последовательности служит число 0.  
Осуществить ввод последовательности целых чисел в количестве не меньшем трёх. Определить, сколько из них больше своих "соседей", т.е. предыдущего и последующего чисел. Последовательность потенциально не ограничена, окончанием последовательности служит число 0.
Задание №5
Задачи на использование операторов цикла с предусловием. Осуществить ввод необходимых данных, выполнить реализацию алгоритма с использованием операторов цикла while, обеспечить вывод полученных результатов. Использование других операторов цикла недопустимо. Не допускается использование массивов и операторов, прерывающих ход программы (break, goto).
Ввести целое число N > 0, являющееся некоторой степенью числа 2: N=2K. Найти целое число K — показатель этой степени. Не разрешается использовать логарифм. Если пользователь введёт число не являющееся степенью числа 2 - вывести соответствующее сообщение.
Ввести целое число N > 0. Используя операции деления нацело и взятия остатка от деления, найти число, полученное при прочтении числа N справа налево
Ввести целое число N > 1. Если оно является простым, то есть не имеет положительных делителей, кроме 1 и самого себя, то вывести это число, иначе вывести ближайшее большее простое число.
Ввести целое число N > 1. Последовательность чисел Фибоначчи FK определяется следующим образом: F1=1, F2=1, FK=FK–2 + FK–1, K=3, 4, ... . Проверить, является ли число N числом Фибоначчи. Если является, то вывести True, если нет — вывести False.
Ввести вещественное число e > 0. Последовательность вещественных чисел AK определяется следующим образом: A1=1, A2=2, AK=(AK–2 + 2·AK–1)/3, K = 3, 4, … . Найти первый из номеров K, для котороых выполняется условие |AK – AK–1| < e, и вывести этот номер, а также числа AK–1 и AK.
Ввести положительные числа A, B, C. На прямоугольнике размера A x B размещено максимально возможное количество квадратов со стороной C (без наложений). Найти количество квадратов, размещенных на прямоугольнике. Операции умножения и деления не использовать.
Ввести два целых числа a и b. Вычислить НОД (a,b) - наибольший общий делитель а и b. Делителями называются числа, которые делят без остатка заданное число, кроме единицы и самого этого числа.
Ввести натуральное (целое неотрицательное) число а и целое положительное число d. Вычислить частное q и остаток r при делении а на d, не используя операций целочисленного деления и нахождения остатка. Разрешается использовать только целые переменные и целочисленные операции.
Ввести целые положительные числа A и B. Найти их наибольший общий делитель (НОД), используя алгоритм Евклида: НОД(A, B)=НОД(B, A mod B), если B ? 0; НОД(A, 0)=A, где «mod» обозначает операцию взятия остатка от деления.
Ввести целое число N > 1. Найти первое из чисел Фибоначчи, большее чем N. Последовательность чисел Фибоначчи FK (целого типа) определяется следующим образом: F1 =1, F2= 1, FK=FK-2 + FK-1, K = 3, 4, ... N.
Контрольные вопросы.
Что понимается под термином «.NET Framework»?
Зависят ли приложения, разрабатываемые в .NET, от платформы?
Возможно ли создание гетерогенных приложений в среде .NET?
Что означает аббревиатура «CLR»?
Является ли среда CLR многоязычной?
Приведите обобщенный синтаксис объявления переменной на языке C#.
Приведите обобщенный синтаксис инициализации переменной на языке C#.
Какая дисциплина (вариант контроля) типов принята в языке C#?
Каковы основные категории типов в языке C#?
Перечислите пять простых типов языка C#.
Что понимается под областью видимости переменной в языке C#?
Как обозначается область видимости переменной в языке C#?
Как соотносится время жизни переменной и область видимости?
Приведите синтаксис условного оператора в общем виде.
Проиллюстрируйте его фрагментом программы на языке C#.
Приведите синтаксис оператора выбора в общем виде.
Проиллюстрируйте его фрагментом программы на языке C#.
Что понимается под термином «пространство имен»?
В чем состоит назначение пространств имен в языке C#?
Благодаря какому механизму удается избежать коллизий имен в языке C#?
Какое пространство имен использует системная библиотека .NETFramework?
Какое пространство имен использует системная библиотека C#?
В чем состоит назначение директивы using?
Какой символ используется для указания полного имени объекта в языке C#?
Приведите синтаксис директивы using в общем виде.
Проиллюстрируйте его фрагментом программы на языке C#.
Приведите синтаксис описания пространства имен в общем виде.