Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторный практикум по информатике

.pdf
Скачиваний:
253
Добавлен:
18.03.2015
Размер:
8.86 Mб
Скачать

студент представил тексты программ и результаты их выполнения;

результаты выполнения программ соответствуют поставленным задачам;

при устном ответе на 2-3 контрольных вопроса по указанию преподавателя студент демонстрирует знание основных операторов и определений изученной темы и умение применить их при решении соответствующих задач; представленный отчет по лабораторной работе соответствует требованиям раздела 8.

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

МАССИВЫ ДАННЫХ И ИХ ПРИМЕНЕНИЕ В TURBO PASCAL

1. Цель работы

Изучить способы обработки массивов данных в языке программирования Pascal.

2. Задачи работы

Овладеть основными методами работы с одномерными и двумерными массивами данных на языке; изучить некоторые алгоритмы обработки массивов данных.

3. Теоретическая часть

3.1. Основные сведения о массивах

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

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

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

3.2. Описание одномерных массивов на языке Pascal

Язык Pascal допускает описание одномерных массивов в программах следующими способами.

Способ 1:

Сначала в разделе описания типов программы задается имя типа следующим образом:

TYPE <Имя_типа_массива>=ARRAY [<Диапазон_индексов>]

OF <Тип>;

где TYPE — служебное слово, используемое для создания пользовательского типа данных;

ARRAY OF — служебные слова для описания массивов («Массив … из»);

<Имя_типа_массива> — задаваемое пользователем имя типа массива (требования к именам типов совпадают с требованиями к именам переменных);

<Диапазон_индексов> – диапазон изменения индексов массива. В качестве данного диапазона может выступить любой порядковый тип, кроме LONGINT. Чаще всего используют тип-диапазон, в котором задают границы изменения индексов;

<Тип> — тип элементов массива, например, REAL, INTEGER, CHAR и др.

После описания типа массива следует описать сам массив в разделе описания переменных. Полный вариант описания следующий:

TYPE KAR =ARRAY [1..10] OF INTEGER;

VAR REZ: KAR;

В данном примере «KAR» — имя типа, а «REZ» —имя собственно массива.

Способ 2.

Описание массива происходит непосредственно в разделе описания переменных:

VAR REZ: ARRAY [1..10] OF INTEGER;

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

R[10] — элемент массива R с индексом 10.

Одномерные массивы также иногда называются векторами. Как правило, предполагается, что диапазон индексов вектора начинается с 1. Например, если задан вектор V из 5 чисел (4, 2, 1, -7, 8), то первый элемент вектора равен 4 (т.е. V[1]=4), второй элемент вектора равен 2, третий элемент вектора равен 1 и т.д.

3.2.1. Ввод элементов массива. Написание программ с использованием массивов необходимо начинать с ввода значений элементов массива. Для этого необходимо последовательно изменять значение индекса, начиная с первого до последнего, и вводить соответствующий элемент. Для реализации этих действий удобно использовать цикл с заданным числом повторений (FOR…), где параметром цикла будет выступать переменная – индекс массива. Значения элементов могут быть введены с клавиатуры или определены с помощью оператора присваивания.

Пример фрагмента программы ввода элементов массива пользователем с клавиатуры:

Var A : array [1..10] of integer ;

I : byte ; {переменная I вводится как индекс массива} Begin

For i:=1 to 10 do begin

