- •Федеральное агентство по образованию
- •1. Метод проектирования программных средств
- •1.1. Техническое задание
- •1.2. Анализ задачи
- •1.3. Разработка алгоритма
- •1.4. Выбор языка программирования
- •2. Структуры алгоритмов
- •2.1. Алгоритм линейной структуры
- •2.2. Ветвления
- •2.3. Циклы
- •3. Еспд
- •3.1. Схемы алгоритмов, программ, данных и систем
- •1. Правила применения символов
- •2 Правила выполнения соединений
- •3 Специальные условные обозначения
- •3.2. Другие разделы еспд приведены в приложении №1.
- •4. Классификация языков программирования
- •Краткая история языков программирования
- •5. Работа в интегрированной среде Турбо Паскаль 7.0.
- •6. Основы Паскаля
- •6.1. Алфавит и лексемы
- •6.1.1. Имена, ключевые слова и знаки операций
- •6.1.2. Константы
- •6.1.3. Метки
- •6.1.4. Комментарии
- •6.1.5. Директивы компилятору
- •6.2. Структура программной единицы
- •6.3. Стиль записи программ на языке Паскаль
- •7. Типы данных в Паскале
- •7.1. Классификация типов данных в Турбо Паскале
- •7.2. Порядковые типы
- •7.2.1. Логический (булевский) тип
- •7.2.2. Целые типы
- •7.2.3. Перечисляемый тип
- •7.2.4. Тип – диапазон
- •7.2.5. Символьный тип
- •7.3. Вещественные типы
- •7.4. Строки
- •7.4.1. Основные понятия
- •7.4.2. Операции над строками
- •7.4.3. Процедуры и функции для работы со строками
- •8. Совместимость и преобразование типов
- •8.1. Совместимость типов
- •8.2. Преобразование (приведение) типов и значений
- •8.2.1. Явное преобразование типов и значений
- •8.2.2. Неявное преобразование типов
- •9. Выражения в языке Паскаль
- •10. Оператор присваивания
- •11. Простейший ввод-вывод на Паскале
- •11.1. Стандартные файлы Input и Output
- •11.2. Ввод с клавиатуры
- •11.3. Вывод на экран
- •12. Средства языка тр для циклов с известным числом повторений
- •12.1. Табулирование функций
- •13. Разветвляющиеся алгоритмы
- •13.1. Команда выбора case
- •13.2. Команда ветвления
- •14. Циклы с неизвестным числом повторений
- •14.1. Цикл с предусловием (While)
- •14.2. Цикл с постусловием (Repeat … until)
- •Приложение 1. «Стандарты еспд»
- •Руководство системного программиста гост 19503-79*
- •Общие положения
- •Содержание разделов
- •Руководство оператора гост 19.505 – 79* Общие положения
- •Содержание разделов
- •Описание программы гост 19.402-78
- •Программа и методика испытаний еспд. Гост 19.301-79
- •Общие положения
- •Содержание разделов
- •59 Лекции по курсу «Языки программирования» Часть I.
7.4. Строки
7.4.1. Основные понятия
Строки используются для хранения последовательностей символов. В Паскале существует три типа строк:
стандартные (string);
определяемые программистом на основе string;
строки в динамической памяти (этот вид строк будет рассматриваться позже).
Строка типа string может содержать до 255 символов. Под каждый символ отводится по одному байту, в котором хранится код символа. Еще один байт отводится под фактическую длину строки. Таким образом, в памяти под одну переменную типа string всегда отводится 256 байт.
Для коротких строк использовать стандартную строку неэффективно, поэтому в язык введена возможность самостоятельно задавать максимальную длину строки, например:
type
str6 = string [6];
Здесь описан собственный тип данных с именем str6. Переменная этого типа занимает в памяти 7 байт.
Внимание. Длина строки должна быть константой или константным выражением, потому что инструкции по выделению памяти формируются компилятором до начала выполнения программы.
Примеры описания строк:
const
n = 15;
var
s : string; { строка стандартого типа }
s1 : str6; { строка типа str6, описанного выше }
s2 : string [n]; { описание типа задано при описании переменной }
Инициализация строк, как и переменных других типов, выполняется в разделе описания констант.
const
s3 : string [15] = '1234567890';
Внутреннее представление строки s3 изображено на следующем рисунке.

7.4.2. Операции над строками
Строки можно присваивать друг другу. Если максимальная длина результирующей строки меньше длины исходной, лишние символы справа отбрасываются:
s2 := '1234567890';
s1 := s2: { в s1 будут помещены символы "123456" }
Строки можно склеивать (сцеплять) между собой с помощью операции конкатенации, которая обозначается знаком +, например:
s1 := 'ком':
s2 := s1 + 'пот'; { результат - "компот" }
Строки можно сравнивать друг с другом с помощью операций отношения. При сравнении строки рассматриваются посимвольно слева направо, при этом сравниваются коды соответствующих пар символов. Строки равны, если они имеют одинаковую длину и посимвольно эквивалентны. В строках разной длины существующий символ всегда больше соответствующего ему отсутствующего символа.
'abc' > 'ab'
'abc' = 'abc'
'abc' < 'abc '
Имя строки может использоваться в процедурах ввода-вывода:
readln (s1);
write (s1):
При вводе в строку считывается из входного потока количество символов, равное длине строки или меньшее, если символ перевода строки (который вводится нажатием клавиши Enter) встретится раньше. При выводе под строку отводится количество позиций, равное ее фактической длине.
К отдельному символу строки можно обращаться как к элементу массива символов, например sl[4]. Символ строки совместим с типом char, их можно использовать в выражениях одновременно, например:
sl[4] := 'x';
writeln (s2[3] + s2[5] + 'г');
7.4.3. Процедуры и функции для работы со строками
При работе со строками, как правило, возникает необходимость выполнять определенный набор действий со строкой и ее фрагментами, например копирование, вставку, удаление или поиск. Для эффективной реализации этих действий в Паскале предусмотрены стандартные процедуры и функции.
Функция Concat(si, s2.....sn) возвращает строку, являющуюся слиянием строк s1, s2,..., sn. Ее действие аналогично операции конкатенации.
Функция Copy(s, start, len) возвращает подстроку длиной len, начинающуюся с позиции start строки s. Параметры len и start должны быть целого типа.
Процедура Delete(s, start, len) удаляет из строки s, начиная с позиции start, подстроку длиной len.
Процедура Insert(subs, s, start) вставляет в строку s подстроку subs, начиная с позиции start.
Функция Length(s) возвращает фактическую длину строки s, результат имеет тип byte.
Функция Pos(subs, s) ищет вхождение подстроки subs в строку s и возвращает номер первого символа subs в s или нуль, если subs не содержится в s.
Процедура Str(x, s) преобразует числовое значение х в строку s, при этом для х может быть задан формат, например Str(x:6:2. s).
Процедура Val (s, x, errcode) преобразует строку s в значение числовой переменной х, при этом строка s должна содержать символьное представление числа. В случае успешного преобразования переменная errcode равна нулю. Если же обнаружена ошибка, то errcode будет содержать номер позиции первого ошибочного символа, а значение х не определено.
