Краткий курс лекций по основам структурного программирования на языке Pascal
Вид материала | Курс лекций |
СодержаниеТема 9. Массивы в языке Pascal АДвумерный числовой массив А |
- Правила преобразований из одного типа в другой и правила приведения типов в языке Object, 19.03kb.
- Курс лекций по основам программирования Учебно-методическое пособие, 726.7kb.
- Программа элективного курса «Программирование на языке Pascal» 10 класс, 63.48kb.
- Курс «Программирование на языке Turbo Pascal 0» Цель курса, 19.6kb.
- Краткий курс лекций "Основы программирования на языке Паскаль" Основные понятия, 265.68kb.
- Программирование на языке высокого уровня, 59.92kb.
- Структура программы в языке программирования С++. Обмен данными между функциями (параметры, 37.24kb.
- Краткий курс лекций "Основы программирования на языке Паскаль", 291.49kb.
- Структура программы на языке Turbo Pascal, 26.15kb.
- Тематическое планирование кружка на 2009/2010 уч г. «Основы алгоритмизации и программирования, 63.72kb.
Тема 9. Массивы в языке Pascal
Массив – это упорядоченная (пронумерованная) последовательность однотипных элементов. Массив имеет общее для всех элементов имя. Номер элемента массива называют еще его индексом. В качестве индексов можно использовать значения любого порядкового типа. Например:
| А – массив из пяти целых чисел. Индексы элементов – целые числа от 1 до 5. |
| В - массив из 5 вещественных чисел. Индексы элементов – целые числа от 2001 до 2005. |
| C - массив из 5 целых чисел. Индексы элементов – символы от ‘a’ до ‘e’. |
| W – массив из пяти строк. Индексы элементов – целые числа от 1 до 5. |
Доступ к элементам массива осуществляется по индексу, который указывается после имени массива в квадратных скобках. Например, в приведенных выше примерах: A[2]=12, B[2005]=5.9, C[‘d’]=234, W[1+2]=’раму’.
Массивы реализованы практически во всех структурных и объектно-ориентированных языках программирования.
Обработка массивов в языке TurboPascal:
- Описание нового типа данных - массив:
- Описание типа:
- Описание типа:
Type <имя типа>=Array [
- Описание переменной, имеющей тип массив:
Var <имя переменной> : <имя описанного выше типа>;
Например:
Type List = Array [1..30] Of String;
MasNum = Array[1..15] Of Real;
Var Fam, Name : List; { Переменные Fam и Name – массивы строк }
Year, a, b : MasNum; { Переменные Year,
a и b – массивы вещественных чисел }
- Ввод элементов массива:
Для обработки массивов наиболее часто используется оператор цикла со счетчиком For.
Фрагмент программы, позволяющий осуществить ввод значений элементов массива A из N элементов, может быть записан следующим образом:
…
For i := 1 to n do
begin
Write (‘введите ’ , i , ’-ый элемент ’);
Readln ( A[i] )
end;
…
- Заполнение массива случайными числами зачастую используется в учебных (и не только) задачах, для того чтобы не вводить длинные числовые последовательности:
…
Randomize; { инициализация датчика случайных чисел }
For i := 1 to n do
A[ i ] := random(100); { в этом случае значения элементов будут лежать в интервале от 0 до 99 }
…
- Вывод массива на экран:
…
For i := 1 to n do
Writeln( A[i] );
…
- Сортировка массива – это упорядочение его элементов по возрастанию или убыванию. Разработан не один десяток алгоритмов сортировки массива (см. соответствующую литературу). Ниже приведен фрагмент программы, реализующей один из алгоритмов сортировки массива.
Алгоритм сортировки по убыванию состоит в следующем:
- Фиксируем первый элемент массива, сравниваем его со всеми последующими (от 2-го до последнего – n-го), если какой-либо оказывается больше первого, то поменять его местами с первым. В результате таких сравнений и обменов на первом месте в массиве окажется самый большой элемент.
- Зафиксируем второй элемент массива. Будем сравнивать его со всеми последующими (начиная уже с 3-го), и если найдем большие элементы, будем менять их местами со вторым. В результате этих действий на втором месте окажется самый большой элемент массива из оставшихся.
- Зафиксируем третий элемент и повторим описанные выше действия.
- В результате повторения описанных действий (таких повторов будет n-1, т.к. последний элемент сравнивать уже не с чем) массив будет отсортирован по убыванию.
…
For i := 1 to n-1 do
For j := i+1 to n do
If A[ j ] > A[ i ] then
begin { меняем местами i-ый и j-ый элементы массива А }
p := A[ i ]; { для этого используем Ъ
A[ i ] := A[ j ]; { промежуточную переменную p, тип которой }
A[ j ] := p { должен совпадать с типом элементов массива }
end;
…
При сортировке по убывания нужно в тексте программы изменить лишь знак «>» на знак «<».
Размер массива – это количество элементов в нем.
Размерность массива – это количество индексов, которые нужно указать для доступа к элементу массива. Выше были рассмотрены одномерные массивы. Массивы могут быть также двумерными (матрицы, таблицы), трехмерными, и любой другой размерности, необходимой для решения поставленной задачи. Рассмотрим более подробно двумерные массивы.
Двумерный массив можно представить в виде совокупности пронумерованных строк и столбцов:
| 1 | 2 | 3 | 4 | 5 | 6 |
1 | 24 | -57 | 0 | 12 | 1 | 13 |
2 | 103 | 6 | -134 | 2 | 15 | -8 |
3 | 5 | 9 | 24 | -11 | -67 | 91 |
4 | -7 | 10 | 8 | 421 | 36 | -22 |
5 | 11 | 47 | -3 | 14 | 59 | 32 |
А
Двумерный числовой массив А состоит из 5 строк и 6 столбцов. Для того чтобы обратиться к отдельному элементу этого массива, нужно указать после его имени индексы в квадратных скобках через запятую – сначала номер строки, затем номер столбца. Например: А[1,3]=0, А[4,1]= -7, А[4,6]= -22, А[2,5]=15.
Использование двумерных массивов в программах на языке TurboPascal:
- Описание двумерного массива:
- Описание типа:
- Описание типа:
Type <имя типа> = Array [
- Описание переменной, имеющей тип массив:
Var <имя переменной> : <имя описанного выше типа>;
Например:
Type Mas2 = Array [1..5, 1..6] Of Integer;
Var a : Mas2;
{Переменная a – двумерный массив целых чисел, в котором 5 строк и 6 столбцов}
- Ввод элементов массива:
Для обработки двумерных массивов наиболее часто используется вложенные циклы (цикл по строкам и цикл по столбцам, или элементам строки).
Фрагмент программы, позволяющий осуществить ввод значений элементов массива A из N строк и М столбцов, может быть записан следующим образом:
…
For i := 1 to n do
For j := 1 to m do
begin
Write ( ‘A [ ‘ , i , j , ’ ] = ‘);
Readln ( A[i , j] )
end;
…
- Вывод массива на экран в виде прямоугольной матрицы (таблицы):
…
For i := 1 to n do
begin
For j:=1 to m do
Write ( A[i , j] : 3 ); {выводим все элементы i-ой строки массива в одну
строку на экране}
Writeln { переводим на экране курсор на следующую строку}
end;
…