Массивы данных в Турбо Паскале

Автор: Пользователь скрыл имя, 28 Октября 2013 в 15:44, курсовая работа

Описание работы

Массив - это именованная группа однотипных данных, хранящихся в последовательных ячейках памяти. Каждая ячейка содержит элемент массива. Элементы нумеруются по порядку, но необязательно начиная с единицы. Массивы состоят из ограниченного числа компонент, причем все компоненты массива имеют один и тот же тип, называемый базовым. Структура массива всегда однородна. Массив может состоять из элементов типа integer, real или char, либо других однотипных элементов. Другая особенность массива состоит в том, что к любой его компоненте можно обращаться произвольным образом. Программа может сразу получить нужный ей элемент по его порядковому номеру (индексу). Индекс - это переменная типа INTEGER. В одномерном массиве элементы массива нумеруются одним индексом. Нужно четко понимать, что индекс ячейки массива не является ее содержимым. Содержимым являются хранимые в ячейках данные, а индексы только указывают на них. Действия в программе над массивом осуществляются путем использования имени переменной, связанной с областью данных, отведенной под массив.

Содержание

Введение…………………………………………………………………………….3
1 Одномерные массивы……………………………………………………………5
2 Двумерные массивы…………………………………………………………….12
Заключение………………………………………………………………………...18
Глоссарий………………………………………………………………………….20
Список использованных источников……………………………………………22
Список сокращений……………………………………………………………….23
Приложения……………………………………………………………………….24

Работа содержит 1 файл

Курсовая Программирование.doc

— 195.00 Кб (Скачать)

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

 

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

 

Двумерный массив в Паскале трактуется как одномерный массив, тип элементов  которого также является массивом (массив массивов). Положение элементов в двумерных массивах Паскаля описывается двумя индексами. Их можно представить в виде прямоугольной таблицы или матрицы. Каждый элемент имеет свой номер, как у одномерных массивов, но сейчас номер уже состоит из двух чисел – номера строки, в которой находится элемент, и номера столбца. Таким образом, номер элемента определяется пересечением строки и столбца. Например, a 21 – это элемент, стоящий во второй строке и в первом столбце.

Описание двумерного массива Паскаля.

Существует несколько способов объявления двумерного массива Паскаля.

Мы уже умеем описывать одномерные массивы, элементы которых могут  иметь любой тип, а, следовательно, и сами элементы могут быть массивами. Рассмотрим следующее описание типов  и переменных:

Пример описания двумерного массива Паскаля

Type

Vector = array [1..5] of <тип_элементов>;

Matrix= array [1..10] of vector;

Var m: matrix;

Мы объявили двумерный  массив Паскаля m, состоящий из 10 строк, в каждой из которых 5 столбцов. При  этом к каждой i -й строке можно обращаться m [ i ], а каждому j -му элементу внутри i -й строки – m [ i , j ].

Определение типов для  двумерных массивов Паскаля можно  задавать и в одной строке:

of <тип элементов>;

Обращение к элементам  двумерного массива имеет вид: M [ i , j ]. Это означает, что мы хотим получить элемент, расположенный в i -й строке и j -м столбце. Тут главное не перепутать строки со столбцами, а то мы можем снова получить обращение к несуществующему элементу. Например, обращение к элементу M [10, 5] имеет правильную форму записи, но может вызвать ошибку в работе программы.

Основные действия с  двумерными массивами Паскаля

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

type

matrix= array [1..5, 1..10] of integer;

var

a , b : matrix ;

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

Ввод двумерного массива  Паскаля

Для последовательного  ввода элементов одномерного  массива использовался цикл for, в котором изменяли значение индекса с 1-го до последнего. Но положение элемента в двумерном массиве Паскаля определяется двумя индексами: номером строки и номером столбца.

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

Рассмотрим пример ввода  двумерного массива Паскаля с  клавиатуры:

type

matrix= array [1..5, 1..10] of integer;

var

a, : matrix;

i, j: integer; { индексы массива }

begin

for i :=1 to 5 do {цикл для  перебора всех строк}

for j :=1 to 10 do {перебор всех  элементов строки по столбцам}

readln ( a [ i , j ]); {ввод с  клавиатуры элемента, стоящего в i -й строке и j -м столбце}

Двумерный массив Паскаля  можно заполнить случайным образом, т.е. использовать функцию random (N), а также  присвоить каждому элементу матрицы  значение некоторого выражения. Способ заполнения двумерного массива Паскаля выбирается в зависимости от поставленной задачи, но в любом случае должен быть определен каждый элемент в каждой строке и каждом столбце.

Вывод двумерного массива  Паскаля на экран

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

Пример программы вывода двумерного массива Паскаля

for i :=1 to 5 do {цикл для  перебора всех строк}

begin

for j :=1 to 10 do {перебор всех  элементов строки по столбцам}

write ( a [ i , j ]:4); {печать  элементов, стоящих в i -й строке матрицы в одной экранной строке, при этом для вывода каждого элемента отводится 4 позиции}

writeln ; {прежде, чем сменить  номер строки в матрице, нужно  перевести курсор на начало  новой экранной строки}

end ;

Двумерный массив (т.е. таблица, матрица, набор векторов) - это пример массива, в котором элементы нумеруются двумя индексами. 
В качестве индекса элемента массива используется выражение порядкового типа  (integer). 
Размер двумерного массива - количество элементов в массиве M*N, где М- число строк, N- число столбцов (натуральные числа).

