Массивы

Автор работы: Пользователь скрыл имя, 26 Декабря 2011 в 15:37, курсовая работа

Краткое описание

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

Содержание работы

Введение…………………………………………………………………………….3

1. Виды массивов…………………………………………………………………...6

1.1. Одномерные массивы……………………………………………………….6

1.2. Примеры задач………………………………………………………………7

1.3. Двумерные массивы………………………………………………………...8

1.4. Пример задачи……………………………………………………………..15

2. Сортировка, параметры-массивы и параметры–строки …………………......17

2.1. Метод простых обменов (Пузырьковая сортировка)……………………17

2.2. Сортировка простым выбором……………………………………………18

2.3. Сортировка простым включением (Метод вставки и сдвига)…………..19

2.4. Параметры-массивы и параметры-строки………………………………20

Заключение………………………………………………………………………...24

Глоссарий…………………………………………………………………………26

Список использованных источников

Приложения

Содержимое работы - 1 файл

Курбанов Д.Н., КР, Программирование на языках высокого уровня.doc

— 198.50 Кб (Скачать файл)

     7 0 -4 3 1 -2 5

     -4 7 0 -2 3 1 5

     -4 -2 7 0 1 3 5

     -4 -2 0 7 1 3 5

     -4 -2 0 1 7 3 5

     -4 -2 0 1 3 7 5

     -4 -2 0 1 3 5 5 

     Фрагмент:

     For i:=2 to n do

     For j:=n downto i do

     if v[j] <v[j-1] then

     begin

     x:=v[j];

     v[j]:=v[j-1];

     v[j-1]:=x;

     end; 

     2.2 Сортировка простым  выбором

     Идея  метода: весь массив просматривается  несколько раз и на каждом шаге ищется минимальный элемент и  запоминается его порядковый номер. Затем найденный минимальный  элемент меняется значением с  первым, вторым, третьим и т.д. предпоследним  элементом массива и исключается из рассмотрения 

     7 0 -4 3 1 -2 5

     -4 0 7 3 1 -2 5

     -4 -2 7 3 1 0 5

     -4 -2 0 3 1 7 5

     -4 -2 0 1 3 7 5

     -4 -2 0 1 3 5 7

     For i:= to n do

     Begin

     min:=v[i];

     ind :=i;

     for j:= i to n-1 do

     if v[j]<min then

     bedin

     min:=v[j];

     ind:=j;

     end;

     x:=v[i];

     v[i]:=v[ind];

     v[ind]:=x;

     end; 

     2.3 Сортировка простым  включением (Метод  вставки и сдвига) 

     Идея  метода: делается предположение, что  первые р элементов массива уже  упорядочены и рассматривается  р+1 элемент. Если окажется, что он меньше чем какой либо из первых р, то он занимает место большего, а участок массива ограниченный его новым местом и старым смещается в право. 

     7 0 -4 3 1 -2 5

     0 7 -4 3 1 -2 5

     -4 0 7 3 1 -2 5

     -4 0 3 7 1 -2 5

     -4 0 1 3 7 -2 5

     -4 -2 0 1 3 7 5

     -4 -2 0 1 3 5 7 

     For i:=2 to n do

     For j:=1 to i-1 do

     if v[i]<v[j] then

     begin

     x:=v[i];

     for h:=1 downto j+1 do

     v[h]:=i[h-1];

     v[j]:=x;

     end. 

     2.4. Параметры - массивы  и параметры –  строки

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

     Procedure S (a: array [1..10] of Real);

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

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

     type

     atype = array [1..10]of Real;

     Procedure S (a: atype); 

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

     type

     intype = String [15] ;

     outype = String [30] ;

     Function St (s : intype): outype;

     Требование  описать любой тип-массив или  тип-строку перед объявлением подпрограммы на первый взгляд кажется несущественным. Действительно, в рамках простейших вычислительных задач обычно заранее известна структура всех используемых в программе данных, поэтому статическое описание массивов не вызывает проблем. Однако разработка программных средств универсального назначения связана со значительными трудностями. По существу, речь идет о том, что в Турбо Паскале невозможно использовать в подпрограммах массивы с "плавающими" границами изменения индексов. Например, если разработана программа, обрабатывающая матрицу 10х10 элементов, то для обработки матрицы 9x11 элементов необходимо переопределить тип, т.е. перекомпилировать всю программу (речь идет не о динамическом размещении массивов в куче, а о статическом описании массивов и передаче их как параметров в подпрограммы). Этот недостаток, как и отсутствие в языке средств обработки исключительных ситуаций (прерываний), унаследован из стандартного Паскаля и представляет собой объект постоянной и вполне заслуженной его критики. Разработчики Турбо Паскаля не рискнули кардинально изменить свойства базового языка, но, тем не менее, включили в него некоторые средства, позволяющие в известной степени смягчить отмеченные недостатки. Эти недостатки практически полностью устранены в языке Object Pascal, используемом в визуальной среде программирования Delphi.

     Прежде  всего, в среде Турбо Паскаля  можно установить режим компиляции, при котором отключается контроль за совпадением длины фактического и формального параметра-строки. Это позволяет легко решить вопрос о передаче подпрограмме строки произвольной длины. При передаче строки меньшего размера формальный параметр будет иметь ту же длину, что и параметр обращения; передача строки большего размера приведет к ее усечению до максимального размера формального параметра. Следует сказать, что контроль включается только при передаче строки, объявленной как формальный параметр-переменная. Если, соответствующий параметр объявлен параметром-значением, эта опция игнорируется и длина не контролируется.

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

     Открытый  массив представляет собой формальный параметр подпрограммы, описывающий базовый тип элементов массива, но не определяющий его размерности и границы:

     Procedure MyProc(OpenArray: array of Integer);

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

     {Иллюстрация  использования открытых массивов: программа выводит на экран  содержимое двух одномерных массивов разной длины с помощью одной процедуры ArrayPrint}

     Procedure ArrayPrint(aArray: array of Integer);

     var

     k: Integer;

     begin

     for k := 0 to High(aArray) do

     Write(aArray[k]:8);

     WriteLn

     end;

     const

     A:array [-1..2] of Integer = (0,1,2,3);

     B: array [5..7] of Integer = (4,5,6);

     begin

     ArrayPrint(A);

     ArrayPrint(B)

     end.

     Как видно из этого примера, фактические  границы массивов А и В, передаваемых в качестве параметров вызова процедуре ArrayPrint, не имеют значения. Однако размерность  открытых массивов (количество индексов) всегда равна 1 - за этим следит компилятор. Если бы, например, мы добавили в программу двумерный массив С

     var

     С: array [1..3,1..5] of Integer;

     то  обращение

     ArrayPrint(С)

     вызывало  бы сообщение об ошибке

     Error26: Type mismatch.

     (Ошибка 26: Несоответствие типов.)

     Заключение

 

     На  данный момент мировая компьютерная индустрия развивается очень стремительно. Производительность систем возрастает, а следовательно возрастают возможности обработки больших объёмов данных. Операционные системы класса MS-DOS уже не справляются с таким потоком данных и не могут целиком использовать ресурсы современных компьютеров. Поэтому эта операционная система больше нигде широко не используется. Все стараются перейти на более совершенные операционные системы, какими являются UNIX и Windows. Но из-за “непопулярности”, UNIX мало кто использует эту операционную систему. Во всем мире все, начиная от домохозяек и заканчивая корпоративными пользователями, пользуются Windows 9x.

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

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

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

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

     Глоссарий

