Вопрос 20.doc

  • doc
  • 13.05.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Вопрос 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 символов, иначе выдается сообщение об ошибке.