Лабораторная работа №4 Тема: Структурированные типы данных. Массивы (Array)




Скачать 105.36 Kb.
НазваниеЛабораторная работа №4 Тема: Структурированные типы данных. Массивы (Array)
Дата публикации10.03.2013
Размер105.36 Kb.
ТипЛабораторная работа
uchebilka.ru > Информатика > Лабораторная работа
Лабораторная работа № 4

Тема: Структурированные типы данных. Массивы (Array)
Цель: изучить основные правила работы с переменными типа массив (array), получить практические навыки в решении задач, содержащих типы данных массив, получить навыки отладки программ в интегрированной среде Turbo Pascal.
порядок выполнения лабораторных работ

  1. Ознакомиться с теоретическим материалом и инструкцией на лабораторную работу.

  2. Выполнить приведенное в инструкции задание.

  3. Сохранить результаты проделанной работы на диске.

  4. Предъявить результаты выполненной работы преподавателю.

  5. Заготовить дома отчет по лабораторной работе, в который включить название темы; цель работы; текст программы на языке Turbo Pascal вашего варианта задания численные результаты проделанной работы; ответы на контрольные вопросы, приведенные в конце лабораторной работы.

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



^

Теоретические сведения

Массивы

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

Понятие о массиве


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

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

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

Упорядоченная- означает, что переменные в массиве хранятся не хаотично, а в установленном порядке, по очереди.

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

^ Одного типа - означает, что переменные, входящие в массив, должны хранить данные одного типа (Real, Integer, Char, Boolean и т.д.), который называется типом элементов массива.

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

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

Каждый элемент массива имеет свое имя, представляющее собой имя массива и стоящие за ним квадратные скобки, в которых указывается индекс элемента - целое число, равное порядковому номеру этого элемента в массиве. Таким образом, для ссылки на отдельный элемент массива используется запись вида: имя массива[индекс]. Например: A[1], D[24], Massiv[5], Mas[12].

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

В этой программе для хранения в памяти количества киловатт- часов ежедневного потребления энергии можно было бы предусмотреть отдельные переменные:

KWatt1 KWatt2 KWatt3 ... KWatt30 KWatt31

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

Массив KWatt: KWatt[1] KWatt[2] KWatt[3] ... KWatt[31]

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

.................. {начальное значение счетчика цикла равно 1}

i:=1; {начальное значение переменной Max, предназначенной}

Max:=0; {для хранения максимального значения массива, равно 0}

REPEAT {начинаем цикл}

IF KWatt[i]>Max {если значение очередного элемента массива}

THEN {превышает текущее значение переменной Max,}

Max:=KWatt[i]; {то переменная Max меняет свое значение на}

{значение элемента массива}

i:=i+1 {увеличиваем значение счетчика на единицу}

UNTIL i>31; {цикл заканчивается, если значение счетчика цикла превысит число 31}

..................

мы без труда догадаемся, что здесь идет поиск максимального числа (Max) из набора однотипных данных (KWatt[i]).
^

Описание массивов


Основными характеристиками массива являются:

  1. имя;

  2. размерность (число элементов массива);

  3. тип элементов;

  4. тип индексов.

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

Формат:

Type

<имя типа>=array[<тип индекса>] of <тип элементов>;

Var

<идентификатор 1>, …, <идентификатор N>: <имя типа>;

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

^ Var

<идентификатор 1, …, идентификатор N>: array [<тип индекса>] of <тип элементов>;

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

^ VAR <имя массива>: ARRAY[размерность] OF <тип элементов>;

К имени массива предъявляются те же требования, что и к имени переменной.

Размерность - это диапазон целых чисел, каждое из которых является порядковым номером (индексом) одной из ячеек массива. Обычно диапазон индексов задают, начиная от единицы: [1..100]. Это удобно, но не обязательно. Важно лишь, чтобы правая граница диапазона была больше или равна левой границе.

Program Primer;

Const Max=100;

Var A:Array[1..50] of Real; {массив "А" состоит из 50-ти вещественных чисел}

B:Array[1..Max] of integer; {массив "В" состоит из ста целых чисел}

Mas:Array[1999..2000] of integer; {массив "Mas" состоит из 2-х целых чисел}

Mas2:Array[-700..-1] of Real; {массив "Mas2" состоит из 700 вещественных чисел}

...................................

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

Использование значений массивов, ввод и вывод значений массивов


Как уже отмечалось, для ссылки на отдельные элементы массива используется переменная с индексом: ^ Имя массива[индекс]. Чтобы получить доступ к конкретному элементу массива, в качестве индекса можно использовать не только целое число, соответствующее порядковому номеру этого элемента в массиве, но и выражение, значение которого равно упомянутому целому числу. Например, при обращении к элементам некоторого массива A: Array[1..100] of Real, в качестве индекса можно использовать любое арифметическое выражение, значением которого будет целое число из диапазона 1..100:

A[56]; A[i+7]; A[i div j] .

