Суббота, 20.04.2024, 16:13
Приветствую Вас Гость | RSS

Лекции

Меню сайта
Форма входа
Категории раздела
ТАУ (Теория автоматического управления) [31]
лекции по ТАУ
Экология [151]
учебник
Бухгалтерский учет и налогообложение в строительстве [56]
Дементьев А.Ю. - Практическое пособие
Психология [104]
Пип
информатика [80]
с# Карли Ватсон
современные стулья [0]
новинки
Поиск

Главная » 2010 » Февраль » 11 » Структуры
00:15
Структуры
Структуры
Еще одним типом переменной, который мы будем рассматривать, является
struct (сокращение от слова structure — "структура"). Структуры вполне соот-
ветствуют своему названию: это структуры данных, которые составлены из инфор-
мации различного характера, возможно, из данных различных типов. Они позволяют
программистам описывать свои собственные типы переменных, для которых дан-
ная структура является базовой. В качестве примера предположим, что нам необ-
ходимо хранить информацию о маршруте из одной точки в другую, включающую
направление и расстояние в милях. Для простоты в качестве направления будет
использоваться только одна из четырех сторон света (так что для описания направ-
ления вполне подойдет перечислимый тип orientation), а длина маршрута будет
представлена типом double.
В этом случае мы могли бы использовать две разные переменные, написав уже
знакомый нам код: ,
; : • " • • • ' • • ' : • • • С 1 - - ' • • • : • : : • • • . . . ' : ' ' • - ; ' • ' • • • • . ^ v J
double myDistance;
В таком подходе с использованием двух переменных нет ничего плохого, однако
намного удобней (особенно если маршрутов много) хранить всю эту информацию
в одном месте.
Описание структур
Для описания структур используется ключевое слово struct:
struct <имяТипа>
{ . • • .. :•,•„
<объявлениеЧлена>
^ Ш ^ Ж ^ Ш Ш ^ ' ^ Ш ' : ;::-;й!:?::•••-•'•• •• •' *• •'-••.'•••• ':^0:-Ш.-.Шг-0ШШМ^ШШ^ .^ ^... - • Л;.:,,'
В разделе <объявлениеЧлена> содержатся объявления переменных (они называ-
ются полями) практически в обычном формате. Объявление каждого члена имеет
следующий вид:
<доступ> <тил> <имя>;
Для того чтобы код, обращающийся к структуре, имел доступ к ее полям, в разде-
ле <доступ> следует использовать ключевое слово public (общий). Например:
struct route •'.'••[•'•'. • ':
p u b l i c o r i e n t a t i o n d i r e c t i o n ; ;'.. • ' :. .••".
public double distance;
После того как мы описали структуру, мы можем использовать ее для описания
переменных соответствующего типа:
route myRoute,*
Для получения доступа к отдельным полям этой составной переменной следует
использовать точку: . _
myRoute.direction = orientation.north;
myRoute.distance = 2.5;
Давайте рассмотрим использование этого типа на примере.
Дополнительные сведения о переменных 91
Практикум: использование структуры
1. Создайте новое консольное приложение с именем спО5ЕхОЗ
В директории C:\BegCSharp\Chapter5.
2. Добавьте следующий код в ciassi.cs:
namespace ChO5ExO3
X«^w , ^ «
enum orientation : byte
{
north = 1,
south -2,
east = 3,
west = 4
} • . • ' ' • ;\'.'-Щ/:.. :;Г;;
struct route
{
public orientation direction;
public double distance;
}
/// <summary>
/// Summary description for Classl.
/// </summary>
class Classl
{
static void Main (string [] args)
{
route myRoute;
int myDirection = -1;
double myDistance;
Console.WriteLineCD North\n2) South\n3) East\n4) West");
do
{
Console. WriteLine ("Select a direction:'') ;
myDirection = Convert.Tolnt32(Console.ReadLineO);
}
while ((myDirection < 1) I I (myDirection > 4));
Console.WriteLineСInput a distance:");
myDistance = Convert .To'Double (Console.ReadLine ()) ;
myRoute.direction = (orientation)myDirection;
myRoute. distance •= myDistance ;
Console.WriteLine("myRoute specifies a direction of {0} and a * +
"distance of {1}", myRoute.direction, myRoute.distance);
3. Запустите программу, выберите направление и введите расстояние:
[^;C:\8egCSharp\Chapter5\Ch05eH03\bin \Debug\Ch
1> North
2> South
3> East
4> West
Select a direction*
3
Input a distance:
n^Boiite specifies a direction of east and a distance of 40.3
Press any &ey to continue
Q2 Глава 5
Как это работает
Структуры, так же как и перечислимые типы, описываются вне основного тела
кода. Мы описали структуру route внутри объявления пространства имен, в том же
месте, в котором описывается используемый данной структурой тип orientation:
enum orientation : byte
{ , .
north = 1,
south = 2,
east • 3,
west = 4,
} . '
struct route
{
public orientation direction;
public double distance;
}
Основное тело кода имеет схожую структуру с некоторыми примерами, встре-
чавшимся нам ранее: запрос входной информации у пользователя и* вывод ее на
экран. Мы выполняем некоторую несложную проверку допустимости вводимой
информации, помещая выбор направления внутрь цикла do и отбрасывая любую
введенную информацию, не являющуюся целым числом в диапазоне от 1 до 4 (эти
значения для упрощения процедуры присваивания соответствуют членам перечис-
лимого типа).
Еще один интересный момент, на который следует обратить внимание, заклю-
чается в том, что работа с полями переменной типа route строится точно таким же
образом, как если бы мы обращались к переменным того типа, что и эти поля.
Присваивание, например, выполняется следующим образом:
myRoute.direction = (orientation)myDirection;
rayRoute.distance = myDistance;
В принципе мы могли бы непосредственно присваивать введенное значение
полю myRoute.distance без каких бы то ни было нежелательных последствий:
myRoute.distance = Convert.ToDouble(Console.ReadLineO);
Наличие дополнительного шага позволяет проверять вводимые значения, хотя
в самом коде такая проверка не осуществляется.
Любой доступ к полям структуры организовывается аналогичным образом. До-
пустимо Считать, ЧТО выражения ТИПа переменнаяТипаСтруктуры.переменнаяТипаПоля
ПреДСТавЛЯЮТ СОбоЙ переменную ТИПа переменнаяТипаПоля.























Категория: информатика | Просмотров: 839 | Добавил: basic | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Календарь
«  Февраль 2010  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

krutoto.ucoz.ru
Бесплатный конструктор сайтов - uCoz