A13 (базовый уровень, время – 1 мин)
Тема:
Файловая система.
Что
нужно знать:
·
данные на дисках хранятся в виде файлов (наборов
данных, имеющих имя)
·
чтобы было удобнее разбираться с множеством
файлов, их объединяют в каталоги (в Windows каталоги
называются «папками»)
·
каталог можно воспринимать как контейнер, в
котором размещаются файлы и другие каталоги, которые называются подкаталогами
или вложенными каталогами (они
находятся внутри другого каталога, вложены в него)
·
каталоги организованы в многоуровневую (иерархическую)
структуру, которая называется «деревом каталогов»
·
главный каталог диска (который пользователь
видит, «открыв» диск, например, в Проводнике Windows или аналогичной программе) называется корневым каталогом или «корнем» диска,
он обозначается буквой логического диска, за которой следует двоеточие и знак «\»
(обратный слэш);
например, A:\
– это обозначение корневого каталога диска А
·
каждый каталог (кроме корневого) имеет (один единственный!) «родительский» каталог –
этот тот каталог, внутри которого находится данный каталог
·
полный адрес каталога – это перечисление
каталогов, в которые нужно войти, чтобы попасть в этот каталог (начиная с
корневого каталога диска); например
С:\USER\BIN\SCHOOL
·
полный адрес файла состоит из адреса каталога, в
котором он находится, символа «\» и имени файла, например
С:\USER\BIN\SCHOOL\Вася.txt
·
маска служит для обозначения (выделения) группы
файлов, имена которых имеют общие свойства, например, общее расширение
·
в масках, кроме «обычных» символов (допустимых в
именах файлов) используются два специальных символа: звездочка «*» и знак
вопроса «?»;
·
звездочка «*» обозначает любой количество любых
символов, в том числе, может обозначать пустую последовательность;
·
знак вопроса «?» обозначает ровно один любой
символ
·
при выводе списка имен файлов они могут быть
отсортированы по имени, типу (расширению), дате последнего изменения, размеру;
это не меняет их размещения на диске;
·
если установлена сортировка по имени или типу,
сравнение идет по кодам символов, входящих в имя или в расширение
Пример задания:
Определите,
какое из указанных имен файлов удовлетворяет маске: ?hel*lo.c?*
1) hello.c 2) hello.cpp 3)
hhelolo.cpp
4) hhelolo.c
Решение:
1) будем
проверять соответствие файлов маске по частям, записывая результаты в таблицу
2) начнем
с первой части маски, «?hel»; эта часть означает, что перед сочетанием «hel» в начале
имени стоит один любой символ;
3) сразу
видим, что первые два имени не подходят (начинаются прямо с «hel», без
стартового символа), отмечаем их крестиком в таблице и больше не рассматриваем:
|
?hel
|
hello.cp
|
×
|
hello.cpp
|
×
|
hhelolo.cpp
|
hhelolo.cpp
|
hhelolo.c
|
hhelolo.c
|
желтым
и фиолетовым маркером в таблице выделены
соответствующие части маски и имен файлов (где есть совпадение)
4) для
двух последних имен проверяем второй блок маски: после «hel» должна быть цепочка «lo.c», или вплотную
(и это возможно!) или через произвольную «вставку», на которую указывает
звездочка в маске; видим, что оба имени прошли проверку:
|
?hel
|
?hel*lo.c
|
hello.cp
|
×
|
|
hello.cpp
|
×
|
|
hhelolo.cpp
|
hhelolo.cpp
|
hhelolo.cpp
|
hhelolo.c
|
hhelolo.c
|
hhelolo.c
|
5) последняя
часть маски, «?*»,
означает, что после «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
|
×
|
6)
таким образом, правильный ответ – 3.
Возможные ловушки и проблемы:
·
можно забыть, что
звездочка «*» может соответствовать и пустой последовательности; например, в
рассмотренной задаче имя «hhelolo.cp» также
соответствует маске
·
можно забыть, что
знак «?» НЕ может соответствовать пустой последовательности, а заменяет ровно
1 символ
|
|