- •Введение
- •1. Программирование на языке Паскаль
- •1.1. Структура программы
- •1.2. Типы данных
- •1.2.1. Целый тип данных
- •1.2.2. Логические типы данных – Boolean
- •1.2.3. Данные символьного типа
- •1.3. Операторы языка программирования Турбо Паскаль
- •1.3.1. Операции в Турбо Паскаль
- •1.3.2. Правила вычисления выражений
- •1.3.3. Встроенные функции в Турбо Паскаль
- •1.3.4. Описание констант и переменных
- •1.3.5. Операторы в Турбо Паскаль
- •Вопросы для самопроверки
- •Лабораторная работа №1 Организация программ линейных структур
- •2. Организация форматного вывода данных на языке Паскаль
- •Варианты задания
- •3. Организация программ разветвляющихся структур
- •3.1. Полная форма условного оператора
- •3.2. Краткая форма условного оператора
- •Вопросы для самопроверки
- •Лабораторная работа №3 Организация программ разветвляющихся структур
- •Варианты заданий
- •4. Организация циклических процессов
- •Лабораторная работа №4 Составление циклических программ
- •Варианты заданий
- •Методические указания
- •Варианты заданий
- •5. Программирование структур с вложенными циклами
- •Вопросы для самопроверки
- •Лабораторная работа №5 программирование структур с вложенными циклами. Вычисление суммы ряда
- •Методические указания
- •Варианты заданий
- •6. Перечислимые и ограниченные типы данных
- •6.1 Перечислимый тип данных
- •6.2. Ограниченный тип данных
- •6.3. Оператор выбора (варианта)
- •Вопросы для самопроверки
- •Лабораторная работа №6 Перечислимые и ограниченные типы данных
- •Варианты заданий.
- •7. Регулярные типы данных
- •7.1. Одномерные массивы
- •7.1.1. Краткая форма объявления одномерного массива
- •7.1.2. Полная форма объявления одномерного массива
- •7.1.3. Доступ к элементам массива
- •Вопросы для самопроверки
- •Лабораторная работа №7_1 регулярные типы данных. Массивы
- •Варианты заданий
- •7.2. Двумерные массивы
- •Вопросы для самопроверки
- •Лабораторная работа №7_2 регулярные типы данных. МАтрицы
- •Варианты заданий
- •7.3. Сортировка элементов массива
- •7.3.1. Сортировка методом «пузырька»
- •7.3.2. Сортировка вставками
- •7.3.3. Сортировка посредством выбора
- •7.3.4. Быстрая сортировка
- •8. Составление программ с использованием подпрограмм
- •8.1. Область видимости идентификатора переменной
- •8.2. Подпрограммы - процедуры (procedure)
- •8.2.1. Формальные и фактические параметры
- •Вопросы для самопроверки
- •8.3. Подпрограммы-функции (function)
- •Вопросы для самопроверки
- •Лабораторная работа №8_2 составление программ с использованием подпрограмм - функций
- •Варианты заданий
- •8.4. Рекурсия
- •8.4.1. Вычисление факториала
- •8.4.2. Формы рекурсивных процедур
- •8.4.3. Числа Фибоначчи
- •Вопросы для самопроверки
- •9. Модули
- •Вопросы для самопроверки
- •Лабораторная работа №9 составление программ с использованием модулей
- •Варианты заданий
- •10. Строковые типы данных (String)
- •10.1 Операции со строками
- •10.2. Стандартные процедуры и функции для строк
- •10.3. Хранение строк
- •Вопросы для самопроверки
- •Лабораторная работа №10 обработка символьной информации
- •Варианты заданий
- •11. Комбинированные типы. Записи (Record)
- •11.1 Записи с фиксированными частями
- •11.2. Оператор with…do
- •11.3. Вариантные записи
- •Вопросы для самопроверки
- •Лабораторная работа №11 Комбинированные типы. Записи
- •Варианты заданий
- •12. Файлы
- •12.1. Классификация файлов
- •12.1.1. Чтение файла
- •12.1.2. Запись файла
- •Вопросы для самопроверки
- •Лабораторная работа №12 организация работы с внешней памятью
- •Варианты заданий
- •13. Множества
- •13.1. Объявление множества
- •13.2. Операции над множествами
- •13.3. Сравнение множеств
- •13.4. Старшинство множественных операций
- •Вопросы для самопроверки
- •Лабораторная работа №13 множества
- •Варианты заданий
- •Библиографический список
10.3. Хранение строк
Наряду с символами, представляющими содержание, в строке храниться её длина. Так как каждый символ строки занимает байт и для хранения длины реально введённой строки тоже требуется один байт памяти, то реальная длина области памяти (в байтах), выделяемая для переменной типа string, всегда на единицу больше декларированной.
Поле, хранящее реальную длину введённой строки, можно изменять, то есть присваивать данному полю некоторое значение.
Например,
Character_string[0] := Chr(7);
или
Character_string[0] := #7;
При использовании метода присваивания в качестве присваиваемой величины может выступать величина типа BYTE, преобразованная с помощью префикса # или функции CHR в величину типа CHAR. Такое преобразование необходимо, так как каждый элемент строки, включая показатель длины, должен представляться как символ
Например, внутреннее представление строковой переменной St=’ABCD’:
St=’ABCD’ |
|||||
St[0] |
St[1] |
St[2] |
St[3] |
St[4] |
St[5] |
#4 |
‘A’ |
‘B’ |
‘C’ |
‘D’ |
‘0’ |
Задача 10.1. Объявим строку, состоящую из 60 (_) символов. Выполнить вывод на экран фрагментов этой строки различной длины посредством изменения показателя длины строки.
Program Demo_String;
Var
Words : string[60];
Length_word : byte;
Begin
{Строка, состоящая из 60 символов}
Words := ‘____________________________________________________________’;
For Length_word := 1 to 12 do
Begin
{Установка длины строки}
Words[0] := Chr (Length_word*5);
{Вывод строки указанной длины}
Writeln (Words);
{Вывод пустой строки}
Writeln;
End;
End.
Задача 10.2. Преобразовать строчные литеры русского и английского алфавитов в прописные.
Program My_Function_UpCase;
Uses crt;
Var
Words : string;
Procedure Mu_UpCase (var Words : string);
{Данная программа обеспечивает полное преобразование строчных литер в прописные, включая литеры русского алфавита}
var i : byte; {Данная переменная необходима для организации цикла}
Procedure String_Manipulation (var Words : string; I : byte);
{Данная процедура осуществляет посимвольное преобразование строки}
begin
words[i] := UpCase (Words[i]);
Case Words[i] of
‘а’ : Words[i] := ‘А’;
‘б’ : Words[i] := ‘Б’;
‘в’ : Words[i] := ‘В’;
{…} {Далее идут операторы для всех остальных литер русского алфавита}
end;
end;
begin
for I := 1 to Length (Words) do String_Manipulation (Words, i);
end;
begin
ClrScr;
Words := ‘’;
My_UpCase (Words);
Writeln (Words);
end.
Вопросы для самопроверки
Дайте определение строковых переменных?
Какие операции применимы к переменным строкового типа?
Какие можно осуществить операции с элементами строки?
Объясните назначение и применение функций и процедур, используемых при работе со строковыми переменными, таких как:
функция Length();
функция UpCase();
функция Copy();
функция Pos();
процедура Insert();
процедура Delete();
функция Val();
функция Str()?
Каким образом организуется хранение информации о длине строки?