Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие СS_Шульга.doc
Скачиваний:
55
Добавлен:
12.02.2015
Размер:
703.49 Кб
Скачать

Глава 1. Структура программы на языке с#

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

Класс описывает общее свойства и общее поведения для объектов одного типа. В программе класс – это тип данных, определяемый пользователем.

Для создания простейшего класса в С# используют запись

class имя_класса

{список элементов};

Обычно класс содержит следующие элементы:

  • поля, определяющие данные которые хранит класс (свойства объектов);

  • методы, определяющие функции обработки этих данных (поведение объектов).

Синтаксис описания полей класса в С# в целом соответствует синтаксису описания переменных в языке С, а синтаксис описание методов в С# в целом соответствует – синтаксису описанию функций в языке С (см главу 7).

Однако работа с полями и методам класса отличается от работы с обычными переменными и функциями. Для того чтобы обратиться к любому элементу класса (полю или методу) используют операцию уточненного имени:

имя_класса.имя_элемента

или

имя_объекта_класса.имя_элемента

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

Например, для ввода-вывода данных для консольных приложений в языке С# используется стандартный класс с именем Consoleиз библиотеки классов.Net1.

Для того чтобы использовать любой из его методов в программе необходимо использовать следующую запись:

Console.имя_метода([список параметров])

Например, для вывода данных на экран используется метод WriteLine. Метод является переопределенным и может использоваться с разными параметрами. Для вывода строки на экран используется методWriteLineс параметром строковой константы, например:

Console. WriteLine (“Hello, World”);

Все стандартные классы библиотеки .Netи классы, которые создает программист организованы в единую иерархическую структуру классов с одним общим предком – классомobject. Внутри этой иерархии классы сгруппированы в так называемые пространства имен. Любая программа использует пространство именSystem. В этом пространстве имен определены классы, обеспечивающие базовые функции программы: ввод-вывод, математические операции, управление памятью и др. Например, упомянутый выше классConsoleописан именно в пространстве именSystem. Для того, чтобы в программе использовать стандартный класс можно перед его именем указать через точку имя пространства имен, например,

System.Console.WriteLine("\nHello, World!\n");

Однако удобнее для использования стандартных класс в начале программы подключить соответствующее пространство имеем с помощью директивы

using Имя-простаства_имен

Например, чтобы использовать класс Consoleподключают пространство именSystem:

using System;

В этом случае в программе можно непосредственно использовать имя класса без указания его пространства имен, например,

Console. WriteLine (“Hello, World”);

Рассмотрим простейшую программу, выводящую на экран строку Hello, world.

// Program.cs

using System;

namespace ConsoleApplication1

{

class Program

{

static void Main()

{

Console.WriteLine("\nHello, World!");

Console.ReadKey();

}

}

}

В первой строке данной программы находится однострочный комментарий. В приведенном комментарии указано имя файла, в котором хранится исходный текст программы. В С#, так же как и в языке С, комментарии задаются двумя основными способами. Для однострочных комментариев используют символы //, как в нашем примере. Для многострочных комментариев можно использовать символы /* , */, между которыми и должен находится сам текст комментария. В тексте комментария могут содержаться любые символы, а вся последовательность символов эквивалентна символу пропуска (например, символу пробела). Комментарии не могут быть вложенными. Кроме того, в языке С# есть еще один способ задания комментариев, который используется для формирования документации к программе в формате XML. Такие комментарии начинаются с символов ///.

Во второй строке программы помещена команда препроцессора (директива) using. Данная директива, как было сказано выше, подключает указанное пространство имен, в данном случае System, что позволит использовать, в частности, класс для ввода-вывода данных Console.

В третьей строке программы с помощью ключевого слова namespace создается собственное пространство имен проекта. Обратите внимание, что при создании проекта в Visual Studio это имя пространства имен будет по умолчанию совпадать с именем проекта (в этом примере ConsoleApplication1), однако его можно изменить. Собственное пространство имен проекта создается для того, что в нем можно было описывать программные объекты (например, классы) с любыми именами, не заботясь о том, что объекты с такими именами существуют в других пространствах имен. Все объекты программы в данном пространстве имен описываются внутри операторах скобок языка C# {}.

