Опубликован: 19.02.2009 | Доступ: свободный | Студентов: 3073 / 803 | Оценка: 4.35 / 4.11 | Длительность: 16:28:00
ISBN: 978-5-94774-401-9
Лекция 2:

Технология объектно-ориентированного программирования

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >

Организация ввода-вывода данных. Форматирование

Программа при вводе данных и выводе результатов взаимодействует с внешними устройствами. Совокупность стандартных устройств ввода (клавиатура) и вывода (экран) называется консолью. В языке С# нет операторов ввода и вывода. Вместо них для обмена данными с внешними устройствами используются специальные объекты. В частности, для работы с консолью используется стандартный класс Console, определенный в пространстве имен System.

Вывод данных

В приведенных выше примерах мы уже рассматривали метод WriteLine, реализованный в классе Console, который позволяет организовывать вывод данных на экран. Однако существует несколько способов применения данного метода:

  1. Console.WriteLine(x); //на экран выводится значение идентификатора х
  2. Console.WriteLine("x=" + x +"y=" + y); /* на экран выводится строка, образованная последовательным слиянием строки "x=", значения x, строки "у=" и значения у */
  3. Console.WriteLine("x={0} y={1}", x, y); /* на экран выводится строка, формат которой задан первым аргументом метода, при этом вместо параметра {0} выводится значение x, а вместо {1} – значение y*/
Замечание.

Рассмотрим следующий фрагмент программы:

int i=3, j=4; Console.WriteLine("{0} {1}", i, j);

При обращении к методу WriteLine через запятую перечисляются три аргумента: "{0} {1}", i, j. Первый аргумент определяет формат выходной строки. Следующие аргументы нумеруются с нуля, так переменная i имеет номер 0, j – номер 1. Значение переменной i будет помещено в выходную строку на место {0}, а значение переменной j – на место {1}. В результате на экран будет выведена строка: 3 4. Если мы обратимся к методу WriteLine следующим образом Console.WriteLine("{0} {1} {2)", j, i, j), то на экран будет выведена строка: 4 3 4.

Последний вариант использования метода WriteLine является наиболее универсальным, потому что он позволяет не только выводить данные на экран, но и управлять форматом их вывода. Рассмотрим несколько примеров:

  1. Использование управляющих последовательностей:

    Управляющей последовательностью называют определенный символ, предваряемый обратной косой чертой. Данная совокупность символов интерпретируется как одиночный символ и используется для представления кодов символов, не имеющих графического обозначения (например, символа перевода курсора на новую строку) или символов, имеющих специальное обозначение в символьных и строковых константах (например, апостроф). Рассмотрим управляющие символы:

    Вид Наименование
    \a Звуковой сигнал
    \b Возврат на шаг назад
    \f Перевод страницы
    \n Перевод строки
    \r Возврат каретки
    \t Горизонтальная табуляция
    \v Вертикальная табуляция
    \\ Обратная косая черта
    \' Апостроф
    \" Кавычки

    Пример:

    static void Main()
    {
    Console.WriteLine("Ура!\nСегодня \"Информатика\"!!!");    
    }

    02_01

  2. Управление размером поля вывода:

    Первым аргументом WriteLine указывается строка вида {n, m} – где n определяет номер идентификатора из списка аргументов метода WriteLine, а m – количество позиций (размер поля вывода), отводимых под значение данного идентификатора. При этом значение идентификатора выравнивается по правому краю. Если выделенных позиций для размещения значения идентификатора окажется недостаточно, то автоматически добавится необходимое количество позиций. Пример:

    static void Main()
       {
        double x= Math.E;
        Console.WriteLine("E={0,20}", x);
        Console.WriteLine("E={0,10}", x);
        }
    02_02
  3. Управление размещением вещественных данных:

    Первым аргументом WriteLine указывается строка вида {n: ##.###} – где n определяет номер идентификатора из списка аргументов метода WriteLine, а ##.### определяет формат вывода вещественного числа. В данном случае под целую часть числа отводится две позиции, под дробную – три. Если выделенных позиций для размещения целой части значения идентификатора окажется недостаточно, то автоматически добавиться необходимое количество позиций. Пример:

    static void Main()
       {
        double x= Math.E;
        Console.WriteLine("E={0:##.###}", x);
        Console.WriteLine("E={0:.####}", x);
        }
    02_03
    Задание. Измените программу так, чтобы число e выводилось на экран с точностью до 6 знаков после запятой.
  4. Управление форматом числовых данных:

    Первым аргументом WriteLine указывается строка вида {n: <спецификатор>m} – где n определяет номер идентификатора из списка аргументов метода WriteLine, <спецификатор> - определяет формат данных, а m – количество позиций для дробной части значения идентификатора. В качестве спецификаторов могут использоваться следующие значения:

    Параметр Формат Значение
    C или c Денежный. По умолчанию ставит знак р. Изменить его можно с помощь объекта NumberFormatInfo Задается количество десятичных разрядов.
    D или d Целочисленный (используется только с целыми числами) Задается минимальное количество цифр. При необходимости результат дополняется начальными нулями
    E или e Экспоненциальное представление чисел Задается количество символов после запятой. По умолчанию используется 6
    F или f Представление чисел с фиксированной точкой Задается количество символов после запятой
    G или g Общий формат (или экспоненциальный, или с фиксированной точкой) Задается количество символов после запятой. По умолчанию выводится целая часть
    N или n Стандартное форматирование с использованием запятых и пробелов в качестве разделителей между разрядами Задается количество символов после запятой. По умолчанию – 2, если число целое, то ставятся нули
    X или x Шестнадцатеричный формат
    P или p Процентный

    Пример:

    static void Main()
     {
       Console.WriteLine("C Format:{0,14:C} \t{0:C2}", 12345.678);
       Console.WriteLine("D Format:{0,14:D} \t{0:D6}", 123);
       Console.WriteLine("E Format:{0,14:E} \t{0:E8}", 12345.6789);
       Console.WriteLine("G Format:{0,14:G} \t{0:G10}", 12345.6789);
       Console.WriteLine("N Format:{0,14:N} \t{0:N4}", 12345.6789);
       Console.WriteLine("X Format:{0,14:X} ", 1234);
       Console.WriteLine("P Format:{0,14:P} ", 0.9);    
     }

    02_04

Ввод данных

Для ввода данных обычно используется метод ReadLine, реализованный в классе Console. Особенностью данного метода является то, что в качестве результата он возвращает строку ( string ). Пример:

static void Main()
 {
   string s = Console.ReadLine();
   Console.WriteLine(s);
 }

Для того чтобы получить числовое значение необходимо воспользоваться преобразованием данных. Пример:

static void Main()
 {
   string s = Console.ReadLine();
   int x = int.Parse(s); //преобразование строки в число
   Console.WriteLine(x);
 }

Или сокращенный вариант:

static void Main()
 {
   //преобразование введенной строки в число
   int x = int.Parse(Console.ReadLine()); 
   Console.WriteLine(x);
 }

Для преобразования строкового представления целого числа в тип int мы используем метод int.Parse(), который реализован для всех числовых типов данных. Таким образом, если нам потребуется преобразовать строковое представление в вещественное, мы можем воспользоваться методом float.Parse() или double.Parse(). В случае, если соответствующее преобразование выполнить невозможно, то выполнение программы прерывается и генерируется исключение System.FormatExeption (входная строка имела неверный формат).

Задание. Измените предыдущий фрагмент программы так, чтобы с клавиатуры вводилось вещественное число, а на экран это число выводилось с точностью до 3 знаков после запятой.
< Лекция 1 || Лекция 2: 1234 || Лекция 3 >