ГлавнаяИнформатикаКак решатьДля групповых операций с файлами используются маски имен файлов

Для групповых операций с файлами используются маски имен файлов

2016-05-29 13:26:45

Формулировка задания: Для групповых операций с файлами используются маски имен файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы: символ «?» (вопросительный знак) означает ровно один произвольный символ; символ «*» (звездочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность. В каталоге находится 6 файлов. Определите, по какой из масок из них будет отобрана указанная группа файлов.

Задание входит в ЕГЭ по информатике для 11 класса под номером 4 (Базы данных. Файловая система).

Рассмотрим, как решаются подобные задания на примере.

Пример задания:

Для групповых операций с файлами используются маски имен файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы:

  • Символ «?» (вопросительный знак) означает ровно один произвольный символ.
  • Символ «*» (звёздочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность.

В каталоге находится 6 файлов:

door.doc
fedor.docx
msdos.doc
msdos.dat
radost.doc
rodos.docx

Определите, по какой из масок из них будет отобрана указанная группа файлов:

fedor.docx
msdos.doc
radost.doc
rodos.docx

  1. *?do?*.d*
  2. ?do*.doc
  3. *?do?*.do*
  4. *do?.doc*

Решение:

Для решения задания необходимо найти такую маску, чтобы по ней отбирались файлы

fedor.docx
msdos.doc
radost.doc
rodos.docx

И не отбирались файлы

door.doc
msdos.dat

Подходящая маска должна содержать в себе последовательность do до точки и последовательность doc после точки. Перед первой последовательностью должно быть 2 символа, после нее – 1 или несколько символов (?*). После второй последовательности могут быть символы, а могут и не быть.

Чтобы исключить имя файла «door.doc», нужно чтобы перед последовательностью do был хотя бы 1 символ, то есть нужна последовательность *? в начале. Чтобы исключить имя файла «msdos.dat», нужно чтобы после точки шла последовательность do или doc. Таким образом маска может выглядеть так:

*?do?*.doc*

Разберем каждую маску из списка и проверим, какие файлы будут отобраны:

Вариант 1

*?do?*.d* – маска похожа на ту, что мы составили самостоятельно. Все 4 файла «fedor.docx», «msdos.doc», «radost.doc», «rodos.docx» будут отобраны по ней. Однако по этой маске будет отобран и файл «msdos.dat», поэтому маска не подойдет.

Вариант 2

?do*.doc – маска не подходит, так как до последовательности do она содержит только 1 символ. Поэтому файлы «fedor.docx», «msdos.doc», «radost.doc», «rodos.docx» не будут отобраны по ней.

Вариант 3

*?do?*.do* – маска похожа на ту, что мы составили самостоятельно. Все 4 файла «fedor.docx», «msdos.doc», «radost.doc», «rodos.docx» будут отобраны по ней. При этом файлы «door.doc» и «msdos.dat» отобраны не будут. Так как перед первой последовательностью do должен быть хотя бы 1 символ, что исключает имя файла «door.doc». А вторая последовательность do исключит имя файла «msdos.dat». Значит, эта маска подойдет в качестве ответа.

Вариант 4

*do?.doc* – маска не подходит, так как после последовательности do может быть только 1 символ. Поэтому файл «radost.doc» не будет отобран по ней.

Таким образом, в качестве ответа подходит только маска номер 3.

Ответ: 3

Есть другой способ решения?

Наверх