Вводить и выводить значения из массивов целесообразно поэлементно, используя в цикле операторы Readln, Write, Writeln и оператор присваивания.

^ Program Vvod_Vivod;

Var i:integer;

A:Array[1..20] of Real;

B:Char;

Begin

Writeln('Введите числа в массив: ');

FOR i:=1 TO 20 DO

begin Write('A[',i,']= '); Readln(A[i]) end;

Writeln('Массив заполнен, будете выводить');

Write('значения на экран? ("Y"-да, "N"-нет)=>');

Readln(B);

^ IF UpCase(B)="Y" THEN {если прописной вариант введенной}

FOR i:=1 TO 20 DO Writeln('A[',i,']=',A[i]:6:2); {буквы является "Y", то}

Readln

End.
Приведем другие примеры использования массивов.

  1. Попарное суммирование элементов массивов А и В.

Program Prim1;

Const N=10;

Var i:integer;

A,B,C:Array[1..N] of Real;

Begin


        FOR i:=1 TO N DO

        begin

                 Write('A[',i,']= '); Readln(A[i]);

                 Write('B[',i,']= '); Readln(B[i])

        end;

        FOR i:=1 TO N DO C[i]:=A[i]+B[i];

        Writeln('----------------------------------');

        FOR i:=1 TO N DO Writeln('C[',i,']=',C[i]:6:1);

        Readln

End.

  1. Объединим в массиве С массивы А и В так, чтобы их элементы чередовались: элементы из массива А занимали нечетные ячейки, а элементы массива В - четные.

Program Prim2;

Const N=10;

Var i:integer;

A,B:Array[1..N] of Real;

C:Array[1..N*2] of Real;

Begin


         FOR i:=1 TO N DO

         begin

                 Write('A[',i,']= '); Readln(A[i]);

                 Write('B[',i,']= '); Readln(B[i])

         end;

         FOR i:=1 TO N DO

         begin

                 C[2*i-1]:=A[i];

                 C[2*i]:=B[i]

         end;

         Writeln('------------------------------');

         FOR i:=1 TO 2*N DO Writeln('C[',i,']=',C[i]:6:1);

          Readln

End.
^

Двумерные массивы


Одномерный массив (вектор) имеет вид таблицы из одной строки, ячейки которой заполнены значениями. Рассматривая ДВУМЕРНЫЙ массив, можно провести аналогию с таблицей, имеющей несколько строк и столбцов. Если отдельный элемент одномерного массива мы обозначали именем массива с индексом (А[i]), то для обозначения элемента двумерного массива (матрицы) потребуются два индекса: один - для указания номера строки, другой - для указания номера столбца, на пересечении которых находится нужный элемент: А[i,j]. Двумерные массивы описываются сходно с массивами одномерными:

Const Str=4;

Stolb=5;

^ Var A:Array[1..Str,1..Stolb] of Real;

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

FOR i:=1 TO Str DO

         FOR j:=1 TO Stlb DO Readln(A[i,j]);

...............

FOR i:=1 TO Str DO

         FOR j:=1 TO Stlb DO Writeln('A[',i,',',j,']=',A[i]:6:2);

здесь Str- число строк, Stlb- число столбцов.
^

Полная переменная


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

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

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

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

Над значениями полных переменных в Паскале не выполняются операции сравнения.

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

VAR X:Real;

                Y:Array[1..1] of Real;

недопустимы операторы присваивания

X:=Y; Y:=X; X:=Y+0.5; Y:=3.14159
Пример 1.

Type

Z=array[1..10] of char;

A = array[1..5] of real;

Var

C: Z;

M1, M2: A;

Mas: array[1..4] of byte;

Mat: array[1..5,1..8] of byte;

S: array[(red, green, blue)] of boolean;

Пример 2.

(Задание массивов в виде типизированных констант)

Const

W: array[1..3, 1..4] of byte=

((1, 3, 5, 6),

(1, 0, 2, 2),

(1, 1, 2, 4));

E array[1..6] of integer =(1, 3, 5, -270, 7, 4);

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

  1. Что понимают под массивом данных?

  2. Что называют размерностью массива?

  3. Что понимают под индексом элемента массива?

  4. Какой массив называется одномерным?

  5. Приведите примеры одномерных массивов.

  6. Как описываются одномерные массивы на языке PASCAL?

  7. Как задается диапазон изменения индексов массива?

  8. Как обозначаются индексы массивов на языке PASCAL?

  9. Какие стандартные алгоритмы по работе с одномерными массивами Вы знаете?

  10. Поясните понятия двумерного массива, матрицы.

  11. Что обозначают индексы матрицы?

  12. Сколько элементов в матрице из 7 строк и 9 столбцов?

  13. Дайте понятие квадратной матрицы, диагоналей квадратной матрицы.

  14. Приведите пример описания двумерных массивов на языке PASCAL.

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


Приложение А

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

 

1)       Найти среднее арифметическое всех элементов массива.

