Шрифт:
Первый символ } в анализируемой программе завершает метод Main, а вто рой — определение класса Example.
И наконец, в C# различаются прописные и строчные буквы. Несоблюдение этого правила может привести к серьезным осложнениям. Так, если вы неумышленно на берете main вместо Main или же writeline вместо WriteLine, анализируемая про грамма окажется ошибочной. Более того, компилятор C# не предоставит возможность выполнить классы, которые не содержат метод Main, хотя и скомпилирует их. По этому если вы неверно наберете имя метода Main, то получите от компилятора со общение об ошибке, уведомляющее о том, что в исполняемом файле Example.ехе не определена точка входа. Обработка синтаксических ошибок
Если вы только начинаете изучать программирование, то вам следует научиться правильно истолковывать (и реагировать на) ошибки, которые могут появиться при попытке скомпилировать программу. Большинство ошибок компиляции возникает в результате опечаток при наборе исходного текста программы. Все программисты рано или поздно обнаруживают, что при наборе исходного текста программы очень легко сделать опечатку. Правда, если вы наберете что-нибудь неправильно, компиля тор выдаст соответствующее сообщение о синтаксической ошибке при попытке скомпи лировать вашу программу. В таком сообщении обычно указывается номер строки ис ходного текста программы, где была обнаружена ошибка, а также кратко описывается характер ошибки.
Несмотря на всю полезность сообщений о синтаксических ошибках, выдаваемых компилятором, они иногда вводят в заблуждение. Ведь компилятор C# пытается из влечь какой-то смысл из исходного текста, как бы он ни был набран. Именно по этой причине ошибка, о которой сообщает компилятор, не всегда отражает настоящую причину возникшего затруднения. Неумышленный пропуск открывающей фигурной скобки после метода Main в рассмотренном выше примере программы приводит к появлению приведенной ниже последовательности сообщений об ошибках при компиляции данной программы компилятором командной строки csc. (Аналогич ные ошибки появляются при компиляции в интегрированной среде разработки Visual Studio.) EX1.CS(12, 21) : ошибка CS1002: ; ожидалось ЕХ1.CS(13, 22) : ошибка CS1519: Недопустимая лексема '(' в объявлении члена класса, структуры или интерфейса EX1.CS(15, 1) : ошибка CS1022: Требуется определение типа или пространства имен либо признак конца файла
Очевидно, что первое сообщение об ошибке нельзя считать верным, поскольку про пущена не точка с запятой, а фигурная скобка. Два других сообщения об ошибках вно сят такую же путаницу.
Из всего изложенного выше следует, что если программа содержит синтаксиче скую ошибку, то сообщения компилятора не следует понимать буквально, поскольку они могут ввести в заблуждение. Для выявления истинной причины ошибки может потребоваться критический пересмотр сообщения об ошибке. Кроме того, полезно проанализировать несколько строк кода, предшествующих той строке, в которой об наружена сообщаемая ошибка. Иногда об ошибке сообщается лишь через несколько строк после того места, где она действительно произошла. Незначительное изменение программы
Несмотря на то что приведенная ниже строка указывается во всех примерах про грамм, рассматриваемых в этой книге, формально она не нужна. using System;
Тем не менее она указывается ради удобства. Эта строка не нужна потому, что в C# можно всегда полностью определить имя с помощью пространства имен, к которому оно принадлежит. Например, строку Console.WriteLine("Простая программа на С#.");
можно переписать следующим образом. System.Console.WriteLine("Простая программа на С#.");
Таким образом, первый пример программы можно видоизменить так. // В эту версию не включена строка "using System;". class Example { // Любая программа на C# начинается с вызова метода Main. static void Main { // Здесь имя Console.WriteLine полностью определено. System.Console.WriteLine("Простая программа на С#."); } }
Указывать пространство имен System всякий раз, когда используется член этого пространства, — довольно утомительное занятие, и поэтому большинство програм мистов на C# вводят директиву using System в начале своих программ, как это сде лано в примерах всех программ, приведенных в данной книге. Следует, однако, иметь в виду, что любое имя можно всегда определить, явно указав его пространство имен, если в этом есть необходимость. Вторая простая программа
В языке программирования, вероятно, нет более важной конструкции, чем пере менная. Переменная — это именованная область памяти, для которой может быть уста новлено значение. Она называется переменной потому, что ее значение может быть изменено по ходу выполнения программы. Иными словами, содержимое переменной подлежит изменению и не является постоянным.
В приведенной ниже программе создаются две переменные — х и у. // Эта программа демонстрирует применение переменных. using System; class Example2 { static void Main { int x; // здесь объявляется переменная int у; // здесь объявляется еще одна переменная х = 100; // здесь переменной х присваивается значение 100 Console.WriteLine("х содержит " + х); у = х / 2; Console.Write("у содержит х / 2: "); Console.WriteLine(y); } }
Выполнение этой программы дает следующий результат. х содержит 100 у содержит х / 2: 50
В этой программе вводится ряд новых понятий. Прежде всего, в операторе int х; // здесь объявляется переменная
объявляется переменная целочисленного типа с именем х. В C# все переменные долж ны объявляться до их применения. Кроме того, нужно обязательно указать тип зна чения, которое будет храниться в переменной. Это так называемый тип переменной. В данном примере в переменной х хранится целочисленное значение, т.е. целое число. Для объявления в C# переменной целочисленного типа перед ее именем указывает ся ключевое слово int. Таким образом, в приведенном выше операторе объявляется переменная х типа int.