русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

С.conveyor(ConveyorControl.action.вперед)


Дата добавления: 2015-07-09; просмотров: 822; Нарушение авторских прав


с.conveyor(ConveyorControl.action.назад);

с.conveyor(ConveyorControl.action.стоп);

Вот какие результаты генерирует эта программа:

Запуск конвейера.

Перемещение вперед.

Перемещение назад.

Останов конвейера.

Поскольку метод conveyor () принимает аргумент типа action, этому методу могут передаваться только значения, имеющие тип action. Вот, например, попытка передать методу conveyor () значение 22.

I с.conveyor(22); // Ошибка!

Эта инструкция не скомпилируется, поскольку встроенного преобразования из типа int в тип action не существует. Это — своего рода защита от передачи методу conveyor () некорректных команд. Конечно, чтобы "настоять" на таком преобразовании, можно было бы использовать операцию приведения типов, но это потребовало бы заранее продуманных действий и вряд ли привело к случайной ошибке. Кроме того, поскольку команды задаются словами, а не числами, маловероятно, что пользователь метода conveyor () по небрежности передаст неверное значение. В этом примере хотелось бы еще обратить ваше внимание вот на что. Тип перечисления используется здесь для управления switch-инструкцией. Как уже упоминалось, поскольку перечисления считаются целочисленными типами, их можно использовать в инструкции switch

 

СИНТАКСИС ЯЗЫКА

1. Концепция типа данных. Встроенные типы данных и их реализация в языке С#

Концепция типов данных состоит в том, что каждой информации приписывается тип, который описывается:

1) множеством допустимых значений типа,

2) набором операций для этого типа,

3) диапазоном допустимых значений,

4) количеством памяти, необходимой для хранения данного типа.

Тип данных определяет допустимые действия над данными.

Все встроенные типы C# однозначно отображаются, а фактически совпадают с системными типами каркаса Net Framework, размещенными в пространстве имен System. Поэтому всюду, где можно использовать имя типа, например, — int, с тем же успехом можно использовать и имя System.Int32.



Таблица содержащая описание всех встроенных типов языка C# и их осн. характеристики

 

Логический тип
Имя типа Системный тип Значения Размер
Bool System.Boolean true, false 8 бит
Арифметические целочисленные типы
Имя типа Системный тип Диапазон Размер
Sbyte System.SByte -128 — 127 Знаковое, 8 Бит
Byte System.Byte 0 — 255 Беззнаковое, 8 Бит
Short System.Short -32768 —32767 Знаковое, 16 Бит
Ushort System.UShort 0 — 65535 Беззнаковое, 16 Бит
Int System.Int32 (-2*10^9 — 2*10^9) Знаковое, 32 Бит
Uint System.UInt32 (0 — 4*10^9) Беззнаковое, 32 Бит
Long System.Int64 (-9*10^18 — 9*10^18) Знаковое, 64 Бит
Ulong System.UInt64 (0— 18*10^18) Беззнаковое, 64 Бит
Арифметический тип с плавающей точкой
Имя типа Системный тип Диапазон Точность
Float System.Single +1.5*10^-45 -/+3.4*10^38 7 цифр
Double System.Double +5.0*10^-324 -/+1.7*10^308 15-16 цифр
Арифметический тип с фиксированной точкой
Имя типа Системный тип Диапазон Точность
Decimal System.Decimal +1.0*10^-28 - +7.9*10^28 28-29 значащих цифр
Символьные типы
Имя типа Системный тип Диапазон Точность
Char System.Char U+0000 - U+ffff 16 бит Unicode символ
String System.String Строка из символов Unicode
Объектный тип
Имя типа Системный тип Примечание
Object System.Object Прародитель всех встроенных и пользовательских типов

 

 

2. Концепция типа данных. Соглашения о совместимости и приведение типов

Все встроенные типы C# однозначно отображаются, а фактически совпадают с системными типами каркаса Net Framework, размещенными в пространстве имен System. Поэтому всюду, где можно использовать имя типа, например, — int, с тем же успехом можно использовать и имя System.Int32.



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

int i; float f;

i = 10; f = i; // float-переменной присваивается int-значение.

