Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Веб-разработка: пособие начинающим" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Январь 2007 → | ||||||
1
|
2
|
3
|
5
|
6
|
7
|
|
---|---|---|---|---|---|---|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
31
|
Статистика
-1 за неделю
Программирование на Delphi с нуля Массивы
Массивы
«»
![]() Программирование «» 03 января 2007 МассивыДо сих пор мы сталкивались в основном с простыми типами данных. Теперь давайте поговорим о сложных типах данных. Одним из примеров сложных типов являются массивы. Вспомним главу 4: массивы являются представителями сложных типов данных, а именно структурированных сложных типов. Рассмотрение структурированных типов мы начнем с так называемых массивов " ARRAY ". Массив объединяет элементы одного типа данных. Массивы бывают одномерными и многомерными. Размер массива (и число измерений) ограничивается только объемом рабочей памяти ПЭВМ. В математике и информатике массив называется одномерным, если для получения доступа к его элементам достаточно одной индексной переменной. Декларация (объявление) одномерного массива выглядит следующим образом: Var имя_массива: array [нач_инд...кон_инд] of тип_данных; Например: Var mas: array[1..25] of Integer; Таким образом мы объявили одномерный массив mas целых чисел. Номер (индекс) первого элемента 1, последний номер (индекс) 25. Декларация массивов может производиться и немного другим способом. Сначала объявляется тип пользователя (в нашем случае типа " array "), а затем и переменная на основе этого типа данных. Например: Type tab = array [1..25] of Integer ; Var mas : tab ; Эта декларация аналогична приведенной выше. В следующем примере декларировано несколько переменных типа массив: Var mas_1:array[1..10] of Real; mas_2:array[5 .. 16] of Integer; sst:array[20..40] of Char; Обратите внимание, что величины, обозначающие "начальный индекс" и "конечный индекс", в квадратных скобках разделяются двумя (!) точками, причем перед этими двумя точками и после них допускаются пробелы. Тип элементов, составляющих массив, может быть любым (в том числе и сложным). Тип индексов массива может быть только простым, хотя наиболее часто в качестве индексов элементов массива применяют целые числа. В следующем примере объявлены массивы, содержащие элементы различных типов, и индексы различных простых типов: Var mas : array [1..15] of Real ; {Описан массив из 15 вещественных чисел} www : array [( mon , tue , wed )] of Integer ; {Описан массив из трех целых чисел, индексы элементов массива имеют перечисляемый тип и принимают значение названий дней недели: mon , tue , wed } ast : array [' A '..' Z '] of Boolean ; {Описан массив элементов логического типа, тип индексов — ограниченный символьный} art:array[(black,white)] of 11..20; { Описан массив целых чисел с индексами black, white. Каждый элемент массива может принимать значения от 11 до 20 } svz : array [ byte ] of Integer ; {Описан массив из 256 целых чисел с индексами стандартного типа byte (от 0 до 256)} Ввод массива Для ввода массива обычно используется один из двух компоненто: TStringGrid , TMemo . Мы рассмотрим компонент TStringGrid. TStringGrid — таблица строк Компонент TStringGrid предназначен для создания таблиц, в ячейках которых располагаются произвольные текстовые строки. Он является прямым потомком TDrawGrid (произвольная таблица), от которого им унаследовано большинство свойств и методов. Таблица делится на две части - фиксированную и рабочую. Фиксированная служит для показа заголовков столбцов/рядов и для ручного управления их размерами. Обычно фиксированная часть занимает крайний левый столбец и самый верхний ряд таблицы, однако с помощью свойств FixedCols и FixedRows можно задать другое количество фиксированных столбцов и рядов (если эти свойства имеют 0, таблица не содержит фиксированной зоны). Рабочая часть - это остальная часть таблицы. Она может содержать произвольное количество столбцов и рядов, более того, эти величины могут изменяться программно. Рабочая часть может не умещаться целиком в пределах окна компонента, в этом случае в него автоматически помещаются нужные полосы прокрутки. При прокрутке рабочей области фиксированная область не исчезает, но меняется ее содержимое - заголовки строк и рядов. Центральным свойством компонента является Cells - двухмерный массив ячеек, каждая из которых может содержать произвольный текст. Конкретная ячейка определяется парой чисел - номером столбца и номером ряда, на пересечении которых она находится (нумерация начинается с нуля). Свойство cells имеет тип String, поэтому программа может легко прочитать или записать содержимое нужной ячейки. Например: Cells [1,1] := 'Левая верхняя ячейка рабочей зоны'; Количество ячеек по каждому измерению хранит пара свойств Colcount (количество столбцов) и RowCount (количество рядов). Значения-этих свойств и, следовательно, размеры таблицы могут меняться как на этапе разработки программы, так и в ходе ее работы, однако их значения должны быть как минимум на единицу больше соответственно значений в свойства FixedCois и FixedRows, определяющих размеры фиксированной зоны. Содержимое ячеек можно редактировать. Для этого в таблице используется специализированный потомок редактора TMaskEdit, вызываемый подсвойством GoEditing , находящимся в свойстве Options . Свойства компонента:
Для компонента определен тип TGridOptions (при его использовании активируются все необходимые (стандартные) для использования компонента свойства): type TGridOption = (goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goDrawFocusSelected, goRowSizing, goColSizing, goRowMoving, goColMoving, goEditing, goTabs, goRowSelect, goAlwaysShowEditor, goThumbTracking); TGridOptions = set of TGridOptions; Элементы множества TGridOptions имеют следующий смысл:
Пример ввода массива с использованием TStringGrid при вводе одномерного целого числового массива: Procedure TForm1.Button1Click(Sender:TObject); Type mas=array[1..10] of Integer; Var a:mas; i:Integer; Begin For i:=1 to 10 do a [ i ]:= StrToInt ( StringGridN . Cells [ i ,1]); {Более подробно мы рассмотрим операцию присваивания ниже} End ; Извлечение и присвоение в массивах В отличие от стандартных переменных массивы не могут обрабатываться целиком. Но вы можете получить доступ к каждому элементу-ячейке массива. Это выполняется путем указания значения индекса в квадратных скобках. Так, например, с помощью оператора mas [2]:=34; элементу массива с индексом 2 присваивается значение 34. Оператор LabelN.Caption:=IntToStr(mas[2]); вызовет на экран пользователя значение хранящегося в элементе-ячейке №2 массива mas . Наряду с конкретным значением (константой) в качестве индекса может быть использована переменная, например, при обработке массива поэлементно в рамках цикла "For… to … do ". Так с помощью фрагмента программы For i :=1 to 25 do mas [ i ]:=0; всем элементам массива присваивается значение "0". Использование массивов вместо одиночных переменных позволяет вамблагодаря применению циклов "For… to … do " существенно сэкономить время и объем программы. Это демонстрируется следующим примером. Пример. Дана последовательность реальных чисел s 1 … s 30. Организовать массив для хранения этих чисел. Определить сумму этих элементов. Решение. Интерфейс. В инспекторе объектов для компонента StringGrid1 задаем следующие свойства: ColCount — 31; RowCount — 2; Options > goEditing — True. Программный код: Procedure TForm1.Button1Click(Sender:TObject); Type mas=array[1..30] of Real; { Декларация массива } Var a:mas; i:Integer; { Параметр цикла For} s:real; { Сумма элементов } Begin For i:=1 to 30 do {Заполнение массива} a[i]:=StrToFloat(StringGrid1.Cells[i,1]); s :=0; {Обнуление счетчика суммы} For i :=1 to 30 do {Вычисление суммы} s:=s+a[i]; Label1.Caption:=FloattoStr(s); настоящий nickChmo-обзор/. посленовогодний(cheburallentalьные хроники starterra-2007г. nickChmopper никогда не признается, что он настоящий nickChmopper, ни при каких условиях, даже самому себе, потому то он и nickChmopper, что никогда этого не сделает. Казалось вот возьми да и скажи я - nickChmopper, и всё. Нет, nickChmopper никогда этого не сделает. Потому то он и nickChmopper... и так дальше... Пытающийся убежать от пошлости обычно бежит так быстро, что настигает ее, заходя на второй круг. Ситуация представляется в виде перевернутой апории Зенона, где пошлость выступает в виде черепахи, от которой убегает Ахилл. В таком случае, чем быстрее он бежит, тем быстрее догонит его черепаха. автор: nigdeja Заяву на отгул писала - и чета уже на автомате написала "начальнегу отдела моркетинго". Заметила тока когда он поставил визу: "не возражаю", а снизу приписал: жжошь! автор: Neko Задумавшись о горькой судьбе Сонечки Мармеладовой, пожаловалась знакомому по аське, что мужчины никогда не предлагали мне денег. Как профессионал я востребована и оплачиваема, а как женщина -- нет, говорю, и у меня от этого комплексы. Ну давай, говорит, я тебе предложу денег, чтобы у тебя комплексов не было. Эй, киска, какие у тебя расценки? Я подумала. Хорошо так подумала, вдумчиво, -- я всегда так думаю. Прикинула трудозатраты, возможные трудности... Ну, говорю, никак не дешевле буклета. То есть минимум -- по 500 за каждую сторону, это если без особого креатива и при хорошем качестве предоставленного материала. Задумался. Молчит. Потом спрашивает так осторожненько: а если материал не очень? Тогда, отвечаю, дороже. Потому что есть же разница -- просто так фотографию в буклет ставить или сначала два часа с ней возиться, пока сам разглядишь, что там было изобрАжено. После чего мы с облегчением заговорили о способах правки испорченных фотографий. Однако история имела продолжение. Я этот диалог не то чтобы забыла, -- но у себя в голове сохранила в папку "Рассказки", а из оперативной памяти выкинула. Поэтому искренне не поняла, о чем он, когда дня три спустя получила реплику: "Я тут смотрел на твою фотку и решил, что можно увеличить до 750 за сторону". Нет, отвечаю, до 750 никак нельзя. Представляю, как он удивился. Почему?! -- спрашивает. Потому что, говорю, я ее качественно уменьшала, увеличивать обратно -- зерно полезет. Но у меня есть исходник... И мы опять с облегчением заговорили о наилучших алгоритмах уменьшения фотографий для интернета. автор: Оксана Суркова, Воронеж Андрей Викторович Караулов, журналист-скульптор. "Леплю вонючие фигурки из материала заказчика". автор: Евгений Шестаков nickChmo Владимир Владимирович Познер, русско-американский разговорник, профессор толерантности. Страдает благоразумием. автор: Евгений Шестаков nickChmo Сергей Кужугетович Шойгу, доктор Жизнь, летающий ихтиандр. Хранится свернутым в самолете. автор: Евгений Шестаков nickChmo Роман Аркадьевич Абрамович, футбольный яхтсмен, недополубог, отец пятерых будущих миллиардеров. автор: Евгений Шестаков nickChmo Владимир Рудольфович Соловьев, барьерист. Устраивает бои гундосых с картавыми. Майор гламура. автор: Евгений Шестаков nickChmo Евгений Алексеевич Киселев, боевой робот демократии.... ... С вооружения снят. автор: Евгений Шестаков nickChmo Филипп Бедросович Киркоров, певец ртом, крупный болгарский перец. Занос 1 метр. автор: Евгений Шестаков nickChmo Борис Отцович Моисеев, певиц, князь Заголицин, маркиз де Зад, граф Эякула, всадник во что попало. автор: Евгений Шестаков nickChmo Сергей Папович Зверев, мальвин. Площадь поцелуя 0,5 кв. м. автор: Евгений Шестаков nickChmo Тина Кадиллаки, девушка-седан с открытым верхом. Так сексапильна, что даже деревья кидаются ей навстречу. автор: Евгений Шестаков nickChmo Ксения Собчак, лошадевушка. автор: Евгений Шестаков nickChmo Стас Эдитович Пьеха, бабенькин сынок. автор: Евгений Шестаков nickChmo Эдвард Станиславович Радзинский, писатель, издатель криков и стонов, бормотург своих книг. автор: Евгений Шестаков nickChmo Дарья Аркадьевна Донцова, звезда отстоя, первая в мире стала издаваться в рулонах. автор: Евгений Шестаков nickChmo Тираж периодических изданий в США резко падает, а все больше американцев обращается за информацией в интернет-пространство. Новые технологии изменили читательские привычки, но не смогли унять у них неутолимую жажду новостей. Chebur-allent «Молодое поколение отворачиваются от газет, но по-прежнему интересуются новостями. Они каждый день обмениваются интернет-ссылками на работе и читают он-лайновые новости» Мэтью Феллинг из неправительственной организации «Центр СМИ и общественных связей» Chebur-allent эксперты считают, что давать бесплатно читать новости в Интернете равносильно бесплатному «скачиванию» музыки в Интернете: «Если подумать, то газеты сами пожирают себя, потому что дают бесплатно читать информацию потенциальным читателям своих печатных версий. Я знаю, что многие люди отказались от подписки на печатную версию газеты и читают новости, войдя в Интернет на сайт...» Chebur-allent – Иван Петрович, я ведь могу на Вас положиться?
Chebur-allent смерть формата VHS, миграцию теленовостей в Интернет - важнейшие события 2006 г.Chebur-allent Регина Игоревна Дубовицкая, женщина-гамп. Ловит и дрессирует креветок. автор: Евгений Шестаков nickChmo Валерия Ильинична Новодворская, борец сумо с режимом, отцыха русской демократии, женщина-пикет. Партклички - "Боровая язва" и "Чугунная леди". автор: Евгений Шестаков nickChmo На мой взгляд главным и окончательным признаком падения нации является развитая инфраструктура туризма. Когда нация смотрит назад, а не вперед, это ещё не конец, может быть это просто национальная рефлексия. Но когда нация начинает открыто торговать своим прошлым - все, это конец. Поэтому ничто меня так не пугает, как разговоры о развитии туризма. Не приведи Господь жить мне в стране, где развита инфраструктура туризма, где турист чувстует себя спокойно и комфортно. И, Слава Небесам, у нас очень мало моря. Море может поглотить любую цивилизацию, оставив от неё горстку рыбаков и армию официантов, портье и коридорных. автор: Артём Акопян, Москва Историческая память – каверзная выдумка небожителей. Старый сундук, из которого новые поколения достают национальные костюмы, предания - свою культуру, короче (что похвально!) – но на дне сундука (ВСЕГДА) лежит ненависть. Старые обиды, амбиции, незажившие раны, территориальные претензии и тп. Ольстерский боевик и русский великодержавник – и тот и другой (и еще всяких много, третьих, четвертых, десятых, сотых) открывают этот сундук регулярно… КАК СТРАННО, ДА? – уважение к предкам и корням пахнет проклятием… И наши враги такие же, как мы. Игрушки в руках насмешливых богов. Ни им, ни нам не дойти до Вырия. Должны ли мы помнить об этом?.. Умнеть от осознания этого?.. Вот уж не знаю. Судьбе противиться бессмысленно, мы не можем существовать ВНЕ ЭТОГО, не превращаясь в иуд и изгоев, а значит: благословение друзьям и проклятие на головы наших врагов! автор: chor-i-kalinich, Минск Сайт рекламирует услуги компании 24 часа в сутки 7 дней в неделю, по выходным и в праздники, ... и ночьюЕсли фирма не имеет своего сайта, она просто не сможет воспользоваться его возможностями.интернет сайт может донести до клиентов и партнеров любую информацию о компании. «Если вашей фирмы нет в Интернете, значит, ее вообще нет» |
В избранное | ||