Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы программирования на языке C#. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
13
1.4. Консольный проект
Microsoft Visual C# 2008 Express Edition предлагает 6 видов проектов. На начальных этапах, чтобы не усложнять задачу проблемами пользовательского интерфейса, будем рассматривать консольные приложения. Для создания нового консольного приложения нужно в главном окне среды выбрать меню File и далее New Project.
Рисунок 1.1. Окно выбора типа проекта
В открывшемся окне необходимо «щелкнуть» два раза по значку Console Application (рис. 1.1.).
Если принять установки по умолчанию, то компилятор создаст решение, имя которого совпадает с именем проекта. На рис. 1.2. показано, как выглядит это решение в среде разработки:
11
14
Рисунок 1.2. Среда разработки и консольное приложение, построенное по умолчанию
Интегрированная среда разработки IDE (Integrated
Development Envirionment) Visual C# является многооконной,
настраиваемой, обладает большим набором возможностей. Внешний вид ее достаточно традиционен, хотя здесь есть новые возможности. Обратим внимание на три окна, из тех, что показаны на рис. 1.2. В окне Solution Explorer представлена структура построенного решения. В окне Properties можно увидеть свойства выбранного элемента решения. В окне документов отображается выбранный документ, в данном случае, программный код класса проекта – ConsoleApplication1.Program. В этом окне можно отображать и другие документы, список которых показан в верхней части окна.
Построенное решение содержит, естественно, единственный
заданный проект – Consoleapplication1. Проект, как показано на рис. 1.2., включает в себя папку со ссылками на системные пространства имен из библиотеки FCL, файл со значком приложения и два файла с уточнением cs. Файл AssemblyInfo содержит информацию, используемую в сборке, а файл с именем Program является построенным по умолчанию классом, который
12
15
задает точку входа – процедуру Main, содержащую для данного типа проекта только комментарий.
Класс проекта погружен в пространство имен, имеющее по умолчанию то же имя, что и решение, и проект.
Пространству имен могут предшествовать одно или несколько предложений using, где после ключевого слова следует название пространства имен – из библиотеки FCL или из проектов, связанных с текущим проектом. В данном случае задается пространство имен System – основное пространство имен библиотеки FCL. Предложение using NameA облегчает запись при использовании классов, входящих в пространство NameA, поскольку в этом случае не требуется каждый раз задавать полное имя класса с указанием имени пространства, содержащего этот класс. Полное имя может потребоваться, если в нескольких используемых пространствах имен имеются классы с одинаковыми именами.
В C# допускаются однострочные и многострочные комментарии. Первые начинаются с двух символов косой черты. Весь текст до конца строки, следующий за этой парой символов, (например, «//любой текст») воспринимается как комментарий, не влияющий на выполнение программного кода. Началом многострочного комментария является пара символов /*, а концом –
*/.
Точкой входа в программу является процедура Main. Ее заголовок можно упростить, удалив аргументы, которые, как правило, не задаются. Они имеют смысл, когда проект вызывается из командной строки, позволяя с помощью параметров задать нужную стратегию выполнения проекта.
Слегка изменим проект, построенный по умолчанию, добавим в него свой код и превратим его в классический проект приветствия. Нам понадобятся средства для работы с консолью – чтения с консоли (клавиатуры) и вывода на консоль (дисплей) строки текста. Библиотека FCL предоставляет для этих целей класс Console, среди многочисленных методов которого есть методы ReadLine и WriteLine, позволяющие вводить строку с клавиатуры и выводить строку на экран монитора соответственно. Вот код проекта, полученный в результате корректировок:
13
16
sing System; using System.Collections.Generic; using System.Linq;
using System.Text;
namespace ConsoleApplication1
{ class Program { static void Main() { Console.WriteLine("Введите Ваше
имя");
string name; name = Console.ReadLine(); if (name == "") Console.WriteLine("Здравствуй,
мир!");
else Console.WriteLine("Здравствуй, " + name + "!"); } } }
Вопросы для самоконтроля
1. В чем заключается открытость среды Visual Studio .Net?
2. Какие основные компоненты входят в состав каркаса
Framework .Net?
3. Охарактеризуйте библиотеку классов FCL.
4. Каковы особенности общеязыковой исполнительной среды
CLR?
5. Опишите последовательность создания консольного
приложения в интегрированной среде разработки Microsoft Visual C# 2008 Express Edition.
14
17
2. ОСНОВНЫЕ ЭЛЕМЕНТЫ ЯЗЫКА C#
{
a
1
, a
2
, ... , a
n
}
abstract
as
base
bool
break
byte
case
catch
char
checked
class
const
continue
decimal
default
delegate
do
double
else
enum
event
explicit
extern
false
finally
fixed
float
for
foreach
goto
if
implicit
in
int
interface
internal
is
lock
long
namespace
new
null
object
operator
out
override
params
private
protected
public
readonly
ref
return
sbyte
sealed
short
sizeof
stackalloc
static
string
struct
switch
this
throw
true
try
typeof
uint
ulong
unchecked
unsafe
ushort
using
virtual
void
volatile
while
2.1. Алфавит и слова
Пусть дано некоторое множество символов
, которое мы будем называть алфавитом, а сами
элементы – буквами. Последовательность букв, записанных подряд, называется словом. В любом языке программирования выделяют слова, несущие семантическую нагрузку. Обычно они называются зарезервированными словами.
Алфавит С# включает: буквы (латинские и национальных алфавитов) и символ
подчеркивания (_), который употребляется наряду с буквами;
цифры; специальные символы, например +, *, { и &; пробельные символы (пробел и символы табуляции); символы перевода строки.
Среди зарезервированных слов выделим ключевые слова, имеющие специальное значение, распознаваемое компилятором. Список ключевых слов приведен в таблице 2.1.
Таблица 2.1.
Ключевые слова C#
15
18
Категория
Операции
Первичные
(x) x,y f(x) a[x] x++ x-- new typeof size Checked unchecked stacklloc
Унарные
+ - ! ++x --x (T)x *x &x
Мультипликативные
* / %
Аддитивные
+ -
Сдвиги
<< >>
Операции отношения
< > <= >= is as
Равенство
== !=
Поразрядное И
&
Поразрядное исключающее ИЛИ
^
Поразрядное ИЛИ
|
Логическое И
&&
Логическое ИЛИ
| |
Условная операция (тернарная)
?:
Присваивание
= *= /= %= += -= <<= >>= &= ^= | =
Другим видом зарезервированных слов являются знаки
операций – один или более символов, определяющих действие над
операндами. Внутри знака операции пробелы не допускаются. Например, в выражении а += b знак += является знаком операции, а а и b – операндами. Символы, составляющие знак операций, могут быть как специальными, например, &&, | и <, так и буквенными, такими как as или new.
Операции делятся на унарные, бинарные и тернарные по
количеству участвующих в них операндов. Один и тот же знак может интерпретироваться по-разному в зависимости от контекста. Список операций в порядке их приоритета приведен в таблице 2.1.
К зарезервированным словам можно отнести также
разделители и литералы.
Разделители используются для разделения или, наоборот,
группирования элементов. Примеры разделителей: скобки, точка, запятая.
Таблица 2.2.
Приоритеты операций
16
19
Литералами, или константами, называют неизменяемые величины. В С# есть логические, целые, вещественные, символьные и строковые константы, а также константа null. Компилятор, выделив константу в качестве лексемы, относит ее к одному из типов данных по ее внешнему виду. Программист может задать тип константы и самостоятельно.
Описание и примеры констант каждого типа приведены в табл. 2.2.
Логических литералов всего два. Они широко используются в качестве признаков наличия или отсутствия чего-либо.
Целые литералы могут быть представлены либо в десятичной, либо в шестнадцатеричной системе счисления, а вещественные – только в десятичной системе, но в двух формах: с фиксированной точкой и с порядком.
Вещественная константа с порядком представляется в виде мантиссы и порядка. Мантисса записывается слева от знака экспоненты (Е или е), порядок – справа от знака. Значение константы определяется как произведение мантиссы и возведенного в указанную в порядке степень числа 10 (например,
1.3е2 = 1,3 • 102 = 130). При записи вещественного числа могут быть опущены либо целая часть, либо дробная, но, конечно, не обе сразу.
Если требуется сформировать отрицательную целую или вещественную константу, то перед ней ставится знак унарной операции изменения знака (-), например: -218, -022, -ОхЗС, -4.8, -
0.1е4.
Когда компилятор распознает константу, он отводит ей место в памяти в соответствии с ее видом и значением. Если по каким­либо причинам требуется явным образом задать, сколько памяти следует отвести под константу, используются суффиксы, описания которых приведены в таблице 2.3.
Символьная константа представляет собой любой символ в кодировке Unicode. Символьные константы записываются в одной из четырех форм, представленных в таблице 2.4.: «обычный» символ, имеющий графическое представление
(кроме апострофа и символа перевода строки), – 'А' , 'ю', '*' ;
управляющая последовательность – '\0' , '\п' ; символ в виде шестнадцатеричного кода – 'VxF', '\х74'; символ в виде escape-последовательности Unicode – '\uA81B'.
17
20
Константы C#
Константа
Описание
Примеры
Логическая
true (истина) или false (ложь)
true
false
Целая
Десятичная: последовательность десятичных цифр (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), за которой может следовать суффикс (U, u, L, 1,
UL, Ul, uL, ul, LU, Lu, 1U, lu)
8, 8u, О199226, OLu
Шестнадцатеричная: символы 0x или 0X, за которыми следуют шестнадцатеричные цифры (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, Е, F) , а за цифрами, в свою очередь, может следовать суффикс (U, u, L, 1, UL, Ul, uL,
ul, LU, Lu, 1U, lu)
0хА, 0x188, 0X00FF,
0xAU, 0xlB8LU ,
0X00FF1
Вещественная
С фиксированной точкой:
[цифры] [.] [цифры] [суффикс] Суффикс – один из символов F,
f, D, d, М, m
5.7 .001 35
5.7F .OOld 35 5F .OOlf 35m
С порядком:
[цифры][.][цифры]{Е|е}[+|­][цифры] [суффикс] Суффикс – один из символов F, f, D, d, М, m
0.2E6
0.2E6D 5E10 .lle+3
.lle-3
5E-10
Символьная
Символ, заключенный в апострофы
'A' V '* ' '\0' '\n'
'\xF' '\x74' '\uA81B'
Строковая
Последовательность символов, заключенная в кавычки
"Здесь был Vasia"
"иЗначение г = \0xF5
\n"
"Здесь был
\u0056\u0061"
"С: WtempWfilel.txt "
@"С:\temp\filel.txt"
Константа null
Ссылка, которая не указывает ни на какой объект
null
Таблица 2.3.
18
21
Управляющей последовательностью, или простой escape-
Суффикс
Значение
L, l
Длинное целое (long)
U, u
Беззнаковое целое (unsigned)
F, f
Вещественное с одинарной точностью (float)
D, d
Вещественное с двойной точностью (double)
M, m
Финансовое десятичного типа (decimal)
/a
Звуковой сигнал
/b
Возврат на шаг
/f
Перевод страницы (формата)
/n
Перевод строки
/r
Возврат каретки
/t
Горизонтальная табуляция
/v
Вертикальная табуляция
/`
Обратная косая черта
/’
Апостроф
//
Кавычка
/0
Нуль-символ
последовательностью, называют определенный символ, предваряемый обратной косой чертой. Управляющая последовательность интерпретируется как одиночный символ и используется для представления: кодов, не имеющих графического изображения (например, \п –
переход в начало следующей строки);
символов, имеющих специальное значение в строковых и
символьных литералах, например, апострофа '.
В таблице 2.5 приведены допустимые значения последовательностей. Если непосредственно за обратной косой чертой следует символ, не предусмотренный таблицей, возникает ошибка компиляции.
Таблица 2.4.
Суффиксы целых и вещественных констант
Управляющие последовательности могут использоваться и в строковых константах, называемых иначе строковыми литералами. Например, если требуется вывести несколько строк, можно объединить их в один литерал, отделив одну строку от другой символами \n.
Таблица 2.5.
Управляющие последовательности в C#
19
22
2.2. Типы данных
В процессе выполнения программы обрабатываются данные,
хранящиеся в оперативной памяти. Внутреннее представление данных, допустимые значения и действия над ними определяются общим понятием тип данных.
Память, в которой хранятся данные во время выполнения программы, делится две области: стек (stack) и динамическая область, или куча (heap). Стек используется для хранения величин, память под которые выделяет компилятор, в динамической области память резервируется и освобождается во время выполнения программы с помощью специальных команд. Основным местом для мнения данных в С# является куча.
Типы можно классифицировать по разным признакам. Если принять за основу строение элемента, все типы можно разделить на простые (не имеют внутренней структуры) и структурированные (состоят из элементов других типов). По своему «создателю» типы можно разделить на встроенные (стандартные) и определяемые программистом. Для данных статического типа память выделяется в момент объявления, при этом ее требуемый объем известен. Для данных динамического типа размер данных в момент объявления может быть неизвестен, и память под них выделяется по запросу в процессе выполнения программы.
Еще одна важная классификация типов – это их деление на значимые и ссылочные. Для значимых типов значение переменной (объекта) является неотъемлемой собственностью переменной (точнее, собственностью является память, отводимая значению, а само значение может изменяться). Для ссылочных типов значением служит ссылка на некоторый объект в памяти, расположенный обычно в динамической памяти – «куче». Объект, на который указывает ссылка, может быть разделяемым. Это означает, что несколько ссылочных переменных могут указывать на один и тот же объект и разделять его значения. Значимый тип принято называть развернутым, подчеркивая тем самым, что значение объекта развернуто непосредственно в памяти, отводимой объекту.
В отдельную категорию выделены указатели, что подчеркивает их особую роль в языке. Указатели имеют ограниченную область действия и могут использоваться только в небезопасных блоках, помеченных как unsafe.
20
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]