
- •Любой алгоритм, какой бы он сложный не был, содержит лишь три основных, или, иначе говоря, базовых структуры. Этими базовыми структурами являютия:
- •Любой алгоритм, какой бы он сложный не был, содержит лишь три основных, или, иначе говоря, базовых структуры. Этими базовыми структурами являютия:
- •Клавиши перемещения курсора:
- •Работа с блоками текста
- •Основные клавиши работы с Турбо-Паскалем:
- •Клавиши перемещения курсора:
- •Работа с блоками текста
- •Основные клавиши работы с Турбо-Паскалем:
- •Клавиши перемещения курсора:
- •Работа с блоками текста
- •Основные клавиши работы с Турбо-Паскалем:
- •Строковый тип данных
- •Описание констант
- •Операция присваивания
- •Приоритет операций
- •Оператор присваивания
- •Совместимость и преобразование типов
- •Элементарный ввод-вывод
- •Лекция 5 Выражения
- •Математические операции
- •Логические операции
- •Операции отношения
- •Приоритет операций
- •Основные математические функции
- •Уменьшает значение числа X на y. Если число y не указано, то уменьшение происходит на 1. Циклы
- •Арифметические циклы
- •Итерационные циклы с предусловием
- •Итерационные циклы с постусловием
- •Операторы завершения цикла
- •Операторы ветвления и цикла Условный оператор if
- •Оператор множественного выбора Case
- •Операторы цикла
- •Операторы ветвления и цикла
- •Условный оператор if
- •Оператор множественного выбора Case
- •Операторы цикла
- •Лекция 7. Подпрограммы: процедуры и функции
- •Пример 27
- •Обмен данными
- •4.2. Множества
- •4.2.1. Объявление типа множества
- •4.2.2. Операции над множествами
- •4.2.3. Пример использования множества
- •Пример 33
- •4.3. Строки
- •4.3.1. Объявление типа String
- •4.3.2. Операции над строковыми переменными
- •4.3.3. Встроенные процедуры и функции обработки строк
- •Пример 34
- •4.1. Матрица
- •4.1.1. Ввод-вывод элементов матрицы
- •4.1.2. Определение индексов элементов матрицы
- •Записи Объявление типа записи
- •Вложенные записи
- •Массивы записей
- •Пример обработки массива записей
- •Определение и особенности файлов
- •Доступ к компонентам файла
- •Текстовый файл
- •Чтение из текстового файла
- •Запись в текстовый файл
- •Файлы в Тубо Паскаль
- •Файловые процедуры и функции
- •Текстовые файлы
- •Типизированные файлы
- •Нетипизированные файлы
- •Графика Турбо Паскаля
- •Записи Объявление типа записи
- •Вложенные записи
- •Массивы записей
- •Пример обработки массива записей
- •Статические и динамические памяти переменные
- •Объявление указателей
- •Выделение и освобождение динамической памяти
- •Операции с указателем
- •Пример 41
- •Связанные списки
- •Понятие бинарные деревья. Операции над бинарными деревьями
- •Применение бинарных деревьев
- •Сравнение рекурсии и итерации
- •Пример 51
- •Реализация объектно-ориентированного подхода в турбо-паскале
- •Алгоритмическая и объектная декомпозиция
- •Объектный тип в Турбо-Паскале
- •Способы наследования и переопределения
- •Виртуальные методы
- •Модуль c r t
- •Модуль g r a p h
4.3.3. Встроенные процедуры и функции обработки строк
В Турбо-Паскале имеется несколько стандартных процедур и функций, предназначенных для обработки строковых переменных. Приведем наиболее полезные из них:
Concat(S1[,S2,...,Sn]: string ): string - функция возвращает строку, полученную в результате сцепления строк S1, S2,...,Sn. (эквивалентна операции конкатенации); Copy(St : string; Index: integer; Count: integer): string - функция возвращает подстроку, выделенную из исходной строки St длиной Count символов, начиная с символа с номером Index; Delete(var St:string; Index, Count: integer) - процедура удаляет из строки St подстроку длиной Count символов, начиная с символа с номером Index исходной строки; Insert(Subst: string; var St: string; Index: integer) - процедура вставляет подстроку Subst в исходную строку St, начиная с символа с номером Index исходной строки; Pos(Subst,St: string): byte - функция отыскивает первое вхождение подстроки Subst в строке St и возвращает номер позиции, с которой она начинается; если вхождение не установлено, возвращается 0. Более подробный список стандартных процедур и функций Турбо-Паскаля приведен в [9].
В качестве примера обработки строковых переменных рассмотрим функцию определения первого вхождения строки Str2 в строку Str1, начиная с символа с номером N в строке Str1 (пример 34). Пример вызова функции: K = PosN(2, 'abcabc', 'ab'); Переменная K получит значение 4.
Пример 34
Исходные данные: |
Str1, Str2, N |
Результат: |
PosN - номер символа строки Str1, с которого начинается вхождение строки Str2; |
|
PosN = 0, если вхождение не установлено. |
function PosN(N: integer; Str1,Str2: string): integer; {определение первого вхождения строки Str2 в строку Str1, начиная с номера N} var I, J, K: integer; D1, D2: integer; {длины строк Str1, Str2} Fl: boolean; {флаг} begin D1 := Length(Str1); D2 := Length(Str2); PosN := 0; {инициализация} if ( D1 - N + 1 >= D2 ) and ( N > 0) then {вхождение возможно} begin Fl := FALSE; I := N; K := D1-D2+1; while not Fl and ( I <= K) do {цикл просмотра возможных вхождений} begin Fl := TRUE; J := 1; while Fl and (J <= D2) do {цикл проверки вхождения Str2 в Str1, начиная с I-го символа строки Sr1} begin if Str2[J] <> Str1[I+J-1] then Fl := FALSE; J := J + 1; end; I := I+1; end; if Fl then PosN := I-1 {если Fl = TRUE, то вхождение установлено} end; end; |
4.1. Матрица
4.1.1. Ввод-вывод элементов матрицы
Развитый математический аппарат обработки элементов матрицы определил широкое использование этой структуры данных. В памяти ЭВМ матрицы хранятся по строкам. Соответственно ввод и вывод элементов матрицы в программе осуществляется построчно. Приведем фрагмент программы, осуществляющей построчный ввод элементов матрицы A типа Matr:
type Matr = array[1..5,1..5] of integer; объявлен тип матрицы 5*5 элементов} var A: Matr; {объявлена матрица A целого типа} N, M, I, J: integer; . . . write('Введите количество строк < = 5 '); read(N); write('Введите количество столбцов < = 5 '); read(M); for I := 1 to N do for J := 1 to M do read(A[I,J]); |
При выводе матрицы в программе необходимо предусмотреть смену строки экрана, когда заканчивается каждая строка матрицы, например:
writeln('Вывод матрицы'); for I := 1 to N do begin for J := 1 to M do write(A[I,J]:5);{вывод строки матрицы} writeln;{смена строки экрана} end; |
Если размерность матрицы достаточно велика, то можно осуществить вывод с заданным числом элементов в строке, например:
writeln('Вывод матрицы по 4 элемента в строке'); for I := 1 to N do begin for J := 1 to M do begin write(A[I,J]:7); if J Mod 4 = 0 then writeln; {смена строки после вывода 4-х элементов} end; writeln; {вывод каждой новой строки матрицы с новой строки экрана} end; |
Этот фрагмент выводит элементы каждой строки матрицы следующим образом: 4 элемента по 7 позиций в строке экрана, оставшиеся M-4 элементов - в следующей строке. После чего осуществляется смена строки экрана и вывод очередной строки матрицы.