Способы описания двумерного массива

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

Государственное образовательное учреждение

профессионального образования

«Санкт-Петербургский государственный университет

Аэрокосмического приборостроения»

Факультет № 12 (СПО) колледж

 

 

Методические указания

Для студентов заочной формы обучения

по дисциплине: «Основы алгоритмизации и программирования»

для специальности 230105 «Программное обеспечение вычислительной техники и автоматизированных систем»

 

Составители:

                       Рохманько И.Л.

 

 

Санкт-Петербург

201

Введение

   

Тема 2.5 Массивы

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

Массив определяется именем (идентификатором), размером и размерностью. Имя массива является единым для всех его элементов. Размерность массива определяется количеством индексов. Индексы необходимы для указания местоположения элемента. В качестве индекса может использоваться любой порядковый тип, кроме longint. По размерности массивы бывают:

- одномерные;

- двумерные;

- многомерные.

Контроль правильности значений индексов осуществляется с помощью директивы компилятора R.  По умолчанию директива R находится в пассивном состоянии{$R-}.

Размер массива определяется верхними границами индексов. Число элементов массива в языке Pascal фиксируется при описании и в процессе выполнения программы не меняется.

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

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

 

В одномерном массиве все элементы как бы вытянуты в одну линию и расположены по возрастанию порядковых номеров. Элемент одномерного массива – это переменная с одним индексом. Например: А[i], Mas[r+2], D[3].

 

Способы описания одномерного массива

 

1). Typeимя типа = array [диапазон индекса] of тип элементов;

     Var  имя массива : имя типа;

 

2). Varимя массива : array [диапазон индекса] of тип элементов;

 

где, array of– «массив из» - служебные слова;

тип элементов – любой простой и структурированный;

диапазон  индекса – диапазон изменения индекса.

Например: Type massiv=array[1..20] of real;

           Var A:massiv;

                   B: array [1..9] of char;

 

Ввод элементов массива

I=1,N,1
Ввод A[i]
выход
Ввод N

Рrogram vvod; Const N=10; Type mas=array[1..N] of real; Var a:mas; i: integer: Begin Writeln(‘Введите элементы массива’); For i:=1 to N do Begin Wtite(‘a[‘,i,’]=’); Readln( a[i]) End; … End.

Пример1:

Составить программу для нахождения наибольшего элемента одномерного массива х, содержащего 15 элементов.

начало
i=1,15,1
Ввод x[i]
Вывод max
конец
max=x[1]
i=1,15,1
max<x[i]
max=x[i]

   
big=x[i]
Big<x[i]
i=1,15,1
big=x[1]

Programmas_1; var i:integer; max:real; x: array[1..15] ofreal; begin  fori:=1 to15 do  begin  write (' x [',i:2,']=');  readln(x[i]);  end;  max:=x[1];  fori:=2 to15 do ifmax <x[i] thenmax :=x[i];  writeln('max = ',max:7:2)  end.   Резуььтат решения задачи x [ 1]=1 x [ 2]=2 x [ 3]=3 x [ 4]=4 x [ 5]=5 x [ 6]=4 x [ 7]=3 x [ 8]=5 x [ 9]=6 x [10]=4 x [11]=3 x [12]=5 x [13]=6 x [14]=4 x [15]=5 max = 6.00

 

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

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

Сдвиги бывают арифметические и циклические.При арифметическом сдвиге часть элементов теряется, а при циклическом сдвиге элементы массива только меняют свое местоположение.

 

До сдвига вправо
1
33
2

 

 


a[1] a[2] a[3] a[4] a[5]

 

 

p

 

P:=a[n];

For i:=n downto 2 do

A[i]:=a[i-1];

A[1]:=P;

 

После сдвига вправо

a[5] a[1] a[2] a[3] a[4]

Пример2: В одномерном массиве, содержащем N элементов, осуществить циклический сдвиг элементов на 1 вправо (или влево). Для определения направления сдвига будем использовать переменную j. Если значение переменной j=0, то осуществляется циклический сдвиг элементов массива на единицу вправо, в противном случае – влево.

 

programpr;

Type

masiv = array[1..15] ofinteger;

vari,key,j,n:integer;

mas:masiv;

Begin

writeln('Введите количество элементов ');

readln(n);

fori:=1 ton do

Begin

writeln('Введите Mas[',i,']');

readln(mas[i]);

end;

writeln('Введите 0 для сдвига вправо ,или 1 -влево');

readln(j);

if(j=0) then

Begin

key:=mas[n];

fori:=n downto2 do

mas[i]:=mas[i-1];

mas[1]:=key;

End else

Begin

key:=mas[1];

fori:=1 ton-1 do

mas[i]:=mas[i+1];

mas[n]:=key;

end;

write('Mas[ ');

fori:=1 ton do

write(mas[i],' ');

write(']');

end.

 

Введите количество элементов

5

Введите Mas[1]

1

Введите Mas[2]

2

Введите Mas[3]

3

Введите Mas[4]

4

Введите Mas[5]

5

Введите 0 для сдвига вправо , или 1 -влево

0

Mas[ 5 1 2 3 4 ]

 

Пример3:

Рассортировать элементы одномерного массива по возрастанию методом пузырька.

