Remkomplekty.ru

IT Новости из мира ПК
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ввод в си шарп

Ввод в си шарп

Для вывода информации на консоль мы уже использовали встроенный метод Console.WriteLine . То есть, если мы хотим вывести некоторую информацию на консоль, то нам надо передать ее в метод Console.WriteLine:

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

Для встраивания отдельных значений в выводимую на консоль строку используются фигурные скобки, в которые заключается встраиваемое значение. Это можем значение переменной ( ) или более сложное выражение (например, операция сложения <4 + 7>). А перед всей строкой ставится знак доллара $.

При выводе на консоль вместо помещенных в фигурные скобки выражений будут выводиться их значения:

Есть другой способ вывода на консоль сразу нескольких значений:

Этот способ подразумевает, что первый параметр в методе Console.WriteLine представляет выводимую строку («Имя: <0>Возраст: <2>Рост: <1>м»). Все последующие параметры представляют значения, которые могут быть встроенны в эту строку (name, height, age). При этом важен порядок подобных параметров. Например, в данном случае вначале идет name, потом height и потом age. Поэтому у name будет представлять параметр с номером 0 (нумерация начинается с нуля), height имеет номер 1, а age — номер 2. Поэтому в строке «Имя: <0>Возраст: <2>Рост: <1>м» на место плейсхолдеров <0>, <2>, <1>будут вставляться значения соответствующих параметров.

Кроме Console.WriteLine() можно также использовать метод Console.Write() , он работает точно так же за тем исключением, что не осуществляет переход на следующую строку.

Консольный ввод

Кроме вывода информации на консоль мы можем получать информацию с консоли. Для этого предназначен метод Console.ReadLine() . Он позволяет получить введенную строку.

В данном случае все, что вводит пользователь, с помощью метода Console.ReadLine передается в переменную name.

Пример работы программы:

Таким образом мы можем вводить информацию через консоль. Однако минусом этого метода является то, что Console.ReadLine считывает информацию именно в виде строки. Поэтому мы можем по умолчанию присвоить ее только переменной типа string. Как нам быть, если, допустим, мы хотим ввести возраст в переменную типа int или другую информацию в переменные типа double или decimal? По умолчанию платформа .NET предоставляет ряд методов, которые позволяют преобразовать различные значения к типам int, double и т.д. Некоторые из этих методов:

Convert.ToInt32() (преобразует к типу int)

Convert.ToDouble() (преобразует к типу double)

Convert.ToDecimal() (преобразует к типу decimal)

Пример ввода значений:

При вводе важно учитывать текущую операционную систему. В одних культурах разделителем между целой и дробной частью является точка (США, Великобритания. ), в других — запятая (Россия, Германия. ). Например, если текущая ОС — русскоязычная, значит, надо вводить дробные числа с разделителем запятой. Если локализация англоязычная, значит, разделителем целой и дробной части при вводе будет точка.

Ввод в си шарп

Урок № 11. Ввод с клавиатуры. Преобразование типов данных

Получение данных от пользователя

Доброго времени суток! В этом уроке мы поговорим о том, как получать данные от пользователя, это очень важный момент для любой компьютерной программы. В принципе, приложение может получать информацию от пользователя (или внешнего мира) разными способами, например, через графический интерфейс пользователя (через различные поля ввода и т.п.), читать из файла, принимать по сети от удаленного источника, ну или как в нашем случае – получать информацию, введенную пользователем с клавиатуры.

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

И так, к делу! Вспомним пример одного из предыдущих уроков, в котором мы в цикле, запрашивали информацию у пользователя, до тех пор, пока он не введет строку «выход». Вот фрагмент исходного кода:

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

Всё очень просто, после того как пользователь введет строку и нажмет на клавишу «Enter», информация окажется в переменной «userString ». Но тут есть один нюанс, операция «Console.ReadLine();» (на самом деле, это вызов метода «ReadLine», класса «Console») возвращает как результат строку. Всё бы ничего, но на практике нам потребуется получать от пользователя не только строки, но и числа, например. Так что, нужно научиться преобразовывать строковые значения в численные. К счастью, в языке C# есть инструмент для преобразования типов. На практике, это выглядит примерно так:

Для преобразования типов в C# можно использовать класс (позже я расскажу, что такое класс, а пока не забивайте себе голову этим) «Convert», у этого класса есть большое количество методов (функций – если хотите), так вот, метод «ToInt32» принимает один аргумент, в круглых скобках сразу после имени метода, в нашем случае, этот аргумент является строкой, которая и будет преобразована в число (если конечно такую строку можно будет преобразовать в число).

Читать еще:  Процедура сортировки массива паскаль

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

Создадим новый проект и напишем следующий код, в методе Main:

Обратите внимание на комментарий в самом конце кода! Там рассказывается как перевести число, обратно в строку.

