User Rating: 0 / 5

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive

User Rating: 0 / 5

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive

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

Шаг 1: Постановка задачи

Создадим еще одно поле формы, в котором будет хранится количество примеров для тестирования. Допустим будем задавать по 50 примеров.

int qolPrimerov=50; // количество примеров

Это же количество будет равняться количеству правильных решений примеров, потому что тестирование будет закончено, когда игрок правильно решит все 50 примеров. Если на это ему потребуется 50 попыток, это будет 100%-ный результат.

Количество неправильных ответов будем хранить в поле

int qolNepravilno;//количество неправильных ответов

Если игрок вводил неправильные ответы, то результат или оценка будет

ocenka= qolPrimerov /( qolPrimerov + qolNepravilno)*100;


Нам также необходимо организовать подсчет количества решенных примеров.

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


int numberPrimera;//Количество решенных примеров


Шаг 2: Выбор процедуры для реализации и задачи

В некоторой процедуре будем сравнивать numberPrimera  и qolPravilno для завершения работы программы.

Для этой цели подойдет уже написанная нами процедура обработки нажатия клавиш. Но придется внести некоторые изменения.


Шаг3: Внесение изменеий в код

Посмотрите блок-схему. Желтым выделены блоки которые нам предстоит добавть в процедуру.



Вот как выглядит код:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

{

try

{

//если нажата ентер

if (e.KeyChar == (char)Keys.Enter)

{//проверяем правильность решения

if (a + b == Convert.ToInt32(textBox1.Text))

{//если правильный ответ

numberPrimera ++;

if (numberPrimera < qolPrimerov)

{//очищаем текстовое поле и устанавливаем на него курсор

textBox1.Text = "";

textBox1.Focus();

button1_Click(sender, e);//задаем следующий пример

}

else

{

itogi();//Процедура завершения работы программы

}

}

else

{

MessageBox.Show("Не правильно");

qolNepravilno++;

textBox1.SelectAll();

}

}

}//end try


catch

{

MessageBox.Show("Разрешено вводить только цифры");

textBox1.SelectAll();

}


}


Здесь также желтым подсвечены строки реализующие желтые блоки блок-схемы.


Шаг 3: Операции инремента и декремента.

Оператор qolNepravilno++ представляет собой краткую форму записи qolNepravilno= qolNepravilno+1

Соответственно для qolNepravilno-- краткая форма для qolNepravilno= qolNepravilno-1

Есть также такая форма записи ++ qolNepravilno;

Операторы типа qolNepravilno++ называются постфиксными, а операторы типа ++ qolNepravilnoпрефиксными. Если префиксный оператор встретится в сложном выражении, то сначала переменная изменяется на 1, и далее передается в выражение.

Например, пусть х=1, тогда ++х+10 возвратит 12, а х++ +10 возвратит 11, а сам х в обоих случаях станет равен 2.

Операции увеличивающие значение переменной на 1, называются операциями инкремента, а уменьшающие на 1 – декремента.

Шаг 4: Написание процедуры завершения работы программы.

Процедура завершения работы программы вынесена в метод itogi().

Вынесение блоков кодов в самостоятельные методы – это хорошая идея. Это позволяет не нагромождать код, и легко вносить в него изменения. Например, сейчас мы создадим временный код для метода itogi(). Он будет выводить результат теста в окне MessageBox, и необходим также для тестирования нашего кода. Если мы видим, что в окне MessageBox отображаются ошибочные результаты, значит где-то мы совершили ошибку.

Но в дальнейшем мы планируем записывать результаты в файл. Тогда мы просто изменим код метода itogi(), а процедура textBox1_KeyPress останется без изменений.


Итак, метод itogi():

private void itogi()

{

float ocenka;

ocenka = (float)qolPrimerov / (qolPrimerov + qolNepravilno) * 100;

MessageBox.Show("Неправильных ответов:" + qolNepravilno.ToString () +"." +"\n" +"Оценка:" + ocenka.ToString());

}

Шаг 5: Явное приведение типов

Обратите внимание для переменной ocenka я выбрал тип не int, а float, потому что она будет содержать дробное число. И в самой формуле обратите внимание на float:

ocenka = (float)qolPrimerov / (qolPrimerov + qolNepravilno) * 100;

