Программирование >>  Обработка исключительных ситуаций 

1 ... 16 17 18 [ 19 ] 20 21 22 ... 142


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

1. Символы, представляющие собой число, вводятся с клавиатуры в строковую переменную.

2. Выполняется преобразование из строки в переменную соответствующего типа.

Преобразование можно выполнить либо с помощью специального класса Convert, определенного в пространстве имен System, либо с помощью метода Parse, имеющегося в каждом стандартном арифметическом классе. В листинге 3.10 используются оба способа.

Листинг3.10. Методы ввода using System;

namespace ConsoleApplicationl class Classl

static void MainO

Console.WriteLineC Введите строку string s = Console.ReadLineO: Console.WriteLineC s = + s );

Console.WriteLineC Введите символ ); char с = (char)Console.ReadO; 2

Console.ReadLineC); 3

Console.WriteLineC c = + с );

string buf; строка - буфер для ввода чисел

Console.WriteLineC Введите целое число ); buf = Consolе.ReadLineC);

int i = Convert.ToInt32( buf ); 1/4

Console.WriteLineC i );

Console.WriteLineC Введите вещественное число ); buf = Console.ReadLineO:

double x = Convert.ToDoubleС buf ); 5

Console.WriteLineC x );

Console.WriteLineC Введите вещественное число ); buf = Console.ReadLineO;

double у - double.ParseC buf ); б

Console.WriteLineC у );

Console.WriteLineC Введите вещественное число ); buf - Console.ReadLineO;

decimal z = decimal.ParseC buf ); 7

Console.WriteLineC z );



Ввод-вывод в файлы

При отладке даже небольших программ может потребоваться их выполнить

не раз, не два и даже не десять. При этом ввод исходных данных может стать

утомительным и испортить все удовольствие от процесса . Удобно заранее подготовить исходные данные в текстовом файле и считывать их в программе. Кроме того, это дает возможность не торопясь продумать, какие исходные данные требуется ввести для полной проверки программы, и заранее рассчитать, что должно получиться в результате.

1 При этом система задает вопрос, хотите ли вы воспользоваться услугами отладчика. От этого предложения следует отказаться, поскольку на данном уровне освоения языка предоставляемые отладчиком сведения будут бесполезны.

А удовольствие - необходимое условие написания хорошей программы!

К этому примеру необходимо сделать несколько пояснений. Ввод строки выполняется в операторе 1. Длина строки не ограничена, ввод выполняется до символа перевода строки.

Ввод символа выполняется с помощью метода Read, который считывает один символ из входного потока (оператор 2). Метод возвращает значение типа int, представляющее собой код символа, или -1, если символов во входном потоке нет (например, пользователь нажал клавишу Enter). Поскольку нам требуется не int, a char, а неявного преобразования от int к char не существует, приходится применить операцию явного преобразования типа, которая описана в разделе Явное преобразование типа (см. с. 49).

За оператором 2 записан оператор 3, который считывает остаток строки и никуда его не передает. Это необходимо потому, что ввод данных выполняется через буфер - специальную область оперативной памяти. Фактически, данные сначала заносятся в буфер, а затем считываются оттуда процедурами ввода. Занесение в буфер выполняется по нажатию клавиши Enter вместе с ее кодом. Метод Read, в отличие от ReadLine, не очищает буфер, поэтому следующий после него ввод будет выполняться с того места, на котором закончился предыдущий.

В операторах 4 и 5 используются методы класса Convert, в операторах 6 и 7 - методы Parse классов Double и Decimal библиотеки .NET, которые используются здесь через имена типов С# double и decimal.

ВНИМАНИЕ-

При вводе вещественных чисел дробная часть отделяется от целой с помощью запятой, а не точки. Иными словами, при вводе используются правила операционной системы, а не языка программирования. Допускается задавать числа с порядком, например, 1,95е-8.

Если вводимые с клавиатуры символы нельзя интерпретировать как веществен-

ное число, генерируется исключение .



Вывод из программы тоже бывает полезно выполнить не на экран, а в текстовый файл для последующего неспешного анализа и распечатки. Работа с файлами подробно рассматривается в главе 11, а здесь приводятся лишь образцы для использования в программах. В листинге 3.11 приведена версия программы из листинга 3.9, выполняющая вывод не на экран, а в текстовый файл с именем output.txt. Файл создается в том же каталоге, что и исполняемый файл программы, по умолчанию - ...\ConsoleApplication1\bin\Debug.

Листинг3.11. Вывод в текстовый файл

using System;

using System.10:

namespace ConsoleApplicationl

{ class Classl

static void MainO

StreamWriter f int i = 3; double у = 4.12; decimal d = 600m; string s = Вася ;

new StreamWriterC output.txt )

f.WriteLineC f.WriteLineC f.WriteLineC

+ i );

{0} \nd = + s ):

{1} . y, d );

4 lib

f.CloseO;

Для того чтобы использовать в программе файлы, необходимо:

1. Подключить пространство имен, в котором описываются стандартные классы для работы с файлами (оператор 1).

2. Объявить файловую переменную и связать ее с файлом на диске (оператор 2).

3. Выполнить операции ввода-вывода (операторы 3-5).

4. Закрыть файл (оператор 6).

СОВЕТ-

При отладке программы бывает удобно выводить одну и ту же информацию и на экран, и в текстовый файл. Для этого соответствующие операторы дублируют.

Ввод данных из файла выполняется аналогично. В листинге 3.12 приведена программа, аналогичная листингу 3.10, но ввод выполняется из файла с именем input.txt, расположенного в каталоге D:\C#. Естественно, из программы убраны все приглашения к вводу.



1 ... 16 17 18 [ 19 ] 20 21 22 ... 142

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика