Объявление массива паскаль — Мир ПК

Понятие массива и объявление массивов в Паскале

Дата добавления: 2013-12-23 ; просмотров: 5864 ; Нарушение авторских прав

Массивы

4.1 Одномерные массивы в Pascal

МАССИВ — это набор однотипных данных (либо числа, либо символы-строки), причем все эти данные хранятся в одном месте памяти компьютера в
упорядоченных по номерам ячейках и называются элементами массива.

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

Наглядно массив можно представить в виде набора пронумерованных «ящичков», в каждом из которых может находиться только один фрагмент информации (Рис 1). Иногда эта информация может совпадать с номером ячейки или с содержимым другой ячейки массива.

Массив A =
Индексы:
Рисунок 1

где:
A — имя массива;
1, 2, 3, 4, 5, 6 — индексы ( порядковый номер «ящичка»);
34, 45, 2, 0, 5, -35 — элементы массива (содержимое ящичка);

Массив А имеет размерность один т.к. при обращении к элементам достаточно указать адрес состоящий из одного числа-номера «ящичка». Размер массива А равен 6, т.к. в нём 6 элементов. Массивы такого вида называются одномерными. Их элементы записываются как А[1], A[2], и т.д.

Действия над элементами осуществляются аналогично действиям над простыми переменными.

Например: А(2) + А(3) = 47

Обратите внимание, что действия осуществляются не над индексами, а над числами находящимися в ячейках и результат ни коем образом не связан с числом хранимым в ячейке А (5).

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

const
n = 100;
var
A : array[1..n] of Real;

Синтаксис объявления массива в языке Паскаль следующий:

Имя_переменной : array[1..Количество_Элементов] of Тип_элементов_массива;

Имя_переменной – имя переменной, которая будет ассоциироваться с массивом.

Количество_Элементов – Указывается количество элементов в массиве. Это должно быть положительное целое число. Для указания количества элементов рекомендуется использовать специальные константы, объявляемые в разделе Const. Это позволит легко изменить размер массива в случае необходимости. Изменение надо будет внести только в строку с объявлением константы. Если же константы не использовались то придется просмотреть весь текст программы и везде заменить максимальное значение внутри циклов и вызовов элементов.

Тип_элементов_массива – тип переменных, которые будут храниться в массиве. Допустимо использование любых типов данных.

Над массивами в паскале определены несколько стандартных операций.

Массивы в Паскале. Одномерные массивы

Предположим, что программа работает с большим количеством однотипных данных. Скажем около ста разных целых чисел нужно обработать, выполнив над ними те или иные вычисления. Как вы себе представляете 100 переменных в программе? И для каждой переменной нужно написать одно и тоже выражение вычисления значения? Это очень неэффективно.

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

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

Итак, массив – это именованная группа однотипных данных, хранящихся в последовательных ячейках памяти. Каждая ячейка содержит элемент массива. Элементы нумеруются по порядку, но необязательно начиная с единицы (хотя в языке программирования Pascal чаще всего именно с нее). Порядковый номер элемента массива называется индексом этого элемента.

Помним, все элементы определенного массива имеют один и тот же тип . У разных массивов типы данных могут различаться. Например, один массив может состоять из чисел типа integer , а другой – из чисел типа real .

Индексы элементов массива обычно целые числа, однако могут быть и символами, а также описываться другими порядковыми типами. Т.е. для индекса можно использовать тип, в котором определена дискретная последовательность значений, и все эти значения можно пересчитать по порядку. Индексировать можно как константами и переменными, так и выражениями, результат вычисления которых дает значение перечислимого типа.

Читать еще:  Найти площадь круга паскаль

Если индекс массива может приобретать все допустимые значения определенного перечислимого типа, то при описании массива возможно задание имени типа вместо границ изменения индекса. При этом границами индекса будут первое и последнее значения в описании типа индекса. Границы изменения индексов могут задаваться с помощью ранее объявленных констант. Рекомендуется предварительно объявлять тип массива в разделе описания типов.

Массив можно создать несколькими способами.

Обращение к определенному элементу массива осуществляется путем указания имени переменной массива и в квадратных скобках индекса элемента.

Простой массив является одномерным . Он представляет собой линейную структуру.

В примере выделяется область памяти под массив из 11 символов. Их индексы от 1 до 11. В процессе выполнения программы пользователь вводит 11 любых символов (например, ‘q’, ’w’, ’e’, ’2’, ’t’, ’9’, ’u’, ’I’, ’I’, ’o’, ’p’), которые записываются в ячейки массива. Текущее значение переменной i в цикле for используется в качестве индекса массива. Второй цикл for отвечает за вывод элементов массива на экран.

Функция sizeof , примененная к имени массива или имени массивного типа, возвращает количество байтов, отводимое под массив.

Pascal-Паскаль