Попробуйте убрать (float). Вы будете всегда получать оценку 0, если хоть один ответ неправильный. Почему так происходит?

Потому что qolPrimerov и qolNepravilno имеют целый тип. И если выполняется арифметическая операция содержащая операнды определенного типа, то и результат операции будет того же типа. В нашем случае результат выражения qolPrimerov / (qolPrimerov + qolNepravilno) всегда будет находиться в пределах от 0 до 1. А так как результат должен быть целым числом, то будет получен либо 0, либо 1. Дальше умножаем на 100 и получаем либо 0, либо 100, что является не тем результатом, который нам необходим.

Поэтому мы испоьзуем явное приведение к типу float. Достаточно привести один из операндов к типу float и все выражение будет приведено к этому типу.


Шаг 6:Работа со строками

Теперь поговорим о строках. Метод MessageBox.Show использует в качестве параметра строку, которая отображается в текстовом сообщении. Здесь мы использовали несколько способов задания строки:

  • В двойных кавычках
  • Приведением числового типа в строковый с помощью метода ToString
  • Использовали специальные символы форматирования


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

\t

Соответствует символу табуляции

\r

Соответствует символу возврата каретки

\n

Соответствует символу новой строки

\e

Соответствует символу escape


Шесть фрагментов строк я объединил в одну с помощью оператора +.


Подведем итоги


  • Узнали об операции инкремента и декремента (шаг3)
  • Узнали о явном приведении типов (шаг 5)
  • Узнали о способах задания строк и спецсимволов форматирования (шаг 6)
  • Узнали как объединять несколько строк в одну (шаг 6)

User Rating: 0 / 5

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive

Пррдолжение, начало смотри здесь.

Немного усовершенствуем имеющийся функционал.

Если вы пробовали код из предыдущего урока, то возможно заметили некоторые неудобства, которые напрягают. Когда мы нажимаем кнопку "Старт", нам надо кликнуть самим в текстовое поле ввода ответа. А хотелось бы просто сходу вводить ответ. Это сделать несложно. Нужно в

User Rating: 0 / 5

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive


Язык C# , это мощный современный язык программирования, разработанный сравнительно недавно, в 2000 - ном году. Взгляните на генеалогическое дерево C#. Прародителем C# является язык С. Так как сложность задач встающих перед программистами не позволяла их решать средствами  структурного программирования, был разработан  язык объектно-ориентированного программирования (ООП) - C++.
C# также объектно-ориентированный язык, разработанный специально для новых технологий в среде Framework .Net. Среда Framework .Net позволяет использовать в одном проекте компоненты написанные на разных языках. Везде, где установлена Framework .Net будет работать приложение на C#. А эта среда сейчас устанавливается не только в Windows, но и в другие операционные системы, в том числе и на мобильные устройства. Так что знание C# сейчас становится очень актуальным. Еще одно важное направление использование C#, разработка веб приложений. Для изучения этого интересного направления IT-технологий рекомендую курс....
В этом видео-курсе вы получите  доходчивое объяснение, также коды рассматриваемых примеров.

Язык C# , это мощный современный язык программирования, разработанный сравнительно недавно, в 2000 - ном году. Взгляните на генеалогическое дерево C#.

.

 Прародителем C# является язык С. Так как сложность задач встающих перед программистами не позволяла их решать средствами  структурного программирования, был разработан  язык объектно-ориентированного программирования (ООП) - C++.

C# также объектно-ориентированный язык, разработанный специально для новых технологий в среде Framework .Net. Среда Framework .Net позволяет использовать в одном проекте компоненты написанные на разных языках. Везде, где установлена Framework .Net будет работать приложение на C#. А эта среда сейчас устанавливается не только в Windows, но и в другие операционные системы, в том числе и на мобильные устройства. Так что знание C# сейчас становится очень актуальным. Еще одно важное направление использование C#, разработка веб приложений.

Если вам приходилось иметь дело с языками представленными на схеме, то вам будет легко освоить C#. А если нет, не отчаивайтесь. Для изучения этого интересного направления IT-технологий рекомендую курс Видеокурс по C# WindowsForms.

В этом видео-курсе вы получите  доходчивое пошаговое объяснение, также коды рассматриваемых примеров.


User Rating: 0 / 5

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive

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