Читаем Занимательное программирование – игры с текстом полностью

Следует также отметить, что в случае, когда мы не указываем размер определяемой в разделе var строковой переменной, его всё равно определяет сама система программирования. В этом случае максимально допустимая длина строки составляет 255 символов, т.е. в памяти компьютера под такую строковую переменную резервируется 256 ячеек (одна, как и раньше, для хранения реальной длины хранящегося в этой переменной строкового значения). Все рассуждения о ситуациях, когда такой переменной присваивается более короткая или, наоборот, более длинная строка, тоже при этом остаются в силе.

Массивы символов и строк в языке Паскаль также возможны. Их определение и работа с ними осуществляются точно так же, как и с массивами чисел. Например, для описания одномерных массивов можно использовать команды:

– массив символов – var <имя массива> : array[<кол-во элементов>] of char;

– массив строк – var <имя массива> : array[<кол-во элементов>] of string;

При этом для строковых массивов можно после обозначения типа string, как и в случае простой строки, указать значение размера этих строк (все строки массива, разумеется, должны иметь одинаковый максимально допустимый размер).

Обращение же к элементам таких массивов производится полностью аналогично обращению к элементам числовых массивов – путем указания имени массива и записанного после него в квадратных скобках индекса элемента.


А теперь – внимание! – начинается самое интересное.

В отличие, например, от Бейсика, где строки рассматриваются как «единое целое», в языке Паскаль (а также в ряде других языков, например, в Си) существует дуализм представления строк: к любой строке, определенной как тип string, можно в программе обращаться и как к единому целому (к переменной типа string), и как к одноименному одномерному массиву символов, указывая после имени строковой переменной в квадратных скобках номер (индекс) желаемого символа в строке! (При этом следует помнить, что символы в строках всегда нумеруются с единицы.)

Например, если мы определили строковую переменную оператором


var stroka : string[10];


и записали в нее строку 'Привет!', то оператор


writeln(stroka[1]);


выведет на экран символ 'П', а оператор


writeln(stroka[7]);


выведет символ восклицательного знака.

Соответственно, одномерный массив строк можно аналогичным образом рассматривать как двумерный массив символов, двумерный массив строк – как трехмерный массив символов и т.д.

Эта замечательная возможность делает ненужным использование функций извлечения символа из строки (типа MID$(<имя строки>,<позиция символа>,1) в Бейсике), поскольку для получения нужного символа достаточно просто обратиться к нему напрямую. Насколько это упрощает решение некоторых задач на работу со строками, мы увидим, когда перейдем к решению таких задач.


И наконец, завершая теоретический экскурс в символьные и строковые типы данных, перечислим некоторые имеющиеся в Паскале стандартные функции и процедуры для работы с символами и строками (информацию о них обычно можно найти в Help’е к используемой системе программирования, мы же будем рассматривать популярную в школьной практике среду программирования Pascal ABC.Net).















При использовании этих функций и процедур необходимо помнить следующее:

– функции возвращают некоторое значение, которое нужно куда-то записать или как-то использовать, поэтому функцию надо записывать или в операторе присваивания (например: d := Length(s); ), или, скажем, в операторе вывода на экран (writeln(Length(s)); );

– процедуры, в отличие от функций, сами по себе не возвращают значений, а изменяют значение некоторых заданных в них параметров (аргументов), поэтому в составе оператора присваивания или вывода на экран их записывать нельзя. Процедура записывается отдельным оператором, например: Delete(stroka,5,1); – правильная запись (из строки stroka удаляется один символ, стоящий в 5-й позиции), а stroka1 := Delete(stroka,5,1); – неправильная запись.


А теперь перейдем, наконец, к решению задач.

Задача 1

Дана строка символов. Удалить из нее первый знак препинания.


Наиболее простое решение: определить длину введенной строки, реализовать цикл перебора всех ее символов (с 1-го до последнего, имеющего номер, равный значению длины), каждый очередной символ сравнивать с каждым из возможных символов – знаков препинания («.», «,», «;», «!» и т.д.) и при выполнении этого условия каким-то способом убрать его из строки, а затем – прервать цикл просмотра символов.

Реализуем эту идею на Паскале:





Проанализируем этот листинг.

1. Вводится строка и определяется ее длина dl (при помощи стандартной функции Lenght).

Перейти на страницу:

Похожие книги

Мэтр
Мэтр

Изображая наемного убийцу, опасайся стать таковым. Беря на себя роль вершителя правосудия, будь готов оказаться в роли палача. Стремясь коварством свалить и уничтожить ненавистного врага, всегда помни, что судьба коварнее и сумеет заставить тебя возлюбить его. А измена супруги может состоять не в конкретном адюльтере, а в желании тебе же облегчить жизнь.Именно с такого рода метаморфозами сталкивается Влад, граф эл Артуа, и все его акции, начиная с похищения эльфы Кенары, отныне приобретают не совсем спрогнозированный характер и несут совсем не тот результат.Но ведь эльфу украл? Серых и эльфов подставил? Заговоры раскрыл? Гномам сосватал принца-консорта? Восточный замок на Баросе взорвал?.. Мало! В новых бедах и напастях вылезают то заячьи уши эльфов, то флористские следы «непротивленцев»-друидов. Это доводит Влада до бешенства, и он решается…

Игорь Дравин , Юлия Майер , Александра Лисина

Фантастика / Фэнтези / Учебная и научная литература / Образование и наука
Тату
Тату

Алкоголь в малых дозах, но в большом количестве – вреден для человеческого организма. Так стоит ли удивляться, что после обильного его возлияния вы проснулись со странными татуировками на теле. И в голове полнейший провал – кто их вам набил, и как вы вообще на это согласились. А вспомнив, что вы успели поругаться с любимой девушкой – хочется убежать, уехать, улететь подальше, чтобы привести свое тело и мысли в порядок. Хотя бы на море, – мечтаете вы. Но никто не ожидал, что вас занесет так далеко на просторы других галактик. И что татуировки окажутся совершенно не тем, о чем вы могли даже предположить. Так стоит ли радоваться подобному подарку судьбы?

Вячеслав Викторович Неклюдов , Аля Алая , Надежда Александровна Белякова , Павел Колбасин , Avo N’

Детективы / Прочее / Самиздат, сетевая литература / Боевики / Учебная и научная литература
Анархия
Анархия

Петр Кропоткин – крупный русский ученый, революционер, один из главных теоретиков анархизма, который представлялся ему философией человеческого общества. Метод познания анархизма был основан на едином для всех законе солидарности, взаимной помощи и поддержки. Именно эти качества ученый считал мощными двигателями прогресса. Он был твердо убежден, что благородных целей можно добиться только благородными средствами. В своих идеологических размышлениях Кропоткин касался таких вечных понятий, как свобода и власть, государство и массы, политические права и обязанности.На все актуальные вопросы, занимающие умы нынешних философов, Кропоткин дал ответы, благодаря которым современный читатель сможет оценить значимость историософских построений автора.В формате PDF A4 сохранён издательский дизайн.

Тейт Джеймс , Петр Алексеевич Кропоткин , Меган ДеВос , Дон Нигро , Пётр Алексеевич Кропоткин

Публицистика / Драматургия / История / Фантастика / Зарубежная драматургия / Учебная и научная литература