Комментарии

До этого момента наши тестовые программки были просты до идиотизма. Теперь они начнут усложняться. Настоящие программы бывают сложными. Очень сложным. На самом деле самая трудная часть работы программиста - это не написать новую программу, а понять уже написанную, найти в ней ошибки, исправить их или что-то поменять, не сделав новых (!). Понимание программы очень облегчают комментарии - заметки прямо в коде, которые игнорирует компьютер. Они только для высшего разума - людей. Кроме того их часто используют для того, чтобы временно отключить часть программы не удаляя уже написанного кода - так и говорят, закомментировать.

bool boolVar1 = true;

 

/*

многострочный коментарий

сейчас используется редко из-за встроенных функций Visual Studio

*/

 

bool boolVar2 = true;

 

//однострочный комментарий

 

На практике многострочные комментарии в Visual Studio чаще всего ставятся с использованием специальной функции - у нее есть и кнопка и собственная горячая клавиша

Получаем вот такой код, который можно раскомментировать с помощью соседней кнопки

/if (boolVar1 && boolVar2)

//{

// System.Console.WriteLine("Вернуло true логическое И для true и true");

//}

//if (boolVar1 || boolVar2)

//{

// System.Console.WriteLine("Вернуло true логическое ИЛИ для true и true");

//}

 

Циклы

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

Самый простой цикл просто заставляет компьютер повторять какое-то действие, пока не выполнится какое-то логическое (см. выше!) условие. В C# такой цикл называется while

//считаем до семи

int counter = 1;

while (counter <= 7)

{

System.Console.WriteLine("Значение счетчика: " + counter);

counter++;

}

System.Console.ReadLine();

Обратите внимание: если условие не выполнится никогда, компьютер будет выполнять заданное действие вечно - это называется зацикливанием.

Можете проверить это утверждение закомментировав строку counter++; - программа будет работать бесконечно, так как counter никогда не будет равен 7. Придется прекратить ее работу вручную, закрыв окно.

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

С его помощью даже самый простой цикл из предыдущего примера станет еще проще

//считаем до семи

for (int counter = 1; counter <= 7; counter++)

{

System.Console.WriteLine("Значение счетчика: " + counter);

}

System.Console.ReadLine();

 

В знаменитой статье Почему программисты не умеют программировать автор приводит следующие данные - большинство выпускников программистских вузов не могут написать очень простую программу - которая выведет на на экран числа от 1 до 100, вместо кратных 3 выведет Fizz, вместо кратных 5 выведет Buzz, вместо кратных и трем и пяти FizzBuzz (это в Америке такая обучающая игра для детей). На самом деле единственная сложность в такой задаче - вспомнить школьное определение кратности. Число кратно 3 если остаток от целочисленного (без учета дробной части) деления этого числа на 3 равен нулю. Осталось выяснить, как вычислить остаток от целочисленного деления. Это делает оператор %.

В итоге получаем совсем простую программу, то ли в Америке так плохо учат, то ли автор статьи преувеличивает, то ли большинству программистов никогда не понадобилось знание того, что такое остаток от целочисленного деления.

for (int counter = 1; counter <= 100; counter++)

{

int reminder3 = counter % 3;

int reminder5 = counter % 5;

 

if (reminder3 == 0 && reminder5 == 0)

{

System.Console.WriteLine("FizzBuzz");

}

else if (reminder3 == 0)

{

System.Console.WriteLine("Fizz");

}

else if (reminder5 == 0)

{

System.Console.WriteLine("Buzz");

}

else

{

System.Console.WriteLine(counter);

}

}

System.Console.ReadLine();

 

Опытный программист может заметить, что одно из условий if лишнее и код можно сделать более коротким с использованием простого трюка - если число делится и на 3 и на 5, то можно просто выводить сначала Fizz потом Buzz, автоматически склеивая их в одну строку и не проверяя отдельно на предмет кратности и 3 и 5. Так как все в этом мире имеет свою цену, то более короткий код также будет менее понятным. В данном примере различие невелико, но в промышленном программировании со сложными и большими программами в большинстве случаев важна именно понятность кода.

for (int counter = 1; counter <= 100; counter++)

{

int reminder3 = counter % 3;

int reminder5 = counter % 5;

string result = "";

 

if (reminder3 == 0)

{

result += "Fizz";

}

if (reminder5 == 0)

{

result += "Buzz";

}

if (reminder3 != 0 && reminder5 != 0)

{

result = counter.ToString();

}

System.Console.WriteLine(result);

}

System.Console.ReadLine();