Любая программа на языке C# представляет собой набор взаимодействующих между собой классов, следовательно, должна содержать хотя бы один класс. В нашем примере описан один класс с именем Program. Обратите внимание, что при создании проекта в Visual Studio имя класса будет по умолчанию совпадать с именем файла исходного текса с расширением .cs, однако его можно изменить.

В нашем примере class Program содержит только один элемент, а именно метод с именем Main.

Каждая программа должна содержать метод с именем Main, и работа программы начинается с именно с выполнения этого метода.

Любой метод в языке C#, как и функция в языке С, состоит из заголовка и тела. Заголовок метода должен в обязательном порядке определять его тип, имя и в круглых скобках список параметров (может быть пустой). В нашем примере методMainимеет заголовок

static void Main()

Из данного заголовка видно, что тип этого метода void(спецификатор типа, указывающий, что метод не возвращает никакого значения), имяMain, а список параметров пуст. Спецификаторstaticозначает, что данный метод класса является статическим, т.е. его можно использовать без создания объекта класса.

Тело метода определяет выполняемые в нем действия и представляет заключенную в фигурные скобки последовательность описаний и операторов. Каждое описание и оператор заканчивается символом ‘;’. В данном примере в теле метода Mainнет явных описаний, а есть только два оператора:

Console.WriteLine("\nHello, World!");

Console.ReadKey();

Первый из них, как было указано выше, представляет собой вызов метода WriteLine (вывода на экран) из класса Console. В данном случае на экран выводится строка "\nHello, World!". Строковая константа в языке С# –это последовательность символов, заключенная в двойные кавычки.

Строковая константа, также как и в языке С, может содержать в себе escape–последовательности (управляющие последовательности), то есть определенный символ, предваряемые обратной косой чертой ‘\’. Управляющие последовательности используются для представления символов, не имеющего графического изображения (например, \n – символ перевода строки ), символов имеющих специальное значение и символов, заданных шестнадцатеричным кодом или Unicode. и некоторые другие, но и выводить символьные константы, явно задавая их коды в восьмеричном или шестнадцатеричном виде. Последовательность литер, начинающаяся с символа ‘\’ называют esc–последовательностями (ескейп–последовательностями, управляющие последовательности). Их допустимые значения приведены в таблице 1.1.

Методы организации вывода и ввода данных будут подробно рассмотрены в главе 3.

Последняя строка программы Console.ReadKey(); представляет собой вызов метода ReadKey() класса Console, осуществляющего задержку экрана.

Таблица 1.1.

Допустимые ESC–последовательности

Изображение

Значение

\a

Звуковой сигнал

\b

Возврат на шаг (забой)

\f

Перевод страницы (формата)

\n

Перевод строки (новая строка)

\r

Возврат каретки

\t

Табуляция горизонтальная

\v

Вертикальная табуляция

\\

Обратная косая черта (\)

\'

Апостроф (')

\"

Кавычка (")

\0

Ноль-символ (конец строки)

\xhhhh

Шестнадцатеричный код символа (hhhh – любые шестнадцатеричные символы)

\uhhhh

Шестнадцатеричный код символа в кодировке Unicode (hhhh – любые шестнадцатеричные символы)

Для того чтобы вывести на экран символы в кодировке кириллица (DOS) необходимо:

1. Подключить пространство имен System.Text;

usingSystem.Text;

2. Изменить свовойство OutputEncoding класса Console следующим образом

Console.OutputEncoding= Encoding.GetEncoding("cp866");

или

Console.OutputEncoding = Encoding.GetEncoding(866);

Метод GetEncoding класса Text.Encoding возвращает кодировку символов, заданную числовой или строковой константой. В данном случае 866 – числовая константа, соответствующая кодировке кириллица DOS. С кодами кодировок можно ознакомиться в библиотеке MSDN2.