Ввод-вывод одномерных массивов

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

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

Пример:

Var A: array [1..4] of real;Type MAS1=array[1..4] of real;

B: array [1..3] of integer;MAS2=array[1..3] of integer;

Var A: MAS1;

B: MAS2;

или

Type I1=1..4;

I2=1..3;

MAS1=array[I1] of real;

MAS2=array[I2] of integer;

Var A: MAS1;

B: MAS2;

Пример:

for I:=1 to 4 do for I:=1 to 4 do

Read(A[I]); или begin

Writeln(‘A[‘,I,’]=’);

Read(A[I])

end;

{Ввод элементов одномерного массива}

Пример:

{Вывод элементов одномерного массива}

for J:=1 to 3 dofor J:=1 to 3 do

Write(B[J]:3);Writeln(‘B[‘,J,’]=’,B[J]:3);

{в строку 12 34 56}{в столбец B[1]= 12

B[ 2]= 34

B[ 3]= 56}

 



Описание двумерных массив

D[I,J] - элемент матрицы,

где I - номер строки,

J - номер столбца.

 

Ввод-вывод двумерных массивов

Var <имя массива>: array[ <диапазон строк>, <диапазон столбцов> ]

of < тип элементов>;

Пример:

Var D:array[1..2,1..3] of integer; или Type MATR=array[1..2,1..3] of integer;

Var D: MATR;

Type ST=array[1..2] of integer;

MATR=array[1..3] of ST;

Var D: MATR;

Пример:

for I:=1 to 2 do

for J:=1 to 3 do

Read(D[I,J]); {Последовательность ввода: 1 3 2 4 6 7}

{Ввод элементов двумерного массива}

Пример:

{Вывод элементов двумерного массива}

for I:=1 to 2 do

for J:=1 to 3 do

Write(D[I,J]); {вывод в строку 1 3 2 4 6 7}

или

for I:=1 to 2 do

begin Writeln; {переход на новую строку}

for J:=1 to 3 do

Write(D[I,J]) {вывод элементов строки}

end; {результат вывода: 1 3 2

4 6 7}

В среде Turbo- элементы матрицы располагаются в оперативной памяти построчно. Для обращения к элементам матрицы удобно использовать приведенный индекс, IPR - это порядковый номер элемента массива в памяти.

Например: Var D: array [1..M,1..N] of integer;

тогда для D[I,J]IPR=(I-1)*N+J

Начальные значения элементам массивов в среде Turbo-Pascal могут быть заданы с использованием типизированных констант.

Пример:

Type MAS2=array [1..3] of integer;

MATR=array[1..2,1..3] of integer;

Const B:MAS2=(12,34,56); {одномерный массив: 12 34 56}

D:MATR=((1,3,2),(4,6,7)); {двумерный массив: 1 3 2 46 7}



СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ

 

Строки. Описание строки

Для обработки группы символов в среде Turbo-Pascal используется структурированный тип String.

Определение типа

Var S:string[n];

где n -длина строки (целое число без знака из интервала 1..255).

Текущая длина строки может изменяться в процессе выполнения программы, но не должна превышать указанной в описании. Если длина строки не указана в описании, то по умолчанию она принимается равной 255 символов.

Пример:

Var S:string;Var C:char;

I:byte; S:string[5];

......

S:=’PASCAL’;S:=’HELLO’;

Write(S[2]); {A} C:=S[1]; {C:=’H’}

for I:=4 downto 1 do S[2]:=’*’;

Write(S[I]); {CSAP} Writeln(S); {H*LLO}

S:=’’; {пустая строка}

 

Операции над строками

Слияние строк - конкатенация

Var S1,S2,S3:string;

...

S1:=’-PASCAL’;

S2:=’TURBO’;

S3:=S2+S1;

Writeln(S3); {TURBO-PASCAL}

Сравнение строк

Сравнение строк происходит посимвольно, начиная с первого символа в строке, в соответствии с их кодами ASCII.

а) Строки равны, если они одинаковой длины и посимвольно эквивалентны: ‘abcd’ = ‘abcd’

‘_abcs’<>’abcd’

‘abcd’ <> ‘ABCD’.

в) Если при очередном сравнении окажется, что код одного символа больше кода другого, то строка его содержащая также считается большей:

‘abcd’ > ‘abca’ т.к. ASCII- коды‘a’<’b’<’c’<...<’z’,

‘abcd’ > ‘aBcb’ ‘b’>’B’

Процедуры и функции обработки строк

Пример:

Var S1,S2,S3:string;

K:byte;

...

S1:=’12345’;

S2:=’67890’;

Функция Length(S:string):byte

Функция выдает текущую длину строки.

K:=Length(S1);

Write(K); {5}

Write(Length(S2)); {5}

Функция Concat(S1,S2,...,SN:string):string

Функция возвращает конкатенацию (слияние) строк.

S3:=Concat(S1,S2);

Writeln(S3); {1234567890}

Writeln(Concat(S1,S2)); {1234567890}

Функция Pos(SubS,S:string):byte

Функция ищет вхождение подстроки SubS в строку S и возвращает номер первого символа подстроки SubS в строке S или 0, если строка не содержит указанную подстроку.

S3:=’1234567890’;

K:=Pos(S1,S3);

Writeln(K); {1}

Write(Pos(S2,S3)); {6}

Функция Copy(S:string; START,LEN:integer):string

Функция возвращает подстроку длиной LEN, начиная с позиции START строки S.

S3:=Copy(S1,2,3);

Writeln(S3); {234}

Writeln(Copy(S2,3,3)); {890}

Процедура Delete (Var S:string; START,LEN:integer)

Процедура удаляет из строки S подстроку длиной LEN, начиная с позиции START.

S3:=S1+S2; {1234567890}

Delete(S3,5,4);

Writeln(S3); {123490}

Процедура Insert (SubS:string; Var S:string; START:integer)

Процедура вставляет подстроку SubS в строку S с позиции START.

S1:=’НАЧАЛО-КОНЕЦ’;

Insert(‘СЕРЕДИНА-‘, S1,8);

Writeln(S1); {НАЧАЛО-СЕРЕДИНА-КОНЕЦ}

Процедуры: Str(X:w:d; Var S:string);

Val(S:string; Var X: <тип>; Var ErrCode:integer)

Процедура Str преобразует числовое значение X (целый или вещественный тип) в строковое S. Возможно задание формата для X:

w- общая длина поля,

d- количество цифр в дробной части.

Процедура Val преобразует строковое значение S (символьное представление числа) в значение числовой переменной X в соответствии с заданным типом (целый или вещественный). Значение переменной ErrCode=0, если изображение числа правильно и представляет собой номер ошибочного символа в случае невозможности преобразования.

Var X:real;

S:string;

I:integer;

...

X:=3.1415926; Str(X:8:4,S);

S:=’X=‘+S;

Writeln(S); {X= 3.1416}

Delete(S,1,2); { 3.1416}

Val(S,X,I);

if I=0 then Writeln(X:10:4) { 3.1416}

Else

Writeln(‘ Ошибка в строке’, S, ‘ символ’ S[I]);


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: