Основы программирования на языке Паскаль
|
| Следующая программа заполняет массив значениям квадратов индексов |
|элементов: |
|Program M3; |
|Const |
|N=50; {Константа N будет содержать количество элементов массива} |
|Var |
|A : Array [1..N] Of Integer; |
|I : Integer; |
|Begin |
|For I:=1 To N Do |
|A[I]:=I*I |
|For I:=1 To N Do |
|Write(A[I],'VVV') |
|End. |
| В дальнейшем для учебных целей мы будем использовать массивы, заданные|
|с помощью генератора случайных чисел. В языке Паскаль случайные числа |
|формирует функция Random. Числа получаются дробными, равномерно |
|расположенными в интервале от 0 до 1. Выражение, дающее целое случайное |
|число в интервале [-50,50] будет выглядеть так: |
|Trunc(Random*101)-50 |
|Зададим и распечатаем случайный массив из сорока целых чисел: |
|Program M4; |
|Const |
|N=40; {Константа N будет содержать количество элементов массива} |
|Var |
|A : Array [1..N] Of Integer; |
|I : Integer; |
|Begin |
|For I:=1 To N Do |
|Begin |
|A[I]:= Trunc(Random*101)-50 |
|Write(A[I],'VVV') |
|End |
|End. |
| С обработкой линейных массивов связано множество задач. Их мы |
|рассмотрим на практических занятиях. |
| |
|Двумерные и многомерные массивы |
|Представьте себе таблицу, состоящую из нескольких строк. Каждая строка |
|состоит из нескольких ячеек. Тогда для точного определения положения ячейки|
|нам потребуется знать не одно число (как в случае таблицы линейной), а два:|
|номер строки и номер столбца. Структура данных в языке Паскаль для хранения|
|такой таблицы называется двумерным массивом. Описать такой массив можно |
|двумя способами: |
|I. |
|Var |
| A : Array [1..20] Of Array [1..30] Of Integer; |
|II. |
|Var |
| A : Array [1..20,1..30] Of Integer; |
|В обоих случаях описан двумерный массив, соответствующий таблице, состоящей|
|из 20 строк и 30 столбцов. Приведенные описания совершенно равноправны. |
|Отдельный элемент двумерного массива адресуется, естественно, двумя |
|индексами. Например, ячейка, находящаяся в 5-й строке и 6-м столбце будет |
|называться A[5][6] или A[5,6]. |
|Для иллюстрации способов работы с двумерными массивами решим задачу: |
|"Задать и распечатать массив 10X10, состоящий из целых случайных чисел в |
|интервале [1,100]. Найти сумму элементов, лежащих выше главной диагонали." |
|При отсчете, начиная с левого верхнего угла таблицы, главной будем считать |
|диагональ из левого верхнего угла таблицы в правый нижний. При этом |
|получается, что элементы, лежащие на главной диагонали будут иметь |
|одинаковые индексы, а для элементов выше главной диагонали номер столбца |
|будет всегда превышать номер строки. Договоримся также сначала указывать |
|номер строки, а затем - номер столбца. |
|Program M5; |
|Var |
|A : Array[1..10,1..10] Of Integer; |
|I, K : Byte; |
|S : Integer; |
|Begin |
|S:=0; |
|For I:=1 To 10 Do |
|Begin |
|For K:=1 To 10 Do |
|Begin |
|A[I,K]:=Trunc(Random*100)+1; |
|Write(A[I,K]:6); |
|If K>I Then S:=S+A[I,K] |
|End; |
|Writeln |
|End; |
|Writeln('Сумма элементов выше гл. диагонали равнаV',S) |
|End. |
|Если модель данных в какой-либо задаче не может свестись к линейной или |
|плоской таблице, то могут использоваться массивы произвольной размерности. |
|N-мерный массив характеризуется N индексами. Формат описания такого типа |
|данных: |
|Type |
|<Имя типа>=Array[<диапазон индекса1>,<диапазон индекса2>,... |
|<диапазон индекса N>] Of <тип компонент>; |
|Отдельный элемент именуется так: |
| <Имя массива>[<Индекс 1>,<Индекс 2>,...,<Индекс N>] |
| |
|Процедуры и функции |
|При решении сложных объемных задач часто целесообразно разбивать их на |
|более простые. Метод последовательной детализации позволяет составить |
|алгоритм из действий, которые, не являясь простыми, сами представляют собой|
|достаточно самостоятельные алгоритмы. В этом случае говорят о |
|вспомогательных алгоритмах или подпрограммах. Использование подпрограмм |
|позволяет сделать основную программу более наглядной, понятной, а в случае,|
|когда одна и та же последовательность команд встречается в программе |
|несколько раз, даже более короткой и эффективной. |
|В языке Паскаль существует два вида подпрограмм: процедуры и функции, |
|определяемые программистом. Процедурой в Паскале называется именованная |
|последовательность инструкций, реализующая некоторое действие. Функция |
|отличается от процедуры тем, что она должна обязательно выработать значение|
|определенного типа. |
|Процедуры и функции, используемые в программе, должны быть соответствующим |
|образом описаны до первого их упоминания. Вызов процедуры или функции |
|производится по их имени. |
|Подпрограммы в языке Паскаль могут иметь параметры (значения, передаваемые |
|в процедуру или функцию в качестве аргументов). При описании указываются |
|так называемые формальные параметры (имена, под которыми будут фигурировать|
|передаваемые данные внутри подпрограммы) и их типы. При вызове подпрограммы|
|вместе с ее именем должны быть заданы все необходимые параметры в том |
|порядке, в котором они находятся в описании. Значения, указываемые при |
|вызове подпрограммы, называются фактическими параметрами. |
|Формат описания процедуры: |
|Procedure <Имя процедуры> (<Имя форм. параметра 1>:<Тип>; |
|< Имя форм. параметра 2>:<Тип>?); |
|<Раздел описаний> |
|Begin |
|<Тело процедуры> |
|End; |
|Раздел описаний может иметь такие же подразделы,
| | скачать работу |
Основы программирования на языке Паскаль |