Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
63
Добавлен:
09.05.2015
Размер:
229.27 Кб
Скачать

Урок 5: Условный оператор.

Основная цель урока.

1.Познакомиться с условным оператором if.

2.Продолжить изучение работы с системой ввода-вывода в консольных приложениях.

3.Научиться пользоваться пользовательскими свойствами (Settings).

Краткая справка.

Математические выражения.

Мы привыкли, что обычно под фразой « выражение» ( например « найдите значение выражения…») подразумевается некоторое математическое выражение, например:

(37*45)1/6*(35*4)1/6,

(1)

или записана некоторая формула

 

y0,5/(y0,5+4) + 4*y0,5/(y-16), где y = 18.

(2)

Выражение (1) можно вычислить следующим образом, воспользовавшись функцией возведения в степень из класса Math:

double r = Math.Pow(Math.Pow(3, 7) * Math.Pow(4, 5), 1D / 6D) * Math.Pow(Math.Pow(3, 5) * 4, 1D / 6D);

Выражение (2) вычисляется аналогично:

double y = 18.0;

double r = Math.Sqrt(y)/(Math.Sqrt(y)+4) + 4*Math.Sqrt(y)/(y-16);

Логические выражения.

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

двух значений « истина» или « ложь».

Логическое выражение — выражение, результатом вычисления которого

является « истина» или « ложь».

Для хранения логических значений существуют специальный тип данных – bool

(булевский), который может принимать значение true(истина) или false(ложь).

Для логических выражений не применимы обычные арифметические операции,

а определён набор встроенных операций

сравнения позволяющих строить

« простые»

логические выражения.

 

 

 

Таблица 1. Операции сравнения

Операция

Синтаксис

Пример

 

 

 

Равно

==

3

== 3, a ==5

 

 

 

 

Не равно

!=

5

!= 2, a != 5

 

 

 

Больше

>

7>3, a>b

 

 

 

Меньше

<

10<50, a<b

 

 

 

Больше или равно

>=

5>=5, a>=b

 

 

 

Меньше или равно

<=

7.5<=2.3, a<=b

Примеры логических выражений:

bool b =

5 > 2; //результат True(Истина)

b = 8

< 3;

//результат False(Ложь)

b = 7

==

7;

//результат True(Истина)

b =

3

==

2;

//результат

False(Ложь)

b =

3

!=

2;

//результат

True(Истина)

В свою очередь, над логическими выражениями возможны операции, результатом которых так же являются « истина» и « ложь»

Логические операции объединяют логические величины, которые могут принимать два значения: True (Истина) или False (Ложь). Результат логической операции также принимает одно из двух значений: True\False.

Таблица 2. Логические операции

Логическая операция

Синтаксис

Пример

 

 

 

Или (дизъюнкция)

||

(a>10) || (a%2==0)

 

 

 

И (конъюнкция)

&&

(5<a) && (a<10)

 

 

 

Отрицание

!

!(a==100)

 

 

 

Исключающее ИЛИ

^

a ^ b

Например, чтобы проверить, что некоторая переменная a принадлежит промежутку от 0 до 100 (включительно), можно записать следующее логическое выражение:

bool test = (0 <= a) && (a <= 100);

Если значение test равно True(Истина), значит, переменная a лежит в заданном диапазоне.

Условный оператор.

Условный оператор (оператор ветвления) — оператор, обеспечивающий выполнение определённой команды (набора команд) только при условии истинности

некоторого логического выражения.

 

 

Таблица 3. Условный оператор

Вид условного оператора

Синтаксис

 

 

 

 

Однострочный

if (<логическое

выражение>) <оператор>;

 

 

 

Многострочный

if (<логическое

выражение>)

 

{

 

 

<операторы>

 

 

}

 

Многострочный if–else

if (<логическое

выражение>)

 

{

 

 

<операторы>

 

 

}else{

 

 

<операторы>

 

 

}

 

Многострочный

if (<логическое

выражение>)

 

{

 

If–elseif–else

<операторы>

 

 

}else if (< другое логическое выражение>) {

 

<операторы>

 

}else{

 

<операторы>

 

}

Пример:

 

string num = Console.ReadLine(); if (Convert.ToInt32(num) % 2 == 0)

{

Console.WriteLine("Введено чётное число!");

}

else

{

Console.WriteLine("Введено нечётное число!");

}

Учебное задание 1.5.

