Учебное пособие Основы программирования Система программирования Турбо Паскаль 2 часть
Основы программирования
Система программирования
Турбо Паскаль
2 часть
Составитель А.В. Дейнекин
Редактор Ревенко М.А. Пр. ВГПУ
Мужичанская Средняя Школа
2006г.
Многомерные массивы
Исходные данные для решения многих задач удобно представляются в табличной форме.
Колонки и строки таблицы, как правило, содержат однородную информацию, если использовать терминологию Turbo Pascal - данные одинакового типа. Поэтому в программе для хранения и обработки табличных данных можно использовать совокупность одномерных массивов. Так таблица может быть представлена как совокупность одномерных массивов следующим образом:
array [1..4] of integer; Х[1.1] X[1.2] X[1.3] X[1.4]
array [1..4] of integer; Y[1.1] Y[1.2] Y[1.3] Y[1.4]
array [1..4] of integer; Z[1.1] Z[1.2] Z[1.3] Z[1.4]
Помимо совокупности одномерных массивов, таблица может быть представлена как двумерный массив.
Двумерный массив состоит из строк и столбцов. Каждый элемент двумерного массива можно представить индексированной переменной с двумя индексами:
Х[1.1] X[1.2] X[1.3] X[1.4]
X[2.1] X[2.2] X[2.3] X[2.4]
X[3.1] X[3.2] X[3.3] X[3.4]
Первый индекс в скобках обозначает номер строки, второй – номер столбца прямоугольной таблицы.
1) Описание массива
В общем виде описание двумерного массива выглядит так:
Имя: array [ Нижняя Граница Индекса 1. . Верхняя Граница Индекса 1,
Нижняя Граница Индекса 2. . ВерхняяГраницаИндекса2] of Тип
Где:
Имя – имя массива;
array - служебное слово обозначающее, что объявляемый элемент является массивом;
Нижняя Граница Индекса 1 . . Верхняя Граница Индекса 1,
Нижняя Граница Индекса2 . . ВерхняяГраницаИндекса2 – целые константы, определяющие диапазоны изменения индексов и, следовательно, количество элементов массива;
Тип тип элементов массива.
Пример описания массива:
VAR
a : array [1 . . 3, 1 . . 4] of integer;
baza : array[1..3, 1..4] of real;
При описании массивов в программе удобно использовать именованные константы как значения верхних границ индексов массива.
CONST n = 3; m = 4
VAR a : array [1 . . n, 1 . . m] of integer;
baza : array[1..n, 1..m] of real;
Это позволяет при использовании программы с другими значениями верхних индексов не изменять (находить и переписывать) их во всём тексте программы а достаточно поменять значения констант в разделе описания.
Количество элементов массива может быть вычислено по формуле:
(ВархняяГраницаИндекса1- НижняяГраницаИндекса1+1)* (ВерхняяГраницаИндекса2 – НижняяГраницаИндекса2 +1)
Таким образом, массив a состоит из 12 элементов типа integer.
Чтобы обратится к элементу массива, нужно указать имя массива и индексы элемента. Первый индекс соответствует номеру строки массива, второй – номеру колонки. (Каждый элемент массива описывается, как а [i,j] где a-имя массива; i-номер строки; j-номер столбца.) Пример : а [1,1].
Так как границы индексов массива заранее определены, а шаг изменения индекса равен 1, для выполнения однотипных операций со всеми элементами массива удобно использовать цикл со счётчиком (параметром) FORTODO. При работе с двумерными массивами – вложенные циклы.
Значения элементов двумерных массивов выводят на экран и вводят с клавиатуры, как правило, по строкам, т.е. сначала все элементы первой строки, затем второй и т.д. Это удобно выполнять при помощи вложенных инструкций for . Так как границы индексов массива заранее определены, а шаг изменения индекса равен 1, для выполнения однотипных операций со всеми элементами массива удобно использовать цикл со счётчиком (в случае двумерных массивов вложенные циклы).
Каждый раз, когда внутренний цикл завершается, внешний цикл увеличивает i на единицу, и внутренний цикл выполняется вновь. Таким образом выводятся все компоненты массива.
2) Ввод двумерного массива - задание начальных значений
ввод с клавиатуры:
for i:=1 to 3 do
begin
for j:=1 to 4 do
begin
write (введите число’);
readln (a[i,j]);
end;
end;
for i:=1 to 3 do
begin
for j:=1 to 4 do
begin
write (a[’,I,’,’,j,’]=’);
readln (a[i,j]);
end;
end;генерация случайных чисел:
Randomize
for i:=1 to 3 do
begin
for j:=1 to 4 do
begin
a[i,j] := Random(10);
write (a[i,j] ,’ );
end;
writeln;
end;
используются числа в промежутке от 0 до 9
Randomize
for i:=1 to 3 do
begin
for j:=1 to 4 do
begin
a[i,j] := Random(30)-10;
write (a[i,j] ,’ );
end;
writeln;
end;
Используются числа в промежутке от -10 до 19, (30-количественный диапазон чисел, 10-сдвиг по числовой шкале относительно 0 указывающий с какого числа используются числа.
3)Вывод на экран значения элементов массива по строкам:
For i:=1 to 3 do
Begin
For j:= 1 to 4 do
write ( a[i, j] ) ;
writeln; {перевод курсора на новую строку}
end;
4) Работа с элементами массивов
1. Вычисление суммы, произведения, количества элементов массива.
1.1 Вычисление суммы элементов.
Summa := 0;
For i:=1 to 3 do
For о:=1 to 4 do
Summa := summa + a[i,j];
1.2 Вычисление произведения элементов.
proiz := 1;
For i:=1 to 3 do
For о:=1 to 4 do
Proiz := Proiz * a[i,j];
1.3 Вычисление суммы (произведения) элементов, удовлетворяющих заданному условию.
Summa := 0;
For i:=1 to n do
For j:=1 to m do
If a[i,j] >0 Then Summa := summa + a[i,j];
1.4 Нахождение количества элементов, удовлетворяющих заданному условию.
найти количество положительных элементов в каждой строке массива.
For i:=1 to n do
Begin
Коlich:=0;
For j:=1 to m do
If a[i,j] > 0 Then
kolich:= kolich + 1;
Writeln(Колич. Положит. Знач. в’,i,строке =’,kolich);
End;
найти количество чётных элементов массива.
Коlich:=0;
For i:=1 to n do
For j:=1 to m do
If a[i,j] mod 2 = 0 Then
kolich:= kolich + 1;
Writeln( Положит. Знач. ’,kolich);
2. Поиск минимального (максимального) элемента массива
Алгоритм поиска минимального (максимального) элемента в неупорядоченном массиве довольно очевиден: делается предположение, что первый элемент массива является минимальным (максимальным), затем остальные элементы массива последовательно сравниваются с этим элементом. Если во время очередной проверки обнаруживается, что проверяемый элемент меньше (больше) принятого за минимальный (максимальный), то этот элемент принимается за минимальный (максимальный) и продолжается проверка оставшихся элементов.
Найти максимальный (минимальный) элемент массива и его индекс.
max := а[1,1]; { max - максимальный, элемент}
Nmax := 1,1 ; { Nmax- номер макс. элемента}
For i:=1 to 3 do
For J:=1 to 4 do
If a[i,j] > max Then ( If a[i] < min Then )
Begin
max := a[i,j];
Nmax := [i,j];
end;
writeln (макс. значение =’,max,’индекс макс. элемента’,Nmax)
1)если в условии знак > то мы находим максимальный элемент, если знак < то минимальный.
2) если неравенство строгое (> или <) то мы находим первый максимальный или минимальный элемент, а если нестрогое (>=или<=) то последний.
3. Сортировка двумерного массива.
по строкам:
for i:=1 to 3 do
for j:=1 to 4 do
if a[i,j]
begin
tmp:=a[i,j];
a[i,j]:=a[i,j+1];
a[i,j+1]:=tmp;
end;
по столбцам:
for j:=1 to 4 do
for i:=1 to 2 do
if a[i,j]
begin
tmp:=a[i,j];
a[i,j]:=a[i+1,j];
a[i+1,j]:=tmp;
end;
Работа с файлами
Язык Pascal позволяет вводить исходные данные для программы не только с клавиатуры, но и из текстового файла. А также позволяет выводить результат выполненной программы не только на экран монитора, это не всегда удобно, но и можно сохранить результаты в файле, на диске компьютера.
На диске больше места, чем в оперативной памяти.
В файл можно записывать данные разного типа.
Файл, с точки зрения программы на языке Pascal, это именованная структура данных, представляющая собой последовательность элементов одного типа. Количество элементов файла практически не ограничено, размеры файла не фиксированы.
Описание (объявление) файла
Как и любая переменная программы, файл должен быть объявлен в разделе описания переменных. При объявлении файла указывается тип элементов файла. В общем виде объявление файла выглядит так:
Имя : file of Тип элементов
Примеры:
res : file of char; { файл символов }
koef : file of real; { файл вещественных чисел }
f : file of integer; { файл целых чисел }
Файл, компонентами которого являются данные символьного типа (char) называется текстовым. Описание file of char может быть заменено на
text, т.е. описание res : file of char равнозначно res : text.
Назначение файла (Процедура Assign)
Описание (объявление) файловой переменной задает только тип компонентов файла. Чтобы программа могла выводить данные в файл или читать данные из файла, необходимо указать конкретный файл, т. е. задать имя файла. Имя файла задается вызовом процедуры assign, связывающей файловую переменную с конкретным файлом.
Описание процедуры assign : assign (var f : text; имя файла : string)
Примеры: assign ( f,’a:\result.text’);
assign ( f,’\uchahiisj\ivanov\korni.text’);
( f- файловая переменная; ’a:\result.txt’- полное имя файла.)
или
fname:=’otchet.txt’;
assign(f,fname);
Имя файла задается согласно принятым в MS-DOS правилам (8 букв латинского алфавита, цифр, а расширение состоит из трёх латинских букв, например: ’otchet.txt’ ). Оно может быть полным, т. е. состоять не только непосредственно из имени файла, но и включать путь к файлу.
Файл может быть открыт для чтения из файла или для записи в файл.
Ввод данных из файла
Чтобы вводить исходные данные для программы из текстового файла, нужно: объявить файловую переменную типа text, назначить ей при помощи инструкции assign имя файла, из которого будут читаться данные, открыть файл для чтения (ввода из файла) и прочитать данные (ввести данные в программу), используя инструкцию read или readln.
Открытие файла для чтения
Процедура Reset, открывает существующий файл данных, имя которого перед этим было связано при помощи процедуры assign с некоторой файловой переменной, указанной в процедуре Reset как параметр. Например, пара операторов
assign( f, c:\data.txt’);
reset(f);
открывает файл data.txt.
Чтение из файла
Чтение из файла выполняется при помощи инструкций read и readln, которые в общем виде записываются так:
read (Файловая Переменная, Список Переменных) ;
readln (Файловая Переменная, Список Переменных) ;
где Файловая Переменная – перееменная типа text;
Список Переменных - имена переменных, разделенные запятыми.
read (f,a,b,c);
readln (f,b);
program chtenieizfaila;__
var f: file of integer; a,b,c: integer;
begin
assign(f,’data.dat’);
reset(f);
read(a,b,c);
end.
Чтение до конца файла
Функцией EOF Что бы прочитать весь файл, считать все данные. Другими словами, достигнуть при чтении конца файла. Нужно воспользоваться функцией eof (End Of File - конец файла).
Пример:
while not eof (f) do { пока не достигнут конец файла f}
read(f,n) {чтение из файла f , данных }
Данный цикл будет выполнять считывание порций данных из файла, связанного с файловой переменной f , до тех пор, пока не будут считаны все данные
program chtenie iz faila do konca faila;
var f: text; a,b,c: integer;
begin
assign(f,’data.txt’);
while not eof (f) do { пока не достигнут конец файла f}
read(f,n) {чтение из строки, данных }
end.
Чтение до конца файла
Функцией EOLN Что бы прочитать строку в текстовом файле, считать данные только из этой строки используется функция eoln признак конца строки в текстовом файле.
Пример:
while not eoln (f) do { пока не достигнут конец строки}
read(f,n) {чтение из файла f данных }
Данный цикл будет выполнять считывание порций данных из строки, до тех пор, пока не будут считаны все данные этой строки.
Вывод (запись) в файл
Инструкция вывода в файл
Непосредственный вывод в файл осуществляется при помощи
Инструкции write или writeln, у которой список выводимых значений начинается с переменной типа text, идентифицирующей файл для вывода. Например, если переменная f имеет тип text, то инструкция вывода в файл может быть такой:
Write (f,’Корни уравнения’,x1,x2);
Однако для того чтобы инструкция Write записала (вывела) данные в файл, не достаточно назначить имя файловой переменной. Нужно еще открыть файл для записи (вывода в файл).
Открытие файла для записи (вывода в файл)
Перед выводом в файл необходимо открыть файл. Если программа, формирующая выходной файл, уже использовалась, то возможно, что файл с результатами работы программы уже есть на диске. Поэтому программист должен решить, как поступить со старым файлом: заменить старые данные новыми или добавить новые данные к старым. Это определяется во время открытия файла.
Возможны следующие режимы (варианты) открытия файла для записи в него данных:
Перезапись (запись нового файла поверх существующего или создание нового файла);
Добавление в существующий файл.
Создание нового файла или замена существующего файла
Процедура rewrite. Чтобы открыть файл в режиме создания нового файла или замены существующего, необходимо вызвать процедуру rewrite, указав в качестве параметра файловую переменную. Процедуру Rewrite применяют, если при открытии файла старое его содержимое необходимо уничтожить, а на его место записать новое.
Пример: Открыть файл в режиме создания нового файла и записывает в него 5 раз слово Информатика.
Program new_fail;
var f : text; { текстовый файл }
i : integer;
Begin
assign (f,’test.txt’);
rewrite (f); { открыть в режиме записи }
For i:=1 to 5 do
Writeln (f, ' Информатика ', i ) ;
Close(f); { закрыть файл }end.
В результате выполнения программы на диске появляется файл test.txt. Распечатка файла test.txt. :
Информатика 1
Информатика 2
Информатика 3
Информатика 4
Информатика 5
Текст программы, которая открывает уже ранее существующий файл test.txt. и записывает в него две новые строки удаляя прежние.
Program replace_fail;
var f : text; { текстовый файл }
i : integer;
Begin
assign ( f, ’test.txt’);
rewrite (f); { открыть в режиме перезаписи }
For i:=6 to 7 do
Writeln (f, ' Информатика ', i ) ;
Close(f); { закрыть файл }end.
В результате выполнения программы содержимое файла test.txt изменяется. Распечатка файла:
Информатика 6
Информатика 7
Запись файла в режиме добавления
Процедура append. Чтобы открыть файл в режиме добавления информации в существующий файл, необходимо вызвать процедуру append, указав в качестве параметра файловую переменную (переменную типа text). этой процедурой следует пользоваться, если файл, подлежащий обработке, уже существует и данные, хранимые в нём, не должны быть утрачены.
Следующая программа, тоже, как и программа replace_fail, открывает файл test.txt, но уже в режиме добавления, и записывает в него две строки (дописывает в конец файла).
Program add_fail;
var f : text; { текстовый файл }
i : integer;
Begin
assign ( f, ’test.txt’);
append (f); { открыть в режиме добавления }
For i:= to do
Writeln (f, ' Информатика ', i) ;
Close(f); { закрыть файл }end.
После выполнения приведенной программы содержимое файла test.txt опять меняется. Распечатка файла:
Информатика 6
Информатика 7
Информатика 8
Информатика 9
Закрытие файла
Процедура close. Перед завершением работы программа должна закрыть все открытые файлы. Это делается вызовом процедуры close. Этой процедуре в качестве параметра передается файловая переменная, связанная с файлом, который надо закрыть.
Пример использования процедуры:
close ( f ) ;
(смотри предыдущие примеры программ).
Переименование файла
Процедура Rename позволяет переименовывать существующий файл, связанный с указанной в качестве параметра файловой переменной. Следует учитывать, что процедура Rename применима только к закрытым файлам. Следующий фрагмент программы позволит вам переименовать файл TEST.DAT. в файл МЕМ.ТХТ.
Assign (file, c:\test.dat’);
Rename (file, c:\mem.txt’);
Стирание файла
Процедура Erase стирает файл с диска. При этом файловая переменная должна быть предварительно связана с реально существующим файлом. Например, с помощью следующих двух операций можно удалить с диска файл test.dat.
Assign (file, c:\test.dat’);
Erase (file);
Объявление файловой переменной
Обработка файлов
Type File_Integer=File of Integer;
File_Char=File of Char;
Var F1:File_Integer;
F2:File_Char;
F3:File of Integer;
F4:Text;
F5:File;
Assign(F,’A:\int1.dat’)
Установление связи между файловой переменной и файлом на диске
Reset(F)
Открытие файла для чтения
Rewrite(F)
Открытие файла для записи
Close(F)
Закрытие файла
EOF(F)
Признак конца файла
EOLN(F)
Признак конца строки в текстовом файле
Erase(F)
Удаление с диска файла, связанного с файловой переменной
Rename(F)
Переименование файла, связанного с файловой переменной
Работа со строковыми типами данных
Строка – упорядоченная последовательность символов. Строковый тип данных – структурированный тип в Турбо-Паскале. Каждый символ строковой величины занимает 1 байт памяти (код А8СII). Количество символов в строке называется ее длиной. Длина строки может лежать в диапазоне от 0 до 255.
Присваиваемое значение строки, так же как и отдельный символ типа CHAR, заключается в апострофы.
Строковая константа последовательность символов, заключенных в апострофы.
Например: ' это строковая константа', '272'.
Два следующих друг за другом апострофа ( ' ' ) обозначают пустую строку, т.е. строку с нулевой длиной. Если апострофы опушены, то компилятор рассматривает приведенный фрагмент текста как числовую величину или как идентификатор.
Описание (объявление) строковых переменных
Строковая переменная описывается в разделе описания переменных: VAR <переменная> : string [<максимальная длина строки>].
Например:
VAR dlinna : string [20];
В описании строки можно не указывать длину.
Например:
VAR S : string;
В таком случае считается, что она равна максимальной величине – 255.
Для доступа к отдельному символу в строке необходимо указать имя строки и в квадратных скобках номер позиции элемента (символа) в строке.
Элементы строки идентифицируются именем строки с индексом, заключенным в квадратные скобки.
Например: N[5], S[1], slovo[k+1].
Первый символ строки имеет номер 1. Индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания.
Тип string и стандартный тип char совместимы. При этом по отношению к отдельному символу строки возможны все те же операции, что и к переменной типа char. В частности, возможны взаимные операции присвоения значений. Строки и символы могут употребляться в одних и тех же выражениях.
Операции над строками.
Операция сцепления
Операция сцепления (конкатенации) (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и переменные,
Пример:
'Мама'+' мьла'+' раму' . В результате получится строка: 'Мама мыла раму'. Длина результирующей строки не должна превышать 255.
Операции отношения
Операции отношения: =, <, >, <=, >=, <>. Позволяют произвести сравнение двух строк, в результате чего получается логическое значение (true или false), Операция отношения имеет приоритет более низкий, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы.
Пример:
Выражение
Результат
'True1' <'True2'
True
' Mother' >' MOTHER'
True
True
'Мама' <> ' Мама'
True
Тгие
True
'Cat' = 'Cat'
True
True
Функция Сору
Функция Сору позволяет копировать фрагмент некоторой строки из одной переменной в другую. Вызывая функцию Сору, необходимо указывать следующие параметры;
имя строки, из которой должен извлекаться копируемый фрагмент,
позицию в строке, начиная с которой будет копироваться фрагмент,
число копируемых символов.
Сообщения об ошибке не будет, если начальная или конечная позиции копируемого фрагмента находятся вне пределов исходной строки символов. Результатом выполнения операции в первом случае будет строка нулевой длины, во втором фрагмент от начальной позиции копирования до конца исходной строки.
Функция Сору(S, Pos, N) выделяет из строки S подстроку длиной N символов, начиная с позиции Pos. Здесь N и Pos – целочисленные выражения.
Пример:
Значение S
Выражение
Результат
' Мама мыла раму'
Сору (S, 6,4)
'мыла'
'Маша ела кашу'
Сору(S, 1,8)
'Маша ела'
PROGRAM function_Copy;
VAR Word : STRING[20];
word1, word2, word3 : STRING[20];
BEGIN
Word:=’форматирование’;
Writeln (Word);
Word1 :=copy (Word, 1, 5);
Writeln (Word1); {на экран выводится форма}
Word2 :=copy (Word, 6, 3);
Writeln (Word2); {на экран выводится тир}
Word3 :=copy (Word, 8, 3);
Writeln (Word3); {на экран выводится ров}
END.
Функция Concat
Функция Concat(S1, S2, , Sn) выполняет сцепление (конкатенацию) строк S1, S2, , Sn в одну строку.
Пример:
Выражение
Результат
Concat ( 'Маша ',' ела ',' кашу' )
' Маша ела кашу'
PROGRAM function_Concat;
VAR slovo, s1, s2, s3 : STRING;
BEGIN
Writeln(’введите слово’);
Readln(s1);
Writeln(’введите слово’);
Readln(s2);
Writeln(’введите слово’);
Readln(s3);
slovo:= concat(s1, s2, s3);
Writeln(slovo);
Readln;
END.
Функция Length
Встроенная функция Length (длина) позволяет определить фактическую длину текстовой строки, хранящейся в указанной переменной (а не величину предельного размера строки, установленную при декларации).
При подсчете фактической длины строки учитываются все входящие в нее символы, в том числе и пробелы.
Функция Length(S) определяет текущую длину строки S. Результат значение целого типа.
Значение S
Выражение
Результат
'test - 5'
Length(S)
6
' (А+В) *С'
Length(S)
7
Пример:
PROGRAM function_Length;
VAR Words : STRING;
BEGIN
Writeln(’введите слово’);
Readln(Words);
Writeln(’слово состоит из ’, Length (Words),’букв. ’);
END.
Функция Pos
С помощью функции Poz можно осуществить в некоторой строке поиск определенного фрагмента. Если заданный фрагмент в строке присутствует, то функция возвращает номер позиции в строке, с которой этот фрагмент начинается. Если фрагмент в строке не найден, то функция возвращает 0.
Функция Pos требует полного совпадения искомого фрагмента и фрагмента строки, в которой производится поиск. Причем большие и маленькие буквы считаются различными символами(«К»не идентично«к»).
Функция Pos(S1, S2) обнаруживает первое появление в строке S2 подстроки S1. Результат – целое число, равное номеру позиции, где находится первый символ подстроки S1. Если в S2 подстроки S1 не обнаружено, то результат равен 0.
Значение S2
Выражение
Результат
' abcdef'
Pos (' cd' , S2)
3
' acdbcdef '
Pos ('cd' , S2)
2
' abcdef '
Pos (' k' , S2)
0
' hgklmn '
Pos (' K' , S2)
0
Пример:
PROGRAM function_Pos;
VAR Words : STRING[50];
Search_Word : STRING[20];
Position : INTEGER;
BEGIN
Position := Pos(Serch _Word, Words);
Writeln(Position );
END.
Процедура Delete
Процедура Delete удаляет в исходной строкe фрагмент определенной длины, начинающийся с указанной позиции. Так, оператор Delete(Words,2,3); удаляет из строки Words фрагмент, состоящий из трех символов и начинающийся со второй позиции.
Процедура Delete(S, Poz, N) - удаление из строки S начиная с позиции Poz N символов,.
Пример:
Исходное значение S
Оператор
Конечное значение S
' abcdefg '
Delete ( S, 3, 2 )
' abef '
' abcdefg '
Delete( S, 2, 6 )
' а '
В результате выполнения процедуры уменьшается текущая длина строки в переменной S.
Процедура Insert
Процедура Insert вставляет в исходную строку, начиная с указанной позиции, другую строку. Оператор Insert(Word1, Words,4); указывает, что необходимо вставить строку Word1 в строку Words, начиная с 4-й позиции (перед ней). Процедура Insert (S1, S2, Poz) – вставка строки S1 в строку S2, начиная с позиции Poz.
Пример:
Исходное значение S2
Оператор
Конечное значение S2
'ЭВМ РС'
Insert (' IВМ-' , S2, 5)
' ЭВМ IВМ-РС'
'Рис. 2'
Insert('N' ,S2, 6)
' Рис . N2 '
PROGRAM procedura _Insert_i_Delete;
VAR words : STRING[20];
word1 : STRING[20];
BEGIN
Word:=’математика’;
Writeln (Word);
Delete(word, 1, 2);
Writeln (Word); {на экран выводится тематика}
Delete(word, 5, 4);
Writeln (Word); {на экран выводится тема}
Word1:=’сис’;
Insert (word1,word, 1);
Writeln (Word); {на экран выводится система}
END.
Функция UpCase
Функция UpCas позволяет преобразовывать символ любой литеры из строчного в прописной. Эта функция рассчитана на обработку отдельного символа. Поэтому для обработки строки символов с помощью этой функции приходится организовывать цикл.
Примечание: Русские литеры не могут обрабатываться этой функцией.
Следующий пример иллюстрирует, как с помощью функции UpCase можно заменить все строчные буквы в строке на прописные:
PROGRAM function_Upcase;
VAR Words : STRING;
i : INTEGER;
BEGIN
Words := ’Фирма Microsoft’;
FOR i:= 1 TO Length (Words) DO Words[i]:= UpCase(Words[i]);
Writeln(Words); {Выводится текст ’Фирма MICROSOFT’}
END.
В результате работы этой программы на экран выводится строка, содержащая большие английские и маленькие русские буквы.
Процедура VAL.
Процедура val позволяет преобразовать цифровые символы (изображение числа) в число. В общем виде обращение к процедуре выглядит так:
VAL (Строка, Число, Код) ;
где Строка – строковая константа или переменная, содержащая изображение числа; Число – переменная целого или дробного типа, которой должно быть присвоено значение, изображенное строкой Строка;
Код – возвращаемый процедурой код ошибки (целое число), Если строка успешно преобразована в число, то код ошибки равен нулю. Если строка не может быть преобразована в число из-за того, что строка не является изображением числа, то значение Код будет равно номеру символа строки, который явился причиной невозможности преобразования.
Например:
VAL(’1,25’, n, code);
значение переменной code равно 2, так как строка 1,25 не является изображением числа, поскольку для отделения дробной части числа от целой используется точка, а не запятая.
Процедура VAL полезна при организации ввода с клавиатуры. Например, если в программе объявлена переменная month (месяц) типа integer, и ее значение вводится с клавиатуры инструкцией read, то в результате возможной ошибки оператора, задавшего месяц строкой символов, например, 'июнь', а не цифрой, программа завершится ошибкой времени выполнения. Однако если числовые данные вводить как строку, а затем преобразовывать в число с помощью процедуры VAL, то можно избежать подобного неприятного завершения программы.
Длина строки
Length (C)
Length (обработка строк’)=15
Конкатенация (соединение) строк
A+B или Concat(A, B)
Visual’+’ Basic’=’Visual Basic’
Выделение подстроки
Copy(D, Позиция, Длина)
Copy(Иван Иванович’,7,4)=’вано’
Поиск подстроки
Pos(Строка, Подстрока)
Pos( Иван Иванович’,’но’)=9
Вставка Строки1 в Строку2
Insert(Строка1, Строка2, Позиция)
Insert(мо’,’кино’,3) – кимоно’
Удаление символов из Строки
Delete(Строка, Позиция, Длина)
Delete(формула’,5,2) – форма’
Перевод строки в число
Val(Строка, Число, Код ошибки)
Код ошибки равен позиции не цифры
Val(1234’,n,k) n=1234, k=0
Val(12+34’,n,k) n не определено, k=3
Перевод числа в строку
Str(Число, Строка)
Str(1234, a) a = 1234’
Список используемой литературы
Культин Н. Программирование в Turbo Pascal 7.0 и Delphi/ Второе издание, переработанное и дополненное. – СПб.: БХВ – Санкт-Петербург, 1999.
Лукин С.Н. Турбо Паскаль 7.0. Самоучитель для начинающих – 2-е изд., испр. и дополн. – М.: “Диалог-МИФИ”, 2004.
Ревенко М.А. Pascal. Обучающая программа – ВГПУ Воронеж.
Турбо Паскаль 7.0. Самоучитель – СПб,: Питер; К,: Издательская группа BHV, 2003.
13PAGE 15
13PAGE 145915
15