Листинг 1.1. Заготовка консольной программы
Заготовка консольной программы
ЗАМЕЧАНИЕ
Небезынтересно полюбопытствовать, какие файлы создала среда для поддержки проекта. С помощью проводника Windows можно увидеть, что на заданном диске появилась папка с указанным именем, содержащая несколько других файлов и вложенных папок. Среди них — файл проекта (с расширением csproj), файл решения (с расширением sin) и файл с кодом класса (Classl .cs).
В нижней левой части экрана расположено окно свойств Properties (если окна не видно, воспользуйтесь командой View ► Properties Window главного меню). В окне свойств отображаются важнейшие характеристики выделенного элемента. Например, чтобы изменить имя файла, в котором хранится класс Classl, надо выделить этот файл в окне управления проектом и задать в окне свойств новое значение свойства FileName (ввод заканчивается нажатием клавиши Enter).
Основное пространство экрана занимает окно редактора, в котором располагается текст программы, созданный средой автоматически. Текст представляет собой каркас, в который программист добавляет код по мере необходимости.
Ключевые (зарезервированные) слова отображаются синим цветом. Ключевые слова — это слова, имеющие специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены.
Комментарии различных типов — серым и темно-зеленым. Комментарии предназначены для программиста и позволяют обеспечить документирование программы.
Остальной текст — черным. Слева от текста находятся символы структуры: щелкнув на любом квадратике с минусом, можно скрыть соответствующий блок кода. При этом минус превращается в плюс, щелкнув на котором, можно опять вывести блок на экран. Это средство хорошо визуально структурирует код и позволяет сфокусировать внимание на нужных фрагментах.
Рассмотрим каждую строку заготовки программы (листинг 1.1). Не пытайтесь сразу понять абсолютно все, что в ней написано. Пока что ваша цель — изучить принципы работы в оболочке, а досконально разбираться в программе мы будем позже.
using System;
namespace ConsoleAppIicationl
{
/// <summary>
/// Summary description for Classl.
/// </summary>
class Classl
{
/// <summary>
/// The main entrypoint for the application.
/// </summary>
[STAThreaci]
static void Main(string[]args)
{ //
/7 TODO: Add code to start application here // } } }
Директива using System разрешает использовать имена стандартных классов из пространства имен System непосредственно (без указания имени пространства).
Ключевое слово namespace создает для проекта собственное пространство имен, названное по умолчанию ConsoleAppl icationl. Это сделано для того, чтобы можно было давать программным объектам имена, не заботясь о том, что они могут совпасть с именами в других пространствах имен.
Строки, начинающиеся с двух или трех косых черт, являются комментариями и предназначены для документирования текста программы.
С# — объектно-ориентированный язык, поэтому написанная на нем программа представляет собой совокупность взаимодействующих между собой классов. В нашей заготовке программы всего один класс, которому по умолчанию задано имя Classl. Описание класса начинается с ключевого слова class, за которым следуют его имя и далее в фигурных скобках — список элементов класса (его данных и функций, называемых также методами).
ВНИМАНИЕ--------------------------------------------------------------------------------------------
Фигурные скобки являются важным элементом синтаксиса. Каждой открывающей скобке соответствует своя закрывающая, которая обычно располагается ниже по тексту с тем же отступом. Эти скобки ограничивают блок, внутри которого могут располагаться другие блоки, вложенные в него, как матрешки. Блок может применяться в любом месте, где допускается отдельный оператор.
В данном случае внутри класса только один элемент — метод Main. Каждое приложение должно содержать метод Main — с него начинается выполнение программы. Все методы описываются по единым правилам.
Упрощенный синтаксис метода:
[ спецификаторы ] тип имяметода ( [ параметры ] )
{
тело метода: действия, выполняемые методом
}
ВНИМАНИЕ --------------------------------------------------------------------------------------------
Для описания языка программирования в документации часто используется некоторый формальный метаязык, например, формулы Бэкуса—Наура или синтаксические диаграммы. Для наглядности и простоты изложения в этой книге используется широко распространенный неформальный способ описания, когда необязательные части синтаксических конструкций заключаются в квадратные скобки, текст, который необходимо заменить конкретным значением, пишется по-русски, а возможность выбора одного из нескольких элементов обозначается вертикальной чертой. Например:
[ void | int ] имя_метода();
Эта запись означает, что вместо конструкции имя_метода необходимо указать конкретное имя в соответствии с правилами языка, а перед ним может находиться либо слово void, либо слово int, либо ничего. Символ подчеркивания используется для связи слов вместо пробела, показывая, что на этом месте должен стоять один синтаксический элемент, а не два. В тех случаях, когда квадратные скобки являются элементом синтаксиса, это оговаривается особо
Таким образом, любой метод должен иметь тип, имя и тело, остальные части описания являются необязательными, поэтому мы их пока проигнорируем. Методы подробно рассматриваются в разделе «Методы» (см. с. 106).
ПРИМЕЧАНИЕ---------------------------------------------------------------------------------------
Наряду с понятием «метод» часто используется другое — функция-член класса. Метод является частным случаем функции — законченного фрагмента кода, который можно вызвать по имени. Далее в книге используются оба эти понятия.
Среда заботливо поместила внутрь метода Main комментарий:
// T0D0: Add code to start application here
Это означает: «Добавьте сюда код, выполняемый при запуске приложения». Последуем совету и добавим после строк комментария (но не в той же строке!) строку
Console.WriteLine("yp-pa! Зар-работало! (с) Кот Матроскин"):
Здесь Console — это имя стандартного класса из пространства имен System. Его метод WriteLine выводит на экран заданный в кавычках текст. Как видите, для обращения к методу класса используется конструкция
имя_класса.имяиетода
Если вы не сделали ошибку в первом же слове, то сразу после ввода с клавиатуры следом за словом Console символа точки среда выведет подсказку, содержащую список всех доступных элементов класса Console. Выбор нужного имени выполняется либо мышью, либо клавишами управления курсором, либо вводом одного или нескольких начальных символов имени. При нажатии клавиши Enterвыбранное имя появляется в тексте программы.
СОВЕТ --------------------------------------------------------------------------------------------------
Не пренебрегайте возможностью автоматического ввода — это убережет вас от опечаток и сэкономит время. Если подсказка не появляется, это свидетельствует об ошибке в имени или в месте расположения в программе вводимого текста.
Программа должна приобрести вид, приведенный в листинге 1.2 (для того чтобы вы могли сосредоточиться на структуре программы, из нее убраны все комментарии и другие пока лишние для нас детали). Ничего ужасного в этом листинге нет, не правда ли?
Обратите внимание на то, что после внесения изменений около имени файла на ярлычке в верхней части окна редактора появился символ * — это означает, что текст, сохраненный на диске, и текст, представленный в окне редактора, не совпадают. Для сохранения файла воспользуйтесь командой File ► Saveглавного меню или кнопкой Save на панели инструментов (текстовый курсор должен при
ЭТОМ Havnirarii-o r. /->~i»*» —--------- " "
!тинг 1.2. Первая программа на С#
ng System;
гьрасе ConsoleApplicationl
class Classl
{
static void MainO
{
Console.WriteLine( "Ур-ра! Зар-работало! (с) Кот Матроскин" );
} }
рис. 1.4 приведен экран после создания консольного приложения в Visual 2005 Express Edition. Как видите, текст заготовки приложения более лако-ен, чем в предыдущей версии, и практически совпадает с листингом 1.1 без га комментариев.