А теперь соберите проект и запустите программу. Затем, введите какое-нибудь целое число (только целое и обязательно число!), например, 25 и нажмите клавишу Enter. Потом введите другое число (хотя, можно и тоже самое), например, 10 и нажмите Enter. В результате вы должны увидеть результат сложения этих чисел! Выглядеть это будет примерно так:

Результат выполнения программы

На этот раз хватит информации. В следующем уроке мы поговорим как обрабатывать ошибки во время выполнения программы. Например, те, которые могут возникнуть в приведенном выше примере, если пользователь введет не число, а простой текст! Но это уже тема следующего урока…

Microsoft .NET

Изучаем платформу .NET Fraemwork

Основы C# (типы данных, ввод/вывод)

Ну, что ж приступим разбирать основные конструкции языка C#, и с чем их едят?

Сегодня разберем:

  • Типы данных
  • Концепции ввода/вывода

Типы данных.

Типы данных имеют особенное значение в С#, поскольку это строго типизированный язык. Это означает, что все операции подвергаются строгому контролю со стороны компилятора на соответствие типов, причем недопустимые операции не компилируются. Следовательно, строгий контроль типов позволяет исключить ошибки и повысить надежность программ. Для обеспечения контроля типов все переменные, выражения и значения должны принадлежать к определенному типу. Такого понятия, как «бестиповая» переменная, в данном языке программирования вообще не существует. Более того, тип значения определяет те операции, которые разрешается выполнять над ним. Операция, разрешенная для одного типа данных, может оказаться недопустимой для другого.

В С# имеются две общие категории встроенных типов данных: типы значений и ссылочные типы. Они отличаются по содержимому переменной. Концептуально разница между ними состоит в том, что тип значения (value type) хранит данные непосредственно (стек), в то время как ссылочный тип (reference type) хранит адрес на значение (куча).

Эти типы сохраняются в разных местах памяти: типы значений сохраняются в области, известной как стек , а ссылочные типы — в области, называемой управляемой кучей .

Определяемые пользователем value-типы

  • Структуры
  • Перечисления
  • Константы

Структуры.

Объекты «живут» в управляемой куче. Структуры часто располагаются в стеке вычислений.

Перечисления.

Тип enum предназначен для создания перечислений. Каждое перечисление определяет группу именованных констант. Например:

Такое перечисление эквивалентно следующим строкам кода:

const int One = 0;

const int Two = 1;

const int Three = 2;

Таким образом, перечисление — это всего лишь компактное объявление сразу нескольких целочисленных констант. Применение перечислений делает программы нагляднее.

Константы.


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

Однако иногда вы хотите гарантировать сохранение значения определенной переменной.
Например, число pi. Как известно, значение этого числа никогда не изменяется. Следовательно, вы должны гарантировать, что переменная, хранящая это число, не изменит своего значения на протяжении всей работы программы.

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

В таком случае используемой переменной должна быть константа:
const double pi = 3.1415926535897932384626433832795;
у = х * pi;

Способы ввода/вывода

Операторы ввода

Для того чтобы получить данные, вводимые вручную (то есть с консоли), применяются команды

Операторы вывода

Сделаю одно важное замечание: ожидая от человека ввода с клавиатуры, не нужно полагать, что он окажется ясновидящим и просто по мерцанию курсора на черном экране догадается, какого типа переменная нужна ожидающей программе. Старайтесь всегда придерживаться правила: «лысый» ввод недопустим! Перед тем как считывать что-либо с консоли, необходимо сообщить пользователю, что именно он должен ввести: смысл вводимой информации, тип данных, максимальное и минимальное допустимые значения и т.п.