Для этого сравниваются соседние элементы массива mas[j] и mas[j+1]. Если

mas [j]>mas[j+1] , то эти элементы меняются местами через дополнительную переменную  key.

 

  programpr; type masiv = array[1..15] ofinteger; vari,key,j,n:integer; mas:masiv; begin writeln('Введите количество элементов '); readln(n); fori:=1 ton do begin writeln('Введите Mas[',i,']'); readln(mas[i]); end; i:=1; whilei=1 do begin i:=0; forj:=1 ton-1 do  ifmas [j]>mas[j+1] then  begin  key:=mas[j];  mas[j]:=mas[j+1];  mas[j+1]:=key;  i:=1;  end;  end;  write('Mas[ '); fori:=1 ton do write(mas[i],' '); write(']'); end.   Введите количество элементов 4 Введите Mas[1] 4 Введите Mas[2] 2 Введите Mas[3] 6 Введите Mas[4] 2 Mas[ 2 2 4 6 ]  

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

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

Например: А[I,J], Mas[r+2,c-1], D[3,4].

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

Направление изменения второго индекса

(номера столбца)

 


                                          j=  1       2           3 . . .            n

f        
         
         

Направление изменения     i = 1

первого индекса                   …

(номера строки)                  к

 А[2,3] или А[i,j] ( если i=2 и j=3)

 

Матрица в которой количество строк и столбцов равны называется правильной.

У правильной (квадратной) матрицы есть главная и побочная диагональ. Элемент главной диагонали имеет одинаковые индексы и обозначается F[x,x], а побочной- F[x,n-x+1] (где n- количество строк и столбцов)

главная


                                  

F[1,1]      
  F[2,2]    
    F[3,3]  

 

побочная

 


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

Способы описания двумерного массива

 

1). Typeимя типа = array [1..K, 1..N] of тип элементов;

     Var  имя массива : имя типа;

2). Varимя массива : array [диапазон 1 индекса, диапазон 2 индекса] of тип элементов;

где  array, of– «массив из» - служебные слова;

  тип элементов – любой простой или структурированный;

 K – максимальное количество строк;

N - максималькое количество столбцов.

Например:    Соnst K= 4; N= 6;

      Type massiv=array[1..20, 1..5] of real;

             Var A:massiv;

                   B: array [1..K, 1..N] of char;

 

Ввод элементов массива

 

Ввод N,K
j=1,N,1
Ввод A[i,j]
i=1,K,1
                                                      Рrogram vvod;

                       Type mas=array[1..10,1..10] of real;

                     Var a:mas;

                        N,K i,j: integer:

                     Begin

                     Write(‘Введите количество строк -’);

                     Readln(K);

Writeln(‘Введите количество столбцов- ’);

                      Readln(N);

                      Writeln(‘Введите элементы массива ’);

                          For i:=1 to K do

                           For j:=1 to N do

                          Begin

                          Write(‘a[‘,i,’,’,j,’]=’);

                          Readln( a[i,j])

                          End;

Обработка введенного массива

                          . . .

 

                     End.                      

                            

Вывод элементов массива

 

For i:=1 to k do

Begin

     For j:=1 to n do

     Write ( a[i,j], ‘ ‘);

     Writeln

End;

 

programpr; type masiv = array[1..15,1..15] ofinteger; vari,max,j,n1,n2,p1,p2:integer; mas:masiv; begin writeln('Введите количество строк и столбцов '); readln(n2,n1); fori:=1 ton2 do forj:=1 ton1 do begin writeln('Введите Mas[',i,',',j,']'); readln(mas[i,j]); end; max:=mas[1,1]; p1:=1;{p1,p2-координаты макс.элемента} p2:=1; fori:=1 ton2 do forj:=2 ton1 do ifmas[i,j]>max then            begin            max:=mas[i,j];            p1:=i;            p2:=j;            end; writeln('Mas[',p1,',',p2,'] = ',max); end.   Введите количество строк и столбцов 3 3 Введите Mas[1,1] 2 Введите Mas[1,2] 4 Введите Mas[1,3] 5 Введите Mas[2,1] 6 Введите Mas[2,2] 3 Введите Mas[2,3] 2 Введите Mas[3,1] 1 Введите Mas[3,2] 6 Введите Mas[3,3] 4   Mas[2,1] = 6    

Пример 4:

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

Тема 2.6 Подпрограммы: процедуры и функции

 

При создании сложной программ возникает необходимость декомпозиции (разделении) ее на подзадачи. Тurbo Pascal имеет различные средства для деления программы на части. На верхнем уровне (больших задач) – это модули, на нижнем уровне (элементарных подзадач) – это процедуры и функции.

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

Например: Readln(x), Delete(St, 5, 2)

Функция предназначена для вычисления какой-либо скалярной (простой) величины. Имя функции может входить в выражение как операнд. В теле функции имени функции хотя бы раз должно быть присвоено значение.

Например: Ord(‘F’), Sqrt(a+b)

 

Все процедуры и функции языка Тurbo Pascal делятся на две группы:

- встроенные (стандартные) - хранятся в стандартных библиотечных модулях ;

- пользовательские - описываются в разделе описаний головной программы.


Дата добавления: 2018-06-01; просмотров: 2200; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!