Массивы Материалы к урокам по программированию
МАССИВ это УПОРЯДОЧЕННАЯ последовательность данных ОДНОГО ТИПА. Массивы относятся к структурированным типам данных, т.е. создаётся новый тип данных, состоящий из элементов какого-то определённого стандартного типа данных. Могут быть одномерными и двумерными.
Одномерные массивы (линейные) Материалы к урокам по программированию Упорядоченная последовательность элементов одного типа. У каждого элемента есть свой индекс (номер)
1, 2 …5 номер элемента А имя массива Значения Индексы А[3]=9 Имя массива Индекс Значение
Способы описания массивов: 1.Через описание переменных 2.Через введение нового типа данных 1 способ: Var : array[ ] of ; В [ диапазон индексов ] указывается номер первого элемента и номер последнего элемента Например, var a:array[1..17] of Real; одномерный массив из 17 действительных чисел
Способы описания массивов: 2 способ: Type = array [диапазон индексов] of ; Var : ; Например: Type mas = array[1..10]of integer; Var a:mas;
Заполнение массива Заполнение массива можно производить: с клавиатуры; через датчик случайных чисел; через оператор присваивания (по формуле)
Способ 1 Ввод: For i:=1 to n do readln(a[i]); Вывод: For i:=1 to n do writeln(a[i]);
Способ 2 Через датчик или генератор случайных чисел RANDOM(i). Randomize; For i:=1 to n do begin а[i]:=random(m); Write(a[i]:8); end;
Способ 3 По формуле: For i:=1 to n do а[i]:=i*3;
Пример. Поиск элементов с заданными свойствами. Заполнить одномерный массив 50 целыми случайными числами из промежутка [-200; 200], определить: сумму всех элементов; сумму отрицательных чисел; количество чисел кратных 5. Program Poisk; Var а: array[1..50] of integer; i,S,S1,n: integer; Begin { заполнение массива} For i:=1 to 50 do begin a[i]:=random(400)-200; write(a[i]:8); end; S:=0; for i:=1 to 50 do S:=S+ a[i]; writeln( сумма всех элементов S=',S) ;
S1:=0; For i:=1 to 50 do if a[i]
Двумерные массивы Элементы одного типа Располагаются в таблице Каждый элемент имеет два индекса: номер строки и номер столбца
В математике квадратные и прямоугольные таблицы часто называют матрицами а 1 1 а 12 а 13 а 14 а 15 а 1 6 а 21 а 22 а 23 а 24 а 25 а 26 а 31 а 32 а 33 а 34 а 35 а 36 Первый индекс – номерстроки Второй номерстолбца М N Матрица имеет размер М*N
Описание двумерного массива :array [диапазон индексов строк, :array [диапазон индексов строк, диапазон индексов столбцов] of диапазон индексов столбцов] of Например, Например, Var a: array [1..10, 1..15] of integer Var a: array [1..10, 1..15] of integer Описание матрицы в разделе var аналогично описанию одномерного массива, только теперь необходимо указывать диапазон изменения столбцов и строк.
Запись: [i,j] a[I,j] a – имя массива i – номер строки j – номер столбца а [2,3] Например, а [2,3] указывает на элемент во 2-ой строке и 3-ем столбце а 11 а 12 а 13 а 14 а 15 а 16 а 21 а 22 а 23 а 24 а 25 а 26 а 31 а 32 а 33 а 34 а 35 а 36
При решении задач с использованием двумерных массивов организуются вложенные циклы: For i:=1 to m do begin {изменяется номер строки} {изменяется номер строки} For j:=1 to n do begin For j:=1 to n do begin {изменяется номер столбца} {изменяется номер столбца}
Для ввода матрицы в память существует много способов, это зависит от направления задачи. Рассмотрим два самых распространенных способа:
Writeln(Введите элементы матрицы по строкам); Writeln(В конце каждой строки нажимайте ENTER); For i:=1 to n do begin For i:=1 to n do begin For j:= 1 to m do Read(a[i,j]); For j:= 1 to m do Read(a[i,j]); end; end;End.
{заполнение массива} For i:=1 to n do begin For j:=1 to m do For j:=1 to m do a[i,j]:=random(10); a[i,j]:=random(10); end; end; {вывод массива на экран} For i:=1 to n do begin For j:=1 to m do For j:=1 to m do write(a[i,j]:8); write(a[i,j]:8); Writeln; Writeln; end; end; Пример 2. Заполнение случайными числами
Некоторые понятия: Главная диагональ i = j i = j Побочная диагональ i + j = n+1 i + j = n+1 а 11 а 12 а 13 а 14 а 21 а 22 а 23 а 24 а 31 а 32 а 33 а 34 а 41 а 42 а 43 а 44 а 11 а 12 а 13 а 14 а 21 а 22 а 23 а 24 а 31 а 32 а 33 а 34 а 41 а 42 а 43 а 44
Некоторые понятия: Над главной диагональю i < j i < j Под главной диагональю i > j i > j а 12 а 13 а 14 а 23 а 24 а 34 а 21 а 31 а 32 а 41 а 42 а 43
Вычисление суммы элементов квадратной матрицы:
Program Summa; const n=7; var a:array [1..n,1..n] of integer; i, j, S: integer; Begin For i:=1 to n do begin For j:=1 to n do For j:=1 to n do a[i,j]:=random(100) - 50; a[i,j]:=random(100) - 50; end; end; For i:=1 to n do begin For j:=1 to n do For j:=1 to n do write(a[i,j]:8); write(a[i,j]:8); Writeln; Writeln; end; end;
S:=0; For i:=1 to n do begin For j:=1 to n do For j:=1 to n do S:=S+a[i,j] ; S:=S+a[i,j] ; end; end; writeln(сумма всех элементов S=,S); Вычисление суммы всех элементов квадратной матрицы:
Вычисление суммы элементов главной диагонали квадратной матрицы: S:=0; For i:=1 to n do begin For j:=1 to n do For j:=1 to n do If i=j then S:=S+a[I,j] If i=j then S:=S+a[I,j] end; end; Writeln ( сумма главной диагонали =, S); End.
Символьный и строковый типы данных
Символьный тип Тип данных Char Переменная типа Char хранит один символ Символьная константа задается указанием символа, который записывается между апострофами. Например, переменная а описана как переменная типа Char: a:=M a:=! a:= a:=M a:=! a:=
Chr(х) Функция Chr(х) возвращает символ, соответствующий целочисленному аргументу (согласно коду ASCII, коды от 0 до 255) Program zs; Uses crt; Uses crt; Var Var x:byte; x:byte; begin begin clrscr; clrscr; For x:=1 to 255 do For x:=1 to 255 do Write(x,'-',Chr(x),' '); Write(x,'-',Chr(x),' '); Readln; Readln; End. End.
Ord(х) Функция Ord(х) возвращает код символьного аргумента (согласно коду ASCII, коды от 0 до 255) Program zs1; Program zs1; Uses crt; Uses crt; Var Var a:char; a:char; begin begin clrscr; clrscr; For a:='A' to 'Z' do (For a:=',' to '?' do) For a:='A' to 'Z' do (For a:=',' to '?' do) Write(a,'-',Ord(a),' '); Write(a,'-',Ord(a),' '); Readln; Readln; End. End.
Строковый тип String Строковый тип описывается с помощью зарезервированного слова StringVar :string[максимальная длина строки] :string[максимальная длина строки]
Пример описания строковой переменной: Var s1:string[10]; s1:string[10]; s2:array[1..10] of char; s2:array[1..10] of char; s3:string; s3:string; length(s1)Функция length(s1) выдает текущую длину строки
Источники информации по теме: (могут быть полезны учителю и ученику) Карасев П.Н. Информатика (программирование). 11 класс. Поурочные планы. – Волгоград: Учитель – АСТ, Низов В.А. Сборник задач и упражнений по программированию с решениями на Паскале. – Кострома: РЦ НИТ «Эврика-М», Окулов С.М. Основы программирования. – М.: БИНОМ. Лаборатория знаний, (особенно полезен материал по методам сортировки данных)