
- •Язык c# и структура простой программы
- •Что такое .Net Framework
- •Что такое с#
- •Создание первой программы на с#
- •Пространство имен System
- •С# как язык Объектно-Ориентированного Программирования (ооп)
- •Состав и назначение файлов проекта
- •Структура сборки
- •Элементы языка c#
- •Базовый синтаксис с#
- •Переменные
- •Числа без знака
- •Числа со знаком
- •Числа для финансистов
- •Текстовые символы
- •Логический тип данных
- •Литералы с плавающей точкой
- •Символьные литералы
- •Строковые литералы
- •Выражения и операторы с#
- •Инициализация переменных и оператор присваивания
- •Значение в левой части
- •Ввод данных с консоли
- •Математические операторы
- •Вычисление остатка при целочисленном делении
- •Унарные операторы
- •Унарное логическое отрицание
- •Составные операторы
- •Поразрядные операторы
- •Поразрядное логическое и
- •Поразрядное логическое или
- •Поразрядное логическое исключающее или
- •Унарная поразрядная операция дополнения
- •Поразрядный сдвиг
- •Пример использования поразрядных операторов
- •Логические операторы
- •Операторы отношения
- •Приоритеты операторов
- •Исполнители алгоритмов
- •Исполнитель Чертежник
- •Исполнитель Робот
- •Компьютер как формальный исполнитель алгоритмов
- •Блок-схема
- •Псевдокод
- •Необходимые свойства алгоритма
- •Понятие о временной сложности алгоритма
- •Примеры
- •Правила для определения сложности
- •Тернарный условный оператор
- •Применение логических операций
- •Конструкция выбора
- •Примеры применения оператора выбора
- •Объединение меток case
- •Пропущенный break
- •Пример программы: Простые числа
- •Пример обработки одномерного массива чисел
- •Использование генератора случайных данных
- •Использование оператора foreach
- •Типы задач обработки одномерных числовых массивов
- •Поиск элемента в массиве
- •Многомерные массивы
- •Базовые операции со строками
- •Методы типа string
- •Копирование и клонирование строк
- •Конкатенация строк
- •Извлечение подстроки
- •Вставка подстроки
- •Замена символов и строк
- •Удаление символов из строки
- •Удаление незначащих пробелов
- •Преобразование к верхнему и нижнему регистру
- •Выравнивание по левому и правому краю поля
- •Объединение массива строк
- •Разбор строки
- •Сравнение строк
- •Форматирование текстовых строк
- •Функции
- •Описание и использование функций
- •Возвращаемые значения
- •Передача параметров
- •Выходные параметры
- •Область действия переменных
- •Область действия переменных и управляющие конструкции
- •Рекурсия
- •Параметры функции Main()
- •Перегрузка функций
- •Перечислимый тип
- •Определение перечислимых типов
- •Структуры
- •Описание структур
- •Использование структур в качестве параметров функций
- •Использование структур в качестве возвращаемых значений функций
- •Функции структур
- •Файлы и потоки
- •Основные классы ввода и вывода
- •Классы для работы с потоками
- •Классы для работы с потоками текстовых символов
- •Работа с текстовыми файлами
Тернарный условный оператор
В языке С# существует упрощенный вариант условного оператора, называемый оператором проверки или тернарным оператором.
В общем виде этот оператор выглядит так:
(<Выражение>) ? <Оператор 1> : <Оператор 2>
Если значение выражения <Выражение> истинно, вычисляется оператор <Оператор 1>, а если ложно — оператор <Оператор 2>.
Вот простой пример использования оператора проверки:
int i = (х > 100): 8 ? 9;
Здесь если значение переменной х больше 100, переменной i присваивается значение 8, а если меньше, то 9.
На блок-схеме и в псевдокоде тернарный оператор выглядит как обычное условие. Для вышеприведенного примера это выглядит так:
Если x > 100 То
i = 8
Иначе
i = 9
Все-Если
Множественный выбор
Очень часто перед программистом встает задача последовательной проверки нескольких условий, причем при выполнении каждого условия нужно предпринимать какие-то действия. Кроме того, отдельно нужно обрабатывать ситуацию, когда ни одно из проверяемых условий не выполнено. На псевдокоде такая проверка выглядит следующим образом:
Если <Условие 1> То
Блок Операторов 1
Иначе Если <Условие 2> То
Блок Операторов 2
Иначе Если <Условие 3> То
Блок Операторов 3
. . .
Иначе
Блок Операторов N
Все-Если
Для решения этой задачи можно использовать вложенные условные операторы if следующего вида:
if(<Выражение 1>)
<Оператор 1>
else if(<Выражение 2>)
<Оператор 2>
else if(<Выражение З>)
<Оператор 3>
...
else
<Оператор N>
Здесь вначале вычисляется <Выражение 1>. Если оно истинно (т. е. равно true), то выполняется <Оператор 1>. В противном случае вычисляется <Выражение 2>. Если оно истинно, выполняется <Оператор 2>, и т. д. В том случае, когда все проверяемые выражения ложны, выполняется <Оператор N>.
Использование вложенных операторов if для множественного выбора демонстрируется в программе, исходный текст которой приведен ниже:
using System;
namespace SelectNumbers
{
class SelectNumbersApp
{
static void Main(string[] args)
{
System.Console.Write("Введите произвольное число: ");
string inputString;
inputString = System.Console.ReadLine();
int inputNumber;
inputNumber = System.Convert.ToInt32(inputString);
System.Console.WriteLine("Вы ввели число {0}", inputNumber);
if(inputNumber > 0 && inputNumber <= 100)
System.Console.Write("Число больше 0, но <= 100");
else if (inputNumber > 100)
System.Console.Write("Это число больше 100");
else if (inputNumber == 0)
System.Console.Write("Это число равно нулю");
else
System.Console.Write("Это число меньше нуля");
System.Console.ReadLine();
}
}
}
В приведенной программе для преобразования введенной строки в 32-разрядное целое число со знаком используется метод ToInt32:
int inputNumber;
inputNumber = System.Convert.Tolnt32(inputString);
В начале работы вложенного оператора if вычисляется выражение:
inputNumber > 0 && inputNumber <= 100
Как видите, в этом выражении есть два оператора отношения: > и <=, а также один логический оператор И, обозначенный символами &&. Выражение проверяет, лежит ли введенное значение в интервале [0, 100].
При обработке оператора && в соответствии с приоритетами операторов вначале вычисляется значение выражения inputNumber > 0. Если оно ложно, то все выражение будет ложно. В этом случае выражение inputNumber <= 100 не вычисляется, так как в этом нет никакого смысла.
Если же выражение, расположенное слева от оператора &&, истинно, то вычисляется выражение inputNumber <= 100. В том случае, когда оба эти выражения истинны, наша программа выводит на консоль сообщение о том, что введенное число больше 0, но меньше или равно 100.
В том случае, когда введенное число не принадлежит интервалу ]0, 100], срабатывает первый блок else. Внутри ее находится еще один, вложенный оператор if, проверяющий условие inputNumber > 100. Далее аналогичным образом с помощью оператора = = мы сравниваем введенное число с нулем.
В том случае, если ни одно из наших условий не выполнено, в дело вступает последний блок else. Внутри его находится строка программы, отображающая на консоли сообщение о том, что введенное число меньше нуля.