Если в инструкции присваивания смешиваются совместимые типы, значение с правой стороны (от оператора присваивания) автоматически преобразуется в значение "левостороннего" типа. Таким образом, в предыдущем фрагменте программы значение, хранимое в int-переменной i, преобразуется в значение типа float, а затем присваивается переменной f. Но, поскольку в С# не все типы совместимы и действует строгий контроль типов, не все преобразования типов разрешены в неявном виде. Например, типы bool и int несовместимы. Тем не менее с помощью операции приведения типов все-таки возможно выполнить преобразование между несовместимыми типами. Приведение типов — это выполнение преобразования типов в явном виде.

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

При соблюдении этих двух условий выполняется преобразование с расширением, или расширяющее преобразование. Например, тип int — достаточно "большой" тип, чтобы сохранить любое допустимое значение типа byte, а поскольку как int , так и byte — целочисленные типы, здесь может быть применено автоматические преобразование. Для расширяющих преобразований числовые типы, включая целочисленные и с плавающей точкой, совместимы один с другим. Например, преобразование типов из long в double является расширяющим, которое выполняется автоматически.

double D; long L;

L = 100123285L; D = L;

Несмотря на возможность автоматического преобразования типов из long в double, обратное преобразование типов (из double в long) автоматически не выполняется, поскольку это преобразование не является расширяющим.

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

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

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

double х, у; (int) (х / у) ;

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

Если приведение приводит к сужающему преобразованию, возможна потеря информации. Например, в случае приведения типа long к типу int информация будет утеряна, если значение типа long больше максимально возможного числа, которое способен представить тип int, поскольку будут "усечены" старшие разряды long-значения. При выполнении операции приведения типа с плавающей точкой к целочисленному будет утеряна дробная часть простым ее отбрасыванием. Например, при присвоении переменной целочисленного типа числа 1,23 в действительности будет присвоено число 1. Дробная часть (0,23) будет утеряна.

// Приведение типа byte к типу char.

b = 88; // ASCII-код для буквы X.

ch = (char) b;

 

3. Концепция типа данных. Числовые типы данных.

Арифметические целочисленные типы
Имя типа Системный тип Диапазон Размер
Sbyte System.SByte -128 — 127 Знаковое, 8 Бит
Byte System.Byte 0 — 255 Беззнаковое, 8 Бит
Short System.Short -32768 —32767 Знаковое, 16 Бит
Ushort System.UShort 0 — 65535 Беззнаковое, 16 Бит
Int System.Int32 (-2*10^9 — 2*10^9) Знаковое, 32 Бит
Uint System.UInt32 (0 — 4*10^9) Беззнаковое, 32 Бит
Long System.Int64 (-9*10^18 — 9*10^18) Знаковое, 64 Бит
Ulong System.UInt64 (0— 18*10^18) Беззнаковое, 64 Бит
Арифметический тип с плавающей точкой
Имя типа Системный тип Диапазон Точность
Float System.Single +1.5*10^-45 -/+3.4*10^38 7 цифр
Double System.Double +5.0*10^-324 -/+1.7*10^308 15-16 цифр
Арифметический тип с фиксированной точкой
Имя типа Системный тип Диапазон Точность
Decimal System.Decimal +1.0*10^-28 - +7.9*10^28 28-29 значащих цифр

 

4. Концепция типа данных. Символьные типы данных.

В С# символы представляются 16-разрядными величинами. Для представления символов в С# используется Unicode (уникод), 16-разрядный стандарт кодирования символов, позволяющий представлять алфавиты всех существующих в мире языков. Таким образом, в С# char — это 16-разрядный тип без знака, который позволяет представлять значения в диапазоне 0—65 535. Символьной переменной можно присвоить значение, заключив соответствующий символ в одинарные кавычки. Например, чтобы присвоить значение буквы X переменной ch, нужно выполнить следующие инструкции:

char ch; ch = 'X'; или char ch = new Char();

Хотя тип char определяется в С# как целочисленный, его нельзя свободно смешивать с целыми числами во всех случаях без разбору. Явные или неявные преобразования между классами char и string отсутствуют, но, благодаря методу ToString, переменные типа char стандартным образом преобразуются в тип string. Существуют неявные преобразования типа char в целочисленные типы, начиная с типа ushort. Обратные преобразования целочисленных типов в тип char также существуют, но они уже явные.

Класс Char, как и все классы в C#, наследует свойства и методы родительского класса Object. Но у него есть и собственные методы и свойства, и их немало. Сводка этих методов приведена в таблице.

