Алгоритмические языки и программирование
Работа с массивами
Методические указания
к выполнению лабораторной работы №4
для студентов очной формы обучения
специальности 230201 – "Информационные системы
и технологии"
Брянск 2007
УДК 004.43
Алгоритмические языки и программирование. Работа с массивами: методические указания к выполнению лабораторной работы №4 для студентов очной формы обучения специальности 230201 – "Информационные системы и технологии". – Брянск: БГТУ, 2007. - 15 с.
Разработали:
С.М. Рощин, к.т.н., доц.
Ю.А. Леонов, асс.
Рекомендовано кафедрой «Компьютерные технологии и системы» БГТУ (протокол № от)
ЦЕЛЬ РАБОТЫ
Целью работы является овладение навыками работы с массивами и строками, а также изучение прямых методов сортировки массивов.
Продолжительность работы – 4ч.
Теоретическая часть
Одномерные массивы
Массив – это структура данных, которая представляет собой однородную, фиксированную по размеру и конфигурации совокупность элементов простой или составной структуры, упорядоченных по номерам.
Массив определяется именем (идентификатором) и количеством размерностей (координат), необходимых для указания местонахождения требуемого элемента массива. Имя массива является единым для всех его элементов.
Синтаксис объявления одномерного массива:
var имя_массива: array [a..b] of тип_данных;
где a, b – номера (индексы) первого и последнего элементов массива соответственно. Тип данных элементов массива может быть как простым, так и составным.
При обращении к элементу массива в квадратных скобках указывается его индекс.
Пример объявления:
const n=100;
var A: array [1..n] of Real; {Массив из 100 элементов типа Real}
или
const n=100;
type T_Vector = array [1..n] of Real; {Тип данных - массив}
var A: T_Vector; {Массив из 100 элементов типа Real}
Пример работы:
A[1]:=5; {В массив А в ячейку с индексом 1 записано число 5.}
Двумерные и многомерные массивы
Синтаксис объявления двумерного массива:
var имя_массива: array [a..b, c..d] of тип_данных_массива;
где a, b – номера первой и последней строк массива соответственно; с, d – номера первой и последней ячеек строки массива соответственно. Тип данных также может быть как простым, так и составным.
Пример объявления и использования:
Const n=5; m=5;
{Объявление массива из 10 строк, в каждой из которых 5 ячеек}
Var A: array [1..m, 1..n] of real;
i, j: integer; {Переменные цикла}
Begin
{Инициализация значений массива}
For j:=1 to n do {Проход массива по столбцам}
For i:=1 to m do begin {Проход массива по строкам}
Write(‘Введите A[’, i, ’,’, j, ’]=’);
ReadLn(A[i, j]); {Заполнение массива}
end;
{Вывод массива на экран}
Writeln(‘Массив А’);
For j:=1 to n do begin
For i:=1 to m do Write(A[i, j]);
WriteLn;
end;
End.
В некоторых случаях используются многомерные массивы. Синтаксис объявления многомерного массива:
var имя_массива: array [a..b, c..d, …, x..y] of тип_данных;
где a..b, c..d, …, x..y – диапазоны, определяющие количество элементов для соответствующей размерности массива.
Строки
Для работы с символьной информацией принято использовать структуру данных – строка. Определение переменных типа «строка» содержит служебное слово string, за которым может следовать максимальная длина строки в квадратных скобках (целочисленная константа в диапазоне от 0 до 255).
Например:
Var a: string [14]; {Определение строки с именем a длиной 14 символов}
line: string; {Определение строки с именем line с максимально возможной длиной}
Объявление переменной line типа string подобно следующему объявлению:
Var line: array [0..255] of char;
Доступ к отдельным элементам строки (символам) выполняется с помощью индексации. В результате получается величина типа char, например: a[6] – обращение к шестому символу строки. Тип string и стандартный тип char совместимы, т.е. строки и символы могут употребляться в одних и тех же выражениях.
Две сравниваемые строки являются одинаковыми, если они совпадают посимвольно и имеют одинаковую длину.
Подпрограммы для работы со строками
Для работы со строками типа string в Pascal используются следующие процедуры и функции, находящиеся в модуле System:
function Concat(s1 [, s2, …,sn]: string): string; выполняет конкатенацию (сцепление) последовательности строк;
function Copy(s: string; index, count: integer): string; возвращает копию подстроки с позиции index длиною count из заданной строки s;
procedure Delete(var s: string; index, count: integer); удаляет из строки подстроку начиная с позиции index длиною count;
procedure Insert(source: string; var s: string; index: integer); добавляет в строку s подстроку source на позицию index;
function Length(s: string): integer; возвращает текущую длину строки;
function Pos(substr, s: string): byte; производит поиск подстроки substr в строке s, если подстрока встречается, возвращается позиция ее начала;
procedure Str(x [: width [: decimals]]; var s: string); преобразует численное значение x в его строковое представление s;
procedure Val(s; var v; var code: integer); преобразует строковое значение s в его численное представление code.
Пример.
{Удаление переданного символа из строки}
Var s: string;
ch: char;
Function DelChars(_s: string; _ch: char): string;
Var i: byte;
Begin
For i:=1 To length(s) Do
if (_s[i]=_ch) then Delete(_s, i, 1);
DelChars:=_s;
End;
BEGIN
Writeln('Input string');
Readln(s);
Writeln('Input char');
Readln(ch);
Writeln(DelChars(s, ch));
END.