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

Автор работы: Пользователь скрыл имя, 07 Февраля 2013 в 06:04, курсовая работа

Описание

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

Работа состоит из  1 файл

массивы.doc

— 284.00 Кб (Скачать документ)

 

Оглавление

 

 

 

Введение

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

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

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

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

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

В данной работе будет  рассмотрены способы работы с  массивами и организации циклов в языке высокого уровня Object Pascal.

 

2. Основная часть

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

Для лучшего понимания  принципов и способов работы с  массивами необходимо провести следующие  исследования:

В первой части:

- Изучить синтаксические  конструкции языка, описывающие  массив

- Изучить способы создания массива, способы первичного заполнения массива

- Изучить способы и  механизмы получения элемента  массива по его индексу

- Изучить способы изменения  элемента с указанным индексом.

Во второй части:

- Изучить синтаксис  циклических операторов

- Рассмотреть различные  способы организации циклов, обозначить  особенности различных операторов  организации цикла

- Рассмотреть возможность  применения каждого оператора  для работы с массивом

В третьей, практической части:

- Составить программу,  работающую с массивами и использующую операторы организации циклов

В этой работе рассматривается некоторые конструкции языка высокого уровня, который уже создан, эти конструкции реализованы программистами, создавшими компилятор и среду разработки.

 

2.2 Массивы

      1. Определение массивов

Массив — это последовательность величин одного типа, обозначаемая одним именем. Каждое из значений, составляющих массив, называется элементом массива. Элементы массива располагаются в последовательных ячейках памяти. Индекс – номер элемента массива. Количество индексов массива определяет его размерность. Самой простой является линейная таблица, в которой для точного указания на элемент данных достаточно знания только одного числа (индекса).[2] Удобно использовать массивы для хранения и обработки однотипных данных (целочисленных значений, строк, дат и т.п.). Например, можно создать массив для хранения значений температуры в течение года. Вместо создания множества (365) переменных для хранения каждой температуры, temperature1, temperature2, temperature3, … temperature365 можно использовать один массив с именем temperature, где каждому значению будет соответствовать порядковый номер (табл. 1).

Таблица 1

Массив значений температур

№ элемента

1

2

3

364

365

температура

-11

-15

-20

 

-30

-15


 

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

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

Таблица 2

Двумерный числовой массив

 

Номера столбцов

1

2

3

4

Номера строк

1

5.555

7.000

4.300

-3.400

2

-1.000

7.522

8.000

44.000

3

12.000

8.000

2222.000

-10.234


 

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

Для описания массива  служат служебные слова array of. Размер массива не может быть меньше одно элемента. Это свойство массива называется «нулевой барьер». Описать массив можно двумя способами:

Ввести новый тип данных, а  потом описать переменные нового

типа. В этом случае формат оператора  type следующий:

type имя_типа = array [тип_индекса] of тип_компонентов;

В качестве типа_индекса следует использовать перечислимый тип, тип_компонентов — это любой ранее определенный тип данных, например:

type

massiv=array[0..11] of real;

//Тип данных massiv из 12 элементов,

//элементы нумеруются  от 0 до 11.

dabc=array[-3..6] of integer; 

//Тип данных dabc из 10 элементов,

//элементы нумеруются  от -3 до 6.

var

x,y:massiv;

z: dabc;

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

var

переменная: array [тип_индекса] of тип_переменной;

Например:

var

z, x: array[1..25] of word;

//Массивы z и x из 25 значений  типа word,

//элементы нумеруются  от 1 до 25.

g:array[-3..7] of real;

//Массив g из 11 значений типа real,

//которые нумеруются от -3 до 7.

Для описания массива можно использовать предварительно определенные константы:

const

n=10;

m=12;

var 

a: array[1..n] of real;

b: array[0..m] of byte;

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

type

massiv=array[1..200] of real;

matrica=array[1..300] of massiv;

var

ab:matrica;

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

Type

matrica = array [1..300,1..200] of real;

var

ab:matrica;

