- •Конспект лекций по информатике
- •Организация данных в эвм и основы программирования
- •1. Основные понятия языка программирования паскаль
- •1.1. Структурное программирование
- •1.2. Основные символы языка
- •1.3. Элементы языка
- •1.4. Интегрированная среда turbo pascal
- •1.5. Структура программы в turbo pascal
- •1.6. Определение типов
- •1.7. Операторы в программе
- •1.7.1. Операторные скобки
- •1.7.2. Операторы ввода
- •1.7.3. Оператор присваивания
- •1.7.4. Условный оператор
- •1.7.5. Пример простой программы
- •1.7.6. Оперетор безусловного перехода
- •1.8. Организация циклов
- •1.8.1. Использование операторов условного и безусловного перехода
- •1.8.2. Цикл с параметром
- •1.8.3. Цикл с предусловием - цикл while
- •1.8.4. Цикл с постусловием - цикл repeat
- •1.9. Оператор выбора варианта
- •1.10. Расположение операторов в программе
- •1.11. Концепция типов данных
- •2. Стандартные простые типы
- •2.1 Целый тип
- •2.1.1. Операции над данными целого типа:
- •2.2. Действительный тип
- •2.2.1. Операции над данными действительного типа:
- •2.3. Логический тип
- •Var p, q, r : Boolean;
- •2.3.1. Алгебра логики в Паскале
- •2.3.2. Законы алгебры логики в Паскале
- •2.4. Символьный тип
- •2.4.1. Символьные строковые константы
- •3. Нестандартные простые типы (определяемые пользователем)
- •3.1. Перечисляемый тип
- •3.2. Ограниченный тип (диапазон, интервал)
- •4. Процедуры и функции
- •4.1. Описание процедур
- •4.2. Стандартные процедуры
- •4.3. Описание функций
- •4.4. Стандартные функции
- •4.5. Итерация и рекурсия
- •4.6. Побочный эффект рекурсии
- •4.7. Предварительное описание (ссылки вперед)
- •5. Регулярные типы
- •5.1. Одномерный массив, или переменные с индексами
- •Алгоритмы сортировки массивов
- •1. Метод пузырька (метод обменной сортировки с выбором)
- •2. Сортировка выбором
- •3. Метод Шелла
- •4. Метод Хoopа
- •5.2. Многомерные массивы
- •5.3. Упакованные массивы
- •5.4. Строки
- •6. Множественные типы
- •6.1. Свойства множеств
- •6.2. Операции над множествами
- •7. Комбинированные типы
- •7.1. Описание записей и действия с ними
- •7.2. Оператор присоединения.
- •7.3. Записи с вариантами
- •8. Типизированная константа
- •8.1. Простая типизированная константа
- •8.2. Структурированная (сложная) типизированная константа
- •8.2.1. Типизированная константа массива
- •8.2.2. Типизированная константа записи
- •8.2.3. Типизированная константа множества.
- •9. Преобразование типов
- •9.1. Неявные преобразования типов
- •9.2. Использование стандартных функций для преобразования
- •9.3. Явные преобразования типов
- •9.5. Совместимость типов
- •10. Файловые типы
- •10.1. Определение файлового типа
- •10.2. Структура файла
- •10.3. Имя файла
- •10.4. Описание файлового типа
- •10.5. Файловая переменная
- •10.6. Операции над файлами
- •10.7. Типизированные файлы
- •10.8. Текстовые файлы
- •10.9. Нетипизированные файлы
- •10.10. Стандартные файлы inpuTиOutput
5.4. Строки
Тип String(строка) в Паскале широко используется для обработки текстов и во многом похож на одномерный массив символовArray[0..N]ofChar. Однако в отличие от массива количество символов в строке – переменной может меняться от 0 доN, гдеN– максимальное количество символов в строке. ЗначениеNопределяется в разделе объявления типаString[N] и может быть любой константой порядкового типа, но не больше 255:N255. Можно не указыватьN, в этом случае длина строки принимается максимально возможной:N= 255.
Строка трактуется как цепочка символов. К любому символу в строке можно обратится точно так же, как к элементу одномерного массива Array[0..N]ofChar.
Пример:
Var st: String;
- - - - - - - - - - - - - -
if st[5]= ‘A’ then …….
Самый первый байт в строке имеет индекс 0 и содержит текущую длину строки. Первый значащий символ строки занимает второй и имеет индекс 1. Над длиной строки можно совершать необходимые действия и таким способом менять длину строки.
Пример:
Var st:String[10];
I:Integer;
- - - - - - - - - - - - - -
st[0]:=5;
Значение Ord(st[0]), то естьтекущую длину строкиможно получить с помощью функцииlength(st).
К строке можно применить операцию + (сцепление строк), например:
St:=’a’+’b’;{ ab}
St:=st+’c’; { abc}
Если длина сцепленной строки превысит максимально допустимую длину N, то «лишние» символы отбрасываются.
Пример:
Var st :String [1];
Begin st:=’123’;
Writeln(st); {1}
End;
Кроме сцепления строк, все остальные действия над строками (и символами) реализуются с помощью встроенных функций.
1) Concat (S1<, S2, S3,…SN>)– функция типа String, сцепление строк;
2) Copy (имя строки,№ нач. символа, кол-во символов)– функция копирования;
Delete (имя строки,№ нач. символа, кол-во символов)– функция удаления;
Insert (имя подстроки, имя строки, № нач. символа в строке)– вставка;
Length (имя строки)– функция типа Integer, вычисляет длину строки;
Pos (имя подстроки, имя строки)- функция типа Integer, отыскивает в строке первое вхождение подстроки и дает № позиции, с которой она начинается; если подстрока не найдена, значение функции будет = 0;
Str(числоRealилиInteger<: общая ширина поля<: кол-во симв. в дроб. части>>, имя строки) – процедура, преобразующая число типаRealилиIntegerв строку символов так, как это делает процедураWritelnперед вызовом; параметры, если они присутствуют, задают формат преобразования;
Val(имя строки, числоRealилиInteger, параметр) – процедура, преобразующая строку символов во внутреннее представление целое или вещественное числа; параметр = 0, если преобразование проведено успешно, в противном случае он содержит № позиции в строке, где обнаружен ошибочный символ;
Upcase(символ) – функция типаChar, возвращает символ в верхнем регистре, если он определен для него, либо сам символ, если для него нет верхнего регистра.
Пример: Upcase(‘a’) дастA,
Upcase(‘2’) даст 2.
Пример:
Var
x: Real;
y: Integer;
st, st1: String;
- - - - - - - - - - - - - - - -
st:= concat (‘12’,’345’); (*получится st 12345*)
st1:= copy (st, 3, lenght(st)-2); (*получится st1 345*)
insert(‘-’,st1,2); (*получится st1 3-45*)
delete(st, pos(‘2’,st),3); (*получится st 15*)
str(pi:6:2,st); (*получится st 3.14*)
st1:=’3.1415’; (*получитсяst13.1415*)
val(st1,x,y); (*получитсяy=2,x– какой был*)
Операции отношения
= <> > < >= <=
выполняются над двумя строками посимвольно, слева направо, с учетом внутренней кодировки символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются значением chr(0).
Пример: Операции дают значениеtrue:
‘turbo’<’turbo-pascal’;
‘A’<>’IFF’;
‘ПАскаль’<’Паскаль’;