- •СОДЕРЖАНИЕ
- •Раздел 1. ОБЩИЕ СВЕДЕНИЯ О ПРОГРАММНОМ ОБЕСПЕЧЕНИИ
- •1.1. Принцип программного управления
- •1.2. Автоматическое выполнение команд программы
- •1.3. Этапы постановки и решения задачи на компьютере
- •1.4. Назначение и классификация языков программирования
- •1.4.1. Машинно-ориентированные языки
- •1.4.2. Машинно-независимые языки
- •1.5. Структура программного обеспечения
- •1.5.1. Системы программирования
- •1.5.2. Операционные системы
- •Раздел 2. ОСНОВЫ АЛГОРИТМИЗАЦИИ
- •2.1. Алгоритм и его свойства
- •2.2. Способы описания алгоритмов
- •2.2.1. Словесное описание
- •2.2.2. Графическое описание
- •2.2.3. Запись на алгоритмическом языке
- •2.3. Разновидности структур алгоритмов
- •2.3.1. Линейный вычислительный процесс
- •2.3.2. Разветвляющийся вычислительный процесс
- •2.3.3. Циклический вычислительный процесс
- •Раздел 3. СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ
- •3.1. Теория структурного программирования
- •3.2. Реализация структурного проектирования в современных языках программирования
- •3.3. Преобразование неструктурированных программ в структурированные
- •3.3.2. Метод введения переменной состояния
- •3.3.3. Метод булевого признака
- •3.4. Способы графического представления структурированных схем алгоритмов
- •3.4.1. Метод Дамке
- •3.4.2. Схемы Насси-Шнейдермана
- •Раздел 4. АЛГОРИТМИЧЕСКИЙ ЯЗЫК ПРОГРАММИРОВАНИЯ ПАСКАЛЬ
- •4.1. Общая характеристика языка Паскаль
- •4.2. Алфавит языка Паскаль
- •4.3. Основные понятия языка
- •4.3.1. Идентификаторы
- •4.3.2. Комментарии
- •4.4. Структура простейшей программы
- •4.5. Способы описания синтаксиса
- •4.5.2. Синтаксические диаграммы
- •Раздел 5. ОСНОВНЫЕ ТИПЫ ДАННЫХ
- •5.1. Классификация данных
- •5.2. Стандартные скалярные типы данных
- •5.2.1. Целочисленные типы
- •Формат
- •5.2.2. Вещественные типы
- •Функция
- •5.2.3. Символьный тип (тип Char)
- •5.2.4. Логический тип (тип Boolean)
- •Функция
- •5.3. Выражения
- •5.4. Оператор присваивания
- •Раздел 6. СТРУКТУРА ПРОГРАММЫ
- •6.1. Программный модуль
- •6.2. Раздел меток
- •6.3. Раздел констант
- •6.4. Раздел типов
- •6.5. Раздел переменных
- •6.6. Раздел операторов
- •Раздел 7. ОПЕРАТОРЫ
- •7.1. Составной оператор
- •7.2. Программирование линейных и разветвляющихся структур алгоритмов
- •7.2.1. Оператор перехода Goto
- •7.2.2. Условный оператор If
- •7.2.3. Оператор варианта (выбора) Case
- •7.2.4. Пустой оператор
- •7.3. Программирование циклических структур алгоритмов
- •7.3.1. Оператор цикла с параметром (оператор For)
- •7.3.2. Оператор цикла с постусловием
- •7.3.3. Оператор цикла с предусловием
- •7.3.4. Операторы Continue и Leave
- •Раздел 8. СТРУКТУРИРОВАНИЕ И ОФОРМЛЕНИЕ ПРОГРАММ
- •Раздел 9. ОПИСАННЫЕ СКАЛЯРНЫЕ ТИПЫ
- •9.1. Перечислимый скалярный тип
- •9.2. Тип диапазон
- •10.1. Массивы
- •10.1.1. Задание массивов
- •10.1.2. Действия над элементами массивов
- •10.1.3. Действия над массивами
- •10.1.4. Типизованные константы типа массив
- •10.2. Строковые данные
- •10.2.1. Строковые константы
- •10.2.2. Строковые переменные
- •10.2.3. Встроенные функции, определенные над данными типа String
- •ЛИТЕРАТУРА
10.2.Строковые данные
Строка – это последовательность любых символов кода обмена информацией (в персональных компьютерах – это код ASCII).
Строка наряду со знаками алфавита языка Паскаль может содержать русские буквы.
Строка хранится в поле основной памяти, состоящем из смежных байтов. Каждый байт содержит один символ. Максимальная длина строки, допускаемая компилятором Паскаль – 255 байт.
Различают строковые константы и строковые переменные.
10.2.1. Строковые константы
Строковая константа – это последовательность любых символов, допускаемых для представления в компьютере, заключенная в апострофы.
Например, ‘TEKST’.
Правила записи строковых констант в программе:
1)Если в строке необходимо поместить апостроф, то его повторяют дважды. При подсчете длины строки два рядом стоящих апострофа считаются одним символом.
2)При подсчете длины строки учитываются пробелы.
Например,
‘ПРОГРАММА ‘‘ИНТЕГРАЛ’’’
Так должна быть написана строка ПРОГРАММА ‘ИНТЕГРАЛ’.
‘ЗНАК ‘‘+’’’
Так должна быть написана строка ЗНАК ‘+’.
3)Допускаются пустые символьные константы, т.е. константы, не содержащие ни одного символа.
‘’ – это пустая строка нулевой длины.
4)Паскаль разрешает вставлять в строку символов управляющие символы. Символ # с целой константой без знака (от 0 до 255) обозначает соответствующий этому значению символ в коде ASCII. Между # и целой константой не должно быть никаких разделителей. Если несколько управляющих символов входят в строковую константу, то между ними не должно быть разделителей.
Например,
‘TURBO’#13#10’TEKST’
184
Здесь #13#10 – это управляющие символы, осуществляющие переход к началу следующей строки.
#7#7’MAKE’#7#7
Здесь #7 – это управляющий символ «Звонок».
#13#10
Эта строковая константа состоит только из управляющих символов. Управляющие символы пишутся вне апострофа.
10.2.2. Строковые переменные
В языке Паскаль существует два способа задания строковых переменных.
1-ый способ задания строковых переменных.
Задает строковые переменные постоянной длины. Строковая переменная определяется как одномерный массив символов:
Array [1 .. N] Of Char
<Тип_индекса> может быть задан только с помощью типа диапазон, где N – длина строки (N ≥ 1), определяемая как целое число без знака.
При таком способе объявления строка обладает всеми свойствами
массивов.
Например, строковой переменной можно присвоить значение другой строковой переменной той же длины; возможно обращение к отдельным символам строковой переменной, используя индексные переменные.
Пример 10.13.
Работа со строковыми переменными постоянной длины. Использование свойств строки, аналогичных свойствам массивов.
---------------------------------------------------------
Type
{Одномерный массив символов (строка)}
Stroka = Array [1 .. 9] Of Char;
{Двумерный массив символов (одномерный массив строк)}
185
Stranitca = Array [1 .. 30] Of Stroka; Var
Stroka1, Stroka2: Stroka; Stranitca1, Stranitca2: Stranitca; I, K, J: 1..30;
X, Y: Boolean; Const
Literal = ‘Программа’; Begin
------------------------------------
{K этому моменту Stroka2 должна быть определена:}
Stroka1 := Stroka2;
{Одной строке может быть присвоено значение другой строки той же длины. Здесь К-ой строке страницы присваивается значение строки:}
Stranitca1[K] := Stroka2;
{Обращение к отдельным символам строковой переменной:}
Stroka1[I] := ‘A’; Stroka1[J] := Stroka2[I];
{J-ому символу I-ой строки страницы присваивается значение К-ого символа строки:}
Stranitca1[I, J] := Stroka1[K];
------------------------------------
Особенности строковых переменных по сравнению с массивами:
1) Строковым переменным могут быть присвоены значения строковых констант (литералов), если длина строки равна длине литерала.
Пример 10.14.
Применительно к примеру 10.13 можно написать следующие операторы присваивания:
Stroka1 := Literal;
Stranitca[I] := Literal;
Stroka1 := ‘ПРОГРАММА’;
2) Над значениями строковых переменных одинаковой длины можно выполнять операции сравнения (=, <>, >, <, >=, <=). Сравнение производится посимвольно, начиная с левой стороны до первого несовпадающего символа.
186
Считается большей та строка, в которой первый несовпадающий символ имеет больший номер в коде обмена информацией (ASCII).
Пример 10.15.
Применительно к примеру 10.13 можно написать следующие операторы присваивания:
X := Stroka1 = Stroka2;
Если Stroka1 и Stroka2 равны, то X примет значение True, в противном случае – False.
Y := Stranitca[I] >= Stroka2;
I-ая строка страницы сравнивается со строкой (у них длины должны быть одинаковые).
Строковые переменные различной длины сравнивать нельзя.
2-ой способ задания строковых переменных.
Вторым способом задания строковых переменных является использование типа String. Формат задания данного типа представляет рисунок
10.5.
С помощью типа String определяются строки переменной длины. N после слова String (см. рисунок 10.5) определяет максимальную длину строки.
N должно иметь положительное целочисленное значение, не превышающее 255 (≥1).
Если N в определении опущено (по умолчанию), то считается, что максимальная длина строки равна 255 = 28 – 1.
<Задание_типа_String> ::=
String [ <N> ]
Рисунок 10.5 – Синтаксическая диаграмма задания типа String
187
Переменной типа String может быть присвоено значение другой строки любой длины. Если длина присваиваемой строки меньше или равна максимальной длине данной строки, то данная переменная типа String имеет текущую длину. Текущая длина строки определяется длиной последнего занесенного в нее значения.
Если длина присваиваемого значения превышает указанную в объявлении максимальную длину, то лишние символы справа отсекаются.
Переменной типа String выделяется количество байтов памяти на единицу превышающее максимальную длину, указанную в определении типа. В левом байте (с номером 0) хранится текущая длина строки в двоичном коде.
Возможен доступ к отдельным символам строки типа String. При этом используются индексные переменные. Правила индексации аналогичны массиву символов с диапазоном индексов
1 .. <Текущая_длина_строки>.
Если при обращении к отдельным символам строки произойдет выход за текущую длину строки, то считанные из строки символы будут случайными, а присваивания элементам строки, находящимся вне текущей длины, не повлияют на значение строковой переменной.
Строковым выражением называется выражение, результатом вычисления которого является строковое значение. Строковые выражения состоят из строковых констант, строковых переменных, имен функций и знаков операций.
Над данными типа String определены операции сравнения (=, <>, >, <, >=, <=) и операция конкатенации (сцепления). Операция конкатенации имеет более высокий приоритет, чем операции сравнения.
Сравнение производится в соответствии с упорядочением символов в коде ASCII. Сравниваются символы строк последовательно слева направо до первого несовпадающего символа. Большей считается строка, у которой первый несовпадающий символ имеет больший код в таблице ASCII. Если строки имеют разную длину и их символы совпадают в общей части, то более короткая строка считается меньшей. Строки считаются равными, если они имеют одинаковую текущую длину и одни и те же символы.
Операция сцепления обозначается символом +. При ее выполнении две строки соединяются в одну результирующую строку. Длина результирующей строки не должна превышать 255 символов.
Пример 10.16.
Работа со строками переменной длины.
188