Write(‗введите [‗,I,‘]-элемент массива‘;

Readln (a[i]); {ввод i- го элемента производится с клавиатуры} end;

Для заполнения массива случайными числами необходимо воспользоваться процедурой Randomize и функцией Random (N). Функция random(n) служит для задания случайных целых чисел из диапазона 0 ≤ x ≤ n-1.

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

Var A: array [1..10] of integer;

I: byte ; {переменная I вводится как индекс массива}

Begin

Randomize; {вызов процедуры генерации случайных чисел} For i :=1 to 10 do

A[i]:= random (20); {i -му элементу массива присваивается «случайное» целое число в диапазоне от 0 до 19 включительно, число 20 не присваивается}

3.2.2. Вывод элементов массива

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

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

Var A: array [1..10] of integer;

I: byte ; {переменная I вводится как индекс массива}

Begin

For i :=1 to 10 do

Write ( a [ i ],‘ ‗); {вывод массива осуществляется в строку, после каждого элемента печатается три пробела}.

На экране в результате выполнения данного фрагмента программы будут следующие значения:

2 4 1 -7 ……и т.д.

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

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

Var A: array [1..10] of integer;

I : byte ; {переменная I вводится как индекс массива}

Begin

For i:=1 to 10 do

Writeln (‗a[‗, i,‘]=‘, a[i]); { вывод элементов массива в столбик } На экране в результате выполнения данного фрагмента

программы будут следующие значения:

a [1]=2 a [2]=4

a [3]=1 и т.д.

3.3. Описание двумерных массивов на языке Pascal

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

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

Ф.И.О.

Математика

Информатика

Физика

Химия

Андреев А.Л.

5

5

4

5

Биктимиров С.Р.

3

4

3

2

Симонова В.П.

4

3

4

3

Двумерные массивы, в которых диапазоны индексов начинаются с 1, также называются иногда матрицами. Размерность каждой матрицы определяется как MxN, где М – число строк в матрице, N – число столбцов.

Например, в предложенной выше матрице оценок из трех строк и четырех столбцов элемент A[3, 1]=4, A[1, 2]=5, A[3, 2]=3, A[2, 4]=2.

Первый индекс элемента матрицы характеризует номер строки матрицы, в которой расположен элемент, второй индекс – номер столбца.

Если число строк матрицы равняется числу столбцов, то матрицы данного типа называются квадратными. Элементы квадратной матрицы вида B[1,1], B[2,2], B[3,3]… составляют главную диагональ матрицы.

Описание типов двумерных массивов в языке Pascal осуществляется аналогично описанию типов одномерных массивов с добавлением диапазона изменения второго индекса, например:

TYPE MATR=ARRAY[1..4, 1..5] OF INTEGER;

TYPE T=ARRAY[0..10, 2000..2004] OF REAL;

Переменные, относящиеся к типу массива, должны быть соответствующим образом объявлены в разделе описания переменных, например:

VAR А: MATR;

VAR B, C, D: T;

или описание массива происходит непосредственно в разделе описания переменных:

VAR N: ARRAY [1..5, 1..10] OF INTEGER;

4. Описание оборудования и используемых программных комплексов

При выполнении лабораторной работы необходим специализированный компьютерный класс с минимальными системными требованиями компьютеров:

Процессор – Intel Pentium III; ОЗУ – 256 Mb;

видеокарта – 32 Mb.

Требуемое программное обеспечение: Операционная система Microsoft Windows;

Borland Pascal 7.0 for DOS / Borland Pascal 7.0 for Windows.

5. Краткое руководство по эксплуатации оборудования

При использовании оборудования необходимо:

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

визуально проверить правильность подключения ПЭВМ к электросети.

6. Задание 6.1. Варианты заданий с использованием одномерных массивов

Решить задачу с использованием одномерных массивов по указанному преподавателем варианту таблицы 1.

Таблица 1

 

Варианты заданий на тему «Одномерные массивы»

 

 

№ варианта

Задание

1

2

1Найдите среднее арифметическое элементов заданного массива из 8 целых чисел и определите, сколько элементов данного массива больше среднего.

2Задан массив из 10 целых чисел. Замените все положительные элементы данного массива его максимальным элементом.

3Задан массив из 8 действительных чисел. Замените все отрицательные элементы данного массива его минимальным элементом.

4Найдите сумму максимального и минимального элементов заданного массива из 10 действительных чисел.

5В заданном массиве из 8 действительных чисел вычислите сумму и среднее арифметическое значение положительных элементов.

6Задан массив из 10 целых чисел. Найдите среднее арифметическое всех четных элементов массива.

7Подсчитайте количество нулевых элементов в массиве из 10 целых чисел и распечатайте исходный массив в обратном порядке.

8Дан целочисленный массив из 8 целых чисел. Преобразуйте его, прибавив к четным числам значение первого элемента. Первый элемент массива оставьте без изменений.

 

Окончание таблицы 1

1

2

9

Дан целочисленный массив из 10 целых чисел. Преобразуйте

 

его, прибавив к нечетным числам значение последнего

 

элемента. Последний элемент массива оставьте без изменений.

10

Найдите наибольший по модулю элемент заданного массива из

 

9 действительных чисел.

 

 

11

В заданном массиве из 5 действительных чисел определите

 

количество чисел, не попадающих в интервал от -2 до 2,5.

12

Дан одномерный массив из 10 элементов. Подсчитайте

 

количество его элементов, кратных 3.

 

 

13

Замените

все

положительные

элементы

заданного

 

целочисленного массива из 8 элементов числом 1, а все

 

отрицательные элементы – числом 0.

 

 

14

Задан массив из 8 целых чисел. Определите, каких элементов в

 

массиве больше – четных или нечетных.

 

 

15

Вычислите среднее арифметическое всех отрицательных

 

элементов заданного массива из 8 действительных чисел.

16

Дан одномерный массив из 10 элементов. Упорядочте его

 

элементы по возрастанию методом «пузырька».

 

17

Дан одномерный массив из 10 элементов. Подсчитайте

 

произведение его нечетных элементов.

 

 

18

Дан одномерный массив из 10 элементов. Найдите его

 

минимальный элемент и напечатайте его порядковый номер.

19

Дан одномерный массив из 10 элементов. Найдите среднее

 

арифметическое его элементов и выведите все элементы,

 

меньшие среднего арифметического.

 

 

20

Дан одномерный массив из 10 элементов. Упорядочте его

 

элементы по убыванию линейным методом.

 

6.2. Варианты заданий с использованием двумерных массивов

Решить задачу с использованием двумерных массивов по указанному преподавателем варианту таблицы 2:

Таблица 2

 

Варианты заданий на тему «Двумерные массивы»

№ варианта

Задание

1

2

1Дана целочисленная матрица размера 5x6. Поменять местами первый и последний из столбцов.

2Дана действительная матрица размера 3x4. Найти сумму элементов последнего столбца данной матрицы.

Окончание таблицы 2.

1

2

3Дана целочисленная матрица размера 5x7. Заменить в данной матрице все отрицательные элементы числом 0, положительные элементы – числом 1.

4

Дана целочисленная матрица размера 4x6. Переставить местами 1 и

 

2 строку матрицы.

5

Дана целочисленная матрица размера 5x6. Поменять местами 1 и 2

 

столбцы.

6

Дана целочисленная матрица размера 4x3. Найти произведение

 

элементов первого столбца данной матрицы.

7

Дана квадратная целочисленная матрица размера 4х4. Заменить

 

нулями элементы матрицы, лежащие на главной диагонали.

8

Дана действительная матрица размера 3x4. Найти минимальное

 

значение в первой строке данной матрицы.

9

Задана целочисленная квадратная матрица размера 3х3. Найти

 

наименьший элемент главной диагонали данной матрицы.

10

Дана целочисленная матрица размера 4x4. Найти минимальное

 

значение во втором столбце данной матрицы.

11

Дана действительная матрица размера 4x3. Найти максимальное

 

значение в третьей строке данной матрицы.

12

Дана квадратная целочисленная матрица размера 6х6. Заменить

 

нулями элементы матрицы, лежащие выше главной диагонали.

13

Известны результаты сдачи трех экзаменов десятью студентами.

 

Найти средний балл каждого студента и общий средний балл.

 

Точность среднего балла – два знака после запятой.

14

В матрице целых чисел размера 10х15 определить количество и

 

сумму элементов, значения которых находятся вне интервала [-1, 1].

15

Дана квадратная целочисленная матрица 7х7. Найти сумму

 

элементов ее побочной диагонали.

16

Дана действительная матрица размерности 3х5. Найти количество

 

положительных элементов, расположенных в третьей строке данной

 

матрицы.

17

Дана целочисленная матрица размерности 4х4. Найти количество

 

отрицательных элементов, расположенных во втором столбце

 

данной матрицы.

18

Дана действительная матрица размерности 3х5. Сформировать

 

одномерный массив минимумов по строкам данной матрицы.

19

Дана действительная матрица размера 4x3. Сформировать

 

одномерный массив максимумов по столбцам данной матрицы.

20

Дана действительная матрица размера 5x6. Подсчитать среднее

 

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

7. Методика выполнения заданий

Для выполнения заданий необходимо:

1)изучить теоретическую часть (п.3), рассмотреть нижеприведенные примеры (п.7.1 и 7.2);

2)разработать алгоритмы для решения задач согласно выданному

варианту,

составить

программы

на

языке

Pascal,

воспользовавшись нижеприведенными примерами, протестировать и представить полученный результат преподавателю;

3)ответить на контрольные вопросы;

4)создать отчет по лабораторной работе в электронном виде.

7.1. Примеры типовых задач обработки одномерных массивов данных

К стандартным типам задач на обработку массивов данных относятся следующие задачи:

нахождение суммы элементов массива; нахождение количества элементов массива, удовлетворяющих определенным условиям;

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

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

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

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

Пример 1. Нахождение суммы элементов массива, удовлетворяющих некоторому заданному условию.

Найти сумму четных элементов заданного одномерного массива из 10 целых чисел.

PROGRAM Sum_mas;

Type Mas=array[1..10] of integer;