В статье рассматриваются вопросы методики обучения регулярным выражениям в профильном обучении.
Ключевые слова:регулярные выражения, поиск, замена.
Актуальность темы исследования определяется тем, что многие задачи поиска и замены можно автоматизировать, создав регулярные выражения, которые состоят из текстовых литералов и подстановочных знаков.
Регулярные выражения придуманы не вчера и даже не позавчера. Это средство облегчения жизни, одинаково хорошо подходящее и программистам, и пользователям, придумано уже довольно-таки давно и с тех пор исправно трудится на нелёгкой компьютерной ниве. В общем-то, это довольно странно, но факт: львиная доля пользователей и даже некоторые разработчики не умеют пользоваться регулярными выражениями. Регулярные выражения — средство поиска по тексту на основе шаблонов. Шаблон описывает закономерность, которой должны подчиняться искомые последовательности символов в тексте.
Тем не менее, как и при поиске по маске в Windows, при работе с регулярными выражениями приходится иметь дело с двумя существенно различающимися по своей природе вещами — литералами и метасимволами. Литералы — это обычные символы, то есть те, которые при записи в строке регулярного выражения интерпретируются именно так, как они записаны — они не имеют никого «подвоха», не имеют никаких специальных значений в данном выражении. Метасимволы, соответственно, интерпретируются при поиске каким-то особым образом — как, например, "*" задаёт последовательность любого количества любых литералов.
Регулярные выражения— это мощнейший инструмент, хорошо известный программистам. Однако он может быть полезен не только программистам, но и всем людям, работающим с кодом или простым текстом [3, c.58].
Главной целью профильного обучения выступает обеспечение общедоступности для учащихся, получения полноценного образования в соответствии с их индивидуальными склонностями и потребностями, обеспечение профессиональной ориентации и самоопределения обучающихся, установление преемственности между общим и профессиональным образованием [1, c.6].
В курсе профильного обучения можно обучать старшеклассников работе с регулярными выражениями. Последние помогут работать со сложным текстом.
В 10 классе на тему 1. «Информация. Техника обработки текстовой информации» отводится от 6 до 15 часов. Среди которых есть темы уроков «Форматирование документа» и «Создание, редактирование и форматирование документов». Именно здесь можно добавить практические занятия по использованию регулярных выражений.
В программе курса «Информатика и ИКТ» (профильный уровень) для среднего (полного) общего образования (10–11 класс) авторского коллектива под руководством профессора Семакина И. Г. в разделе «Информационные технологии» присутствует тема «Технологии обработки текстов» на которую отводится 8 часов. В эту тему также будет целесообразно добавить практические и лабораторные работы по использованию регулярных выражений.
Также учить регулярным выражениям можно при изучении тем «Технология табличных вычислений»(10 класс-15 ч), «Основы сайтопостроения»(10 класс-11ч).
При изучении языка html можно выполнять поиск ссылок в HTML-странице с помощью регулярного выражения. Регулярные выражения (Regular Expressions) позволяют сопоставлять текст с указанным шаблоном, а также выполнять замену текста. Эти операции осуществляются с помощью универсальных символов, которые специальным образом интерпретируются.
Регулярные выражения используются в большом количестве языков программирования.
С помощью регулярных выражений решают следующие основные задачи:
- проверка на соответствие. Проверка вводимого текста на соответствие некоторому шаблону: проверка корректности электронной почты, номера телефона, адреса и т. д.
- поиск и анализ. Поиск в тексте фрагментов, соответствующих заданному шаблону с целью последующего статистического анализа: анализа количества и частоты вхождений, анализа окружения вхождения и т. п.
- поиск и замена. Поиск в тексте фрагментов, соответствующих заданному шаблону с целью последующей их замены на другие фрагменты. Как раз в этом аспекте сервисы поддержки регулярных выражений в различных языках программирования могут несколько отличаться друг от друга набором предоставляемых возможностей.
- синтаксический анализ выражений, соответствующих небольшим формальным грамматикам. Решение заключается в составлении регулярного выражения, описывающего грамматику исходного выражения. С его помощью сначала осуществляем проверку на соответствие составленному шаблону и затем разбиваем выражение на лексемы посредством описанных в регулярном выражении групп.
Регулярные выражения позволяют, тем не менее, производить довольно изощренный и практически полезный поиск. Приведем реальные примеры.
Пример 1. Нужно найти строки с неверным расположением знаков препинания (типа ««,). Начинающие авторы часто ошибаются в расстановке знаков препинания, отделяя его от слова пробелом. Запрос на поиск таков:
Л [,:;!?\.]/.
Ищется пробел «\ «и любой из знаков препинания в скобках [].
Спецсимвол «точка» изображается как «\».
Пример 2. Аналогичная ошибка — отсутствие пробела сразу после знака препинания: / [,:;!?\.]Г\].
Ищется один из знаков препинания в скобках [] и пробел «\».
Пример 3. Если текст написан на родном языке, символы латиницы могут попасть только случайно: [A-Za-z].
Рассмотрим некоторые вопросы методики для этой темы. Полезное упражнение для учащихся — самостоятельное формулирование поискового утверждения на родном языке и перевод его в регулярное выражение. Важна именно содержательная формулировка поискового запроса и перевод ее самим учеником: связывание конкретной формулировки запроса на родном языке и абстрактной в виде регулярного выражения.
Отметим, что обработка текста алгоритмами поиска и замены — отличная пропедевтика для алгоритмизации и программирования на классических языках, с ясными целями, высокой наглядностью процесса и результатов. Она вполне может идти до темы «Алгоритмизация». При составлении регулярных выражений обучаемый привыкает ценить точность записи: важна буквально каждая запятая, каждый символ. Эта привычка весьма пригодится при составлении и записи обычных алгоритмов. Фактически обучаемый участвует в цикле поиска и замены по всем строкам текста, который выполняется регулярным выражением.
Применение регулярных выражений раскрывает внутри-предметную связь «редактирование — алгоритмизация». Без этого такая связь могла быть реализована лишь при разработке учеником простого текстового редактора, что далеко не всем по силам. Простое задание на модификацию алгоритма — вывести номера строк с ошибками в расстановке запятых.
Новый смысл приобретает и полемический тезис А. П. Ершова: «программирование — вторая грамотность». Умение составлять и применять регулярные выражения — вполне посильное и нужное умение даже для будущего параметрического пользователя.
Наконец, владение языком регулярных выражений пригодится при обучении поиску информации в Интернет. Конечно, там ищутся не пробелы перед запятой, но стиль составления запросов и применения маски к строкам текста сохраняется.
Литература
1. Семакин И. Г., Мартынова И. Н. Личностные и метапредметные результаты обучения информатике на профильном уровне // Информатика и образование. 2012. № 2. — С.12.
2. Смит Билл. Методы и алгоритмы вычислений на строках (regexp) = Computing Patterns in Strings. — М.: «Вильямс», 2006. — 496 с.
3. Фридл Дж. Регулярные выражения. — СПб.: «Питер», 2001. — 352 с.
4. Ян Гойвертс, Стивен Левитан Регулярные выражения. Сборник рецептов. — СПб.: «Символ-Плюс», 2010. — 608 с.