Форматирование вывода

Применяется для форматирования данных, выводимых в поток при помощи методов 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  
Денежные единицы С Все 10:С _$1,234.50
Проценты Р Все 0:P 89.00%
Шестнадцатеричные числа X Только целые 8X 00089AF3

 

Спецификатор G при использовании его с числами обладает наибольшей гибкостью. Он подстраивается к типу получаемого им значения и не принимает в расчет спецификаторы точности. Им удобно пользоваться, если требуется вставлять числа в текст. Для таблиц он не так удобен. Для того чтобы выровнять числа и десятичные точки, следует использовать F или даже R. Спецификатор R формирует строку примерно так же, как F или Е, но имеет то дополнительное преимущество, что формируемая им строка при вводе может быть преобразована в точности в то число, из которого она получена, поэтому он удобен для сериализации. Спецификатор N удобен для представления больших чисел, потому что он делит число на группы из трех цифр, хотя во многих странах вставляемую им запятую приходится преобразовывать в пробел (см. ниже). Спецификатор Е также удобен для представления больших чисел, a D полезен в тех случаях, когда во всех числах должно быть одно и тоже число цифр, как, например, в банковских счетах.

Область использования спецификатора денежных единиц очевидна, однако может возникнуть необходимость в его дополнительной настройке. Спецификатор Р может привести к ошибке, так сначала он умножает значение на 100. Спецификатор X предназначен для представления шестнадцатеричных чисел и часто используется с фиксированным числом цифр, когда слева вставляются лидирующие ноли.

 

 

Задание.

Составить блок-схему алгоритма и программу на языке C#, реализующую такие операции в соответствии с индивидуальным заданием, выбираемым из таблицы 2.2:

  1. вычисления в цикле заданного вида значений заданной функции y выполнить для переменной x, изменяющейся в заданном интервале [ x 1, x 2] с заданным шагом D x, проверяя при этом возможность вычислений, как в предыдущей лабораторной работе;
  2. в теле цикла организовать поиск максимального y_max и минимального y_min значений функции y, а также номеров шагов n_max и n_min, на которых достигаются эти значения;
  3. вычисленные значения вывести на консоль в виде таблицы такого формата:

| № шага | x | y | y_min | n_min | y_max | n_max |

  1. выполнить ручной просчет для значения аргумента на третьем шаге и сравнить его с результатами выполнения программы;
  2. сделать вывод.

Содержание отчета:

- тема, цель, задание;

- листинг программы;

- консольное окно с результатами работы программы;

- блок-схема алгоритма;

- вывод.

Контрольные вопросы.

  1. Структура оператора ветвления.
  2. Синтаксис условного оператора.
  3. Структура оператора множественного выбора.
  4. Ограничения на использование оператора множественного выбора.
  5. Преимущества и недостатки оператора множественного выбора.
  6. Виды циклов, отличия и особенности использования.
  7. Что такое логическое выражение?
  8. Правила составления сложных логических выражений.
  9. Как работает оператор ветвления?
  10. Как работает оператор множественного выбора?
  11. Что такое тело цикла?
  12. Что такое параметрический цикл?
  13. Структура заголовка параметрического цикла.
  14. Что такое итерация?
  15. Оператор досрочного выхода из цикла и особенности его использования.

Таблица 2.2 Варианты индивидуальных заданий для лабораторной работы №2

№ варианта Заданная функция Интервал аргумента и величина шага Вид цикла
  [0,3; 3], Dx = 0,15 с предусловием
  [-1; 2], Dx = 0,15 с постусловием
  [0,8; 2], Dx = 0,1 параметрический
  [1; 1,5], Dx = 0,05 с предусловием
  [1; 3], Dx = 0,1 с постусловием
  [0,2; 4], Dx = 0,2 параметрический
  [0; p], Dx = p/20 с предусловием
  [1; 4], Dx = 0,2 с постусловием
  [-5; 3], Dx = 0,5 параметрический
  [0; 2p], Dx = p/10 с предусловием
  [2; 7], Dx = 0,2 с постусловием
  [0; p/2], Dx = p/60 параметрический
  [0,5; 3,5], Dx = 0,25 с предусловием
  [0,25; 2], Dx = 0,05 с постусловием
  [0; 3p/2], Dx = p/10 параметрический
  [-3; -1], Dx = 0,1 с предусловием
  [2; 3], Dx = 0,05 с постусловием
  [1; 4], D x = 0,2 параметрический
  [-5; -4], Dx = 0,025 с предусловием
  [0; 2p/3], Dx = p/40 с постусловием
  [0; p/2], D x = p/40 параметрический
  [0; 2p/3], D x = p/30 с предусловием
  [0,5; 2,5], D x = 0,1 с постусловием
  [0; p], D x = p/30 параметрический
  [-5; 1], D x = 0,25 с предусловием
  [1,5; 3], D x = 0,05 с постусловием
  [0; 2p], D x = p/15 параметрический
  [0,25; 5,25], D x = 0,25 с предусловием
  [0; p/4], D x = p/60 с постусловием
  [-2,5; 2,5], D x = 0,25 параметрический
  [0; 3p/2], D x = p/20 с предусловием
  [-0,5; 2,5], D x = 0,15 с постусловием
  [1,3; 6,1], D x = 0,3 параметрический
  [p/2; 3p/2], D x = p/30 с предусловием
  [0; p/2], D x = p/40 с постусловием
  [3p/2, 5p/2], D x = p/60 параметрический
  [–p/2; p/2], D x = p/40 с предусловием
  [-5; 3], D x = 0,4 с постусловием
  [2,5; 7,5], D x = 0,25 параметрический
  [0; p/3], D x = p/60 с предусловием

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: