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

Курс лекций CS (первый семестр)

.pdf
Скачиваний:
7
Добавлен:
20.05.2015
Размер:
2.69 Mб
Скачать

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

Лекция №6.

Составные части программы на языке С#.

Изучение языка программирования необходимо начинать с общей структуры программы, только тогда можно переходить к деталям.

Код на С# представляет собой последовательность операторов, каждый из которых оканчивается точкой с запятой. Поскольку пустое пространство игнорируется, то можно располагать по несколько операторов в одной строке; однако для того чтобы сделать программу более наглядной, принято размещать в строке только один оператор. Разрешено использовать операторы, которые занимают несколько строк кода.

С# — язык, обладающий блочной структурой; другими словами, каждый оператор является частью некоторого блока кода. Эти блоки, для обозначения начала и конца которых используются фигурные скобки { и }, могут содержать произвольное количество операторов или не содержать их. Замечание: фигурные скобки не сопровождаются точками с запятой.

Простой блок программы на С# может иметь следующий вид:

{

оператор1;

оператор2;

опера

тор3;

}

В этом примере кода использованы отступы, чтобы сделать запись на С# более наглядной. Такой подход— это обычная практика на любом языке программирования; в действительности VS автоматически делает такие отступы по умолчанию. Каждый блок кода имеет свою величину отступов, определяющую, насколько далеко вправо он сдвинут.

Блоки могут быть вложены друг в друга (т. е. блоки могут содержать в себе другие блоки), и в таком случае величина отступа у вложенных блоков должна быть больше:

31

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

{

оператор1;

оператор2;

{

оператор3;

оператор4;

}

опера тор5;

}

Замечание: такой стиль не является обязательным, но принят как хороший стиль программирования.

В коде на любом языке программирования часто встречаются комментарии. Строго говоря, комментарии не являются частью кода. Предназначение комментариев в точности соответствует их названию: они позволяют включать в программу описательный текст на обычном русском (украинском) языке, который игнорируется компилятором. Когда мы приступаем к созданию достаточно длинных сегментов кода, то бывает полезно включить в программу напоминание о том, что именно мы собираемся здесь сделать, например: "в этой строке кода у пользователя запрашивается число". В С# предусмотрены два способа включения комментариев. Можно использовать либо специальные маркеры, обозначающие начало и завершение комментария, либо маркер, который означает, что "все, что находится за ним до конца строки, является комментарием".

Для того чтобы обозначить комментарии по первому способу, мы будем использовать сочетания символов /*(слэш и звездочка) в начале комментария и */ в конце комментария. Они могут располагаться как на одной строке, так и на разных строках; в последнем случае все строки, находящиеся между ними, также являются частью комментария. Единственное, что не может входить в состав комментария,— это сочетание символов */, поскольку оно будет интерпретировано как конец комментария.

32

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

оператор1;

/* эту программу писал Сережа

левой рукой через правое ухо*/

оператор2;

….

Другой подход к оформлению комментария состоит в использовании в качестве его начала символов //. В следующем за ними комментарии мы можем написать все, что угодно, но не более одной строки.

оператор1;

// эту программу писал Сережа левой рукой через правое ухо

оператор2;

….

Если рассмотреть пример из предыдущей лекции

using System;

using System.Collections.Generic; using System.Text;

namespace ConsoleApplication1

{

class MyProgram

{

static void Main(string[] args)

{

33

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

Console.WriteLine("Привет, 1 курс - МЕХАНИКИ!!!");

}

}

}

то он содержит 3 блока. Мы можем добавить в текст программы комментарии. Например,

//подключение специальных файлов для работы программы using System;

using System.Collections.Generic; using System.Text;

//объявление пространства имен namespace ConsoleApplication1

{

//объявление класса class MyProgram

{

//главна функция приложения static void Main(string[] args)

{

/*эту программу писал студент

1-го курса группы Механика*/

Console.WriteLine("Привет, 1 курс - МЕХАНИКИ!!!");

}

}

}

34

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

Основной код программы начинается в строке с функции Main(). Каждое консольное приложение на языке С# содержит функцию Main(). Функция – это блок программы, который выполняет одно или несколько действий. Обычно функции вызываются другими функциями, но Main() – особая функция: она вызывается автоматически при запуске программы. Все функции начинаются открывающей фигурной скобкой ({) и оканчиваются закрывающей фигурной скобкой (}). Все, что находится между открывающей и закрывающей скобками, называется телом функции. В нашем примере содержится только один оператор в блоке:

Console.WriteLine("Привет, 1 курс - МЕХАНИКИ!!!");

Это оператор вывода информации на экран.

35

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

Лекция №7.

Переменные и константы.

Любая программа должна обладать способностью хранить используемые данные. Для представления и манипуляции данными используются переменные и константы. В языке С# имеется две группы переменных: основные и производные. Сегодня мы рассмотрим только основные типы переменных. Переменные хранятся в памяти компьютера. Переменная занимает один или несколько байтов, в которых можно хранить некоторое значение. Количество байтов зависит от значения хранимого в переменной.

Имя переменной (например, MyPer) можно представить себе как надпись на ячейке памяти, по которой, не зная настоящего адреса памяти, можно ее найти. На рисунке схематически представлена эта идея. Переменная MyPer начинается с байта с адресом 103.

