Цель работы: Приобрести навыки обработки одномерных массивов в Паскале.

1. Краткие теоретические сведения

Массивы представляют собой ограниченную упорядоченную совокупность однотипных величин. Каждая отдельная величина называется компонентой массива. Тип компонент может быть любым, принятым в языке ПАСКАЛЬ, кроме файлового типа. Тип компонент называется базовым типом.

Вся совокупность компонент определяется одним именем. Для обозначения отдельных компонент используется конструкция, называемая переменной с индексом или с индексами:

A[5] S[k+1] B[3,5].

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

R1:=Z.

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

Первый способ - с использованием типизованных констант, например:

type Dim10= Array[1..10] of Real;

const

raM10: Dim10 = ( 0, 2.1, 4, 5.65, 6.1, 6.7, 7.2, 8, 8.7, 9.3 );

НЕ нашли? Не то? Что вы ищете?

При инициализации двумерных массивов значения компонент каждого из входящих в него одномерных массивов записывается в скобках:

type Dim3x2= Array[1..3,1..2] of Integer;

const

iaM3x2: Dim3x2= ( (1, 2),

(3, 4),

(5, 6));

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

FillChar( var V; NBytes: Word; B: Byte );

Эта процедура заполняет участок памяти однобайтовым значением. Например, для обнуления массива A[1..10] of Real можно записать:

FillChar(A, 40, 0);

или

FillChar(A, SizeOf(A), 0);

Второй способ предпочтительнее, т. к. при помощи функции SizeOf Паскаль определяет размер массива в байтах самостоятельно.

2. Задания.

1. Подсчитать число и сумму положительных, число и произведение отрицательных элементов заданного массива A(N).

2. Элементы заданного массива B(N) переписать в новый массив A(N) в обратном порядке

3. Вычислить сумму квадратов всех элементов заданного массива X(N), за исключением элементов, кратных пяти.

4. В заданном массиве A(N) поменять местами наибольший и наименьший элементы.

5. Осуществить циклический сдвиг компонент заданного вектора A(N) влево на одну позицию, то есть получить вектор А = (a2 , a3, ..., aN, a1 ).

6. В заданном массиве A(N) положительные элементы уменьшить вдвое, а отрицательные заменить на значения их индексов.

7. В соревнованиях по фигурному катанию N судей независимо выставляют оценки спортсмену. Затем из объявленных оценок удаляют самую высокую (одну, если самую высокую оценку выставили несколько судей). Аналогично поступают с самой низкой оценкой. Для оставшихся оценок вычисляется среднее арифметическое, которое и становится зачетной оценкой. По заданным оценкам судей определить зачетную оценку спортсмена.

Контрольные вопросы.

1. Что называется массивом?

2. Оператор описания массива, его разновидности.

3. Правила составления имени массива.

4. Способы задания значений массивов.

5. Ввод и вывод массивов.

6. Переменные какого типа могут служить именем массива?

7. Какие элементы могут служить в качестве индексов элементов массива.

Лабораторная работа №5

Тема: Разработка программ с использованием двумерных массивов.

Цель работы: Приобрести навыки обработки двумерных массивов в Паскале.

1. Общие сведения.

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

Если массив двумерный, то для определения положения какого-либо элемента достаточно задания номера строки и столбца, на пересечении которых находиться рассматриваемый элемент. Так выделенные на рис. 1 в элементы массива имеют следующие обозначения B[1,1], B[1,4], B[5,2].

1

2

3

4

двумерный массив

Причём первым в обозначении элемента массива стоит номер строки, а вторым - столбца.

Точно также задается положение трёх, четырёх и n-мерных массивов.

Итак, массив характеризуется размерностью и длиной по направлению каждой из размерностей.

Если какая-либо переменная в программе является массивом, то её необходимо описать в разделе переменных. Простейшая форма описания одномерного массива имеет вид:

Var v: array [n...m] of t ;

где v – имя массива, формируется по правилам задания имён

переменных;

n и m – наибольшее и наименьшее значение индекса

массива, может быть целого и перечисляемого

типа;

t – тип элемента массива, может быть любым типом,

существующим в Паскале.

Например, запись: var m: array [1..8] of real

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

В описании массивов большей размерности предел изменения этой размерности отделяется друг от друга запятой.

