Основы программирования на языке Паскаль
я |
|память и увеличивается быстродействие программ. |
| Переменным строкового типа можно присваивать строковые величины |
|(внутри программы они заключаются в апострофы), значения выражений, которые|
|приводят к строковым величинам. Значения можно также вводить с клавиатуры. |
|При этом апострофы не используются. Как вам известно, в числовую переменную|
|нельзя ввести строковую величину. Сделать наоборот - возможно, однако |
|число, находящееся в строковой переменной представляет собой просто |
|последовательность символов (цифр), поэтому в арифметических выражениях |
|участвовать не может. |
| Также, новым для вас явится то, что при использовании строковой |
|переменной, к каждому ее символу можно обратиться отдельно. Необходимо |
|только знать номер нужного символа от начала строки. Его достаточно |
|поставить после имени переменной типа String в квадратных скобках. |
| Пример: S[5] - пятый символ строки S. |
| С отдельным символом строки можно производить все действия, которые |
|можно производить с любой символьной переменной (ввод, присвоение, вывод на|
|экран, участие в выражениях и т.д.). |
| Обратите внимание на то, что нумерация символов в строке начинается с |
|единицы. Внутри квадратных скобок вместо числа может находиться выражение, |
|результатом которого является целое число. Главное чтобы символ с таким |
|номером в строке существовал. Но как же узнать, сколько символов в данный |
|момент находится в строковой переменной? Для этого существует специальная |
|функция, которая возвращает длину строковой переменной в символах. Это |
|функция Length. Ее формат: Length(S) |
| Здесь S - либо строковая величина, либо строковая переменная. |
| Приведенная далее программа выводит на экран длину введенной |
|пользователем строковой величины. |
|Program Str1; |
|Var |
|S : String; |
|Begin |
|Writeln('Введите последовательность символов'); |
|Readln(S); |
|Writeln('Вы ввели строку из ',Length(S), ' символов') |
|End. |
| Другой пример: |
|Решим задачу: "Введенную строку вывести на экран по одному символу в строке|
|экрана". |
|Program Str2; |
|Var |
|S : String; |
|I : Byte; |
|Begin |
|Writeln('Введите строку'); |
|Readln(S); |
|For I:=1 to Length(S) do {организуем цикл, начиная с первого символа} |
|Writeln(S[I]) {строки, до последнего (номер последнего} |
|{совпадает с количеством символов строки S) } |
|End. |
| Какие же еще действия можно выполнять с переменными строкового типа? |
| Две строковые величины можно состыковывать. Эта операция называется |
|конкатенацией и обозначается знаком "+". |
| Например, результатом выполнения следующих команд: |
| R:= 'kadabra'; |
| H:= 'abra'; |
| S:=H+R; |
|в переменной S будет значение 'abrakadabra'. |
| Для конкатенации результат зависит от порядка операндов (в отличие от |
|операции сложения). Следует помнить о том, какой максимальной длины может |
|быть результирующая переменная, так как в случае превышения значением |
|выражения числа, указанного после String в описании переменной, "лишние" |
|символы в переменную не попадут. |
| Строковые величины можно сравнивать между собой. Это относится также и|
|к строковым переменным. Но как же компьютер определяет, какая строка |
|больше: |
|та, которая длиннее? |
|та, которая содержит больше заглавных букв? |
| На самом деле такая проверка проходит довольно сложно: компьютер |
|сравнивает сначала первые символы строк. Большим из двух считается тот, код|
|которого больше (вспомните, что такое код символа). Если равны первые |
|символы, то так же анализируется следующая пара до тех пор, пока не будет |
|найдено различие. Если начало строк совпадает, а одна из них кончается |
|раньше, то вторая автоматически называется большей. |
| Код символа в Паскале можно определить при помощи функции Ord. |
| Ее формат: Ord(C), где С - либо непосредственно указанный символ, либо|
|переменная символьного типа, либо один символ строковой переменной. Вообще,|
|функция Ord имеет более глубокий смысл, но об этом - позже. Есть и обратная|
|функция, которая возвращает символ по известному коду. Это функция Chr(N), |
|где N - выражение, приводящее к целому числу в интервале от 0 до 255 |
|(возможные значения кода символа). Очевидно, что Chr(Ord(C))=C, |
|Ord(Chr(N))=N. |
| Следующая маленькая программа выводит на экран кодовую таблицу: |
|Program Str3; |
|Var |
| I : Byte; |
|Begin |
|For I:=32 to 255 do |
|Write('VV',I:4, '-',Chr(I)) |
|End. |
| Цикл в программе начинается с 32 потому, что символы с кодами от 0 до |
|31 являются управляющими и не имеют соответствующего графического |
|представления. |
| Задача: "Определить, является ли введенная строка "перевертышем". |
|Перевертышем называется такая строка, которая одинаково читается с начала и|
|с конца. Например, "казак" и "потоп" - перевертыши, "канат" - не |
|перевертыш". |
| Поступим следующим образом: из введенной строки сформируем другую |
|строку из символов первой, записанных в обратном порядке, затем сравним |
|первую строку со второй; если они окажутся равны, то ответ положительный, |
|иначе - отрицательный. Естественно, предложенный способ решения не является|
|единственно возможным. |
|Program Str4; |
|Var |
| S,B : String; |
| I : Byte; |
|Begin |
|Writeln('Введите строку'); |
|Readln(S); |
|B:=''; {Переменной B присваиваем значение "пустая строка"} |
|For I:=1 to Length(S) do |
|B:=S[I]+B; {Конкатенация. Символы строки S пристыковываются к} |
|{переменной B слева. Самым левым окажется последний.} |
|If B=S Then Writeln('Перевертыш') Else Writeln('Не перевертыш') |
|End. |
| Число, записанное в строковую переменную, естественно числом не |
|является, но очень часто требуется его все же использовать в качестве |
|числа. Для этого нужно произвести преобразование типа. Перевод строкового |
|представления числа в числовое выполняет в Паскале оператор Val. |
|Его формат: |
|Val(S,X,C); |
| Здесь S - строка, содержащая число, X - числовая переменная, в которую|
|будет помещен результат, С - переменная целочисленного типа, в которую |
|помещается первого встреченного в S отличного от цифры символа. Если после |
|выполнения оператора Val переменная С имеет значение 0, то это означает, |
|
| | скачать работу |
Основы программирования на языке Паскаль |