При определении переменной в языке С# необходимо представить компилятору информацию о ее типе. Благодаря этой информации компилятору будет известно, сколько места нужно зарезервировать для нее и какого рода значение будут хранить в этой переменной. Если для переменной указанного типа требуется четыре байта, то для нее будет выделено четыре ячейки, т.е.

именно по типу переменной компилятор судит о том, какой объем памяти нужно зарезервировать

для этой переменной.

Синтаксис объявления переменных в С# состоит из указания типа переменной и ее имени:

тип_переменной имя_переменной;

Если попытаться использовать переменную, которая не была объявлена, то программа не будет откомпилирована. Однако в этом случае компилятор сможет точно указать, в чем именно

36

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

заключается проблема, и поэтому такой тип ошибок не очень опасен. Попытка использовать переменную, которой не присвоено никакого значения, тоже приведет к ошибке; в этом случае компилятор также сможет точно установить причину ее возникновения.

Имена переменных.

Вы должны следовать нескольким простым правилам именования переменных в языке С#:

В именах можно использовать только следующие символы: буквы алфавита, цифры и символ подчеркивания ( _ ).

Первый символ имени не может быть цифрой.

Символы верхнего и нижнего регистров рассматриваются как разные.

В качестве имен нельзя использовать ключевые слова языка С#.

В языке С# на длину слова не накладывается никаких ограничений и учитывается значение каждого символа имени.

Внастоящее время в пространствах имен .NET Framework используются два соглашения об

именовании, известные как PascalCase и camelCase. Отличить одну систему от другой можно по использованию регистра. Обе системы применяются к именам, составленным из нескольких слов; при этом каждое слово в составном имени набирается в нижнем регистре, за исключением первой буквы слова, которая должна набираться в верхнем регистре. В системе camelCase существует еще одно дополнительное правило, которое гласит, что первое слово должно начинаться с буквы в нижнем регистре.

Следующие имена переменных соответствуют правилам camelCase:

age

firstName

timeOfDeath

Имена в соответствии с правилами PascalCase:

Age

LastName

WinterOfDiscontent

37

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

В случае простых переменных мы будем следовать системе camelCase, а при составлении некоторых более сложных имен мы будем использовать систему PascalCase, что соответствует рекомендациям компании Microsoft.

Целочисленные типы переменных.

В языке С# различные типы целочисленных данных различаются объемом памяти, используемым для их хранения. Основные типы целочисленных данных языка С# именуются byte, short, int и long. Каждый из этих типов данных подразделяется на две разновидности: со знаком и без знака, т.е. существует восемь типов целочисленных данных. Для беззнаковых целочисленных переменных используется префикс u(unsigned), кроме типа byte.

Тип

Тип .NET Framework

Допустимые значения

 

 

 

sbyte

System.SByte

Целое в диапазоне от -128 до 127

 

 

 

byte

System.Byte

Целое в диапазоне от 0 до 255

 

 

 

short

System.Int16

Целое в диапазоне от -32 768 до 32 767

 

 

 

ushort

System.Uint16

Целое в диапазоне от 0 до 65 535

 

 

 

int

System.Int32

Целое в диапазоне от -2 147 483 648 до 2 147 483

 

 

647

 

 

 

uint

System.Uint32

Целое в диапазоне от 0 до 4 294 967 295

 

 

 

long

System.Int64

Целое в диапазоне от -9 223 372 036 854 775 808

 

 

до 9 223 372 036 854 775 807

 

 

 

38

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

 

 

 

ulong

System.UInt64

Целое в диапазоне от 0 до 18 446 744 073 709

 

 

551 615

 

 

 

Определить размер типов на Вашем компьютере Вы можете при помощи функции sizeof():

using System;

using System.Collections.Generic; using System.Text;

namespace ConsoleApplication1

{

class MyProgram

{

static void Main(string[] args)

{

Console.WriteLine("Размер byte равен:{0}",sizeof(byte)); Console.WriteLine("Размер short равен:{0}",sizeof(short)); Console.WriteLine("Размер int равен:{0}", sizeof(int)); Console.WriteLine("Размер long равен:{0}", sizeof(long));

}

}

}

39

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова

Возвращаясь к нашему коду, мы видим одну строку, которую пока еще не рассматривали:

Console.WriteLine("Размер byte равен:{0}",sizeof(byte));

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

Строка

Список переменных, значения которых мы хотим включить в выходную строку, разделенные запятыми

Строка, которую мы выводим: "Размер byte равен:{0}"содержит символ ,0-. Каждый комплект фигурных скобок в этой строке представляет собой зарезервированное место, в котором будет размещаться содержимое всех переменных, перечисленных в списке. Каждое такое зарезервированное место (или форматная строка) имеет вид целого числа, заключенного в фигурные скобки. Эти целые числа имеют значения, начинающиеся с 0 и увеличивающиеся на 1,

а суммарное количество таких мест должно соответствовать общему числу переменных, указанных в следующем за строкой списке через запятую. Когда происходит вывод текста на консоль, в каждое из зарезервированных мест помещается значение соответствующей переменной. Например,

...

int a=8;

Console.WriteLine("{0},{1}",sizeof(byte),a);

...

дает результат

40