Запись

Var C: array [1..5, 1..4] of integer

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

Для описания многомерных массивов в Паскале существует целый ряд способов. Следующие группы операторов задают описание одного и того же двумерного массива А, представляющего собой таблицу размером 2´3 (2 строки, 3 столбца)

Первый способ:

Type

Stroka = array [1..3] of real;

Matr = array [1..2] of stroka;

Var

V: stroka;

A: matr ;

Второй способ:

Type

Matr= array [1..2] of array [1..3] of real;

Var

A: matr;

Третий способ:

Type

Matr = array [1..2,1..3] of real;

Var

A: matr;

Четвёртый способ:

Var

A: array [1..2,1..3] of real;

В первом способе описания переменная V объявлена как одномерный массив из трёх элементов вещественного типа. Переменная А имеет смысл двумерного массива из двух строк, в каждую из которых включено по три элемента.

Второй, третий и четвертый способы описания массива получаются из первого путем его последовательного упрощения. Так второй способ описания получен из первого путём исключения определения типа stroka в определении типа matr.

В Паскале типом индекса (номером) элемента массива не обязательно является целое число. Им может быть также переменная перечисляемого типа, например:

2. Задание.

Задание взять из таблицы согласно варианту. Составить блок-схему алгоритма и программу.

Контрольные вопросы.

1. Что называется массивом?

2. Оператор описания массива, его разновидности.

3. Правила составления имени массива.

4. Способы задания значений массивов.

5. Ввод и вывод массивов.

6. Переменные какого типа могут служить именем массива?

7. Какие элементы могут служить в качестве индексов элементов массива.

3. Задание к работе

1.

Найти среднее арифметическое каждой строки матрицы А. Сформировать из них вектор В.

2.

Найти сумму элементов матрицы А, лежащих на главной

Диагонали и правее. Умножить на это значение все элементы

Вектора В

3.

Сформировать вектор В элементы которого равны

Соответствующим элементам неглавной диагонали матрицы.

Найти минимальный элемент вектора В.

4.

Определить количество положительных элементов каждого

Столбца матрицы А и запомнить их в массиве М

5.

Из матрицы А построить матрицу В поменять местами

Строки и столбцы.

6.

Сформировать вектор В как сумму положительных элементов

Каждой строки матрицы А.

7.

Сформировать вектор В как среднее арифметическое

Положительных элементов каждого столбца матрицы А:

8.

Найти минимальные элементы каждой строки

Матрицы А и поместить их на главную диагональ.

9.

Поменять в каждой строке между собой элементы

Главной и неглавной диагоналей матрицы А:

10.

Найти произведение первых трёх наибольших элементов

Матрицы А:

11.

Сформулировать вектор С из элементов вектора А,

Удовлетворяющих условию Aij>2

12.

Получить вектор В элементы которого равны элементам главной матрицы А и найти его максимальный элемент. Вывести на печать полученный вектор В и полученное значение максимального элемента.

13.

Получить вектор А, элементы которого равны элементам первой строки матрицы С и вектор В, элементы которого равны элементам первого столбца матрицы С. Вывести на печать векторы А и В.

14.

По заданным векторам А и В сформировать вектор С по формуле Cij=ai+bj и найти его минимальный элемент.

15.

Упорядочить элементы матрицы А, расположив их по убыванию в строках.

16.

Изменить значение элементов матрицы А по правилу

17.

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

18.

Найти сумму элементов обоих диагоналей матрицы А:

19.

Поменять в каждом столбце элементы главной и неглавной диагоналей

20.

Упорядочить по возрастанию четные элементы вектора В

21.

Сформировать матрицу А по правилу:

Найти максимальный элемент и его положение в матрице

22.

Найти сумму элементов первой и второй строк матрицы А и минимального элемента вектора В.

23.

Найти произведение и количество положительных элементов матрицы А

24.

Сформировать матрицу А по правилу:

И найти минимальный элемент

25.

Найти наибольшую сумму двух произвольных элементов вектора А:

Лабораторная работа №6

Тема: Разработка программ с использованием процедур и функций.

Цель работы: изучить работу процедуры и функции и обрести навык написания программ с применением процедур и функций.

1. Основные понятия.

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

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

1.1. Описание процедуры.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9