Создать простой клавиатурный тренажер, который предлагает ввести некоторую строку, затем проверяет правильность ввода и отображает время, за которое была набрана строка.

Технология выполнения учебного задания 1.5.

Шаг 1. Создайте новый проект консольного приложения, назовите его Lab15.

Шаг 2. Создадим переменную, которая будет хранить текст, который нужно будет набрать пользователю. Пусть она будет называться strToType.

Далее отобразим на экране некоторое приветственное сообщение и предложим пользователю нажать любое клавишу, когда он будет готов (после нажатия клавиши будет идти учёт времени). Код, реализующий эти действия, приведён в листинге 1.

static void Main(string[] args)

{

//переменная strToType содержит текст для набора string strToType = "Поспешишь - людей насмешишь"; //выводим приветствие Console.WriteLine("Клавиатурный тренажер.");

Console.WriteLine("Нажмите любую клавишу, когда будете готовы."); //ожидаем нажатия клавиши

Console.ReadKey();

}

Листинг 1.

Шаг 3. После того как пользователь нажали клавишу – очищаем экран от сообщений (чтобы пользователя ничего не отвлекало), сделать это можно с помощью метода Clear() класса Console. Далее отображаем текст, который надо ввести пользователю (он сохранён в переменной strToType) и запоминаем текущее время (DateTime.Now) в переменной savedTime. Затем ожидаем ввод от пользователя, запоминаем введённую пользователем строку в переменной strTyped.

После этого снова, считываем текущее время – оно должно измениться (только если пользователь не набрал текст менее чем за 1 миллисекунду). В переменной timeUser, сохраняем разницу между сохранённым временем и текущим.

Результат выводим в консоль. Свойство TotalMilliseconds показывает общее количество миллисекунд затраченное пользователем, а свойство Milliseconds –

показывает неполное количество миллисекунд. Т.е. если пользователь набрал строку за 7 секунд и 400 миллисекунд, то свойство TotalMilliseconds будет равно

7400, а свойство Milliseconds будет равно 400.

static void Main(string[] args)

{

//переменная strToType содержит текст для набора string strToType = "Поспешишь - людей насмешишь"; //выводим приветствие Console.WriteLine("Клавиатурный тренажер.");

Console.WriteLine("Нажмите любую клавишу, когда будете готовы."); //ожидаем нажатия клавиши

Console.ReadKey();

//Очищаем экран от сообщений...

Console.Clear();

//...и выводим строку, которую надо набрать Console.WriteLine(strToType);

//Запоминаем текущее время DateTime savedTime = DateTime.Now; //Пользователь вводит текст...

string strTyped = Console.ReadLine();

//Находим разницу между текущим и сохранённым временем...

TimeSpan timeUser = DateTime.Now - savedTime; Console.WriteLine("Ваше время {0} секунд и {1} миллисекунд",

(int)(timeUser.TotalMilliseconds / 1000), timeUser.Milliseconds);

Console.ReadKey();

}

Листинг 2.

Шаг 4. Запустите программу, нажав клавишу F5. Проверьте её

работоспособность.

Шаг 5. Теперь необходимо сравнить набранную пользователем строчку, с

образцом, чтобы узнать – была ли допущена ошибка при вводе ? Для этого необходимо использовать условный оператор if.

//Пользователь вводит текст...

string strTyped = Console.ReadLine();

//Находим разницу между текущим и сохранённым временем...

TimeSpan timeUser = DateTime.Now - savedTime; Console.WriteLine("Ваше время {0} секунд и {1} миллисекунд",

(int)(timeUser.TotalMilliseconds / 1000), timeUser.Milliseconds);

//Если набранная строка равна исходной...

if (strTyped == strToType)

{

//то выводим поздравление

Console.WriteLine("Поздравляю, вы верно набрали текст!");

}

else

{

//иначе - пишем об ошибке

Console.WriteLine("К сожалению, была допущена ошибка...");

}

Console.ReadKey();

Листинг 3.

Шаг 6. Запустите программу, нажав клавишу F5. Проверьте её работоспособность.

Шаг 7. Усовершенствуем программу, добавив возможность сохранения лучшего результата. Т.е. ваше лучшее время должно сохраняться даже после завершения работы программы. Для этого можно воспользоваться пользовательскими свойствами (Settings).

В окне « Обозреватель решений» дважды кликните на папке Properties –

