Программирование » Уроки по C# для начинающих »
Урок 3. Использование условий для программирования в языке С#.
Итак, мы продолжаем писать нашу учебную программу.
Для обработки различных условий в языке С# присутствуют два выражения: «if» и «switch».
Для начала расскажу, о них подробнее.
Это простое условие. Записывается так:
Если нам мало одиночного условия, можно записать его в виде:
Если и этого для нас мало, можно записать по-другому:
Причём, таких связок типа if-else-if… может быть очень много, что бывает полезно в сложных программах.
Если нужно, можно использовать символы «||»(или), «&&»(и) для связи разных условий:
Подробнее о специальных символах и их назначении можно прочитать здесь.
Данная запись означает, что должно выполнится одно из условий (условие1 или условие2) и обязательно – условие3.
Надо сказать, что «switch» - более простая форма для множества условий, чем if-else-if…
Записывается это так:
Обращаю внимание, что командные скобки «{…}» лучше всё-таки ставить. Это избавит вас от проблем с внутренними переменными (переменные, существующие только внутри этой области).
И ещё: значение переменной в после «case» должно быть константой, иначе компилятор выдаст ошибку:
Для начала добавим в функцию, обрабатывающую нажатие клавиш, дополнительное условие (рис. 3.1).
Я специально записал это условие именно через оператор swich. Здесь хорошо видно, что если мы хотим записать несколько условий, при выполнении одного из которых должен выполняться один и тот же код, нам придётся два раза переписывать одно и то же действие, что очень неудобно.
Но в данном случае этот вариант вполне подходит, поскольку потом можно будет изменить код, выполняемый при нажатии клавиши Enter независимо от второго условия (в данном случае – нажатие клавиши Space - пробел).
Здесь мы видим уже знакомую нам функцию ConsoleKeyEnter, которую я немного изменил для этого урока (рис. 3.2).
Здесь мы видим, что при значении нулевого элемента массива arrstrConsoleVvod_Gpr[0] равном «консоль», вызывается некая функция ConsoleKeyEnter_Console, в которую передаётся строковая переменная, в которой содержится введённая пользователем команда.
Естественно, что данный массив должен быть определён как глобальная переменная:
Но если текущее значение целевой переменной не найдено (например, arrstrConsoleVvod_Gpr[0]==”фиг вам”), в дело вступает другое условие:
То есть если пользователь ввёл команду «консоль» или «_К», то следующая команда будет являться командой изменения параметров консоли, о чём мы и сообщаем пользователю. Заодно, выводим список возможных команд функцией ConsoleKeyEnter_Console() (рис. 3.3).
Функция ConsoleKeyEnter_Console() реализует вывод элементов массива arrsrtVoprosConsole_Gpr, в котором заданы команды изменения параметров консоли:
Обращаю ваше внимание, что функции ConsoleKeyEnter_Console() и ConsoleKeyEnter_Console(strKeys) совершенно различны. Компилятор сам выберет нужную по количеству (или типу) переменных в скобках (рис. 3.5). Подробнее об этом можно прочитать здесь. Но эту функцию мы раберём позднее.
А теперь вернёмся к рис. 3.2.
Если пользователь не ввёл ключевого слова, управление передаётся функции ConsoleKeyEnter_Glavnaya(strKeys), которая обрабатывает прочие команды (рис. 3.4).
Я записал её в таком виде, чтобы показать, что этот способ не очень удобен для таких случаев, особенно когда приходится писать много исполняемого кода.
Но эту функцию мы уже разбирали в прошлом уроке.
А теперь разберём функцию ConsoleKeyEnter_Console(strKeys) (рис. 3.5).
Здесь у меня получилось удачно соединить разные типы условий.
К тому же здесь используется новый для нас способ присвоения значения переменным:
При этом элементам массива arrstrConsoleVvod_Gpr[0] и arrstrConsoleVvod_Gpr[1] будет присвоено одно и то же значение (“” – пустая строка).
Здесь есть новая для нас функция: ConsoleKeyEnter_Console_zvet (рис. 3.6).
Здесь нет ничего принципиально нового, кроме пары стандартных функций:
Convert. – используется для перевода данных из одного типа в другой.
В данном случае мне нужно перевести текст, написанный пользователем, в значения типа int16:
Далее мы меняем цвет текста элемента (textBoxConsole.ForeColor) на тот, который пользователь записал в формате ARGB (альфа, красный, зелёный, синий).
Для этого используем стандартную функцию Color. – используется для задания цвета:
Осталось разобрать ещё одну функцию: ConsoleAutoCompleteSource. Мы используем её для авто заполнения строки, в которой пользователь вводит команды, в зависимости от того, какие команды уже были введены (рис. 3.7).
Здесь я реализовал многоступенчатый выбор при помощи вложенных операторов switch.
Естественно, для начала мне пришлось задать массивы, в которых храняться данные для авто заполнения:
Разберём, как работает эта функция.
Сначала мы очищаем ресурсы авто заполнения:
Затем заполняем их тем, что нужно при текущих условиях:
Теперь можно запустить программу и проверить, как это работает (рис. 3.8).
Для удобства я задал цвет (0,255,0,0), что соответствует красному. Мы видим, что цвет текста изменился на красный.
Скачать исходники можно здесь: .
Жду отзывов и предложений
К списку статей Предыдущий урок Следующий урок
DiamondTigeR
Для обработки различных условий в языке С# присутствуют два выражения: «if» и «switch».
Для начала расскажу, о них подробнее.
Выражение типа «if».
Это простое условие. Записывается так:
If(<условие>) <действие>
Если нам мало одиночного условия, можно записать его в виде:
If(<условие>)<действие1>else<действие2>
Если и этого для нас мало, можно записать по-другому:
If(<условие1>)<действие1>else
If(<условие2>)<действие2>else<действие3>
If(<условие2>)<действие2>else<действие3>
Причём, таких связок типа if-else-if… может быть очень много, что бывает полезно в сложных программах.
Если нужно, можно использовать символы «||»(или), «&&»(и) для связи разных условий:
If((<условие1> || <условие2>) && <условие3>)
Подробнее о специальных символах и их назначении можно прочитать здесь.
Данная запись означает, что должно выполнится одно из условий (условие1 или условие2) и обязательно – условие3.
Выражение типа «switch»
Надо сказать, что «switch» - более простая форма для множества условий, чем if-else-if…
Записывается это так:
switch(<имя переменной>)
{
case <1-е значение переменной>:{<действие1>}break;
case <2-е значение переменной>:{<действие2>}break;
…
default:{<действие, происходящее если ни одно из предыдущих условий не было выполнено>}break;
}
{
case <1-е значение переменной>:{<действие1>}break;
case <2-е значение переменной>:{<действие2>}break;
…
default:{<действие, происходящее если ни одно из предыдущих условий не было выполнено>}break;
}
Обращаю внимание, что командные скобки «{…}» лучше всё-таки ставить. Это избавит вас от проблем с внутренними переменными (переменные, существующие только внутри этой области).
И ещё: значение переменной в после «case» должно быть константой, иначе компилятор выдаст ошибку:
switch(i)
{
case 1:{ i=3; }break;
case j+1:{ i=4; }break; //Здесь компилятор выдаст ошибку
…
default:{ i=5; }break;
}
{
case 1:{ i=3; }break;
case j+1:{ i=4; }break; //Здесь компилятор выдаст ошибку
…
default:{ i=5; }break;
}
А теперь обратимся к практике.
Для начала добавим в функцию, обрабатывающую нажатие клавиш, дополнительное условие (рис. 3.1).
Рис. 3.1. Меняем функцию consoleKeyDown.
Я специально записал это условие именно через оператор swich. Здесь хорошо видно, что если мы хотим записать несколько условий, при выполнении одного из которых должен выполняться один и тот же код, нам придётся два раза переписывать одно и то же действие, что очень неудобно.
Но в данном случае этот вариант вполне подходит, поскольку потом можно будет изменить код, выполняемый при нажатии клавиши Enter независимо от второго условия (в данном случае – нажатие клавиши Space - пробел).
Здесь мы видим уже знакомую нам функцию ConsoleKeyEnter, которую я немного изменил для этого урока (рис. 3.2).
Рис. 3.2. Изменённая функция ConsoleKeyEnter.
Здесь мы видим, что при значении нулевого элемента массива arrstrConsoleVvod_Gpr[0] равном «консоль», вызывается некая функция ConsoleKeyEnter_Console, в которую передаётся строковая переменная, в которой содержится введённая пользователем команда.
Естественно, что данный массив должен быть определён как глобальная переменная:
private string[] arrstrConsoleVvod_Gpr = {"","",""};//Эта переменная указывает, какая спец. команда была введена
Но если текущее значение целевой переменной не найдено (например, arrstrConsoleVvod_Gpr[0]==”фиг вам”), в дело вступает другое условие:
if (strKeys == "консоль" || strKeys == "_К")
{
arrstrConsoleVvod_Gpr[0] = "консоль";
textBoxConsole.Text = "Изменение параметров консоли" + NewLine;
ConsoleKeyEnter_Console();
}
else { ConsoleKeyEnter_Glavnaya(strKeys); }
{
arrstrConsoleVvod_Gpr[0] = "консоль";
textBoxConsole.Text = "Изменение параметров консоли" + NewLine;
ConsoleKeyEnter_Console();
}
else { ConsoleKeyEnter_Glavnaya(strKeys); }
То есть если пользователь ввёл команду «консоль» или «_К», то следующая команда будет являться командой изменения параметров консоли, о чём мы и сообщаем пользователю. Заодно, выводим список возможных команд функцией ConsoleKeyEnter_Console() (рис. 3.3).
Рис. 3.3. Функция ConsoleKeyEnter_Console().
Функция ConsoleKeyEnter_Console() реализует вывод элементов массива arrsrtVoprosConsole_Gpr, в котором заданы команды изменения параметров консоли:
private string[] arrsrtVoprosConsole_Gpr = { "вопрос", "выход", "цвет" }; //Здесь хранится список команд для изменения параметров консоли
Обращаю ваше внимание, что функции ConsoleKeyEnter_Console() и ConsoleKeyEnter_Console(strKeys) совершенно различны. Компилятор сам выберет нужную по количеству (или типу) переменных в скобках (рис. 3.5). Подробнее об этом можно прочитать здесь. Но эту функцию мы раберём позднее.
А теперь вернёмся к рис. 3.2.
Если пользователь не ввёл ключевого слова, управление передаётся функции ConsoleKeyEnter_Glavnaya(strKeys), которая обрабатывает прочие команды (рис. 3.4).
Рис. 3.4. Функция ConsoleKeyEnter_Glavnaya.
Я записал её в таком виде, чтобы показать, что этот способ не очень удобен для таких случаев, особенно когда приходится писать много исполняемого кода.
Но эту функцию мы уже разбирали в прошлом уроке.
А теперь разберём функцию ConsoleKeyEnter_Console(strKeys) (рис. 3.5).
Рис. 3.5. Функция ConsoleKeyEnter_Console(strKeys).
Здесь у меня получилось удачно соединить разные типы условий.
К тому же здесь используется новый для нас способ присвоения значения переменным:
arrstrConsoleVvod_Gpr[0] = arrstrConsoleVvod_Gpr[1] = "";
При этом элементам массива arrstrConsoleVvod_Gpr[0] и arrstrConsoleVvod_Gpr[1] будет присвоено одно и то же значение (“” – пустая строка).
Здесь есть новая для нас функция: ConsoleKeyEnter_Console_zvet (рис. 3.6).
Рис. 3.6. Функция ConsoleKeyEnter_Console_zvet.
Здесь нет ничего принципиально нового, кроме пары стандартных функций:
Convert. – используется для перевода данных из одного типа в другой.
В данном случае мне нужно перевести текст, написанный пользователем, в значения типа int16:
Convert.ToInt16(<текст>)
Далее мы меняем цвет текста элемента (textBoxConsole.ForeColor) на тот, который пользователь записал в формате ARGB (альфа, красный, зелёный, синий).
Для этого используем стандартную функцию Color. – используется для задания цвета:
textBoxConsole.ForeColor = Color.FromArgb(arriZvet[0],arriZvet[1],arriZvet[2],arriZvet[3]);
Осталось разобрать ещё одну функцию: ConsoleAutoCompleteSource. Мы используем её для авто заполнения строки, в которой пользователь вводит команды, в зависимости от того, какие команды уже были введены (рис. 3.7).
Рис. 3.7. Функция ConsoleAutoCompleteSource.
Здесь я реализовал многоступенчатый выбор при помощи вложенных операторов switch.
Естественно, для начала мне пришлось задать массивы, в которых храняться данные для авто заполнения:
private string[] arrsrtVopros_Gpr = { "вопрос", "выход", "консоль" }; //Здесь хранится список команд
private string[] arrsrtVoprosConsole_Gpr = { "вопрос", "выход", "цвет" }; //Здесь хранится список команд для изменения параметров консоли
private string[] arrsrtVoprosConsoleZvet_Gpr = { "вопрос", "выход", "текста" }; //Здесь хранится список команд для изменения цвета консоли
private string[] arrsrtVoprosConsole_Gpr = { "вопрос", "выход", "цвет" }; //Здесь хранится список команд для изменения параметров консоли
private string[] arrsrtVoprosConsoleZvet_Gpr = { "вопрос", "выход", "текста" }; //Здесь хранится список команд для изменения цвета консоли
Разберём, как работает эта функция.
Сначала мы очищаем ресурсы авто заполнения:
textBoxConsoleMain.AutoCompleteCustomSource.Clear();
Затем заполняем их тем, что нужно при текущих условиях:
textBoxConsoleMain.AutoCompleteCustomSource.AddRange(<массив текстовых данных>);
Теперь можно запустить программу и проверить, как это работает (рис. 3.8).
Рис. 3.8. Результат работы программы.
Для удобства я задал цвет (0,255,0,0), что соответствует красному. Мы видим, что цвет текста изменился на красный.
Скачать исходники можно здесь: .
Жду отзывов и предложений
К списку статей Предыдущий урок Следующий урок
DiamondTigeR
Автор: d.tiger. Дата: 8-01-2012, 13:46
Просмотров: 6834
В избранное:
Уважаемый посетитель, для доступа к ресурсам сайта OS-7.RU, а также для скачивания материалов - Вам необходимо зарегистрироваться либо войти под своим именем.
Комментарии (1)
Распечатать