Программирование. Одномерные массивы Pascal-Паскаль

  • Скачено бесплатно: 9293
  • Куплено: 414
  • Pascal-Паскаль->Программирование. Одномерные массивы Pascal-Паскаль

Программирование. Одномерные массивы Pascal-Паскаль

Понятие структуры

До сих пор мы работали с простыми типами данных – логический ( boolean ), целый ( integer , word , byte , longint ), вещественный ( real ), символьный ( char ). Любой алгоритм можно запрограммировать с помощью этих четырех базовых типов. Но для обработки информации о многообразном реальном мире требуются данные, имеющие более сложное строение. Такие сложные конструкции, основанные на простейших скалярных типах, называются структурами. Структура – некоторый составной тип данных, составленный из базовых скалярных. Если структура не изменяет своего строения на протяжении всего выполнения программы, в которой она описана, то такую структуру называют статической.

Массив – однородная совокупность элементов

Самой распространенной структурой, реализованной практически во всех языках программирования, является массив.

Массивы состоят из ограниченного числа компонент, причем все компоненты массива имеют один и тот же тип, называемый базовым. Структура массива всегда однородна. Массив может состоять из элементов типа integer , real или char , либо других однотипных элементов. Из этого, правда, не следует делать вывод, что компоненты массива могут иметь только скалярный тип.

Другая особенность массива состоит в том, что к любой его компоненте можно обращаться произвольным образом. Что это значит? Программа может сразу получить нужный ей элемент по его порядковому номеру (индексу).

Индекс массива

Номер элемента массива называется индексом. Индекс – это значение порядкового типа, определенного, как тип индекса данного массива. Очень часто это целочисленный тип ( integer , word или byte ), но может быть и логический и символьный.

Описание массива в Паскале. В языке Паскаль тип массива задается с использованием специального слова array (англ. – массив), и его объявление в программе выглядит следующим образом:

где I – тип индекса массива, T – тип его элементов.

Можно описывать сразу переменные типа массив, т.е. в разделе описания переменных:

Обычно тип индекса характеризуется некоторым диапазоном значений любого порядкового типа : I 1 .. I n . Например, индексы могут изменяться в диапазоне 1..20 или ‘ a ‘..’ n ‘.

При этом длину массива Паскаля характеризует выражение:

Вот, например, объявление двух типов: vector в виде массива Паскаля из 10 целых чисел и stroka в виде массива из 256 символов:

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

Опишем переменные типа vector и stroka :

далее в программе мы можем обращаться к отдельным элементам массива a или c . Например, a [5]:=23; c [1]:=’ w ‘; a [7]:= a [5]*2; writeln ( c [1], c [3]).

Вычисление индекса массива Паскаля

Индекс массива в Паскале не обязательно задавать в явном виде. В качестве индекса массива можно использовать переменную или выражение, соответствующее индексному типу. Иначе говоря, индексы можно вычислять.

Читать еще:  Кто изобрел язык паскаль

Этот механизм – весьма мощное средство программирования. Но он порождает распространенную ошибку: результат вычислений может оказаться за пределами интервала допустимых значений индекса, то есть будет произведена попытка обратиться к элементу, которого не существует. Эта типичная ошибка называется «выход за пределы массива».

Пример программы с ошибкой массива Паскаля

Хотя данная программа полностью соответствует синтаксису языка, и транслятор «пропустит» ее, на стадии выполнения произойдет ошибка выхода за пределы массива Паскаля. При n =45 выражение n *2=90, компьютер сделает попытку обратиться к элементу массива a [90], но такого элемента нет, поскольку описан массив размерностью 80.

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

Из всего этого следует сделать вывод: программисту надо быть очень аккуратным при работе с индексами массива.

Основные действия с массивами Паскаля

Как известно, определение типа данных означает ограничение области допустимых значений, внутреннее представление в ЭВМ, а также набор допустимых операций над данными этого типа. Мы определили тип данных как массив Паскаля. Какие же операции определены над этим типом данных? Единственное действие, которое можно выполнять над массивами целиком, причем только при условии, что массивы однотипны, – это присваивание. Если в программе описаны две переменные одного типа, например,

то можно переменной a присвоить значение переменной b ( a := b ). При этом каждому элементу массива a будет присвоено соответствующее значение из массива b. Все остальные действия над массивами Паскаля производятся поэлементно (это важно!).

Ввод массива Паскаля

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

Пример фрагмента программы ввода массива Паскаля

Рассмотрим теперь случай, когда массив Паскаля заполняется автоматически случайными числами, для этого будем использовать функцию random ( N ).

Пример фрагмента программы заполнения массива Паскаля случайными числами

Вывод массива Паскаля

Вывод массива в Паскале осуществляется также поэлементно, в цикле, где параметром выступает индекс массива, принимая последовательно все значения от первого до последнего.

Пример фрагмента программы вывода массива Паскаля

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

Пример программы вывода массива Паскаля в столбик

