Лекция по теме "Массивы" ABC Pascal

Лекция по теме "Массивы" ABC Pascal.

Содержимое разработки

МИНИСТЕРСТВО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ, ПОДГОТОВКИ И РАССТАНОВКИ КАДРОВ РЕСПУБЛИКИ САХА (ЯКУТИЯ) ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ПРОФЕССИОНАЛЬНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ РЕСПУБЛИКИ САХА (ЯКУТИЯ) «РЕГИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ КОЛЛЕДЖ В Г.МИРНОМ» Язык программирования Pascal Массивы

МИНИСТЕРСТВО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ, ПОДГОТОВКИ И РАССТАНОВКИ КАДРОВ РЕСПУБЛИКИ САХА (ЯКУТИЯ)

ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ПРОФЕССИОНАЛЬНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ РЕСПУБЛИКИ САХА (ЯКУТИЯ)

«РЕГИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ КОЛЛЕДЖ В Г.МИРНОМ»

Язык программирования Pascal

Массивы

Массив

Массив

  • Массив – последовательность, состоящая из фиксированного числа однотипных элементов.
  • Все элементы массива имеют общее имя (имя массива) и различаются индексами. Индексы можно вычислять, их тип должен быть ординальным.
  • При описании массивов используются служебные слова array и of.
  • В описании массива указывается тип его элементов и типы их индексов.
Массив

Массив

  • Type = array [] of
  • Тип элементов – произвольный, он может быть составным. Число типов индексов называется размерностью массива после описания типа массива конкретные массивы можно задать в разделе описания переменных.
Массив Type vector = array [1..10] of real; Table = array[‘A’..’Z’,’1..5’] of integer; Var a,b:vector; C:table;

Массив

Type vector = array [1..10] of real;

Table = array[‘A’..’Z’,’1..5’] of integer;

Var a,b:vector;

C:table;

Массив A[7]:=3.1; B[k*k+1]:=0; C[‘m’,3]:=-14;

Массив

A[7]:=3.1;

B[k*k+1]:=0;

C[‘m’,3]:=-14;

Массив Описание массива можно совместить с описанием соответствующих переменных. Var a,b:array [1..10] of real; D:array [byte] of char;

Массив

Описание массива можно совместить с описанием соответствующих переменных.

Var a,b:array [1..10] of real;

D:array [byte] of char;

Массив Const : =()

Массив

Const : =()

Массив Каждый одномерный массив определяется именем и числом переменных (одномерный массив): массив (1:3), состоящий из 3 элементов – А(1)=1, А(2)=8, А(3)=6

Массив

Каждый одномерный массив определяется именем и числом переменных (одномерный массив):

массив (1:3), состоящий из 3 элементов – А(1)=1, А(2)=8, А(3)=6

Массив var ch: array [1..11] of  char ;  h: char ;  i: integer ;   begin  for i := 1 to 11 do read (ch[i]);   for i := 1 to 11 do write (ch[i]:3);   readln end .

Массив

var ch: array [1..11] of char ;

h: char ;

i: integer ;

  begin

for i := 1 to 11 do read (ch[i]);

  for i := 1 to 11 do write (ch[i]:3);

  readln

end .

Массив

Массив

  • Одномерный массив можно представить как линейную структуру, в которой элементы следуют друг за другом.
  • Однако бывают более сложные структуры данных. Например, двумерные массивы, которые можно описать как таблицу, в ячейках которой располагаются значения.
  • Для обращения к данным массива указывается номера их строк и столбцов. Часто табличные массивы называют матрицами.
Массив array [1..m, 1..n] of базовый_тип

Массив

array [1..m, 1..n] of базовый_тип

  • При этом описание может быть в разделе type и тогда создается новый тип, который можно использовать при объявлении переменных. Или массив может быть описан непосредственно в разделе переменных. m и n – это константы, их можно опустить и вставить конкретные значения, но лучше так не делать.
  • Обычно подразумевают, что в интервале от 1 до m определяется количество строк, а в интервале от 1 до n – количество столбцов массива.
Массив 1 вариант – описание массива через раздел type: const  M = 10;  N = 5; type  matrix = array [1..M, 1..N] of  integer ; var  a: matrix; 2 вариант – описание массива в разделе переменных: const  M = 10;  N = 5; var  a: array [1..M, 1..N] of  integer ;

Массив

1 вариант – описание массива через раздел type:

const

M = 10;

N = 5;

type

matrix = array [1..M, 1..N] of integer ;

var

a: matrix;

2 вариант – описание массива в разделе переменных:

const

M = 10;

N = 5;

var

a: array [1..M, 1..N] of integer ;

Массив var  matrix: array [1..3,1..5] of  integer ;  i, j: integer ; begin  writeln ('Введите 15 чисел: ');   for i := 1 to 3 do  for j := 1 to 5 do  read (matrix[i,j]);   for i := 1 to 3 do  begin  for j := 1 to 5 do  write (matrix[i,j], ' ');  writeln  end ;   readln end .