№ п/п Понятие Определение
1. Массив это упорядоченный  набор фиксированного количества некоторых значений.
2. Одномерный  массив это фиксированное  количество элементов одного и того же типа, объединенных одним именем, где каждый элемент имеет свой номер.
3. Двумерный массив двумерным массивом называется таблица, состоящая из строк и столбцов.
4. Квадратная  матрица квадратной  называется такая матрица, в которой  количество строк равно количеству столбцов. Выделяют следующие элементы квадратной матрицы:

главная диагональ;

побочная  диагональ;

элементы, расположенные выше главной диагонали;

элементы, расположенные ниже главной диагонали;

элементы, расположенные выше побочной диагонали;

элементы, расположенные ниже побочной диагонали

5. Транспонированная матрица транспонированной матрицей называется матрица, у которой  столбцы соответствуют строкам исходной квадратной матрицы. При этом элементы главной диагонали исходной и транспонированной матриц, одни и те же.
6. Метод простых обменов (Пузырьковая  сортировка) весь массив рассматривается несколько раз, причем при каждом рассмотрении сравниваются значения 2-х соседних элементов. Если они стоят в неправильном порядке, то производится их перестановка. Так происходит до тех пор, пока не будет выполнено ни одной перестановки. Метод называют пузырьковой сортировкой потому что меньшие значения элементов постепенно "всплывают", как пузырьки воздуха в воде, перемещаясь в начало массива, а "тяжелые" элементы "оседают на дно".
7. Сортировка  простым выбором весь массив просматривается несколько раз  и на каждом шаге ищется минимальный элемент и запоминается его порядковый номер. Затем найденный минимальный элемент меняется значением с первым, вторым, третьим и т.д. предпоследним элементом массива и исключается из рассмотрения.
8. Сортировка  простым включением (Метод  вставки исдвига) делается предположение, что первые р элементов массива  уже упорядочены и рассматривается  р+1 элемент. Если окажется, что он меньше чем какой либо из первых р, то он занимает место большего, а участок  массива ограниченный его новым  местом и старым смещается в право.
9. Открытый  массив открытый массив представляет собой формальный параметр подпрограммы, описывающий базовый  тип элементов массива, но не определяющий его размерности и границы.
10. Подпрограмма это отдельная  функционально независимая часть  программы.
11. Компилятор системная программа, выполняющая преобразование программы, написанной на одном алгоритмическом  языке, в программу на языке, близком  к машинному, и в определенном смысле эквивалентную первой.

Информация о работе Массивы