- •Основы алгоритмизации и программирования
- •Введение
- •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. Организация форматного вывода данных на языке Паскаль
- •Вопросы для самопроверки
- •Лабораторная работа №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. Двумерные массивы
- •Полная форма описания матрицы:
- •Формирование элементов случайным образом:
- •Формирование элементов матрицы при вводе с клавиатуры:
- •Фрагменты программ по обработке 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_1 составление программ с использованием подпрограмм - процедур
- •Методические указания
- •Варианты заданий
- •8.3. Подпрограммы-функции (function)
- •Вопросы для самопроверки
- •Лабораторная работа №8_2 составление программ с использованием подпрограмм - функций
- •Варианты заданий
- •8.4. Рекурсия
- •8.4.1. Вычисление факториала
- •8.4.2. Формы рекурсивных процедур
- •8.4.3. Числа Фибоначчи
- •Вопросы для самопроверки
- •9. Модули
- •Структура модуля
- •Interface
- •Implementation
- •Вопросы для самопроверки
- •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. Запись файла
- •Вопросы для самопроверки
- •13.1. Объявление множества
- •13.2. Операции над множествами
- •13.3. Сравнение множеств
- •Include (s, I);
- •13.4. Старшинство множественных операций
- •Вопросы для самопроверки
- •Лабораторная работа №13 множества
- •Варианты заданий
- •Горячие клавиши
- •Библиографический список
- •Оглавление Введение 3
- •1. Программирование на языке Паскаль 5
- •1.1. Структура программы 5
- •2. Организация форматного вывода данных на языке Паскаль 17
- •Лабораторная работа №7_1.
- •Лабораторная работа №7_2.
- •Лабораторная работа №8_2.
10.2. Стандартные процедуры и функции для строк
Функция Length
Встроенная функция Length (длина) позволяет определить фактическую длину текстовой строки, хранящейся в указанной переменной (а не величину предельного размера строки, установленную при декларации).
Например,
Program Demo_Length;
Var
Words : string;
Begin
Write(‘Введите слово:’);
Readln (Words);
Writeln;
Writeln (‘Это слово состоит из ’, Length(Words) : 3, ‘ букв!’);
End.
Примечание. При подсчёте фактической длины строки, учитываются все входящие в неё символы, в том числе и пробелы.
Функция UpCase
Функция UpCase позволяет преобразовать символ любой литеры из строчного в прописной. Эта функция рассчитана на обработку отдельного символа. Поэтому для обработки строки символов с помощью этой функции приходиться организовывать цикл.
Например, замена всех строчных букв в строке на прописные:
ProgramDemo_ UpCase;
Var
Words : string;
i : integer;
Begin
Words := ‘Фирма Microsoft’;
For I :=1 to Length(Words) do Words[i] := UpCase(Words[i]);
Writeln (Words); {Выводиться текст ‘Фирма MICROSORT’}
End.
Примечание. Русские литеры не могут обрабатываться этой функцией (см. Задача 2).
Функция Copy
Функция Copy позволяет копировать фрагмент некоторой строки из одной переменной в другую. Вызывая функцию Copy, необходимо указывать следующие параметры:
Имя строки, из которой должен извлекаться копируемый фрагмент;
Позицию в строке, начиная с которой будет копироваться фрагмент;
Число копируемых символов.
Пример,
ProgramDemo_Copy;
Var Words : string[79];
Word1, Word2, Word3 : string[20];
Begin
Words := ‘картографирование’;
WriteLn (Words);
Word1 := Copy(Words, 6, 4);
WriteLn (Word1); {на экран выводиться слово ‘граф’}
Word2 := Copy(Words, 2, 3);
WriteLn (Word2); { на экран выводиться слово ‘арт’}
Word3 := Copy(Words, 11, 3);
WriteLn (Word3); { на экран выводиться слово ‘ров’}
End.
Примечание. Сообщения об ошибке будет в случаях, если начальная или конечная позиции копируемого фрагмента находятся вне пределов исходной строки символов. Результатом выполнения операции в первом случае будет строка нулевой длины, во втором – фрагмент от начальной позиции копирования до конца исходной строки.
Функция Pos
Функция Pos может осуществить в некоторой строке поиск определенного фрагмента. Если заданный фрагмент в строке присутствует, то функция возвращает номер позиции в строке, с которой этот фрагмент начинается. Если фрагмент не найден, то функция возвращает нуль.
Например,
ProgramDemo_Pos;
Var
Words : string[79];
Search_Word : string[20];
Position : byte;
ProcedureSearch_stencil;
Begin
Position := Pos (Search_Word, Words);
If Position <> 0 then
Writeln (‘Фрагмент ” ’, Search_Word, ‘ ” содержится в ’, ‘слове ” ’ Words, ‘ ”, начиная с позиции ’, Position : 3)
Else
Writeln(‘Фрагмент ” ’,Search_Word, ‘ ” не содержится в ’, ‘слове ” ’Words, ‘ ” .‘);
End;
Begin
Words := ‘Электрификация’;
Search_Word := ‘кац’;
Search_stencil;
Search_Word := ‘Кац’;
Search_stencil;
End.
Примечание. Функция Pos требует полного совпадения искомого фрагмента и фрагмента строки, в которой производиться поиск. Причём, большие и маленькие буквы считаются различными символами (“К” не идентично “к”).
Процедуры Insert и Delete
С помощью процедур Insert и Delete можем соответственно вставить фрагмент из одной строки в другую и удалить фрагмент из строки.
Процедура Insert в исходную строку, начиная с указанной позиции, вставляет какую-либо другую строку.
Например, оператор
Insert (Word1, Words, 4);
указывает, что необходимо в строку Words, начиная с 4-ой позиции (перед 4-ой позицией), вставить строку Word1.
Процедура Delete удаляет в исходной строке фрагмент определённой длины, начинающийся с указанной позиции.
Например, оператор
Delete (Words, 2, 3);
удаляет из строки Words фрагмент, состоящий из трёх символов и начинающийся со второй позиции.
Пример использования этих двух процедур на слове “компьютеризация”.
ProgramDemo_insert_delete;
Var
Words : string[79];
Word1 : string[20];
Begin
Writeln;
Words := ‘компьютеризация’;
Writeln (Words);
Delete (Words, 1,7);
Writeln (Words);
Delete (Words, 3, 2);
Writeln (Words);
Word1 := ‘Г’;
Insert (Word1, Words, 1);
Writeln (Words);
Word1 := ‘не’;
Insert (Word1, Words, 3);
Writeln(Words);
End.
В результате работы данной программы на экран будут выведены следующие строки:
компьютеризация
еризация
ерация
Герация
Генерация
Примечание. Во избежание ошибок при применении процедур Insert и Delete указанные в списке параметров позиции должны обязательно присутствовать в обрабатываемых строках.
Примечание. В ТП7.0 принята концепция жёсткой проверки соответствия типов. При этом строки, имеющие разную длину, считаются несовместимыми. Для ослабления жесткого контроля соответствия строковых типов применяют директиву компилятора $V (контроль длины строк). С помощью этой директивы можно указать компилятору, должен ли он проводить жёсткую проверку соответствия длин строк при передаче параметров в процедуры и функции или нет. Если поставить в тексте программы перед вызовом процедуры директиву {$V-}, то в качестве параметров, передаваемых в вызываемую процедуру, смогут фигурировать строки с длиной, отличающейся от декларированной в описании процедуры.
Например,
{$V-}
My_upcase(Words);
{$V+}
Вторая директива компилятору $V включает жёсткую проверку соответствия длин строк.
Процедура Val
Функция Val преобразует строковый аргумент в его численное значение.
В качестве первого параметра указывается переменная строкового типа, преобразованное значение которой заносится во вторую переменную целочисленного типа. В случае если преобразование прошло успешно, значение переменной code будет равно 0, в противном случае - код ошибки.
Например,
ProgramDemo_Val;
Var S : string;
A, code : integer;
begin
S := ‘1234’;
Val(s, a, code);
If code = 0 then WriteLn (‘Строковая переменная хранит число: ’, А : 3)
ElseWriteLn(‘Ошибка в преобразовании строкового значения в численное’);
End.
Функция Str
Функция Str преобразует численное значение аргумента в его строковое представление.
Например,
ProgramDemo_Str;
Var
S : string;
A : integer;
Begin
A := 1234;
S := Str (A);
WriteLn(‘Строковое значение равно ’,S);
End.