Скачиваний:
32
Добавлен:
02.05.2014
Размер:
438.34 Кб
Скачать

Министерство образования Российской Федерации

Уфимский государственный авиационный технический университет кафедра экономической информатики

МАССИВЫ

ИИХ ПРИМЕНЕНИЕ

ВPASCAL-ПРОГРАММАХ

МЕТОДИЧЕСКИЕ УКАЗАНИЯ по курсу «Информатика»

УФА 2004

Составитель: Н.В.Иванова

ББК

УДК

Массивы и их применение в Pascal-программах. Методическое пособие по курсу «Информатика» /Уфимск.гос.авиац.техн.ун-т; Сост.: Н.В.Иванова. – Уфа: УГАТУ, 2004. –19с.

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

Предназначены для студентов очной формы обучения дипломированных специалистов любых специальностей.

Ил. 6. Табл. 1. Библиогр.: 4 назв.

2

 

Содержание

 

1.

ЦЕЛЬ РАБОТЫ..........................................................................................................................

4

2.

ОБЩИЕ СВЕДЕНИЯ О МАССИВАХ.....................................................................................

4

3.

ОДНОМЕРНЫЕ МАССИВЫ....................................................................................................

4

4.ПРИМЕРЫ ОСНОВНЫХ ТИПОВЫХ ЗАДАЧ С ИСПОЛЬЗОВАНИЕМ ОДНОМЕРНЫХ

МАССИВОВ.......................................................................................................................................

6

 

4.1. Нахождение суммы элементов массива................................................................................

6

 

4.2. Нахождение наибольшего элемента в массиве....................................................................

7

 

4.3. Нахождение количества элементов массива, удовлетворяющих некоторому условию..

8

 

4.4. Сортировка массива по возрастанию....................................................................................

9

5.

ДВУМЕРНЫЕ МАССИВЫ.....................................................................................................

11

6.

ПРИМЕРЫ ЗАДАЧ С ИСПОЛЬЗОВАНИЕМ ДВУМЕРНЫХ МАССИВОВ....................

13

 

6.1. Нахождение наибольшего элемента в заданной строке матрицы....................................

14

 

6.2. Нахождение элементов массива, удовлетворяющих определенному условию..............

14

 

6.3. Нахождение сумм элементов строк матрицы.....................................................................

15

7.

ЗАДАНИЕ К ЛАБОРАТОРНОЙ РАБОТЕ............................................................................

17

 

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

17

 

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

18

8.

КОНТРОЛЬНЫЕ ВОПРОСЫ.................................................................................................

19

9.

ИСПОЛЬЗУЕМАЯ ЛИТЕРАТУРА........................................................................................

19

3

1. ЦЕЛЬ РАБОТЫ

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

2. ОБЩИЕ СВЕДЕНИЯ О МАССИВАХ

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

Массив это упорядоченные данные одного типа. Возможно и другое определение: массивом называется конечная поименованная совокупность элементов одинакового типа. Число элементов в массиве называется размерностью массива. Каждый элемент массива задается своим порядковым номером в массиве – так называемым индексом. Примером может служить список фамилий студентов одной группы, где каждый студент однозначно определяется своим порядковым номером в списке (индексом в массиве).

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

3.ОДНОМЕРНЫЕ МАССИВЫ

В общем виде объявление массива выглядит так:

имя: array [нижний_индекс..верхний_индекс] of тип где

имя – имя переменной массива;

array – ключевое слово, обозначающее, что переменная является массивом;

нижний_индекс и верхний_индекс – целые числа, определяющие диапазон изменения индексов (номеров) элементов массива и, неявно, количество элементов (размер) массива;

тип – тип элементов массива.

Примеры объявления массивов (string – строковая переменная, рассматривается в разделе «Символы и строки»):

temper: array[1..31] of real; koef: array[0..2] of integer; name: array[1..30] of string[25];

4

ВНИМАНИЕ

Размещение массива в памяти происходит до выполнения программы, поэтому при описании индекса можно применять только константы или константные выражения. Использовать для этого переменные нельзя !

Обычно при описании массива верхняя граница его индекса задается в виде именованной константы. Именованная константа объявляется в разделе описания констант, который располагается перед разделом объявления переменных. Например, массив названий команд – участниц чемпионата по футболу может быть объявлен следующим образом:

const

 

NT=18;

{число команд}

SN=25;

{предельная длина названия команды}

var

team: array[1..NT] of string[SN]

Массив может быть также описан следующим образом:

type имя_типа=array[нижний_индекс..верхний_индекс] of тип где

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

остальные параметры описаны выше.

Примеры описания типа массивов:

Type

M=array[1..10] of integer; AR=array[0..15] of real; VT=array[-5..5] of string[10]

В первом операторе описан тип массива из целых чисел, которые нумеруются от 1 до 10. Во втором операторе элементами массива являются вещественные числа пронумерованные от 0 до 15. Соответственно в третьем примере описан тип массива строковых переменных с изменением индексов от -5 до 5.

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