Таблица 13.1. Статические методы и свойства класса Char
Метод Описание
GetNumericValue Возвращает численное значение символа, если он является цифрой, и ( -1 ) в противном случае
GetUnicodeCategory Все символы разделены на категории. Метод возвращает Unicode категорию символа. Ниже приведен пример
IsControl Возвращает true, если символ является управляющим
IsDigit Возвращает true, если символ является десятичной цифрой
IsLetter Возвращает true, если символ является буквой
IsLetterOrDigit Возвращает true, если символ является буквой или цифрой
IsLower Возвращает true, если символ задан в нижнем регистре
IsNumber Возвращает true, если символ является числом (десятичной или шестнадцатиричной цифрой)
IsPunctuation Возвращает true, если символ является знаком препинания
IsSeparator Возвращает true, если символ является разделителем
IsSurrogate Некоторые символы Unicode с кодом в интервале [0x10000, 0x10FFF] представляются двумя 16-битными "суррогатными" символами. Метод возвращает true, если символ является суррогатным
IsUpper Возвращает true, если символ задан в верхнем регистре
IsWhiteSpace Возвращает true, если символ является "белым пробелом". К белым пробелам, помимо пробела, относятся и другие символы, например, символ конца строки и символ перевода каретки
Parse Преобразует строку в символ. Естественно, строка должна состоять из одного символа, иначе возникнет ошибка
ToLower Приводит символ к нижнему регистру
ToUpper Приводит символ к верхнему регистру
MaxValue, MinValue Свойства, возвращающие символы с максимальным и минимальным кодом. Возвращаемые символы не имеют видимого образа

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

 

5. Концепция типа данных. Составные типы данных. Массивы и их реализация в С#. Структуры.

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

Массив организует данные таким способом, который позволяет легко ими манипулировать. Кроме того, организация данных в форме массива позволяет легко их сортировать в нужном направлении. С#-массивы реализованы как объекты. Реализация массивов в виде объектов позволила получить ряд преимуществ, причем одно из них состоит в том, что неиспользуемые массивы могут автоматически утилизироваться системой сбора мусора.

Одномерный массив — это список связанных переменных. Для объявления одномерного массива используется следующая форма записи.

тип[] имя__массива = new тип [размер] ;

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

Рассмотрим пример: int [ ] sample = new int [10];

Доступ к отдельному элементу массива осуществляется посредством индекса. Индекс описывает позицию элемента внутри массива. ВС# первый элемент массива имеет нулевой индекс. Многомерным называется такой массив, который характеризуется двумя или более измерениями, а доступ к отдельному элементу осуществляется посредством двух или более индексов. Вот как объявляется многомерный массив:

ТИП [ , .. , ] имя = new тип [размер1, ... , размерN] ;

Например, с помощью следующего объявления создается трехмерный целочисленный массив размером 4x10x3: int [, ,] multidim = new int [ 4 , 10, 3];

Чтобы присвоить число 100 элементу массива multidim, занимающему позицию с координатами 2,4,1, используйте такую инструкцию: multidim [2, 4, 1] = 100;.

Однако С# позволяет создавать двумерный массив специального типа, именуемый рваным, или с рваными краями. У такого массива строки могут иметь различную длину. Следовательно, рваный массив можно использовать для создания таблицы со строками разной длины. Рваные массивы объявляются с помощью наборов квадратных скобок, обозначающих размерности массива. Например, чтобы объявить двумерный рваный массив, используется следующий формат записи: ТИП [] [] имя = new тип [размер][];

Здесь элемент размер означает количество строк в массиве. Для самих строк память выделяется индивидуально, что позволяет строкам иметь разную длину. Например, следующий фрагмент программы при объявлении массива jagged выделяет память для его первой размерности, а память для его второй размерности выделяется "вручную".

int [ ] [ ] jagged = new int [ 3 ] [ ] ;

jagged [0] = new int [ 4 ] ; jagged[1] = new int [ 3 ] ; jagged[2] = new int [ 5 ] ;

Доступ к элементу осуществляется посредством задания индекса внутри собственного набора квадратных скобок. Например, чтобы присвоить число 10 элементу массива jagged с координатами 2 и 1, используйте такую инструкцию: jagged[2][1] = 10;



<== предыдущая лекция | следующая лекция ==>
Использование перечислений | Public struct Book


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.155 сек.