откроется окно свойств проекта. Выберите закладку « Параметры», кликните по ссылке « Этот проект не содержит параметров по умолчанию. Щелкните здесь, чтобы создать такой файл». В появившейся таблице укажите имя параметра – BestResult,

тип параметра – System.TimeSpan, область – Пользователь, значение – 50000.

После этого закройте окно свойств проекта, вернитесь к окну редактирования кода.

Созданное свойство это переменная типа TimeSpan, но его значение сохраняется на диске, а не только в оперативной памяти. Поэтому после завершения работы приложения свойство сохраняет своё значение. Значение свойства сохраняется на диске, но не в исполняемом файле. Например, в Windows 7

располагается по следующему пути:

C:\Users\[Пользователь]\AppData\Local\Microsoft\[Проект].Settings.[ИмяСвойства])

Поэтому при переносе программы на другой компьютер значение будет другим

(например тем, которое указано по умолчанию). Пользовательские свойства

(параметры) можно использовать как обычные переменные обращаясь к ним следующим образом:

Properties.Settings.Default.[Имя_параметра]

При изменении параметра его необходимо сохранить, для этого нужно вызвать метод Save().

Properties.Settings.Default.Save();

Чтобы обновить значения свойства из файла на диске, можно воспользоваться методом Reload(), а чтобы сбросить на значение по умолчанию (которое задаётся при создании свойства) нужно вызвать метод Reset().

Итак, если пользователь верно ввёл текст, мы должны сравнить его время с лучшим результатом. Если пользователь улучшил свой результат – перезаписываем свойство BestResult текущим временем пользователя и сохраняем изменения (см.

листинг 4).

//Если набранная строка равна исходной...

if (strTyped == strToType)

{

//то выводим поздравление

Console.WriteLine("Поздравляю, вы верно набрали текст!"); if (timeUser < Properties.Settings.Default.BestResult)

{

//Находим разницу между текущим и предыдущим лучшим результатом TimeSpan timeDif = Properties.Settings.Default.BestResult - timeUser;

Console.WriteLine("Вы улучшили свой результат на {0} мс", (int)timeDif.TotalMilliseconds);

//меняем свойство Properties.Settings.Default.BestResult = timeUser; //сохраняем изменения Properties.Settings.Default.Save();

}

}

else

{

//иначе - пишем об ошибке

Console.WriteLine("К сожалению была допущена ошибка...");

}

Console.ReadKey();

Листинг 4.

Шаг 8. Запустите программу, нажав клавишу F5. Проверьте программу на

работоспособность.

Контрольные вопросы.

1.Что такое логическое выражение ?

2.Что такое логическая операция ?

3.Для чего используется оператор if ?

4.Какие виды условного оператора вы знаете ?

5.Чему будет равно значение логического выражения (1>2) || (3<5) ?

6.Как добавить новое пользовательское свойство(Settings) ?

Самостоятельное задание 1.5.

Измените учебное задание 1.3 (нахождение корней квадратного уравнения) так,

чтобы при отрицательном дискриминанте программа выводила сообщение “Нет корней”. Если дискриминант равен 0, то программа должна выводить только одно решение, а не два одинаковых.

Урок 2: Строковые и целочисленные переменные.

Основная цель урока.

1.Познакомиться со строковыми и целочисленными типами данных.

2.Научиться объявлять переменные, присваивать им значения.

3.Научиться преобразовывать строковые переменные в числовые.

4.Познакомиться с базовыми функциями ввода\вывода в консольных приложениях

Краткая справка.

Переменная – это именованная область памяти, имя которой может использоваться для изменения данных, хранящихся в ней. Данные, находящиеся в переменной, называются значением этой переменной.

Общий вид объявления (создания) переменных выглядит следующим образом: [Имя типа] [Имя переменной];

[Имя типа] – один из существующих типов переменных, это может быть целочисленний тип (обозначается int), вещественный (float), строковый (string) и.т.д.

[Имя переменной] – имя переменной может быть любым, однако существует ряд ограничений. В частности имя должно начинаться с буквы, не должно совпадать с зарезервированными словами и не должно повторяться (нельзя в рамках одного блока создать 2 переменные с одинаковым именем).

Примеры объявления переменных:

//объявление строковой переменной(string) с именем name string name;

//присваивание переменной с именем name значения "John" name = "John";

//объявление целочисленной перменной age типа int //и присваивание ей значения 19

int age = 19;

//Имя перменной hobby, тип переменной string, значение перменной "football" string hobby = "football";

Строковые переменные (string).

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