Примером неплохого приглашения служит, скажем, такая строчка: Введите два вещественных числа (0.1 28.09.2012

Навигация по записям

Кто хочет может обсудить материал. И задать вопросы.

Обучение C#

Формула программиста

Работая с этим сайтом, Вы даете согласие на использование файлов Cookie.

Класс Console для работы с консолью

Заголовок окна консоли

Ввод-вывод

Наиболее часто используемыми являются методы чтения и записи информации.
Для вывода информации в окно консоли используются два основных метода

  • Write() — для вывода информации без перевода строки;
  • WriteLine() — для вывода информации с переводом строки.
Читать еще:  Конец файла паскаль

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

Для ввода текстовой информации из окна консоли используются методы

  • ReadLine() , который считывает строку текста из входного потока;
  • Read() – считывает следующий символ из входного потока.

Также для ввода информации в консоли может использоваться метод ReadKey() , который очень часто используется в конце программы для задержки окна консоли.

Метод ReadKey() возвращает значение символа или нажатой функциональной клавиши, преобразованное к формату структуры ConsoleKeyInfo .
Структура ConsoleKeyInfo , в свою очередь, содержит 3 поля:

  • Key — ключ консоли, представленный текущим ConsoleKeyInfo объекта;
  • KeyChar — знак Юникода, представленный текущим ConsoleKeyInfo объекта;
  • Modifiers — побитовое значение, указывающее на одновременное удержание клавиш Alt, Ctrl, Shift при нажатии клавиши.

По умолчанию нажатая клавиша отображается в окне консоли, но отображение можно отключить, передав функции ReadKey() единственный аргумент с логическим значением true .
Рассмотрим пример вывода в консоль значений считанной клавиши до нажатия клавиши Esc.

namespace MyProgram
<
class Program
<
static void Main( string [] args)
<
Console .Title = «Работа с консолью» ;
ConsoleKeyInfo key;
do
<
key = Console .ReadKey( true );
if ((key.Modifiers & ConsoleModifiers .Alt) != 0)
Console .Write( «Alt + » );
if ((key.Modifiers & ConsoleModifiers .Shift) != 0)
Console .Write( «Shift + » );
if ((key.Modifiers & ConsoleModifiers .Control) != 0)
Console .Write( «Ctrl + » );
Console .WriteLine(key.Key.ToString() + » » + key.KeyChar.ToString());
> while (key.Key != ConsoleKey .Escape);

Цветовое оформление консоли

Для изменения цветового оформления консоли используются следующие свойства класса Console :

  • BackgroundColor — для изменения фона под символами;
  • ForegroundColor — для изменения цвета самих символов.

Для того чтобы изменить цвет фона всего консольного окна необходимо установить требуемое значение параметра BackgroundColor и вызвать метод Clear() — очистка окна консоли.
Следующий пример перебирает и выводит на экран названия всех 16 цветов, используемых при работе с консолью.

Размер окна и буфера консоли

По умолчанию размер окна консоли составляет 80 символов в ширину и 25 символов в высоту. Но этот размер можно изменить с помощью методов

  • WindowWidth – ширина окна консоли;
  • WindowHeight – высота окна консоли.

Однако кроме размеров окна консоли существует понятие размеров буфера консоли, который задается с помощью свойств

  • BufferWidth – ширина буфера;
  • BufferHeight – высота буфера.

Чтобы узнать значения этих свойств по умолчанию, выведем их в окно консоли

Изменение видимых размеров окна позволяет увеличить или уменьшить его в процессе выполнения программы. Если размер буфера превышает размер видимого окна, то у окна появляются полосы прокрутки, позволяющие просматривать все содержимое буфера.
Например, вывод 100 символов ‘*’ и вертикальной черты ‘|’ в стандартном окне консоли будет выглядеть так:

Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.

Простейший ввод-вывод. Управляющие операторы

Консольный ввод-вывод

Презентацию к данной лекции Вы можете скачать здесь.

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

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

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

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

Читать еще:  Типы переменных в си шарп

Листинг 4.1 содержит два наиболее употребляемых варианта вызова методов вывода. Если метод WriteLine вызван с одним параметром, он может быть любого встроенного типа. В строке, помеченной комментариями «1» и «2», нам требуется вывести в каждой строке не одну, а две величины, поэтому прежде чем передавать их для вывода, их требуется «склеить» в одну строку с помощью операции + .

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

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

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

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

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

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

Ввод строки выполняется в операторе 1. Длина строки не ограничена, ввод выполняется до символа перевода строки.

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

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

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

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

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

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

Часто бывает удобно заранее подготовить исходные данные в текстовом файле и считывать их в программе. Вывод из программы тоже бывает полезно выполнить не на экран, а в текстовый файл . Работа с файлами подробно рассматривается позже, а сейчас приведем лишь образцы для использования в программах. В листинге 4.3 приведена версия программы из листинга 4.1, выполняющая вывод не на экран, а в текстовый файл с именем output.txt. Файл создается в том же каталоге, что и исполняемый файл программы, по умолчанию — . ConsoleApplication1binDebug.

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

  1. Подключить пространство имен, в котором описываются стандартные классы для работы с файлами (оператор 1).
  2. Объявить файловую переменную и связать ее с файлом на диске (оператор 2).
  3. Выполнить операции ввода-вывода (операторы 3–5).
  4. Закрыть файл (оператор 6).

Ввод данных из файла выполняется аналогично. В листинге 4.4 приведена программа , аналогичная листингу 4.2, но ввод выполняется из файла с именем input.txt, расположенного в каталоге D:C#. Текстовый файл можно создать с помощью любого текстового редактора, удобно использовать Visual Studio. NET .

Математические функции — класс Math

Самая простая программа , которую можно себе представить (не считая «Hello, World!»), состоит из ввода исходных данных, вычислений по каким-то формулам и вывода результата. В выражениях, из которых состоят формулы, часто используются математические функции, например, синус или возведение в степень. Они реализованы в классе Math , определенном в пространстве имен System . Описание методов и полей класса приведено в таблице 4.1.

Ссылка на основную публикацию
Adblock
detector