- •Алгоритмы
- •Свойства алгоритма
- •Способы описания алгоритмов
- •Язык программирования
- •Способы описания синтаксиса языка программирования
- •1. Бнф (Бэкуса-Наура форма)
- •Компиляторы и интерпретаторы
- •Обзор языков программирования высокого уровня (таблица)
- •Язык программирования Паскаль Первая программа на языке программирования Паскаль
- •Типы, переменные и константы
- •Основные типы данных языка Pascal
- •Операторы ввода/вывода
- •Форматы вывода
- •Выражения и операции Выражения
- •Операции
- •Операции div и mod для целых
- •Операции shl и shr для целых
- •Логические операции
- •Часто используемые правила математической логики
- •Стандартные процедуры и функции Стандартные функции
- •Стандартные функции в Dephi
- •Стандартные процедуры для целых
- •Явление переполнения
- •Погрешность округления и вычислительная погрешность
- •Примеры на суммирование рядов
- •Процедуры break и continue
- •Оператор безусловного перехода goto
- •Подпрограммы. Процедуры и функции
- •Процедуры
- •Синтаксис описания процедуры
- •Оператор вызова процедуры
- •Функции
- •Переменная Result
- •Способы передачи параметров Передача по значению. Параметры-значения
- •Передача по ссылке. Параметры-переменные (с ключевым словом var)
- •Семантика вызова подпрограммы
- •Алгоритм вызова подпрограммы
- •Статическая и автоматическая память
- •Локальные и глобальные переменные
- •Обращение к глобальным переменным и побочный эффект
- •Область видимости и время жизни объекта
- •Статическая локальная переменная
- •Перегрузка имен подпрограмм
- •Структура модуля
- •Перечислимый и диапазонный типы Перечислимый тип
- •Записи с вариантами
- •Как записи с вариантами хранятся в памяти
- •Сортировка массивов записей
- •Индексная сортировка
- •Множества
- •Стандартные подпрограммы для работы с символами
- •Виды строк в Delphi
- •Cтроки shortstring
- •Основные подпрограммы для работы со строками
- •Основные подпрограммы для работы со строками (Delphi)
- •Алгоритмы на строках
- •Использование Split
Стандартные подпрограммы для работы с символами
var c: char; x: byte; ord(c) - функция, возвращающая код символа с (0..255) chr(x) - функция, возвращающая символ с кодом x
Функции chr и ord - взаимно противоположные:
ord(chr(x))=x chr(ord(c))=с
Если n - целое от 0 до 255, то вместо chr(n) можно использовать запись #n. Например, #32 - символ с кодом 32.
Другие подпрограммы:
succ(c) - функция, возвращающая следующий символ; pred(c) - функция, возвращающая предыдущий символ; Inc(c) - процедура увеличения кода символа на 1; Dec(c) - процедура уменьшения кода символа на 1; Inc(c,n) - процедура увеличения кода символа на n; Dec(c,n) - процедура уменьшения кода символа на n.
Виды строк в Delphi
Cтроки shortstring
sizeof(shortstring)=256
Как строка shortstring хранится в памяти.
К символам строки можно обращаться по индексу: s[i] возвращает i-тый символ строки s.
Length(s) - функция, возвращающая длину строки s. Для shortstring возвращает содержимое нулевого байта - байта длины строки. Для shortstring Length(s)=ord(s[0]).
Можно также при описании указывать размер памяти под строку shortstring:
type str20=shortstring[20];
Такая строка будет занимать 20 байт памяти плюс 1 байт на длину строки.
Строки ansistring могут занимать до 2 Гб. Они растут динамически по мере заполнения. Переменные типа ansistring представляют собой указатели на реальные строки. Поэтому при их присваивании копируется лишь значение указателя.
var: s1,s: ansistring; ... s1:=s; // копируется указатель
Однако, если после этого часть одной из строк меняется (например, меняется один символ), то происходит полное копирование строки и в копии происходит изменение. Такое отложенное копирование называется копированием при записи.
В Delphi есть также тип widestring строки, состоящей из widechar (2 байта - Unicode).
Основные подпрограммы для работы со строками
Length(s) - функция, возвращающая длину строки s. SetLength(s,n) - процедура, устанавливающая длину строки s равной n (для shortstring эквивалентно s[0]:=chr(n)). Copy(s,from,len) - функция, возвращающая подстроку s с позиции from длины len . Delete(s,from,len) - процедура, удаляющая из строки s len символов с позиции from. Pos(subs,s) - функция, возвращающая позицию первого вхождения подстроки subs в строку s. Insert(subs,s,form) - процедура, вставляющая подстроку subs в строку s с позиции from. Str(x,s) - процедура, преобразующая целое или вещественное выражение x к строковому представлению и записывающая результат в строку s. Val(s,x,errcode) - процедура, преобразующая строку s к целому или вещественному значению и записывающая результат в целую или вещественную переменную x. Переменная errcode - целая; если преобразование невозможно, то в errcode содержится номер первого символа, вызвавшего ошибку.
Основные подпрограммы для работы со строками (Delphi)
(требуется подключение модуля SysUtils)
IntToStr(i) - функция, преобразующая целое x в строку (аналогично FloatToStr - для вещественных). StrToInt(s) - функция, преобразующая строку s к целому; может генерировать исключение. (аналог - StrToFloat). TrimeLeft(s) - удаляет все начальные пробелы в строке s. Trimeleft(s) - удаляет все заключительные пробелы в строке s. Trim(s) - удаляет все начальные и заключительные пробелы в строке s. AnsiUpperCase(s), AnsiLowerCase(s) - преобразует к верхнему или нижнему регистру с учетом национальной кодировки.