
- •Язык c# и структура простой программы
- •Что такое .Net Framework
- •Что такое с#
- •Создание первой программы на с#
- •Пространство имен System
- •С# как язык Объектно-Ориентированного Программирования (ооп)
- •Состав и назначение файлов проекта
- •Структура сборки
- •Элементы языка c#
- •Базовый синтаксис с#
- •Переменные
- •Числа без знака
- •Числа со знаком
- •Числа для финансистов
- •Текстовые символы
- •Логический тип данных
- •Литералы с плавающей точкой
- •Символьные литералы
- •Строковые литералы
- •Выражения и операторы с#
- •Инициализация переменных и оператор присваивания
- •Значение в левой части
- •Ввод данных с консоли
- •Математические операторы
- •Вычисление остатка при целочисленном делении
- •Унарные операторы
- •Унарное логическое отрицание
- •Составные операторы
- •Поразрядные операторы
- •Поразрядное логическое и
- •Поразрядное логическое или
- •Поразрядное логическое исключающее или
- •Унарная поразрядная операция дополнения
- •Поразрядный сдвиг
- •Пример использования поразрядных операторов
- •Логические операторы
- •Операторы отношения
- •Приоритеты операторов
- •Исполнители алгоритмов
- •Исполнитель Чертежник
- •Исполнитель Робот
- •Компьютер как формальный исполнитель алгоритмов
- •Блок-схема
- •Псевдокод
- •Необходимые свойства алгоритма
- •Понятие о временной сложности алгоритма
- •Примеры
- •Правила для определения сложности
- •Тернарный условный оператор
- •Применение логических операций
- •Конструкция выбора
- •Примеры применения оператора выбора
- •Объединение меток case
- •Пропущенный break
- •Пример программы: Простые числа
- •Пример обработки одномерного массива чисел
- •Использование генератора случайных данных
- •Использование оператора foreach
- •Типы задач обработки одномерных числовых массивов
- •Поиск элемента в массиве
- •Многомерные массивы
- •Базовые операции со строками
- •Методы типа string
- •Копирование и клонирование строк
- •Конкатенация строк
- •Извлечение подстроки
- •Вставка подстроки
- •Замена символов и строк
- •Удаление символов из строки
- •Удаление незначащих пробелов
- •Преобразование к верхнему и нижнему регистру
- •Выравнивание по левому и правому краю поля
- •Объединение массива строк
- •Разбор строки
- •Сравнение строк
- •Форматирование текстовых строк
- •Функции
- •Описание и использование функций
- •Возвращаемые значения
- •Передача параметров
- •Выходные параметры
- •Область действия переменных
- •Область действия переменных и управляющие конструкции
- •Рекурсия
- •Параметры функции Main()
- •Перегрузка функций
- •Перечислимый тип
- •Определение перечислимых типов
- •Структуры
- •Описание структур
- •Использование структур в качестве параметров функций
- •Использование структур в качестве возвращаемых значений функций
- •Функции структур
- •Файлы и потоки
- •Основные классы ввода и вывода
- •Классы для работы с потоками
- •Классы для работы с потоками текстовых символов
- •Работа с текстовыми файлами
- •Запись двоичных данных
- •Пример программы для работы с двоичным файлом
- •Просмотр содержимого каталога
- •Получение информации о каталоге
Значение в левой части
Как вы теперь знаете, с помощью оператора присваивания можно задать начальное значение переменной при ее объявлении или изменить это значение в процессе выполнения программы. При этом изменяемое значение должно находиться слева от оператора присваивания, а литерал или другое выражение, применяемые для инициализации или изменения значения, — справа:
int X;
X = 1;
Программа, однако, не может изменить значение литерала, поэтому следующие строки будут ошибочными:
5 = 2;
"Text" = "New text";
8 = x;
Для объекта, который может быть использован для присваивания (например, переменная), придуман специальный термин — lvalue. Этот термин образован как сокращение от left value (значение в левой части).
Таким образом, в левой части оператора присваивания всегда должен располагаться объект типа lvalue.
Ввод данных с консоли
Задание переменным начальных значений с помощью оператора присваивания – очень постой и полезный способ при разработке первых программ, поэтому он будет использоваться во многих примерах начальной части данного курса.
В реальной жизни (а также при выполнении лабораторных работ) часто необходимо, чтобы программа обрабатывала данные, которые пользователь вводит с консоли (то есть с клавиатура). Для этого нужно воспользоваться уже известным методом ReadLine класса Console.
Ранее мы уже использовали этот метод для приостановки работы программы перед ее завершением. Но этот же метод может ввести с консоли любую информацию в виде строки символов, включая числовые данные (т.к. каждая цифра числа при вводе выступает как отдельный символ).
Проблема заключается не в том, чтобы ввести строку символов, содержащую число, а чтобы присвоить введенное значение числовой переменной. Для этого используется специальный класс, выполняющий преобразование данных из одно типа в другой (если, конечно, это вообще возможно) – класс Convert.
Использование этого класса продемонстрируем на примере программы, которая вводит с клавиатуры значения двух целых чисел, складывает их и печатает полученную сумму:
using System;
namespace ConsoleApplication_2
{
class Class_2
{
public static void Main(string[] args)
{
Console.WriteLine("Вторая программа на C#");
int a, b, c;
Console.Write("Введите А: ");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите B: ");
b = Convert.ToInt32(Console.ReadLine());
c = a + b;
Console.Write("Сумма А + B = ");
Console.WriteLine(c);
Console.ReadLine();
}
}
}
Начнем разбираться с конца. В последней строке программы помещен вызов метода ReadLine()класса Console.
Console.ReadLine();
Данная строка не является обязательной и не влияет на ход выполнения программы. После завершения всех основных операций и вывод на консоль результата вычислений программа может просто завершиться, и мы увидим обычное для Visual Studio предложение нажать на любую клавишу для закрытия окна. Это удобно для выполнения программы изнутри Visual Studio, но при запуске без интегрированной среды разработки мы не увидим результатов выполнения: окно программы сразу закроется после вывода в него значения переменной С.
Чтобы этого не произошло, используется метод ReadLine. При его выполнении программа приостанавливается и ожидает ввода с консоли строки символов. Это дает возможность проанализировать полученный результат, после чего для закрытия окна достаточно нажать клавишу ENTER.
В этой программе вместе с уже известным методом WriteLine класса Console используется метод Write, который отличается от него тем, что не переводит строку после вывода информации на консоль. Сделано это для того, чтобы приглашение к вводу данных и само вводимое число находились на одной строке:
Строка символов, которая вводится после приглашения с помощью метода ReadLine, преобразуется в нужный нам тип данных с помощью метода ToInt32 класса Convert:
a = Convert.ToInt32(Console.ReadLine());
Такая запись (помещение вызова метода ReadLine внутри круглых скобок метода ToInt32) означает, что первым выполнится метод ReadLine, а введенная им строка символов будет затем передана методу ToInt32 для преобразования в число. Число, полученное в результате преобразования, будет присвоено переменной а.
Использование класса Convert дает нам возможность вводить с консоли значения любых типов, так как в этом классе имеются функции преобразования ко всем числовым типам С# и к логическому типу:
Метод |
Тип числовых данных |
Метод |
Тип числовых данных |
ToBoolean |
bool |
ToUIntl6 |
ushort |
ToChar |
char |
ToUInt32 |
uint |
ToSbyte |
sbyte |
ToUInt64 |
ulong |
ToByte |
byte |
ToSingle |
float |
ToIntl6 |
short |
ToDouble |
double |
ToInt32 |
int |
ToDecimal |
decimal |
ToInt64 |
long |
|
|
Все эти методы прекрасно работают, пока вводимые с консоли данные можно преобразовать к необходимому типу. Если же это не так, метод завершится с ошибкой и произойдет преждевременное завершение работы программы – иными словами, возникнет исключительная ситуация, препятствующая ее нормальному продолжению.
Ситуация с вводом некорректных данных, к сожалению, не является редкой, поэтому отдельный раздел этого курса посвящен методам корректной обработки таких ситуаций. Этот материал изучается позже, поэтому пока постарайтесь правильно вводить исходные данные.