У любого массива должно быть имя. Пусть у массива будет  имя A, тогда к любой компоненте массива можно обратиться по адресу – A[i,j] или A[i][j], где индекс i – номер строки, а индекс j – номер столбца.

Квадратная матрица – матрица с равным числом строк и столбцов.

Порядок матрицы – число строк (столбцов) квадратной матрицы.

Для квадратной матрицы  вводятся понятия главной и побочной диагонали, которые обладают следующими свойствами: 1) у элементов, лежащих на главной диагонали, номер строки и номер столбца совпадают, т.е. i=j; 2) у элементов, лежащих на побочной диагонали номер строки и номер столбца связаны следующим соотношением, если i – номер строки, то номер столбца j=N-i+1.

Описание двумерного массива

Тип описания массива может быть задан одним из способов:

1) Type  tm1=array[ti2] of tk;  

           tm2=array[ti1] of tm1;  

где tm1 – тип массива, ti2 – тип индекса, tk – тип компонент одномерного массива,

tm2 – тип массива, ti1 – тип индекса, tm1 – тип компонент двумерного массива

Из этого описания видно, что двумерный массив – это одномерный массив, у которого компоненты – одномерный массив.

Так как массивы относятся к произвольным типам, то их можно описывать как через раздел TYPE так и через раздел VAR.

Заполнение двумерного массива

Заполнение по строкам:

А[1,1]

А[1,2]

А[1,3]

А[1,4]

А[1,5]

А[2,1]


Для заполнения матрицы  организуется наружный цикл по i, внутренний – по j (при условии, что i- строки, j –столбцы). При этом индекс строки i меняется медленнее индекса столбца j за счет того, что происходит постепенный перебор всех элементов строки, т.е. столбцов i-й строки.

Заполнение по столбцам:

А[1,1]

А[1,2]

А[2,1]

А[3,1]

A[4,1]


 

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

С  клавиатуры.

Например:

Write(‘Введите число  строк M= ‘); readLn (M);

Write(‘Введите число  столбцов N= ‘); readLn (N);

for i:=1 to M do

begin

   for j:=1 to N do

       begin

           write(‘Введите элемент A[',i,',',j,']=’);

           read(A[i,j]);

      end;

   readLn;           

end;

С  помощью генератора случайных чисел;

randomize;

writeLn(‘Матрица А:’);

FOR i:= 1 to M DO {наружный цикл по строкам}

begin

FOR j:=1 TO N DO {внутренний цикл по столбцам}

begin

A[i,j]:= random(10);

write(A[i,j]:3); {печатаем подряд всю строку}

end;

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

Вывод двумерного массива осуществляется аналогичным образом.

{Вывод матрицы}

writeLn(‘Результирующая  матрица A:’);

for i:=1 to M do               

begin

for j:=1 to N do

write(A[i,j],’ ‘);

writeLn;

end;

 

 

 
 

Заключение

В данной Курсовой работе было рассмотрено основное понятие массивов.

На данный момент мировая  компьютерная индустрия развивается  очень стремительно. Производительность систем возрастает, и поэтому возрастают возможности обработки больших  объёмов данных. С каждым годом программы более усовершенствуются, поэтому работать в них становиться все легче, но, на мой взгляд, программа Турбо Паскаль таит в себе много сложностей, в которых можно долго разбираться, но в ней можно освоить основные приёмы решения задач и составления программ. Вот, например, очень часто в программах встречается ошибка, когда ввод с клавиатуры или вывод на экран массива пытаются осуществить следующим образом: readln (a), writeln (a), где а – это переменная типа массив. В сообщении написано, что переменную этого типа невозможно считать или напечатать. Заполнение и вывод на экран элементов массива также должно осуществляться последовательно и поэлементно, т.к. в памяти ЭВМ элементы массива располагаются в последовательных ячейках, т.е. друг за другом заполняются ячейки.

 Массивы, как и другие элементы программирования, имеют свои достоинства и недостатки. Например, к числу достоинств относится легкость вычисления адреса элемента по индексу, идентичное время доступа к элементам и т.к. они состоят из одного поля – малый размер элементов. Недостатки «идут» на равнее с достоинствами: отсутствие динамики у статического массива, также у него невозможность удаления или добавления элемента без сдвига других массивов;— более низкое быстродействие динамического и гетерогенного массива и дополнительные накладные расходы на поддержку его свойств и угроза выхода за границы массива и повреждения данных в работе с массивом в стиле C , а также при отсутствии дополнительных средств контроля.

Глоссарий

№ п/п

Понятие

Определение

1

Алгоритм

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

2

Диапазон

интервал значений какой-либо величины

3

Индекс

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

4

Массив

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

5

Матрица

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

6

Объект

некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеющая заданные значения свойств (атрибутов) и операций над ними (методов). Как правило, при рассмотрении объектов выделяется то, что объекты принадлежат одному или нескольким классам, которые определяют поведение (являются моделью) объекта. Термины «экземпляр класса» и «объект» взаимозаменяемы.

7

Операция

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

8

Паскаль 

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

9

Переменная

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

10

Цикл 

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

Информация о работе Массивы данных в Турбо Паскале