Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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

ЛИНЕЙНЫЕ ПРОГРАММЫ

 

Цель работы: приобрести навыки написания простейших программ на языке C#.

Линейной называется программа, все операторы которой выполняются последовательно в том порядке, в котором они записаны. Простейшим примером линейной программы является программа расчета по заданной формуле. Она состоит из трех этапов: ввод исходных данных, вычисление по формуле и вывод результатов.

Простейший ввод-вывод

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

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

Листинг 1. Методы вывода

Результат работы программы:

До сих пор использовался метод WriteLine для вывода значений переменных и литералов различных встроенных типов. Это возможно благодаря тому, что в классе Console существует несколько вариантов методов с именами Write и WriteLine, предназначенных для вывода значений различных типов.

Методы с одинаковыми именами, но разными параметрами называются перегруженными. Компилятор определяет, какой из методов вызван, по типу передаваемых в него величин. Методы вывода в классе Consolе перегружены для всех встроенных типов данных, кроме того, предусмотрены варианты форматного вывода.

Листинг 1 содержит два наиболее употребительных варианта вызова методов вывода. Сначала обратите внимание на способ вывода пояснений к значениям переменных в строках 1 и 3. Пояснения представляют собой строковые литералы. Если метод WriteLine вызван с одним параметром, он может быть любого встроенного типа, например, числом, символом или строкой. Нам же требуется вывести в каждой строке не одну, а две величины: текстовое пояснение и значение переменной, – поэтому прежде чем передавать их для вывода, их требуется ≪склеить≫ в одну строку с помощью операции +.

Перед объединением строки с числом надо преобразовать число из его внутренней формы представления в последовательность символов, то есть в строку. Преобразование в строку определено во всех стандартных классах С# – для этого служит метод ToString(). В данном случае он выполняется неявно, но можно вызвать его и явным образом:

Console.WriteLine("i = " + i.ToString());

Оператор 2 иллюстрирует форматный вывод. В этом случае используется другой вариант метода WriteLine, который содержит более одного параметра. Первым параметром методу передается строковый литерал, содержащий помимо обычных символов, предназначенных для вывода на консоль, параметры в фигурных скобках, а также управляющие последовательности. Параметры нумеруются с нуля, перед выводом они заменяются значениями соответствующих переменных в списке вывода: нулевой параметр заменяется значением первой переменной (в данном примере – у), первый параметр – второй переменной (в данном примере – d) и т. д.

ПРИМЕЧАНИЕ

Для каждого параметра можно задать ширину поля вывода и формат вывода.

Из управляющих последовательностей чаще всего используются символы перевода строки (\n) и горизонтальной табуляции (\t).

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

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

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

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

Листинг 2. Методы ввода

Результат работы программы:

 

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

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

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

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

ВНИМАНИЕ

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

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

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

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

Вывод из программы тоже бывает полезно выполнить не на экран, а в текстовый файл для последующего неспешного анализа и распечатки. В листинге 3 приведена версия программы из листинга 1, выполняющая вывод не на экран, а в текстовый файл с именем output.txt. Файл создается в том же каталоге, что и исполняемый файл программы, по умолчанию –...\ConsoleApplication1\bin\Debug.

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

Результат работы программы:

 

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

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

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

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

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

СОВЕТ

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

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

Текстовый файл можно создать с помощью любого текстового редактора.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...