Массив

var

matrix: array [1..3,1..5] of integer ;

i, j: integer ;

begin

writeln ('Введите 15 чисел: ');

  for i := 1 to 3 do

for j := 1 to 5 do

read (matrix[i,j]);

  for i := 1 to 3 do begin

for j := 1 to 5 do

write (matrix[i,j], ' ');

writeln

end ;

 

readln

end .

Массив const  M = 3;  N = 5;   var  matrix: array [1..M,1..N] of  integer ;  i, j: integer ;   begin  writeln ('Введите 15 чисел: ');  for i := 1 to M do  for j := 1 to N do  read (matrix[i,j]);   for i := 1 to M do  begin  for j := 1 to N do  write (matrix[i,j]:5);  writeln  end ; readln end .

Массив

const

M = 3;

N = 5;

  var

matrix: array [1..M,1..N] of integer ;

i, j: integer ;

  begin

writeln ('Введите 15 чисел: ');

for i := 1 to M do

for j := 1 to N do

read (matrix[i,j]);

  for i := 1 to M do begin

for j := 1 to N do

write (matrix[i,j]:5);

writeln

end ;

readln

end .

Массив   При описании открытого массива (в разделе type или var ) указывается тип элементов, из которых он состоит (например, real , char и др.), но не указываются границы индексов. Например: mas1: array of real; mas2: array of integer;

Массив

  При описании открытого массива (в разделе type или var ) указывается тип элементов, из которых он состоит (например, real , char и др.), но не указываются границы индексов.

Например:

mas1: array of real;

mas2: array of integer;

Массив

Массив

  • Особенностью открытых массивов является то, что их индексы всегда начинаются с нуля (а не с единицы, которая чаще всего используется для обычных массивов).
  • Чтобы в программе выделить память под открытый массив, следует воспользоваться процедурой setlength , которая принимает два фактических параметра – имя открытого массива и устанавливаемое количество элементов в нем.
Массив

Массив

  • В результате работы setlength в памяти выделяется столько байт, сколько необходимо для хранения n-го количества элементов определенного типа. Так, если массив ранее описан как real и задано 5 элементов, то процедура setlength выделит под него 40 байт, т.к. для хранения каждого числа типа real требуется 8 байт памяти (хотя не обязательно 8, это может зависеть от компилятора).
Массив

Массив

  • Функция high принимает в качестве параметра имя массива и возвращает индексный номер последнего элемента массива. Например, выделяется память под десять элементов открытого массива; значит, индекс последнего будет равен 9 (т.к. индексация начинается с 0), что и вернет функция high .
  • Чтобы освободить, выделенную под массив память, используется оператор nil .
Массив

Массив

  • Обычно открытые массивы используются для передачи в подпрограмму массивов переменных размеров. Это позволяет с помощью одной и той же подпрограммы обрабатывать массивы произвольной длины. Без использования открытых массивов пришлось бы для каждого массива иной длины писать собственную подпрограмму.
Пример Функция sizeof возвращает количество памяти (в байтах), отведенное под переменную. var  a: array [1..10] of  real ;  b: array  of  real ;  i, n: integer ;  sum: integer ; begin   writeln('Переменная a занимает ', sizeof(a),' байт памяти.');  writeln('Переменная b занимает ', sizeof(b),' байт памяти.');   write(' : ');  readln(n);  setlength(b,n); writeln('Индекс последнего элемента массива ', high(b));   sum := 0;  for i:=0 to high(b) do  begin  sum := sum + sizeof(b[i])  end ;  writeln('Массив b занимает в памяти ', sum, ' байт(а);');  writeln('но переменная b по-прежнему ', sizeof(b),'.');   b := nil ;  sum := 0;  for i:=0 to high(b) do  sum := sum + sizeof(b[i]);  writeln('Сейчас массив b занимает в памяти ', sum, ' байт,');  writeln('т.к. память была освобождена с помощью nil.');   readln end .

Пример

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

var

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

b: array of real ;

i, n: integer ;

sum: integer ;

begin

  writeln('Переменная a занимает ', sizeof(a),' байт памяти.');

writeln('Переменная b занимает ', sizeof(b),' байт памяти.');

  write(' : ');

readln(n);

setlength(b,n);

writeln('Индекс последнего элемента массива ', high(b));

  sum := 0;

for i:=0 to high(b) do begin

sum := sum + sizeof(b[i])

end ;

writeln('Массив b занимает в памяти ', sum, ' байт(а);');

writeln('но переменная b по-прежнему ', sizeof(b),'.');

  b := nil ;

sum := 0;

for i:=0 to high(b) do

sum := sum + sizeof(b[i]);

writeln('Сейчас массив b занимает в памяти ', sum, ' байт,');

writeln('т.к. память была освобождена с помощью nil.');

  readln

end .

Сохранить у себя:
Лекция по теме "Массивы" ABC Pascal

Получите свидетельство о публикации сразу после загрузки работы



Получите бесплатно свидетельство о публикации сразу после добавления разработки