Система ввода/вывода языка программирования. Лекция 12

Содержание

Слайд 2

Методы класса Console

Beep: подача звукового сигнала
Clear: очистка консоли
WriteLine: вывод (возврат) строки текста,

Методы класса Console Beep: подача звукового сигнала Clear: очистка консоли WriteLine: вывод
включая символ возврата каретки (то есть с переводом на новую строку)
Write: вывод строки текста, но без символа возврата каретки
ReadLine: считывание строки текста из входного потока
Read: считывание введенного символа в виде числового кода данного символа. С помощью преобразования к типу char можно получить введенный символ
ReadKey: считывание нажатой клавиши клавиатуры

Слайд 3

Пример 1

using System;namespace ConsoleApplication1{
class Class1 {
static void Main() {

Пример 1 using System;namespace ConsoleApplication1{ class Class1 { static void Main() {

int i = 3;
double y = 4.12;
decimal d = 600m;
string s = "Вася";
Console.WriteLine("i = " + i); // 1
Console.WriteLine("s = " + s); // 2
Console.WriteLine("y = {0} \nd = {1}", y-1, d+1); // 3
Console.WriteLine($"y = {y} \nd = {d}"); // 4
Console.ReadKey(); // остановка экрана
}
}
}

Слайд 4

Пример 1

Результат работы программы:
i = 3
s = Вася
y = 3,12
d = 601
y

Пример 1 Результат работы программы: i = 3 s = Вася y
= 4,12
d = 600

Слайд 5

В классе Console определены методы ввода строки и отдельного символа, но нет методов, которые

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

Слайд 6

Пример 2

using System;namespace ConsoleApplication1{
class Class1{
static void Main(){
Console.WriteLine("Введите строку");

Пример 2 using System;namespace ConsoleApplication1{ class Class1{ static void Main(){ Console.WriteLine("Введите строку");
string s = Console.ReadLine(); // 1
Console.WriteLine("s = " + s);
Console.WriteLine("Введите символ");
char c = (char)Console.Read(); // 2
Console.ReadLine(); // 3
Console.WriteLine("c = " + c);
string buf; // строка – буфер для ввода чисел
Console.WriteLine("Введите целое число");
buf = Console.ReadLine();
int i = Convert.ToInt32(buf); // 4
Console.WriteLine(i);

Слайд 7

Пример 2

Console.WriteLine("Введите вещественное число");
buf = Console.ReadLine();
double x = Convert.ToDouble(buf);

Пример 2 Console.WriteLine("Введите вещественное число"); buf = Console.ReadLine(); double x = Convert.ToDouble(buf);
// 5
Console.WriteLine(x); 
Console.WriteLine("Введите вещественное число");
buf = Console.ReadLine();
double y = double.Parse(buf); // 6
Console.WriteLine(y); 
Console.WriteLine("Введите вещественное число");
buf = Console.ReadLine();
decimal z = decimal.Parse(buf); // 7
Console.WriteLine(z);
}
}
}

Слайд 8

Свойства класса Console

BackgroundColor: цвет фона консоли
ForegroundColor: цвет шрифта консоли
BufferHeight: высота буфера консоли
BufferWidth:

Свойства класса Console BackgroundColor: цвет фона консоли ForegroundColor: цвет шрифта консоли BufferHeight:
ширина буфера консоли
Title: заголовок консоли
WindowHeight и WindowWidth: высота и ширина консоли соответственно

Слайд 9

Пример 3

class Program{
static void Main(string[] args) {
// установка зеленого

Пример 3 class Program{ static void Main(string[] args) { // установка зеленого
цвета шрифта
Console.ForegroundColor=ConsoleColor.DarkGreen;
try{
do{
Console.WriteLine("Введите первое число");
int num1 = Int32.Parse(Console.ReadLine());
Console.WriteLine("Введите второе число");
int num2 = Int32.Parse(Console.ReadLine());

Слайд 10

Пример 3

// сиреневый цвет
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.WriteLine("Сумма чисел {0}

Пример 3 // сиреневый цвет Console.ForegroundColor = ConsoleColor.DarkMagenta; Console.WriteLine("Сумма чисел {0} и
и {1} равна {2}", num1, num2, num1 + num2);
Console.WriteLine("Для выхода - Escape; для продолжения - любая другая клавиша");
} while (Console.ReadKey().Key != ConsoleKey.Escape);
} catch (Exception ex) {
Console.WriteLine(ex.Message);
Console.ReadLine();
}
}
}

Слайд 11

Метод ReadKey()

В классе Console включен метод ReadKey(), позволяющий непосредственно считывать отдельно введенные

Метод ReadKey() В классе Console включен метод ReadKey(), позволяющий непосредственно считывать отдельно
с клавиатуры символы без построчной буферизации. При нажатии клавиши метод ReadKey() немедленно возвращает введенный с клавиатуры символ. И в этом случае пользователю уже не нужно нажимать дополнительно клавишу .
Две формы объявления метода ReadKey ().
static ConsoleKeyInfo ReadKey()
static ConsoleKeyInfo ReadKey(bool intercept)
Если значение параметра intercept равно true, то введенный символ не отображается.
ReadKey() = ReadKey(false) // по умолчанию

Слайд 12

Метод ReadKey()

Метод ReadKey() возвращает информацию о нажатии клавиши в объекте типа ConsoleKeyInfo,

Метод ReadKey() Метод ReadKey() возвращает информацию о нажатии клавиши в объекте типа
который представляет собой структуру, состоящую из приведенных ниже свойств, доступных только для чтения.
char KeyChar - содержит эквивалент char введенного с клавиатуры символа
ConsoleKey Key - содержит значение из перечисления ConsoleKey всех клавиш на клавиатуре
ConsoleModifiers Modifiers - содержит описание одной из модифицирующих клавиш (, или ), которые были нажаты, если это действительно имело место, при формировании ввода с клавиатуры

Слайд 13

Пример 4

using System;
class ReadKeys {
static void Main() {

Пример 4 using System; class ReadKeys { static void Main() { ConsoleKeyInfo
ConsoleKeyInfo keypress;
Console.WriteLine("Введите несколько символов, а по окончании - <0>.");
do {
// считать данные о нажатых клавишах
keypress = Console.ReadKey(true);
Console.WriteLine(" Вы нажали клавишу: " + keypress.KeyChar);

Слайд 14

Пример 4

// Проверить нажатие модифицирующих клавиш
if ((ConsoleModifiers.Alt & keypress.Modifiers) !=

Пример 4 // Проверить нажатие модифицирующих клавиш if ((ConsoleModifiers.Alt & keypress.Modifiers) !=
0)
Console.WriteLine("Нажата клавиша .");
if ((ConsoleModifiers.Control & keypress.Modifiers) != 0)
Console.WriteLine("Нажата клавиша .");
if ((ConsoleModifiers.Shift & keypress.Modifiers) != 0)
Console.WriteLine("Нажата клавиша .");
} while(keypress.KeyChar != '0');
}
}

Слайд 15

Средства форматирования строк в C#

Методы WriteLine и Write используются для вывода информации в консоль, и при

Средства форматирования строк в C# Методы WriteLine и Write используются для вывода
этом дают возможность отформатировать вывод.
Метод Format класса String предназначен конкретно для форматирования. Форматирование в методе ToString можно задать только для чисел и дат.
Общая структура форматирования выходной информации (строк) имеет следующий вид:
Console.WriteLine("строка формата", arg0, arg1, …, argn);
String.Format("строка формата", arg0, arg1, …, argn);
arg0 и arg1 здесь – аргументы форматирования (числа, строки, даты, и т. д.), из которых в результате будет создана новая отформатированная строка.

Слайд 16

Средства форматирования строк в C#

Строка формата может содержать обычные символы, которые будут

Средства форматирования строк в C# Строка формата может содержать обычные символы, которые
отображены в том виде, в котором они заданы, и команды форматирования. Команда форматирования заключается в фигурные скобки и имеет следующую структуру:
{[номер аргумента], [ширина]:[формат]}
По [номеру аргумента] указывается к какому аргументу будет применена данная команда (отсчет аргументов начинается с нуля).
[ширина] задает минимальный размер поля.
[формат] – спецификатор формата.
Параметры [ширина] и [формат] не являются обязательными.

Слайд 17

Средства форматирования строк в C#

// выравнивание по правому краю
Console.WriteLine("Result is {0, 6}",

Средства форматирования строк в C# // выравнивание по правому краю Console.WriteLine("Result is
1.2789); 
Console.WriteLine("Result is {0, 6}", 7.54);
// выравнивание по левому краю
Console.WriteLine("Result is {0, -6}", 1.2789);
Console.WriteLine("Result is {0, -6}", 7.54);
В результате получится:
Result is 1,2789
Result is 7,54
Result is 1,2789
Result is 7,54

Слайд 18

Параметры форматирования

Параметры форматирования

Слайд 19

Параметры форматирования

Параметры форматирования

Слайд 20

Пример 5

using System;
namespace Test{
class BasicIO {
static void Main() { //

Пример 5 using System; namespace Test{ class BasicIO { static void Main()
Форматирование без параметров
string theString = "Привет всем!";
int theInt = 15;
float theFloat = 9.99F;
double theDouble = 123.456789;
BasicIO theClass = new BasicIO();
Console.WriteLine("Без параметров форматирования:");
Console.WriteLine("string: {0}\nint: {1}\nfloat: {2}\ndouble: {3}\nobject: {4}", theString, theInt, theFloat, theDouble, theClass);
Console.Write("\n\n"); // две пустые строки

Слайд 21

Пример 5

object[] array = {"Привет!", 20.9, 1, "55", Math.PI};
Console.WriteLine("Элементы массива:\n{0};

Пример 5 object[] array = {"Привет!", 20.9, 1, "55", Math.PI}; Console.WriteLine("Элементы массива:\n{0};
{1}; {2}; {3}; {4}", array);
Console.WriteLine("С параметрами форматирования:");
Console.WriteLine("C format: {0:C}", 99989.987);
Console.WriteLine("с format: {0:с1}", 99989.987);
Console.WriteLine("D9 format: {0:D9}", 99999);
Console.WriteLine("E format: {0:E}", .31415926538 * 10);
Console.WriteLine("F format: {0:F3}", 55555.6666);
Console.WriteLine("N format: {0:N}", 99999);
Console.WriteLine("X format: {0:X}", 99999);
Console.WriteLine("x format: {0:x}", 99999);
Console.WriteLine("p format: {0:p}", 0.55);

Слайд 22

Пример 5

string str;
str = String.Format("C format: {0:C}", 99989.987);
Console.WriteLine("Предварительное

Пример 5 string str; str = String.Format("C format: {0:C}", 99989.987); Console.WriteLine("Предварительное форматирование
форматирование в символьную строку:");
Console.WriteLine(str);
str = "ФИО: {{ {0} }}, Возраст: {{ {1} }}";
str = String.Format(str, "Огоньков В.М.", 55);
Console.WriteLine("\n\n Предварительное форматирование в символьную строку:");
Console.WriteLine(str);
while(true);
}
}
}

Слайд 23

Пользовательский формат числовых данных

Пользовательский формат числовых данных

Слайд 24

Примеры пользовательских форматов

Console.WriteLine("{0:0000.00}", 1024.32); // 1024,32
Console.WriteLine("{0:00000.000}", 1024.32); // 01024,320
Console.WriteLine("{0:####.###}", 1024.32); // 1024,32 
Console.WriteLine("{0:####.#}",

Примеры пользовательских форматов Console.WriteLine("{0:0000.00}", 1024.32); // 1024,32 Console.WriteLine("{0:00000.000}", 1024.32); // 01024,320 Console.WriteLine("{0:####.###}",
1024.32); // 1024,3 
Console.WriteLine("{0:#,###.##}", 1024.32); // 1 024,32
Console.WriteLine("{0:##%}", 0.32); // 32%
Console.WriteLine("{0:<####.###>;[####.###];ноль}", 1024.32);
// <1024,32>
Console.WriteLine("{0:<####.###>;[####.###];ноль}", -1024.32);
// [1024,32]
Console.WriteLine("{0:<####.###>;[####.###];ноль}", 0);
// ноль

Слайд 25

Встроенные форматы даты и времени

Встроенные форматы даты и времени

Слайд 26

Примеры стандартных форматов даты и времени

Console.WriteLine("{0:d}", DateTime.Now);
// 30.06.2014 
Console.WriteLine("{0:D}", DateTime.Now);

Примеры стандартных форматов даты и времени Console.WriteLine("{0:d}", DateTime.Now); // 30.06.2014 Console.WriteLine("{0:D}", DateTime.Now);

// 30 июня 2014 р. 
Console.WriteLine("{0:t}", DateTime.Now);
// 2:57 
Console.WriteLine("{0:T}", DateTime.Now);
// 2:57:53 
Console.WriteLine("{0:U}", DateTime.Now);
// 29 июня 2014 р. 23:57:53 
Console.WriteLine("{0:Y}", DateTime.Now);
// Июнь 2014 р.

Слайд 27

Пользовательский формат даты и времени

Пользовательский формат даты и времени

Слайд 28

Пользовательский формат даты и времени

Пользовательский формат даты и времени

Слайд 29

Примеры пользовательских форматов даты и времени

Console.WriteLine("{0:y yy yyy yyyy}", DateTime.Now); // 14

Примеры пользовательских форматов даты и времени Console.WriteLine("{0:y yy yyy yyyy}", DateTime.Now); //
14 2014 2014 
Console.WriteLine("{0:d dd ddd dddd}", DateTime.Now); // 30 30 Пн понедельник 
Console.WriteLine("{0:M MM MMM}", DateTime.Now); // 6 06 Июн 
Console.WriteLine("{0:HH.mm.ss dd-MMM-yyyy}", DateTime.Now); // 03.21.22 30-Июн-2014 
Console.WriteLine("{0:z zz zzz}", DateTime.Now);
// +3 +03 +03:00 
Console.WriteLine(DateTime.Now.ToString("dd MMM yyyy")); // 30 Июн 2014

Слайд 30

Региональные параметры CultureInfo

string formattedString = string.Format(new System.Globalization.CultureInfo("en-US"), "{0:dddd} Money - {1:c}", DateTime.Now,

Региональные параметры CultureInfo string formattedString = string.Format(new System.Globalization.CultureInfo("en-US"), "{0:dddd} Money - {1:c}",
15);
Console.WriteLine("{0:dddd} Money - {1:c}", DateTime.Now, 15); // понедельник Money - 15,00 руб.
Console.WriteLine(formattedString);
// Monday Money - $15.00
formattedString = string.Format(new System.Globalization.CultureInfo("uk-UA"), "{0:dddd} Money - {1:c}", DateTime.Now, 15);
Console.WriteLine(formattedString);
// понеділок Money - 15,00 грн. 

Слайд 31

Региональные параметры CultureInfo
 decimal[] amounts = {16305.32m, 18794.16m};
Console.WriteLine(" Beginning Balance Ending Balance");
Console.WriteLine(" {0,-28:C2}{1,14:C2}",

Региональные параметры CultureInfo decimal[] amounts = {16305.32m, 18794.16m}; Console.WriteLine(" Beginning Balance Ending
amounts[0], amounts[1]);
// Beginning Balance Ending Balance
// $16,305.32 $18,794.16

Слайд 32

Встроенные потоки

Для всех программ, в которых используется пространство имен System, доступны встроенные

Встроенные потоки Для всех программ, в которых используется пространство имен System, доступны
потоки, открывающиеся с помощью свойств Console.In - связано с потоком ввода, Console.Out - связано с потоком вывода и Console.Error - связано со стандартным потоком сообщений об ошибках, которые по умолчанию также выводятся на консоль.
Поток Console.In является экземпляром объекта класса TextReader, и поэтому для доступа к нему могут быть использованы методы и свойства, определенные в классе TextReader.

Слайд 33

Пример 6

using System;
class ReadChars2 {
static void Main() {

Пример 6 using System; class ReadChars2 { static void Main() { string
string str;
Console.WriteLine("Введите несколько символов.");
// вызвать метод ReadLine() класса TextReader
str = Console.In.ReadLine();
Console.WriteLine("Вы ввели: " + str);
}
}

Слайд 34

Пример 7

using System;
class ErrOut {
static void Main() {

Пример 7 using System; class ErrOut { static void Main() { int

int a=10, b=0, results;
Console.Out.WriteLine ("Деление на нуль приведет к исключительной ситуации.");
try {
// сгенерировать исключение при попытке деления на нуль
result = a / b;
} catch(DivideByZeroException exc) {
Console.Error.WriteLine(exc.Message);
}
}
}