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

Задание 1. Вывод строки на экран с использованием esp-последовательности

Каждому студенту рекомендуется выполнить хотя бы одно из упражнений 1–10.

Используя esc–последовательности, выведите на экран следующий текст.

  1. Это строка, иначе –“стринг”, иначе – “строковый литерал”

  2. Это звуковой

сигнал! (Сопроводите вывод строки звуковым сигналом)

  1. Это строка? “Да!”

  2. “ – это двойные кавычки ‘ – это апостроф

  3. Это “строка”? Это “строка”! (Используя символ возврата на шаг, во второй строке удалите восклицательный знак)

  4. Это строка? Это строка! (Замените слово “Это” во второй строке словом “Да”, используя возврат каретки)

  5. \\Это комментарий? //Нет, это комментарий

  6. C:\Program Files\Far

D:\Program Files\Far

(Замените символ D на символ F используя возврат каретки)

  1. Используя шестнадцатеричные коды символов, выведите на экран текст:

Цена=

=100$

  1. Используя шестнадцатеричные коды символов в кодировке Unicode, выведите на экран текст:

Цена=

=100$

Глава 2. Переменные. Основные типы данных

Любая программа, суть которой не есть вывод на экран некоторой текстовой информации, содержит описание переменных. Переменная это пара “имя” – “значение”. Имени соответствует адрес участка памяти, выделенной переменной, а значением является содержимое этого участка. Именем переменной служит идентификатор. В С# идентификатор – это последовательность из букв латинского алфавита и национальных языков, десятичных цифр и символов подчеркивания, начинающаяся не с цифры. Прописные и строчные буквы различаются. Примеры идентификаторов:

i,i2,i_2,stroka,STROKA,F_I_O, Сумма .

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

Описание переменных заданного типа имеет следующий формат:

[const] тип имя1 [иницал._выражение1], имя2 [иницал._выражение2],…; где

тип – один из типов данных;

имя– идентификатор;

Таблица 2.1.

Встроенные типы данных

Тип данных

Ключевое слово

Диапазон значений

Количество битов

Логический

bool

true, false

Символьный (Unicode-символ)

char

от U+0000 до U+ffff

16

Целый (со знаком)

sbyte

-128...127

8

Целый (без знака)

byte

0..255

8

Целый (со знаком)

int

-2147483648 ... 2147483647

32

Целый (без знака)

uint

0 ... 4294967295

32

Целый (короткий, со знаком)

short

–32768…32767

16

Целый (короткий, без знака)

ushort

0 ... 65535

16

Целый (длинный, со знаком)

long

-9223372036854775808 ... 9223372036854775807

64

Целый (длинный, без знака)

ulong

0 ... 18446744073709551615

64

Вещественный (7 цифр)

float

1.510-45…3.41038

32

Вещественный с удвоенной точностью (15-16 цифр)

double

5.010-324…1.710308

64

Финансовый (28-29 цифр)

decimal

1.010-28…7.91028

128

Строковый

string

Длина ограничена доступной памятью

Тип obiect

obiect

Любые данные

С языке С# идентификатор – это последовательность букв (латинских букв и букв национальных алфавитов), цифр и знаков подчеркивания, начинающаяся не с цифры.

инициал._выражение– необязательный инициализатор, определяющий начальное значение соответствующего объекта.

Синтаксис инициализатора переменной:

= инициал._выражение

либо

(инициал._выражение).

В качестве инициирующего выражения может применяться операция языка new, которая служит для создания нового объекта и имеет следующий формат:

new тип ([параметры])

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

Приведем несколько примеров описания программных объектов, в т.ч. переменных.

int i,j,k,n=10;

// Определены целые переменные i,j,k,n и только n

//инициализирована значением 10;

inti=newint(); // то же самое, чтоinti=0;

Student s1=new Student();

// создание объекта класса Student;

strings= “Hello”;

//создание строки и инициализация ее строковой константой

string s = new string(‘ ’, 20 );

//создание строки из 20 пробелов

char simbol1= ‘\n’;

// Определена символьная переменная simbol1 co

// значением ‘\n’

double pi=3,1415926535897932385;

// Определена вещественная

//переменная pi с удвоенной точностью co значением

//3,1415926535897932385

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

constfloatpi= 3,14;

constcharplus= '+';

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

Кроме типов, приведенных в таблице2, к значимым типам в языкеC# относят перечислимый типenum.

Перечислимый тип, который вводится с помощью служебного слова enum, по существу описывает целые константы (типаint), которым приписаны уникальные и удобные для использования имена. Например,

enum{one=1,two=2,three=3};

Здесь one, two, three – произвольным образом выбранные программистом идентификаторы для обозначения констант 1,2,3. После такого определения в программе наряду, например, с константой 2 можно использовать ее обозначение two. Если в определении перечислимых констант опустить знаки “=” и не указывать числовых значений, то они будут присваиваться идентификаторам по умолчанию следующим образом: самый левый в фигурных скобках идентификатор получит значение 0, а каждый последующий увеличивается на 1. Имена перечислимых констант должны быть уникальными, однако к значениям констант это не относится. Одно значение могут иметь разные константы. Для перечислимых констант можно ввести имя типа, соответствующего приведенному списку констант, например, определение

enum week {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};

не только определяет константы Sunday==0, Monday==1,…, но и вводит перечислимый тип с именем week, который может в дальнейшем использоваться в определениях и описаниях других типов.

Особое значение в языке имеет тип void, множество значений которого пусто. Его используют для обозначения типа метода класса, если он не возвращает значения, например, static void Main(). Объектов типа void не существует, то есть описание void i; недопустимо.

Для определения размера (в байтах) области памяти, выделяемой для переменной определенного типа, в С# используется операция sizeof:

sizeof (тип данных).

Например, операция sizeof(int) определит, сколько байт выделено для переменойтипа int.

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

char сh= ‘a’;

int k = ch; // символьный тип преобразуется к целому

Console.WriteLine(k);// ASCII–код символа ch 97

Не для всех типов данных допустимо неявное преобразование, например запись

double a=1.0;

decimal b=a;

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

(тип) выражение

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

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

double a=1.0;

decimal b=(decimal) a;

Другим примером явного преобразования типа является вывод на экран ASCII–кода символа ch без использования вспомогательной переменной целого типа будем писать

char сh= ‘a’;

Console.WriteLine((int)сh);// 97

Использовать преобразования значимых типов необходимо с большой осторожностью, так как они это может привести к потере информации, например

int a=300;

Console.WriteLine(a);// 300

Console.WriteLine((byte)b); //44

Подробнее о преобразовании типов можно узнать в библиотеке MSDN3.

На практике преобразование типа часто применяется для ссылочных типов при работе с иерархиями объектов.

Все встроенные типы данных языка С# однозначно соответствуют стандартным классам библиотеки .Net, определенным в пространстве именSystemи, следовательно, имеют одного общего предкаobject. Таким образом, любой встроенный тип данных имеет поля и методы. С их помощью можно получать, например, минимальные и максимальные значения для разных типов данных:

double.MaxValue