Строка — это пустая строка либо упорядоченная последовательность символов.

Пустая строка не содержит ни одного символа. Для обозначения строки

используются кавычки:

"" — обозначение пустой строки;

string.Empty — так же обозначение пустой строки;

"Иван"— пример непустой строки.

" " — строка, содержащая один пробел;

Между кавычками в обозначении пустой строки пробела ставить нельзя,

так как пробел — это тоже символ.

Давайте создадим простую строковую переменную с именем strName. Префикс

str обычно говорит о том, что переменная имеет строковый тип.

string strName; //Создание строковой переменной с именем strName

strName = “Джон”;//Присваивание переменной strName значения “Джон”

Следует отметить, что программы выполняются последовательно, поэтому обязательно нужно сначала создать переменную, а потом присваивать ей значение.

Создание и инициализацию переменной можно объединить и записать одной строчкой.

string strName = “Джон”;

В процессе выполнения программы переменные могут изменяться.

string strName = “Джон”;

Console.WriteLine(strName); //Будет выведено: Джон

strName = “Билл”;

Console.WriteLine(strName); //Будет выведено: Билл

Для строковых переменных определена операция конкатенации. Конкатенация двух строк это попросту их склеивание. Пример: "12345678" — это конкатенация строк "12345" и "678". Для конкатенации строк в C# используется знак +.

Пример:

string strName = “Джон”;

//Будет выведено: Привет, Джон

Console.WriteLine(“Привет, ” + strName);

//Будет выведено: 1234567890

Console.WriteLine(“123 ” + “456” + “789” + “0”);

Целочисленные переменные.

К целочисленным переменных относят переменные типов byte,sbyte, short, int, long. Наиболее распространённым типом является int. Все эти типы отличаются размером и диапазоном принимаемых значений. Например, переменная типа sbyte

занимает 1 байт памяти и может принимать целые значения в диапазоне от -128 до

127. Переменная типа int занимает 4 байта и может принимать значения от - 2147483648 до -2147483647.

У каждого числового типа данных есть свойства MinValue и MaxValue, с

помощью которых можно определить диапазон принимаемых значений. Пример:

Console.WriteLine("диапазон byte от {0} до {1}",byte.MinValue,byte.MaxValue);

Для целочисленных типов определены следующие операции: сложение(+),

вычитание(-), умножение(*), деление(/) и остаток от деления(%). Пример.

int a = 100; int b = 300;

a = a + b; //a = 100+300 = 400 b = a - b; //b = 400-300 = 100 b = b * b; //b = 100*100 = 10000 a = b / a; //a = 10000/400 = 25 a = 17 % 5;//a = 2 (5*3+2)

Следует помнить, что результатом при операциях с целыми числами будут тоже целые числа. Т.е. целочисленное деление даст только целые числа!

99 / 25 = 3,96, но дробная часть не будет округляться, а будет просто отброшена.

a = 3

/

2;

//a = 1

a = 1

/

3;

//a = 0

a =

99 / 25; //a

=

3

a =

100

/ 25;//a

=

4

Учебное задание 1.2.

Создать приложение имитирующее регистрацию абитуриента в системе и подсчитывающее сумму баллов за 3 предмета.

Технология выполнения учебного задания 1.2.

Шаг 1. Создайте проект нового консольного приложения, назовите его Lab12.

Шаг 2. Откройте файл Program.cs, дважды кликнув по нему в окне « Обозреватель решений».

Шаг 3. Для начала, запросим имя пользователя и поприветствуем его. Для того чтобы получить имя пользователя, воспользуемся методом Console.ReadLine().

Метод Console.ReadLine() считывает строку символов из консоли (до нажатия Enter).

Введите код, приведённый в листинге 2.

static void Main(string[] args)

{

string name; // Объявляем строковую переменную Console.WriteLine("Как вас зовут ?");

name = Console.ReadLine();// присваиваем значение переменной name Console.WriteLine("Здравствуйте, " + name + " !"); Console.ReadKey();

}

Листинг 2.

Шаг 4. Запустите программу, нажав F5. Введите ваше имя и нажмите [Enter].

Шаг 5. Обратите внимание на строчку

Console.WriteLine("Здравствуйте, " + name + " !");

Здесь выводится на экран объединение (конкатенация) 3-х строк: строки

“Здравствуйте, ”, строки хранящейся в переменной name и строки “ !”. Переменная

Соседние файлы в папке Методичка (1 сем)