Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Полный курс по Turbo Pascal.doc
Скачиваний:
204
Добавлен:
02.05.2014
Размер:
477.18 Кб
Скачать

Глава 4. Массивы Двумерные массивы

Двумерный массив – структура данных, хранящая прямоугольную матрицу. В матрице каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен. В Паскале двумерный массив представляется массивом, элементами которого являются одномерные массивы. Два следующих описания двумерных массивов тождественны:

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

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

Чаще всего при описании двумерного массива используют второй способ. Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индексов (первый индекс – номер строки, второй индекс – номер столбца). Все действия над элементами двумерного массива идентичны действиям над элементами линейного массива. Только для инициализации двумерного массива используется вложенный цикл for.

Например, For i:= 1 to 10 do

For j:= 1 to 20 do

A[i, j] := 0;

При организации вложенных (сложных) циклов необходимо учитывать:

        Все правила, присущие простому циклу, должны соблюдаться

        Имена параметров для циклов, вложенных один в другой, должны быть различными

        Внутренний цикл должен полностью входить в тело внешнего цикла. Пересечение циклов недопустимо

 

Пример 1. Сформировать таблицу Пифагора (таблица умножения) и вывести ее на экран.

Program Pifagor;

Uses crt;

Var p: array[1..9, 1..9] of integer; i, j:integer;

Begin

Clrscr;

for i:=1 to 9 do

for j:= 1 to 9 do

p[i,j]:= i*j;

for i:=1 to 9 do

begin

for j:=1 to 9 do

write(p[i,j], ‘ ‘);

writeln

end;

end.

Пример 2. Задан двумерный массив В(10, 10), заполненный случайными числами из

[-10,10]. Найти и вывести на экран те элементы массива, которые больше заданного числа k.

Program massiv;

Uses crt;

Var b: array[1..10, 1..10] of integer; i, j, k :integer;

Begin

Clrscr;

for i:=1 to 10 do

begin

for j:= 1 to 10 do

begin

b [i,j]:= random(20)-10;

write(b[i,j], ‘ ‘);

end;

writeln;

end;

write(‘Введите число k’);

readln (k);

For i:=1 to 10 do

For j:=1 to 10 do

If b[i, j] >k then write (b[i, j]);

End.

Глава 5. Строковые величины Символьные величины

Литерный (символьный) тип char определяется множеством значений кодовой таблицы ПК. Каждому символу задается целое число от 0 до 255. В программе значения переменных и констант типа char должны быть заключены в апострофы.

Пример.

Program lit;

Var c, symbol: char;

Begin

C:= ‘A’;

Symbol:=’д’;

Writeln(c);

Write(symbol);

End.

Результат выполнения программы:

А

д

 

Над данными символьного типа определены операции отношения: =, <>, >,<,<=,>=, вырабатывающие результат логического типа, и следующие стандартные функции:

Chr(x) – преобразует выражение х в символ и возвращает значение символа

Ord(ch) – преобразует символ ch в его код и возвращает значение кода

Pred(ch) – возвращает предыдущий символ

Succ(ch) – возвращает следующий символ

Пример.

Ord(‘:’) =58

Ord(‘A’)=65

Chr(128)=Б

Pred(‘Б’)=А

Succ(‘Г’)=Д

Глава 5. Строковые величины Строковые величины

Строка (строковый тип данных) – это последовательность символов кодовой таблицы ПК. Количество символов в строке (длина строки) может лежать в диапазоне от 0 до 255. Для определения данных строкового типа используется идентификатор string, за которым следует значение максимальной длины строки данного типа (заключается в квадратные скобки).

Строковые данные могут использоваться в качестве констант. Строковая константа – последовательность символов, заключенная в апострофы. Например, ‘237’, ‘это строковая константа’.

Переменную строкового типа можно определить в разделе описания переменных:

Var <имя>: string[<максимальная длина строки>].