2)       Найти наименьший элемент в массиве.

3)       Найти количество положительных элементов массива.

4)       Найти количество отрицательных элементов массива.

5)       Определить, сколько раз встречается число 7 среди элементов массива.

6)       Определить, сколько элементов массива меньше, чем число 6.

7)       Определить, сколько элементов массива больше, чем число 3.

8)       Найти сумму всех неотрицательных элементов массива.

9)       Найти наименьшее из чисел а1, 2а2, 3а3,…, 8а8.

10)  Найти наибольшее из чисел 2а1, 3а2, 4а3,…, 9а8.

11)  Найти сумму а1+2а2+3а3+…+8а8.

12)  Найти наименьший по модулю элемент массива.

13)  Найти разность между наибольшим и наименьшим элементами массива.

14)  Отсортировать массив в порядке убывания элементов.

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

16)  Найти сумму всех элементов массива, имеющих четные индексы.

17)  Найти наибольший из элементов массива, имеющих нечетные индексы.

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

19)  Найти среднее арифметическое всех отрицательных элементов массива.

20)  Найти сумму элементов массива, превышающих число 5.
 
 
 
Приложение В

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

 

1)       Найти наибольший элемент в третьем столбце матрицы.

2)       Найти сумму всех элементов матрицы.

3)       Найти сумму всех положительных элементов матрицы.

4)       Найти наименьший элемент в первой строке матрицы.

5)       Найти среднее арифметическое значение элементов второго столбца матрицы.

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

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

8)       Определить, сколько раз встречается число 5 среди элементов всей матрицы.

9)       Определить, сколько раз встречается число 1 среди элементов третьей строки матрицы.

10)  Найти количество отрицательных элементов в матрице.

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

12)  Найти количество неотрицательных элементов во втором столбце матрицы.

13)  Найти сумму элементов второй строки матрицы.

14)  Найти наибольший элемент в матрице.

15)  Найти наименьший элемент в матрице.

16)  Найти наименьший по модулю элемент в первой строке матрицы.

17)  Найти среднее арифметическое значение всех отрицательных элементов матрицы.

18)  Определить, сколько элементов матрицы превышает число 2.

19)  Расположить все элементы матрицы в строку в порядке возрастания.

20)  Расположить все элементы матрицы в строку в порядке убывания.

Добавить документ в свой блог или на сайт

Похожие:

Лабораторная работа №4 Тема: Структурированные типы данных. Массивы (Array) iconЛабораторная работа №5 тема : Типы данных
Тема: Типы данных. Переменные и константы. Область видимости, время жизни. Преобразование типов

Лабораторная работа №4 Тема: Структурированные типы данных. Массивы (Array) iconЛекция 7 Структурированные типы данных
Число вложений не оговаривается и ограничивается только возможностями носителей информации. К структурированным типам относятся массивы,...

Лабораторная работа №4 Тема: Структурированные типы данных. Массивы (Array) iconПрактическая работа №25 Тема : Типы данных в Delphi
Тема: Типы данных в Delphi. Организация ввода-вывода данных, использование нескольких форм

Лабораторная работа №4 Тема: Структурированные типы данных. Массивы (Array) iconПрактическая работа №26 Тема : Типы данных в Delphi
Тема: Типы данных в Delphi. Организация ввода-вывода, использование нескольких форм

Лабораторная работа №4 Тема: Структурированные типы данных. Массивы (Array) iconЛабораторная работа №1. Тема: Типы данных
Выделить числовые характеристики объекта, выбранного согласно номеру варианта. Для каждой характеристики указать название и тип данных....

Лабораторная работа №4 Тема: Структурированные типы данных. Массивы (Array) iconЛабораторная работа №9 Базовые типы данных, арифметические операции,...
Цель работы: получение практических навыков в работе с типами данных языка C, получение практических навыков в программировании алгебраических...

Лабораторная работа №4 Тема: Структурированные типы данных. Массивы (Array) iconПрактическая работа №20 Тема : Типы данных в Delphi. Организация...
Тема: Типы данных в Delphi. Организация ввода-вывода, использование нескольких форм

Лабораторная работа №4 Тема: Структурированные типы данных. Массивы (Array) iconПрактическая работа №25 Тема : Типы данных в Delphi. Организация...
Тема: Типы данных в Delphi. Организация ввода-вывода, использование нескольких форм

Лабораторная работа №4 Тема: Структурированные типы данных. Массивы (Array) iconЛабораторная работа №5 Тема: Создание форм для ввода данных
Формами называются настраиваемые диалоговые окна, сохраняемые в базе данных в виде объектов специального типа. Формы Access являются...

Лабораторная работа №4 Тема: Структурированные типы данных. Массивы (Array) iconЛабораторная работа №3 Введение в Visual Basic для Word
Типы данных: Byte, Boolean, Integer, Long, Currency (денежный), Decimal, Single (вещественный одинарной точности), Double (вещественный...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
uchebilka.ru
Главная страница


<