На экране мы увидим, к примеру, следующие значения:

Пример решения задачи с использованием массивов Паскаля

Задача: даны два n -мерных вектора. Найти сумму этих векторов.

Решение задачи:

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

Ход решения задачи:

  • определим количество элементов (размерность) массивов, введем значение n ;
  • введем массив a ;
  • введем массив b ;
  • в цикле, перебирая значения индекса i от 1 до n , вычислим последовательно значения элементов массива c по формуле:

Текст программы :

Пример программы суммирования векторов

Программирование

Исходники Pascal (127)

Справочник

Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту

Язык паскаль онлайн

Лекция Паскаль 10 – Массивы, Объявления одномерного массива, Индексация элементов

    Browse: Home / Лекции Паскаль / Лекция Паскаль 10 – Массивы, Объявления одномерного массива, Индексация элементов

Цель: Ознакомиться с одной из самых распространенных структур данных — массивами; научиться вводить массивы, рассчитывать для них базовые характеристики, находить элементы в массиве, сортировать элементы массива.

1. Понятие массива. Объявления одномерного массива. Индексация элементов.

Массивом называется упорядоченная индексируемая совокупность однотипных элементов, которые имеют общее имя.

Элементами массива могут быть данные различных типов, в том числе и структурированных. Каждый элемент одномерного массива однозначно определяется именем и индексом (для многомерных — индексами).

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

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

Общий вид описания линейного (одномерного) массива: Array [ ] of ;

Чаще всего описание происходит следующим образом:

Array [ .. ] of ; Например:

A: array [byte] of real; B: array [1..5] of integer;

C: array [0..9] of boolean;

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

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

Нумеровать элементы массива можно не только целыми числами. Произвольный порядковый тип данных (перечисляемые, интервальный, символьный, логический, а также произвольный, созданный на их основе) может выступать в роли индекса. При этом совокупный размер массива не может превышать 2 ГБ.

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

D: array [char] of real;

E: array [ ‘a’ .. ‘z’] of integer; F: array [Boolean] of char;

Примеры неправильных описаний массива: G: array [integer] of integer;

H: array [real] of byte;

Массивы относятся к структурам прямого доступа. При этом содержимое массива хранится в непрерывной области памяти. Это значит, что можно напрямую (без разбора все предыдущие) обратиться к нужному элементу массива. Для этого необходимо указать имя массива и индекс (индексы), размещенные в квадратных скобках:

Подобный массив можно представить как таблицу с одной строкой и несколькими ячейками:

Размещение массива A целых чисел в памяти:

A [1] A [2] A [3] A [4] A [5]
базовый адрес базовый адрес

+ 4 байта

базовый адрес

+ 8 байт

базовый адрес

+ 12 байт

базовый адрес

+ 16 байт

Такого типа массив, представляющий собой набор однотипных данных, называется простым или одномерным.

Всего в массив, приведен в таблице, в памяти будет отведено 20 байт — объявлен массив А целых чисел типа integer, каждому элементу (ячейке) массива будет выделено по 4 байта памяти. Все эти элементы соответствуют обычным переменным этого типа.

2. Ввод данных в массив. отражение его содержимого.

При изучении языка программирования Паскаль Вы практиковали ввод данных в массив, используя несложный цикл For:

var a: array [1..10] of integer; i: integer;

for i: = 1 to 10 do begin

write ( ‘a [‘, i, ‘] =’); readln (a [i]);

Такой подход в визуальном программировании не может быть применен, поскольку должна быть использована последовательность действий (ввод данных, нажатие кнопки) самого пользователя.

Задание 1. Разработать программу, которая реализует заполнения на форме массива целых чисел, содержащий 10 элементов (Massiv01).

Разработаем интерфейс программы. Введение элементов массива целесообразно выполнить с помощью компонентов Label, Edit, Button:

Программный код для реализации задачи — следующий:

Некоторые комментарии по строк программного кода:

// запись значения с поля

// отображение соответствующего индекса очередного элемента массива

// увеличение текущего индекса

// очистить поле ввода и перевести фокус

// если индекс станет равным 11, то завершить ввод

При изучении языка программирования Паскаль Вы практиковали вывода элементов массива, используя несложный цикл For:

var a: array [1..10] of integer; i: integer;

for i: = 1 to 10 do

write ( ‘a [‘, i, ‘] =’, a [i]);

Задача 2. Дополнить предыдущий проект таким образом, чтобы по завершении ввода элементы массива выводились на форму (Massiv02).

Для организации вывода элементов массива на форме разместим компоненты Label, Button, Memo.

Элементы выводятся в поле Memo по нажатии на кнопку Вывести.

Практическое задание 1. Дан массив из N (N [Всего голосов: 3 Средний: 5/5]

Запись опубликована в рубрике Языки программирования. Добавьте в закладки постоянную ссылку.