- •Р.К. Ахмадулин технология программирования
- •Оглавление
- •§1. Основные понятия
- •Основные символы языка Паскаль
- •Элементарные конструкции языка Паскаль
- •Примеры записи чисел и выражений на языке Паскаль
- •Вопросы для самопроверки
- •§2. Типы данных
- •Целые типы
- •Вещественные типы
- •Символьный тип
- •Логический тип
- •Скалярные типы, определяемые пользователем
- •Вопросы для самопроверки
- •§3. Операции и выражения
- •Приоритет операций и отношений в выражениях
- •Стандартные (встроенные) функции
- •Вопросы для самопроверки
- •§4. Структура программы
- •Комментарии
- •Директивы компилятора
- •Оформление исходного текста
- •Вопросы для самопроверки
- •§5. Переменные и константы. Оператор присваивания
- •Понятие константы
- •Понятие переменной
- •Оператор присваивания
- •Совместимость типов данных
- •Понятие типизированной константы
- •Вопросы для самопроверки
- •§6. Процедуры ввода и вывода
- •Процедуры вывода
- •Форматированный вывод
- •Процедуры ввода
- •Вопросы для самопроверки
- •§7. Условный оператор и оператор выбора. Оператор перехода
- •Условный оператор if
- •Понятие составного оператора
- •Оператор выбора
- •Оператор перехода
- •Вопросы для самопроверки
- •§8. Операторы цикла
- •Циклы с заданным числом итераций
- •Циклы с предусловием
- •Циклы с постусловием
- •Вопросы для самопроверки
- •§9. Пример использования циклов
- •Вычисление факториала
- •Вычисление суммы по заданной формуле
- •Вычисление суммы по формуле с заданной точностью
- •Вычисление максимального элемента последовательности
- •Вычисление длины последовательности элементов
- •Вопросы для самопроверки
- •§10. Массивы
- •Описание массива
- •Обращение к элементам массива
- •Многомерные массивы
- •Допустимые операции с массивами
- •Инициализация массива
- •Вопросы для самопроверки
- •§11. Алгоритмы сортировки
- •Сортировка выбором
- •Сортировка вставкой
- •Пузырьковая сортировка
- •Улучшенные сортировки
- •Вопросы для самопроверки
- •§12. Строковый тип
- •Описание строковых переменных
- •Операции над строками
- •Процедуры и функции для работы со строками
- •Вопросы для самопроверки
- •§13. Записи
- •Объявление записи
- •Обращение к записям
- •Оператор присоединения with
- •Записи с вариантами
- •Инициализация записи
- •Вопросы для самопроверки
- •§14. Множества
- •Описание множеств
- •Операции над множествами
- •Пример использования множеств
- •Множества как типизированная константы
- •Вопросы для самопроверки
- •§15. Процедуры и функции
- •Понятие процедуры и функции
- •Структура процедуры
- •Структура функции
- •Формальные параметры
- •Глобальные и локальные объекты
- •Вопросы для самопроверки
- •§16. Модули
- •Понятие модуля
- •Стандартные модули в Турбо Паскаль
- •Подключение модулей
- •Структура модуля
- •Вопросы для самопроверки
- •§17. Файлы
- •Понятие файла
- •Процедуры и функции для работы с файлами
- •Понятие буфера ввода-вывода
- •Вопросы для самопроверки
- •§18. Типизированные файлы
- •Описание типизированных файлов
- •Операции над типизированными файлами
- •Последовательный и прямой доступ
- •Вопросы для самопроверки
- •§20. Текстовые файлы
- •Описание типизированных файлов
- •Чтение и запись
- •Конец строки и конец файла
- •Дополнительные процедуры для работы с текстовыми файлами
- •Файлы Input и Output
- •Вопросы для самопроверки
- •§21. Ссылки и указатели
- •Понятие указателя
- •Описание указателей
- •Операции с указателями
- •Выделение и освобождение динамической памяти
- •Вопросы для самопроверки
- •Рекомендуемая литература
- •Технология программирования
- •625000, Тюмень, ул. Володарского, 38
- •625039, Тюмень, ул. Киевская, 52
§12. Строковый тип
Для хранения текста можно использовать массив символов. Однако для этих целей в языке Паскаль имеется специальный строковый тип – String.
Описание строковых переменных
Значением строкового типа является последовательность символов.
Строковый тип описывается с помощью ключевого слова String, после которого в квадратных скобках указывается длина строки. Длина строки может быть от 1 до 255 символов.
Пример: описание строковых переменных фиксированной длины
type
MyString: String[30];
var
s1: MyString;
s2: String[25];
Если квадратных скобок не следует, то описанная переменная является строкой переменной длины, в которую можно записать до 255 символов.
Пример: описание строковых переменных переменной длины
var s: String;
Тип String без указания длины совместим со всеми типами строк.
Особенностью строковых переменных является то, что к ним можно обращаться как к скалярным переменным, так и как к массивам. Во втором случае применяется конструкция "переменная с индексом", что обеспечивает доступ к отдельным символам строки. При этом нижняя граница индекса равна 1. Отдельный символ строки совместим с типом Char.
Пример: обращение к отдельным символам массива
var s: String;
…
s:=’Вася’;
s[3]:=’н’; { Итог: s=’Ваня’ }
В памяти ЭВМ строка занимает количество байтов, на единицу большее ее длины. Нулевой байт строки содержит ее длину.
Операции над строками
Для строк определены операции присваивания, слияния (конкатенации) и сравнения.
Для сравнения строк применяются все операции отношения. Сравнение строк происходит посимвольно, начиная с первого символа. Строки равны, если имеют одинаковую длину и посимвольно эквивалентны.
Строки могут быть элементами списка ввода–вывода, при этом записывается имя строки без индекса.
При вводе строковых переменных количество вводимых символов может быть меньше, чем длина строки. В этом случае вводимые символы размещаются с начала строки, а оставшиеся байты заполняются пробелами. Если количество вводимых символов превышает длину строки, лишние символы отбрасываются.
В программе переменную строкового типа можно:
заполнять, например readln(s);
выводить значение на экран – writeln(s);
присваивать в строковую переменную какой-либо текст – s:=’Вася’;
присваивать значение строки другой строковой переменной – s2:=s;
«склеивать» с другими строками (конкатенация) – s:=s2+’!!!’;
сравнивать строки – s=s2.
Инициализация строк может производиться и с помощью типизированных констант.
Пример: инициализация строк с помощью типизированных констант
const sName: String[9] = ‘IBM PC/AT’;
Процедуры и функции для работы со строками
Для работы со строками в языке программирования Паскаль включены процедуры и функции, которые обеспечивают редактирование и преобразование строк.
Length(s) |
Возвращает длину строки s |
Delete(s, Index, Count) |
Удаляет в строке s Count символов, начиная с позиции Index |
Insert(Substr, Dest, Index) |
Вставляет в строку Dest подстроку Substr с позиции Index |
Pos(Substr, s) |
Возвращает позицию подстроки Substr в строке s либо 0, если Substr не входит в s |
Copy(s, Index, Count) |
Возвращает подстроку строки s, Count символов, начиная с позиции Index |
Пример: работа со строками
readln(s);
s:=s+‘,_’+s+’!!!’;
writeln(s);
Пример: вывод всех символов строки s по отдельности
readln(s);
for i:=1 to length(s) do writeln(s[i]);