Вывод данных осуществляется с использованием метода WriteLine (или Write) (класса Сonsole). После выполнения WriteLine производится перевод строки и последующий вывод происходит в новую строку. После выполнения Write перевода строки не происходит. Вывод будет продолжен в текущую строку.
Простейшие варианты использования указанных средств для вывода значений отдельных переменных использованы в приведенных выше программах.
Вывод может быть организован с использованием формата. В этом случае оператор вывода имеет следующий вид:
WriteLine (["строка формата",] список вывода);
Квадратные скобки [] означают необязательный параметр, т.е. строка формата может отсутствовать, но только в том случае, если в списке вывода один элемент. При выводе нескольких элементов использование формата обязательно.
В списке вывода перечисляются через запятую элементы списка. В качестве элементов списка вывода в общем случае могут фигурировать имена переменных, константы или выражения, которые перед выводом вычисляются.
В строке формата для каждого выводимого значения в фигурных скобках указывается:
· номер выводимого элемента n (нумерация начинается с 0); порядок вывода может не совпадать с порядком следования элементов в списке вывода;
· количество позиций m, в которые должно быть выведено значение элемента списка вывода (необязательный параметр);
· код форматирования k (необязательный параметр).
Для данных типа int используется код d(или D).Например, {0:d} или {0,6:d}.
В первом случае нулевой элемент списка, имеющий значение типа int, выводится в поле, размер которого не указан. Количество позиций, в которые осуществляется вывод, соответствует количеству знаков в числе.
Во втором случае значение выводится в поле размером 6 позиций. Выводимое число прижимается к правой границе. Если размер поля недостаточен для размещения числа, то указание размера игнорируется.
Для данных типа double может использоваться код f(F) или код e(E). Первый используется для вывода в форме целой и дробной частей, разделенных запятой (форма с фиксированной запятой). Второй – для вывода вещественного числа в форме с порядком (можно указать также количество цифр после запятой, в целой части выводится всегда одна цифра).
Например, необходимо вывести значение 13,653 и пусть это будет 1-й элемент списка вывода. При выводе в форме с фиксированной запятой можно использовать формат {1,8:f2} или {1,f} (возможны и другие варианты).
В первом случае значение выводится в поле размером 8 позиций с двумя знаками после запятой в правые позиции поля, т.е. будет выведено 13,65.
Во втором случае размер поля и количество знаков после запятой не указаны, и выводятся все знаки, представляющие число, т.е. будет выведено 13,653.
При выводе вещественного числа в форме с порядком (например, 1-го элемента списка) можно в строке формата указать {1,e2}или {1,10:E3} (возможны и другие варианты).
В первом случае число будет выведено в виде 1,37е+001 (при выводе значение округляется в большую сторону), во втором – в поле размером 10 позиций в виде 1,365е+001.
Таким образом, для каждого элемента списка имеем {n[,m][:k]}. Кроме того, в строке формата могут содержаться и другие символы, которые обозначают сами себя и выводятся без изменений; наличие в строке символа \t соответствует нажатию клавиши Tab (табулирование), символа \n – переводу строки. Другие возможности здесь не рассматриваются.
Пример.
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
double x = 3.356345, y = 15.24567;
Console.WriteLine(
"j={0:d} {2,8:f3} {1} {3:e2}",
3, 8, x, y);
Console.ReadKey();
}
}
}
Здесь выведенная строка соответствует использованному формату: выведено j=, затем три пробела, далее нулевой элемент списка по формату для целых d без указания размера поля, следующим выводится второй (предпоследний) элемент списка по формату для вещественных чисел в поле размером 8 с тремя цифрами после запятой, далее первый элемент списка без указания форматного кода и, наконец, последний (третий) элемент списка по формату с порядком с двумя цифрами после запятой. Обратим внимание на то, что целая часть от дробной при выводе отделяется запятой.
Если в приведенном коде использовать оператор вывода
Console.WriteLine("j= {0:d} \t {2,8:f3} \n {1} {3:e2}", 3, 8, x, y);
то вывод будет следующим (после вывода первых двух элементов следует перевод строки). Обратим также внимание и на эффект от символа табулирования.
Оператор Console.ReadKey() используется для того, чтобы задержать результаты на экране. Иначе они очень быстро исчезнут.
Другие примеры форматированного вывода см. в гл. 2.3.
2. Реализация простейших алгоритмов на языке C#