
- •Любой алгоритм, какой бы он сложный не был, содержит лишь три основных, или, иначе говоря, базовых структуры. Этими базовыми структурами являютия:
- •Любой алгоритм, какой бы он сложный не был, содержит лишь три основных, или, иначе говоря, базовых структуры. Этими базовыми структурами являютия:
- •Клавиши перемещения курсора:
- •Работа с блоками текста
- •Основные клавиши работы с Турбо-Паскалем:
- •Клавиши перемещения курсора:
- •Работа с блоками текста
- •Основные клавиши работы с Турбо-Паскалем:
- •Клавиши перемещения курсора:
- •Работа с блоками текста
- •Основные клавиши работы с Турбо-Паскалем:
- •Строковый тип данных
- •Описание констант
- •Операция присваивания
- •Приоритет операций
- •Оператор присваивания
- •Совместимость и преобразование типов
- •Элементарный ввод-вывод
- •Лекция 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.2.3. Пример использования множества
В качестве иллюстрации приемов работы с данными типа множество обычно рассматривают классическую задачу под названием "решето Эратосфена" (выделение из натуральных чисел всех простых чисел). Отойдем от этой традиции и приведем текст программы, которая вводит некоторое подмножество латинских букв и печатает сообщение о том, содержит ли введенное подмножество буквы A, B, C одновременно. Пример 33
Пример 33
program Mnogestvo; {использование множеств} var Bukvy: set of 'A'..'Z'; Buk: char; begin Bukvy := []; {инициализация множеств} while not eoln do begin read(Buk); Bukvy := Bukvy + [Buk]; end; if ['A', 'B', 'C'] - Bukvy = [] then writeln('содержатся A, B, C') else writeln('не содержатся одновременно буквы A, B, C'); end. |
4.3. Строки
4.3.1. Объявление типа String
Особое место в программировании занимают задачи по обработке различных текстов, представляющих собой цепочки символов. В Турбо-Паскале введен специальный строковый тип String [N], определяющий множество цепочек символов произвольной длины от 0 до N. Количество символов в строке может быть любым, но не более 255. Если указание максимальной длины опущено, то подразумевается максимально возможная длина, т.е. 255, например:
var Stroka1: string; Stroka2: string[20]; |
К любому символу строки можно обратиться точно так же, как к элементу одномерного символьного массива, например:
if Stroka2[5] = 'a' then ... |
Для переменной типа String длиной N символов отводится N+1 байтов памяти, причем нулевой байт содержит значение текущей длины строки. Это значение может быть получено с помощью специальной функции Ord (Stroka2[0]), которая возвращает порядковый номер аргумента. Заметим, что для целых типов функция Ord возвращает сам аргумент. Однако, как правило, для определения текущей длины строки используют стандартную функцию Length, аргументом которой является выражение типа String, например, функция Length (Stroka2) возвращает текущую длину этой строки.
4.3.2. Операции над строковыми переменными
Строковым переменным можно присваивать значение строковой константы, например:
Stroka1 := 'stroka '; Stroka2 := 'string'; |
К строкам можно применить операцию конкатенации (сцепления), обозначаемую символом '+', например:
Stroka1 := Stroka1 + Stroka2; writeln(Stroka1); |
В результате выполнения этих двух операторов на экране появится сообщение:
stroka string
Если длина сцепленной строки превысит максимально допустимую длину N, то "лишние" символы отбрасываются. Для строковых переменных определены операции сравнения, например:
Stroka1 < Stroka2 возвращает FALSE; Stroka2 < 'ttring' возвращает TRUE;
При выполнении операции сравнения действуют следующее правило:
более короткая строка всегда меньше более длинной;
для строк одинаковой длины происходит поэлементное сравнение с учетом лексикографической упорядоченности.
Для ввода строковых переменных обычно используют оператор Readln(Stroka1), который пропускает символ "конец строки". Вывод осуществляется оператором Writeln(Stroka1). Очевидно, что ввод строковой переменной можно осуществить посимвольно, как в одномерный массив, но в этом случае необходимо записать в нулевой байт ее длину, используя функцию Chr(B). Функция Chr(B) типа Char преобразует выражение типа Byte в символ и возвращает последний в качестве своего значения, например:
Stroka1[0] := Chr(5); - строка будет иметь длину 5 символов.