Вопрос 20.doc
Оценка 4.9

Вопрос 20.doc

Оценка 4.9
doc
13.05.2020
Вопрос 20.doc
Вопрос 20.doc

Вопрос 20.

6. Массивы данных. Одномерные массивы - векторы.

К структурированным типам данных относятся: массивы, множества, записи и файлы. Элементами структурированных типов могут быть простые типы, а также сложные типы.

В Турбо Паскале имеются еше два структурированных типа; строка типа string и строка типа PChar, являющиеся разновидностями, массива.

Массивы

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

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

Массив в программе должен быть описан: имя массива, тип индексов, тип элементов.

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

Формат записи одномерного массива

Type

 <имя типа> = array [<тип индекса>] of <тип компонент>;

Введя тип-массив, можно затем задать переменные или типизированные константы этого типа

var

 <имя массива> :  <имя типа>;

Переменную типа массив можно задать непосредственно: var <имя массива> :  array [<тип индекса>3 of <тип компонент>;

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

Пример 1.

type

V10 = array [1..10] of integer;

var

R,   А,   В :   V10;

Тип массива V10 введен формально, только в разделе описаний, и нигде в программе, в разделе операторов, имя V10 больше не встречается. В программе идет обработка переменных R, А, В - векторов, каждый из которых имеет по 10 элементов целого типа Каждый элемент массива обозначается именем массива с индексом в квадратных скобках. Например, R[1], A[3], B[10]. Элемкеты массива упорядочены по значениям индекса. Над элементами массива можно производить те операции, которые допустимы для описанного типа компонент.

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

type

    color - (red, black, green, white);

    mas - array [color] of char;

var

     A :  mas;

     В : array [1..20] of integer;

Значения элементов массивов А и В могут быть такими, например,

A[red] = 'г'; A[black] = 'b'; A[pred(black)] = 'г';

B[1[ = -2; B[2] = 0; B[3[ = 4; B{2*1+1] = 4, если 1-1.

Введя тип массив, можно описать типизированную константу этого типа При задании типизированнных констант типа массив компоненты указываются в круглых скобках и разделяются запятыми. Для введенных в примерах 1 и 3 типов массивов можно задать следующие типизированные константы: const

С : V10 = (3, 4, -2, 0, 6. -1. 7, 10, 63, -123);

M: mas = (‘r’, ‘b’, ‘g’, ‘w’);

Одному массиву можно присвоить значение другого массива, но только идентичного типа. Так, если заданы следующие массивы:

var

А, В : array [1.. 5] of integer;

С : array [1..5] of integer; то допустим следующий оператор: А : = В;

С другой стороны, оператор С : = А; недопустим, так как массивы А и С - не идентичных типов (массивы А и В идентичны, т.к. введены одним описание; массивы С и А не идентичны, т.к. каждый из них вводится своим описанием).

Имеются некоторые отличия в работе с одномерными массивами символов ( не путать с величинами типа string). Так типизированным константам этого вида можно присвоить значение как обычным строковым константам, указав строку символов в апострофах. Например, массив M1 и ранее описанной массив М, состоящие из компонент типа char, можно гадать следующим об­разом:

const

М : mas = ('г', 'b', 'g', ‘w');

M1 : array [1..5] of char = ('o', 'p', 'e', 'r', 'a'); или const

M : mas - 'rbgw';

M : array [1. .5] of char - 'opera';

Для массивов символов, как и для строк, можно использовать операции сравнения ( даже если они не идентичных типов и даже если они имеют различный размер) и конкатенации (объединения)

Замечание 1. Вывод значений элементов массива S2 можно организовать с помощью оператора Writeln (S2). Замечание 2. Можно обрабатывать русский шрифт.

Замечание 3. Переменная S2 должна содержать 15 символов, иначе выдается сообщение об ошибке.

Пример. Вычислить сумму S=A1+B1×B1+A2+B2×B2+…+A10+B10×B10.

Program SUMMA;

const  N=10;

type

mas = array [1..N] of real;

var     A, B : mas;

i : integer;           S : real;

begin       S := 0;

for i := 1 to N do

begin

Writeln('Введите очередные элементы массивов A и B');

Readln(A[i], B[i]);

S:= S + A[i]+B[i]*B[i]

end;

Writeln(‘S = ‘, S:8:2)

end.

Пример. В массиве (введен с клавиатуры) из 15 символов все буквы 'b' замените на букву 't'. Выведите на печать полученный массив.

Program SIMVOLI;

type

mas = array [1..15] of char;

var     S1, S2 : mas;

i : integer;

begin    {Ввод массива S1}

for i :=1 to 15 do

begin  Write(‘Введите ‘, i, ‘– ый символ  ‘);    Readln (S1[i]);    end;

{Получение массива S2}

for i := 1 to 15 do

if S1[i] = ‘b’ then S2[i]:= ‘t’

else S2[i]:= S1[i];

{Вывод массива S2}

for i := 1 to 15 do

Writeln(S2[i])

end.

Замечание 1. Вывод значений элементов массива S2 можно организовать с помощью оператора Writeln(S2).

Замечание 2. Можно обрабатывать русский шрифт.

Замечание 3. Переменная S2 должна содержать 15 символов, иначе выдается сообщение об ошибке.


Вопрос 20. 6. Массивы данных

Вопрос 20. 6. Массивы данных

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

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

Program SUMMA; const N=10; type mas = array [1

Program SUMMA; const N=10; type mas = array [1
Скачать файл