
- •Лабораторная работа №1
- •Теоретические сведения. Среда .Net RunTime и библиотека Framework
- •Процесс компиляции с# - программы:
- •Управляемый и неуправляемый код.
- •Создание проекта.
- •Анатомия программы.
- •Контрольные вопросы.
- •Лабораторная работа №2
- •Теоретические сведения. Операторы условия.
- •Оператор множественного выбора:
- •Форматирование вывода
- •Задание.
- •Контрольные вопросы.
- •Лабораторная работа №3
- •Теоретические сведения.
- •Объявление массивов
- •Значения по умолчанию
- •Обращение к элементам массива
- •Инициализация элементов массива
- •Цикл foreach
- •Инициализация одномерных массивов
- •Практический пример. Одномерный массив.
- •Задание.
- •Контрольные вопросы.
- •Лабораторная работа №4
- •Теоретические положения. Уровни доступа
- •Объявление статических полей и методов класса
- •Пометка и сжатие
- •Форсированная сборка мусора
- •Методы. Передача параметров по значению
- •Методы. Передача параметров по ссылке.
- •Практический пример. Класс Array (одномерный массив).
- •Задание.
- •Контрольные вопросы.
- •Лабораторная работа №5
- •Задание.
- •Список рекомендуемой литературы
Форматирование вывода
Применяется для форматирования данных, выводимых в поток при помощи методов Write() или WriteLine(), в частности, для аккуратного выравнивания данных в таблице (в т.ч. контроль числа выводимых десятичных разрядов). Выполняется с использованием форматирующей строки содержит всю информацию о выводимых элементах текста, а также шаблон для каждой указываемой далее переменной, причем каждый шаблон может содержать спецификацию формата. Например, форматированный вывод аккуратно выровненной таблицы значений функции y от варьируемого аргумента x можно выполнить таким предложением вывода:
Console.WriteLine("{0,4} {1,8:f2}", x, y) ;
которое означает «Взять нулевой выводимый элемент и записать его с выравниванием вправо в четырех столбцах, после чего взять первый выводимый элемент и записать его с выравниванием вправо в следующих восьми столбцах в формате с фиксированной точкой и двумя десятичными знаками». В результате получится красивая ровная таблица:
0 0.00
10 3.16
20 4.47
30 5.48
…
Форматирующий параметр является первым параметром вызова Write или WriteLine, которая имеет, таким образом, альтернативную форму:
Console.WriteLine("текст{формат0}текст{формат1}текст…"элемент0, элемент1, …);
Элементами вывода могут быть любые переменные С#, для которых может существовать спецификация формата. Спецификации формата формат0, формат1, ... описаны ниже. Текстовые вставки текст не обязательны. В качестве формата может также выступать отдельная символьная строка.
Для правильной работы метод WriteLine должен содержать столько же спецификаций формата, сколько затем указано выводимых элементов. Спецификации формата заключаются в фигурные скобки и нумеруются от ноля. Форматы и элементы должны соответствовать друг другу.
Спецификация формата: {N,M:s}
N — указывает на позицию элемента в списке выводимых переменных после того, как строка формата будет передана в метод Write; позиции элементов нумеруются от 0.
М — задает ширину области, в которую будет помещено форматированное значение. Если М отсутствует или отрицательно, значение будет выровнено влево, иначе — вправо.
s — является необязательной строкой форматирующих кодов, которые используются для управления форматированием чисел, даты и времени, денежных знаков и т. д. Параметр s носит название спецификатора формата. В системе .NET имеются три стандартных типа спецификаторов формата: для чисел, объектов даты/времени и для перечислимых объектов.
Таблица 2.1. Примеры числовых спецификаторов форматов
Спецификатор |
Буква |
Данные |
Пример |
Строка |
Общий |
G |
Все (настраивается) |
8:G 8:G |
__1234.5 ____1234 |
Фиксированная точка |
F |
Все |
8:F2 |
_1234.50 |
С возвратом |
R |
Все |
8:R2 |
1234.5 |
Число |
N |
Все |
8:N1 |
1,2345.6 |
Выражение со степенью |
Е |
Все |
14:E6 |
_1.234500E+003 |
Десятичное выражение |
D |
Только целые |
8:D |
00001234 |
Денежные единицы |
С |
Все |
10:С |
_$1,234.50 |
Проценты |
Р |
Все |
0:P |
89.00% |
Шестнадцатеричные числа |
X |
Только целые |
8X |
00089AF3 |
Спецификатор G при использовании его с числами обладает наибольшей гибкостью. Он подстраивается к типу получаемого им значения и не принимает в расчет спецификаторы точности. Им удобно пользоваться, если требуется вставлять числа в текст. Для таблиц он не так удобен. Для того чтобы выровнять числа и десятичные точки, следует использовать F или даже R. Спецификатор R формирует строку примерно так же, как F или Е, но имеет то дополнительное преимущество, что формируемая им строка при вводе может быть преобразована в точности в то число, из которого она получена, поэтому он удобен для сериализации. Спецификатор N удобен для представления больших чисел, потому что он делит число на группы из трех цифр, хотя во многих странах вставляемую им запятую приходится преобразовывать в пробел (см. ниже). Спецификатор Е также удобен для представления больших чисел, a D полезен в тех случаях, когда во всех числах должно быть одно и тоже число цифр, как, например, в банковских счетах.
Область использования спецификатора денежных единиц очевидна, однако может возникнуть необходимость в его дополнительной настройке. Спецификатор Р может привести к ошибке, так сначала он умножает значение на 100. Спецификатор X предназначен для представления шестнадцатеричных чисел и часто используется с фиксированным числом цифр, когда слева вставляются лидирующие ноли.