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

Следует также отметить, что в случае, когда мы не указываем размер определяемой в разделе 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).

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

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

История Французской революции. Том 2
История Французской революции. Том 2

Луи-Адольф Тьер (1797–1877) – политик, премьер-министр во время Июльской монархии, первый президент Третьей республики, историк, писатель – полвека связывают историю Франции с этим именем. Автор фундаментальных исследований «История Французской революции» и «История Консульства и Империи». Эти исследования являются уникальными источниками, так как написаны «по горячим следам» и основаны на оригинальных архивных материалах, к которым Тьер имел доступ в силу своих высоких государственных должностей.Оба труда представляют собой очень подробную историю Французской революции и эпохи Наполеона 1 и по сей день цитируются и русскими и европейскими историками.В 2012 году в издательстве «Захаров» вышло «Консульство». В 2014 году – впервые в России – пять томов «Империи». Сейчас мы предлагаем читателям «Историю Французской революции», издававшуюся в России до этого только один раз, книгопродавцем-типографом Маврикием Осиповичем Вульфом, с 1873 по 1877 год. Текст печатается без сокращений, в новой редакции перевода.

Луи Адольф Тьер , Луи-Адольф Тьер

История / Учебная и научная литература / Образование и наука
Анархия
Анархия

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

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

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