var a:m; b:ar; c:vt;

Итак, тип элементов массива может быть любым, кроме файлового, тип индексов – интервальным, перечисляемым или byte.

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

d:=a;

5

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

a[3] b[j]

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

ВНИМАНИЕ

При обращении к элементу массива автоматический контроль выхода индекса за границу массива не производится! Для включения режима автоматического контроля необходимо добавить в любое место программы, предшествующее обращениям к элементу, ключ компиляции {$R+} или установить соответствующий режим в оболочке. Рекомендуется включать этот режим на период отладки программы, а после завершения отладки выключать.

Можно еще заметить следующее: к типичным действиям с массивами можно отнести

вывод массива;

ввод массива;

сортировка массива;

поиск в массиве заданного элемента;

поиск в массиве максимального или минимального элемента.

Далее рассмотрим примеры на использование массивов в Pascal– программах.

4.ПРИМЕРЫ ОСНОВНЫХ ТИПОВЫХ ЗАДАЧ С ИСПОЛЬЗОВАНИЕМ ОДНОМЕРНЫХ МАССИВОВ

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

Нахождение суммы (произведения) элементов массива;

Определение наибольшего (наименьшего) элемента в массиве;

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

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

Рассмотрим перечисленные типы задач на следующих примерах.

4.1.Нахождение суммы элементов массива.

Вавтопарке, имеющем 18 машин марки КАМАЗ, каждый из КАМАЗов перевез за день определенный объем груза. Определить суммарный объем перевозок грузов за день.

6

начало
Описание типа KAMAZ и перемен-
ных I,p,S
S:=0
I=1,18
Вывод «Введите объем
перевозок»
Ввод p[i]
S:=S+p[i]
Выв.«Сумм. объем
перевозок»
конец
Рис. 1

При решении задачи будем использовать тип массива KAMAZ для описания всех КАМАЗов автопарка; переменную P[i] для описания объема груза, перевезенного i-той машиной за день (I меняется от 1 до 18).

Блок-схема алгоритма для решения данной задачи будет выглядеть следующим образом (см.Рис. 1):

Текст программы может иметь при этом следующий вид:

Program Pr1;

Uses wincrt;

Type KAMAZ=array [1..18] of real;

Var i:integer;

p:KAMAZ; S:real;

Begin

S:=0;

For i:=1 to 18 do

Begin

Writeln(‘Введите объем перевозок’,I,‘-ой маши-

ны, т’); Readln(p[i]);

S:=S+p[i]; End;

Writeln(‘Суммарный объем перевозок

S=’,S:8:2,‘т’);

End.

Накопление суммы в данном примере будет проводиться по шагам, при вводе значения объема перевозок для очередной машины сумма будет увеличиваться на данную величину. Аналогично реализуется и алгоритм нахождения произведения элементов массива (с заменой начального значения суммы S:=0 на начальное значение произве-

дения S:=1 и с заменой операции сложения элементов массива «+» на операцию умножения «*»).

4.2. Нахождение наибольшего элемента в массиве

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

Для описания списка зарплат сотрудников воспользуемся типом массива ZARPL, для задания зарплаты каждого из сотрудников – переменной SOTR. Блок-схема данного алгоритма представлена на Ошибка! Источник ссылки

не найден.

7

начало

Описание типа

ZARPL и пер-х

I,sotr,max

S:=0

I=1,16

«Вв.

зарплаьу i-о сотр-

Ввод

sotr[i]

max:=sotr[1]

I=1,16

нет

max<sot

 

r[i]

да

max:=sotr[i]

“Наибол. зар-та = “ max:10:2

конец

Рис. 2

Текст программы приведен ниже:

Program Pr2;

Uses wincrt;

Type ZARPL=array [1..16] of real;

Var i:integer; sotr:ZARPL; max:real;

Begin

For i:=1 to 16 do

Begin

Writeln(‘Введите зарплату ’,I,‘-го сотрудника,

руб.’); Readln(sotr[i]);

End; Max:=sotr[1];

For i:=2 to 16 do

If max<sotr[i] then max:=sotr[i];

Writeln(‘Наибольшая зарплата =’, max:10:2, ‘руб.’);

End.

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

Аналогично может быть найден и наименьший элемент в массиве. Для этого достаточно заменить в изложенной программе условие max<sotr[i] на условие min>sotr[i], где i меняет-

ся от 1 до 1 до 16, min – переменная типа

REAL.

4.3. Нахождение количества элементов массива, удовлетворяющих некоторому условию

Известны результаты экзамена по информатике одной группы из 22 студентов. Определить, сколько студентов сдали экзамен на 4 и 5.

Один из вариантов решения этой задачи следующий:

На Рис. 3 представлена блок-схема алгоритма поставленной задачи.

8

Соседние файлы в папке Методичка - Borland Pascal 7.0