Постфиксное выражение, за которым следует выражение в квадратных скобках ( [ ] ), представляет собой представление элемента объекта массива. Выражение подстрочного индекса представляет значение по адресу, который находится expression за пределами postfix-expression при выражении как
postfix-expression [ expression ]
Как правило, значение, представленное , postfix-expression является значением указателя, например идентификатором массива, и expression является целочисленным значением. Однако синтаксически требуется только то, что одно из выражений имеет тип указателя, а другое — целочисленный тип. Целочисленное значение может находиться в postfix-expression позиции , а значение указателя — в квадратных скобках в expression позиции , или «подстрочный индекс». Например, такой код является допустимым:
// one_dimensional_arrays.c int sum, *ptr, a[10]; int main()
Выражения подстрочных индексов часто используются для ссылки на элементы массива, но можно применить подстрочный индекс к любому указателю. Независимо от порядка значений, expression необходимо заключать в квадратные скобки ( [ ] ).
ИНФОРМАТИКА 9 класс: Массивы в Паскале | Одномерные массивы. Описание, заполнение вывод массива
Выражение индекса вычисляется путем добавления целочисленного значения к значению указателя, а результат передается в оператор косвенного обращения ( * ). (Этот механизм обсуждается в статье Операторы косвенного обращения и адреса операнда.) В конечном итоге в случае одномерного массива следующие 4 выражения эквивалентны, при условии что a является указателем, а b — целым числом:
a[b] *(a + b) *(b + a) b[a]
Правила преобразования для оператора сложения приведены в разделе Аддитивные операторы). Чтобы преобразовать целочисленное значение в смещение адреса, оно умножается на длину типа, адресуемого указателем.
Например, предположим, что идентификатор line ссылается на массив значений int . Для вычисления выражения индекса line[ i ] используется следующая процедура:
- Целочисленное значение i умножается на количество байт, определенное как длина элемента int . Преобразованное значение i представляет позиции i int .
- Это преобразованное значение добавляется к исходному значению указателя ( line ) для получения адреса, представляющего позиции, смещенные на i int относительно line .
- Оператор косвенного обращения применяется к новому адресу. Результат представляет собой значение элемента массива в этой позиции (интуитивно, line [ i ] ).
Выражение индекса line[0] представляет значение первого элемента массива line, поскольку смещение от адреса, представляемого line , равно 0. Аналогично, выражение line[5] ссылается на элемент, смещенный на 5 позиций относительно line, или на шестой элемент массива.
Источник: learn.microsoft.com
1. Одномерные массивы
Используем раздел type . Type TArray = array [1..4] of byte; TName = string [10]; Var x:TArray; z:TName; y:TArray; a: array [1..10] of TName; Присваивание x:=y будет допустимо.
Что такое массив. Примеры. Теория. Array. Одномерный массив. Синтаксис. C++. Урок #25.
Массив – регулярный тип данных; совокупность пронумерованных однотипных элементов, имеющих общее имя. Название регулярный тип массивы получили за то, что в них объединены однотипные (логически однородные) элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве. Например, введем 30 целых чисел в диапазоне от 21 до 50 и объединим их общим именем А . Получается таблица, состоящая из одной строки данных. Такие таблицы называются линейными .
Таблица 1. Пример линейной таблицы | ||||
№ 1 | 2 | 3 | 2 | 3 |
А 21 | 9 | |||
22 | 23 | 49 | 50 |
Для хранения подобных таблиц используют одномерные массивы (векторы ). Количество элементов в массиве всегда конечно. Чтобы обратиться к отдельному элементу таблицы, надо указать индекс (номер). Например, элемент с индексом 3 равен 23.
Объявление одномерных массивов
Массив можно описать разными способами: 1. В разделе описания переменных
Var <имя массива>:Array [] O f ; Тип индекса – порядковый тип, кроме Integer . Часто используют интервальный тип (указывают допустимый диапазон значений). При указании диапазона начальный индекс не должен превышать конечный. Тип элементов массива может быть любым (стандартным или описанным ранее).
Число элементов массива фиксируется при описании и в процессе выполнения программы не меняется. 2. В разделе описания типов Type <имя типа>= Array [] O f ; Var <имя массива>: <имя типа>; 3. В разделе констант (задание типизированной константы) Const <имя массива>:Array [] O f = (); Пример 1.3. Способы описания массивов. 1. Var А: Array [1..30] Of Byte; При описании массива можно использовать предварительно объявленные константы: Const NMax=30; Var А: Array [1..Nmax] Of Byte; 2. Type TArray= Array [1..30] Of Byte; Var A: TArray; В результате описаний 1-2 на этапе трансляции программы будет выделена память под массив А размером 30 байт.
3. Const A: Array [1..30] | Of Byte=(21, 22, 23, 24, 25, 26, 27, 28, 29, | ||||||||||||||||
30, | 31, | 32, | 33, | 34, | 35, | 36, | 37, | 38, | 39, | 40, | 41, | 42, | 43, | 44, | 45, | 46, | 47, |
48, | 49, 50); |
В описании 3 происходит не только выделение памяти под массив А размером в 30 байт, но и выполняется присваивание элементам значений элементам массива. 4. Const A: Array [-2..2] Of Char =(‘1’,’2’,’3’,’4’,’5’);
В описании 4 задается массив из пяти элементов символьного типа. Индексы элементов массива меняются в пределах от -2 до 2. Массив содержит значения в диапазоне от ‘1’ до ‘5’.
При написании программы надо учитывать, что на хорошем выборе типов данных (в частности, индексов) можно сэкономить – получить более красивый, эффективный код, избавиться от «лишних» переменных и действий соответственно. Пример 1.4. Описать массив для хранения и последующей обработки информации о количестве студентов группы, родившихся за каждый год в период от 1993 до 1987 годы. Описание массива может быть таким: Var k: Array [1987..1993] Of Integer; Для обращения к элементам массива надо указать имя массива, а затем в квадратных скобках – индекс элемента. Например, обращение к 3-му элементу массива: A[3] . Изменение значения пятого элемента: A[5]:=30 ; . Для элемента массива в квадратных скобках может стоять не только непосредственное значение индекса, но и выражение, приводящее к значению индексного типа: A[k], A[N-k+1] .
Ввод, вывод элементов одномерного массива
Заполнение и вывод массива можно выполнять только поэлементно, т.е. необходимо организовать процесс с помощью цикла: сначала присвоить значение 1-му элементу, затем 2-му и т.д.; то же самое и с выводом на экран – сначала вывод 1-го элемента, затем 2-го и т.д. Пример 1.5. Найти среднее арифметическое положительных элементов, вводимых с клавиатуры. Считаем, что хотя бы один положительный элемент имеется. Program average; Const N=30; <Максимальное количество элементов массива>Var A: Array [1..N] Of Integer; i,k,S:Integer; Begin For i:=1 To N Do Begin Write (‘A[‘,i,’]= ‘); Readln (А[i]); End ; S:=0; k:=0; For i:=1 To N Do If А[i] > 0 Then Begin S:= S + А[i];
K:=K+1 End ; WriteLn (‘Среднее арифметическое положительных элементов равно ‘, S/k:10:4); End . Способы задания одномерных массивов: 1. Задание значений элементов с клавиатуры. 2. Задание с помощью генератора случайных чисел. Этот способ заполнения массива используется тогда, когда мы знаем закономерность распределения значений.
Например, надо получить выигрышную комбинацию из 5 шаров, если номера шаров имеют значения от 1 до 36. При этом надо учесть, что все номера шаров должны быть разные. 3. Чтение из файла. 4. Заполнение массива, элементы которого связаны некоторой закономерностью. Пример 1.6.
Написать программу заполнения одномерного массива с помощью генератора случайных чисел значениями от –10 до 10. Вывести значения на экран. Program init_rand; Const Nmax=25; <максимальное количество элементов массива>Type Tarray= Array [1..Nmax] Of Integer; Var A:Tarray; i,n:Integer; Begin Write(‘Введите количество элементов массива: ’); ReadLn(n); Randomize; For i:=1 To n Do А[i] := -10 + Random (21); For i:=1 To n Do Write (А[i]:6); end. Пример 1.7. Заполнить одномерный массив с помощью датчика случайных чисел таким образом, чтобы все его элементы были различны.
Program init_rand1;
Const NMax=50; Type Mas = Array [1..NMax] Of Integer; Var A:Mas; I, J, N:Byte; Fl:Boolean; Begin Write(‘Введите N ‘); ReadLn(N); <количество чисел в массиве>randomize; A[1] := -32768 + random(65535); For I := 2 To N Do Begin Fl := True; Repeat A[i] := -32768 + random(65535); J := 1; While Fl and (j A[j]; j := j + 1 End Until Fl End ; For i := 1 To N Do Write(A[i]:7); WriteLn End . Данная программа может привести к зацикливанию при некоторых исходных данных и поэтому требует доработки. Например, если изменить диапазон значений случайных чисел в пределах от одного до пяти, а размер массива N задать не менее 6. Пример 1.8. Составить программу чтения значений элементов одномерного массива из текстового файла arr.dat и вывода их на экран. Количество элементов в файле заранее неизвестно, но не более 50. Program init_file; Const Nmax=50; Var A: Array [1..Nmax] Of Integer; i,n:Integer; f:Text; Begin Assign (f,’arr.dat’); Reset (f); n:=0; While Not Eof (f) Do Begin inc (n); Read (f,А[n]); End ;
Источник: studfile.net
Работа с массивами данных.
Одномерные и двумерные массивы
Массив — это однородный, упорядоченный структурированный тип данных с прямым доступом к элементам. Элементы массива объединяются общим именем и занимают в компьютере определенную конечную область памяти. К любому элементу массива можно обратиться, указав имя массива и индекс элемента в массиве.
Одномерные и двумерные массивы
Если в массиве для обращения к элементам используется только один порядковый номер, то такой массив называется линейным, или одномерным . Одномерный массив можно представить в виде таблицы, в которой существует только одна строка.
Количество индексов элементов массива определяет размерность массива.
Массивы с двумя индексами называют двумерными . Такие массивы можно представить в виде таблицы, в которой номер строки соответствует первому индексу, а номер ячейки в строке (номер столбца) — второму индексу.
Чаще всего применяются одномерные массивы и двумерные массивы .
Чтобы объявить массив (это необходимо для выделения памяти, в которой будут храниться значения элементов массива), следует указать его имя и размерность при помощи ключевого слова МАССИВ .
В данном примере будет объявлен одномерный массив А, состоящий из 10 элементов.
В данном примере будет объявлен двумерный массив М, который можно представить в виде таблицы, состоящей из 4-х строк по 5 ячеек в каждой строке.
Ограничение на размер одномерного массива — 1000 элементов, для двумерных — 1000х1000. В учебных целях лучше не использовать массивы более чем из 500 элементов, чтобы не замедлять время обработки. Все массивы в Game Logo имеют числовой тип (действительные числа).
Содержимое элементов массива при объявлении равно нулю.
Работа с массивами
После объявления массива каждый его элемент можно обработать, указав идентификатор (имя) массива и индекс элемента в квадратных скобках. Например, запись M[2] позволяет обратиться ко второму элементу массива M.
При работе с двумерным массивом указываются два индекса. Например, запись
M[3,4] делает доступным для обработки значение элемента, находящегося в третьей строке четвертого столбца массива M.
Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов или использоваться в качестве аргументов в командах.
Присваивание значений элементам массива
Третьему элементу массива А будет присвоено значение 15.
Элементу массива М, находящемуся во второй строке четвертого столбца, будет присвоено значение 25.
Ввести значение в элемент массива можно также при помощи команды СПРОСИ.
Загрузка данных в массив
Загрузить данные в массив можно при помощи команды ЗАГРУЗИ.
Примеры для одномерного массива А.
загрузи в A
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
конец загрузки
загрузи в A
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
конец загрузки
Если данных будет недостаточно, то часть элементов останется незаполненной. Если избыточно, то они отсекутся.
Пример для двумерного массива М.
загрузи в M
15 17 25 36 24 56 78 56 36 24
56 78 56 36 24 15 17 25 36 25
15 17 25 36 24 56 78 56 36 24
78 56 36 24 15 17 17 25 36 25
36 24 56 78 24 56 78 56 36 24
39 78 56 36 24 25 15 15 89 71
15 17 25 36 24 56 78 56 36 24
78 56 36 24 15 17 17 25 36 25
36 24 56 78 24 56 78 56 36 24
39 78 56 36 24 25 15 15 89 71
конец загрузки
Заполнение массива с помощью циклов
Заполнение одномерного массив.
повторить для x от 1 до 10 M[x] = 555
>
Заполнение двумерного массив с помощью вложенных циклов.
повторить для x от 1 до 5 повторить для y от 1 до 7 M[x,y] = 555
>
>
Заполнение массива случайными числами
Заполнить массив случайными числами можно при помощи цикла.
Пример заполнения элементов массива А псевдослучайными целыми числами в диапазоне от 10 до 99:
массив А[100]
переменная х
повторить для х от 1 до 100 А[х] = Int(случайное * 89) + 10
>
Вывод значений элементов массива
На экран будет выведено значение третьего элемента одномерного массива А.
Будут выведены значения всех элементов массива А.
Знак # в команде ПИШИ выводит массив целиком. Для одномерных массивов вывод осуществляется с переносом строк. Для двумерных — как есть в виде таблицы, поэтому возможен выход за пределы поля.
Вывод массива в графическом виде
Массив может быть выведен в виде ряда точек (или таблицы из точек для двумерных массивов), цвет которых соответствует значению элемента массива (диапазон от 0 до 15, все числа меньше 0 отображаются черным цветом, больше 15 — белым). Этот способ удобен для моделирования клеточных автоматов, для визуализации сортировки и во многих других случаях, когда требуется визуальное восприятие происходящего в массиве.
Необязательные параметры и взяты в скобки. Они обеспечивают отступ от начала координат (верхнего левого угла).
Замена и копирование значений в массивах
Команда для замены во всем массиве одного значения на другое.
Команда для копирования всех значений одного массива в другой массив. Количество элементов и размерность массивов должны совпадать.
Источник: myrobot.ru