Например, var Name: string[20]. В описании строки можно не указывать длину, в этом случае она равна максимальной величине – 255. Элементы строки определяются именем строки с индексом, заключенным в квадратные скобки. Например, N[5]. Первый символ строки имеет номер 1 и т.д. Можно сказать, что строка представляет собой одномерный массив, элементами которого являются символы. Тип string и тип char совместимы, они могут употребляться в одних и тех же выражениях.

Выражения, в которых операндами служат строковые данные, называются строковыми. Они могут состоять из строковых констант, переменных, знаков операций. Над этими данными допустимы операция сцепления (конкатенация) и операции отношения.

Операция сцепления (+) применяется для соединения нескольких строк в одну строку. Сцеплять можно и константы, и переменные. Длина результирующей строки не должна превышать 255 символов.

Операции отношения (=, <>, >, <, <=, >=) проводят сравнение двух строк и имеют приоритет более низкий, чем операция конкатенации. Сравнение строк производится слева направо до первого несовпадающего символа. Строка считается больше, если в ней первый несовпадающий символ имеет больший номер в таблице кодов.

Например, ‘MS-DOS’<’MS-Dos’.

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

Например, ‘Компьютер’<’Компьютер ’.

Строки равны, если они полностью совпадают.

Например, ‘Маска’ = ’Маска’.

Для обработки строковых данных можно использовать специальные процедуры и функции.

Процедура Delete(St, poz, n) – удаление n символов строки St, начиная с позиции Poz.

Пример

Значение St

Выражение

Результат

‘абвгде’

Delete(St, 4, 2);

‘абве’

‘река Волга’

Delete(St, 1, 5);

‘Волга’

Процедура Insert (S1, S2, Poz) – вставка строки S1 в строку S2, начиная с позиции Poz.

Пример

Значение S1

Значение S2

Оператор

Результат

‘ ЕС ’

‘ЭВМ1841’

Insert (S1, S2, 4);

‘ЭВМ ЕС 1841’

‘ N’

‘ Рис. 2’

Insert (S1, S2 , 6);

‘ Рис. N2’

Процедура Str(N,St) – преобразование числового значения N в строковый и помещение результата в строку St.

Пример

Значение N

Выражение

Результат

1500

Str (N:6,St);

‘ 1500’

Процедура Val(St, N,Code) – преобразует значение St в величину целочисленного или вещественного типа и помещает результат в N. Code – целочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение Code равно 0, если же обнаружена ошибка, то Code будет содержать номер позиции первого ошибочного символа, а значение N не определено.

Пример

Значение St

Выражение

Результат

‘1500’

Val(St, N,Code);

Code=0

’14.2A+02

Val(St, N,Code);

Code=5

Функция Copy(S, Poz, N) – выделяет из строки S подстроку длиной N символов, начиная с позиции Poz.

Пример

Значение S

Выражение

Результат

‘Мама мыла раму’

Copy(S, 6, 4);

‘мыла’

Функция Concat(S1,S2,…,Sn) – выполняет сцепление строк S1,S2,…,Sn в одну строку.

Пример

Выражение

Результат

Concat(‘Мама ’,’мыла ’,’раму’)

‘Мама мыла раму’

Функция Length(S) – определяет текущую длину строки S.

Пример

Значение S

Выражение

Результат

‘1500 символов’

Length(S)

13

Функция Pos(S1,S2) – определяет первое появление в строке S2 подстроки S1.

Пример

Значение S2

Выражение

Результат

‘abcdef’

Pos(‘cd’,S2)

3

‘abcdef’

Pos(‘k’,S2)

0

Функция UpCase (ch) – преобразует строчную букву в прописную.Обрабатывает буквы только латинского алфавита.

Пример

Значение Ch

Выражение

Результат

‘d’

UpCase (ch)

‘D’

 

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

Program Stroki;

Var S1, S2:string;

Begin

Write(‘Введите строку’);

Readln(S1);

S2:= ‘ ‘;

For i:=1 to length(S1) do

If (S1[i]>=’0’) and (S1[i]<=’9’)

Then S2:=S2+S1[i];

Writeln(‘Результат’, S2)

End.