данные на дисках хранятся в виде файлов (наборов данных, имеющих имя)
чтобы было удобнее разбираться с множеством файлов, их объединяют в каталоги (в Windows каталоги называются «папками»)
каталог можно воспринимать как контейнер, в котором размещаются файлы и другие каталоги, которые называются подкаталогами или вложенными каталогами (они находятся внутри другого каталога, вложены в него)
каталоги организованы в многоуровневую (иерархическую) структуру, которая называется «деревом каталогов»
главный каталог диска (который пользователь видит, «открыв» диск, например, в Проводнике Windows или аналогичной программе) называется корневым каталогом или «корнем» диска, он обозначается буквой логического диска, за которой следует двоеточие и знак «\» (обратный слэш1); например, A:\ – это обозначение корневого каталога диска А
каждый каталог (кроме корневого) имеет (один единственный!) «родительский» каталог – этот тот каталог, внутри которого находится данный каталог
полный адрес каталога – это перечисление каталогов, в которые нужно войти, чтобы попасть в этот каталог (начиная с корневого каталога диска); например
С:\USER\BIN\SCHOOL
полный адрес файла состоит из адреса каталога, в котором он находится, символа «\» и имени файла, например
С:\USER\BIN\SCHOOL\Вася.txt
маска служит для обозначения (выделения) группы файлов, имена которых имеют общие свойства, например, общее расширение
в масках, кроме «обычных» символов (допустимых в именах файлов) используются два специальных символа: звездочка «*» и знак вопроса «?»;
звездочка «*» обозначает любой количество любых символов, в том числе, может обозначать пустую последовательность;
знак вопроса «?» обозначает ровно один любой символ
при выводе списка имен файлов они могут быть отсортированы по имени, типу (расширению), дате последнего изменения, размеру; это не меняет их размещения на диске;
если установлена сортировка по имени или типу, сравнение идет по кодам символов, входящих в имя или в расширение
желтым и фиолетовым маркером в таблице выделены соответствующие части маски и имен файлов (где есть совпадение)
для двух последних имен проверяем второй блок маски: после «hel» должна быть цепочка «lo.c», или вплотную (и это возможно!) или через произвольную «вставку», на которую указывает звездочка в маске; видим, что оба имени прошли проверку:
| ?hel | ?hel*lo.c |
hello.cp | × | |
hello.cpp | × | |
hhelolo.cpp | hhelolo.cpp | hhelolo.cpp |
hhelolo.c | hhelolo.c | hhelolo.c |
последняя часть маски, «?*», означает, что после «lo.c» должен стоять по крайне мере один любой символ (на это указывает знак «?»); проверяя это правило, обнаруживаем, что для последнего имени, «hhelolo.c», маска не подходит, поскольку после «lo.c» ни одного символа нет:
| ?hel | ?hel*lo.c | ?hel*lo.c?* |
hello.cp | × | | |
hello.cpp | × | | |
hhelolo.cpp | hhelolo.cpp | hhelolo.cpp | hhelolo.cpp |
hhelolo.c | hhelolo.c | hhelolo.c | × |
таким образом, правильный ответ – 3.