Основы программирования на языке Паскаль
что преобразование типа прошло совершенно успешно и в строке нецифровых |
|символов не встретилось. |
| Противоположное действие осуществляет оператор Str. Формат оператора: |
| Str(X,S); |
|X - число (либо арифметическое выражение), S - строковая переменная. |
| В переменную S попадает строковое представление числа X. Это нужно, |
|например, при необходимости выводить на экран числа в графическом режиме |
|(будет изучено позже), так как стандартные процедуры вывода на экран там |
|работают только со строковыми величинами. |
| Для иллюстрации рассмотрим такую задачу: "Найти сумму цифр введенного |
|натурального числа". Используя только числовые переменные, решить ее можно,|
|но предлагаемое здесь решение, по-моему, проще. |
|Program Str5; |
|Var |
|S : String; |
|I,X,A,C : Integer; |
|Begin |
|Writeln('Введите натуральное число'); |
|Readln(S); {Число вводится в строковую переменную} |
|A:=0; |
|For I:=1 To Length(S) Do |
|Begin |
|Val(S[I],X,C); {Цифровой символ превращается в число} |
|A:=A+X {Цифры суммируются} |
|End; |
|Writeln('Сумма цифр равна ',A) |
|End. |
| Теперь рассмотрим еще несколько действий над строками: |
|оператор DELETE(S,I,C) из строковой переменной S удаляет C символов, |
|начиная с I-того; |
|оператор INSERT(SN,S,I) вставляет подстроку SN в строковую переменную S |
|перед символом с номером I; |
|функция COPY(S,I,C) возвращает подстроку строки S из C символов, начиная с |
|символа с номером I; |
|функция Pos(SN,S) возвращает номер символа, с которого в строке S |
|начинается подстрока SN (позицию первого вхождения подстроки в строку). |
|Если такой подстроки нет, то возвращается ноль. |
| Пример их использования: |
|"Во введенной строке заменить все вхождения подстроки 'ABC' на подстроки |
|'KLMNO'". |
|Program Str6; |
|Var |
|S : String; |
|A : Byte; |
|Begin |
|Writeln('Введите строку'); |
|Readln(S); |
|While Pos('ABC',S)<>0 Do |
|Begin |
|A:= Pos('ABC',S); |
|Delete(S,A,3); |
|Insert('KLMNO',S,A) |
|End; |
|Writeln(S) |
|End. |
| |
|Определение типов |
| Как было упомянуто ранее, в изучаемом языке возможно определять новые |
|типы переменных. После определения этот тип становится доступным для |
|описания переменных, также как и стандартные типы. |
| Новый тип перед первым его использованием должен быть описан в |
|соответствующем разделе описаний. Его заголовок - служебное слово Type. |
|Type |
| <Имя типа> = <Описание типа>; |
| Есть несколько способов описания. Иногда говорят даже о видах типов |
|(как бы это странно ни звучало). |
| Итак, первым рассмотрим так называемый перечисляемый тип. |
| Перечисляемый тип используется для повышения наглядности программ, |
|позволяя записывать в переменные этого типа названия разнообразных |
|объектов, исследуемых программой. Этот тип представляет собой набор |
|идентификаторов, с которыми могут совпадать значения параметров. |
| Формат описания следующий: <Имя типа> = (<Ид.1>, <Ид.2>,? <Ид.n>); |
| Далее можно определить любое число переменных уже описанного типа. |
|Обратите внимание на то, что каждый идентификатор может участвовать в |
|описании только одного перечисляемого типа. |
| Этим переменным можно присваивать только значения из списка, |
|определенного при описании типа. Эти значения не являются ни числами, ни |
|строковыми величинами, ни даже величинами логического типа, поэтому они не |
|могут участвовать в арифметических, строковых, логических выражениях, а |
|также не могут быть выведены на экран или принтер. Величины перечисляемого |
|типа можно сравнивать между собой, над их множеством в языке Паскаль |
|определены несколько функций: |
| Ord(X) - порядковый номер значения переменной X в списке |
|идентификаторов. |
| Succ(X) - следующее значение для величины Х. |
| Pred(X) - предыдущее значение данного типа. |
| Обратите внимание на то, что для функции Ord нумерация среди значений |
|идет, начиная от нуля. Для последнего значения нельзя применять функцию |
|Succ, для первого - Pred. |
| Переменные различных перечисляемых типов несовместимы друг с другом. |
| Множество стандартных порядковых типов в языке Паскаль на самом деле |
|определены как перечисляемые. Это типы Char, Integer, другие. Достоинства |
|стандартных порядковых типов лишь в том, что над каждым из них уже |
|определены специфические действия. Например, тип Boolean описан так: |
|Type |
|Boolean = (False, True); |
| Единственное его отличие от перечисляемых типов, определяемых |
|программистом, состоит в том, что значения типа Boolean можно выводить на |
|экран. Можете проверить, Ord(False)=0. |
| Интересно, что переменная перечисляемого типа может быть счетчиком в |
|цикле "с параметром". |
|Пример: |
|Program T1; |
|Type |
| Colors = (Black, Blue, Green, Cyan, Red, Magenta, Brown, Yellow, |
|White); |
|Var |
| C1,C2 : Colors; |
|Begin |
|C1:=Green; |
|C2:=Red; |
|Writeln(Ord(C1), Ord(Succ(C2))) |
|End. |
| Во время выполнения на экране появятся числа "2" и "5", что |
|соответствует номерам значений Green и Magenta. |
| Следующий тип, который можно определить в программе - тип-диапазон. |
| Здесь не нужно перечислять все значения этого типа, потому, что |
|возможными для него являются значения поддиапазона уже определенного до |
|него любого порядкового типа (стандартного или описанного ранее |
|перечисляемого типа). Достаточно лишь указать начальную и конечную величину|
|отрезка порядкового типа. Единственное условие: начальное значение не |
|должно превышать конечное. |
| Формат описания отрезочного типа: |
|Type |
| <Имя типа>=<Нач.>..<Кон.>;
| | скачать работу |
Основы программирования на языке Паскаль |