или

var ab:array [1..300,1..200] of real;

При всех трех определениях мы получали матрицу вещественных чисел, состоящую из 300 строк и 200 столбцов. Аналогично можно ввести трехмерный массив, или массив большего числа измерений[3]:

type

abc=array [1..4,0..6,-7..8,3..11] of real;

var b:abc;

При решении различных  задач возникает необходимость оперировать некоторыми данными. Это могут быть числа, символы, строки, наборы строк. Например, для описания учетной карточки студента необходимо оперировать такими данными, как фамилия, имя студента – строка, пол – символ, дата рождения – дата, номер курса - число. Соответственно можно составить набор переменных, описывающих карточку студента для рассматриваемого примера:

Name: string;  - имя студента,

Family: string; - фамилия,

Gender: char; - пол,

BirthYear, BirthMon, BirthDay: word; - дата рождения,

Course: integer; - номер курса.

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

Type

RStudent = record

Name: string;

Family: string;

Gender: char;

BirthYear, BirthMon, BirthDay: word;

Course: integer;

End;

Как быть со списком студентов? Заводить для каждого студента переменную типа Student – а сколько переменных заводить? Конечно, по количеству студентов в группе на факультете:10, 15 или 25. Получится примерно такой набор переменных:

Student1: RStudent; - фамилия первого студента в группе,

Student2: RStudent; - фамилия второго студента в группе,

StudentN: RStudent;- фамилия N-го студента в группе.

Вполне реализуемо, и  можно работать. Первая сложность  возникнет, когда потребуется отсортировать  студентов по алфавиту, не надеясь на то, что введены студенты, были в алфавитном порядке. А ведь состав группы может измениться.

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

 

2.2.3 Способы первичного заполнения массива

Для создания массива, содержащего названия месяцев года можно использовать такую конструкцию:

var

Months: array [1..12] of string;

Begin

Months[1] = ‘январь’;

Months[2] = ‘февраль’;

Months[3] = ‘март’;

. . .

Months[12] = ‘декабрь’;

End;

В разделе программы объявления переменных был объявлен массив Months, содержащий 12 строк.

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

Можно задать массив при объявлении переменной в разделе Var или константой в разделе Const. В последнем случае буден определён массив констант и при попытке присвоения значения его элементам компилятор будет выдавать ошибку присвоения:

var

Months: array [1..12] of string = ('январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь');

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

 

 

2.2.4 Способы и механизмы получения элемента массива по его индексу

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

Months[5] – будет получено название 5-го месяца: ‘май’.

Пример процедуры для  получения текущей даты

Var

Months: array [1..12] of string[10] = ('январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь');

Y, M, D, Dow: word;

Days : Array [0..6] Of String[11] = ('Воскресенье', 'Понедельник', 'Вторник',  'Среда', 'Четверг', 'Пятница', 'Суббота');

Result: string;

Begin

GetDate ( Y, M, D, Dow );

Result := ‘Сегодня ’.D.’ ‘.Months[M].’ ‘.Y.’, ‘.Days[Dow];

End;

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

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

сonst

  Imax=10;

  Jmax=20;

var

  Mas: array[1..Imax, 1..Jmax] of integer;

Теперь для изменения размеров массива Mas и всех операторов программы, связанных с этими размерами, достаточно отредактировать только одну строку в программе — раздел констант[4].

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

const

   Imin=1;

  Imax=10;

var

   i : integer;

   Mas: array[Imin..Imax] of integer;

for i:=Imin to Imax do оператор;

for i:=Imax downto Imin do оператор;

//пример для while

i:=Imin;

while i <=Imax do

begin

   Оператор1;

   …

   ОператорN;

   …

   i :=i +1;

end;

//пример для repeat…until

i:=Imin;

repeat

   Оператор1;

   …

   ОператорN;

   …

   i :=i +1;

until i=Imax;

При выходе индекса за границы массива будет выдано сообщение об ошибке обращения к несуществующему элементу массива.

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