Листинг 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 без га комментариев.