bigpo.ru
добавить свой файл
1 2 3 4

© К. Поляков, 2009-2011

A3 (базовый уровень, время – 2 мин)


Тема: Файловая система.

Что нужно знать:

  • данные на дисках хранятся в виде файлов (наборов данных, имеющих имя)

  • чтобы было удобнее разбираться с множеством файлов, их объединяют в каталоги (в Windows каталоги называются «папками»)

  • каталог можно воспринимать как контейнер, в котором размещаются файлы и другие каталоги, которые называются подкаталогами или вложенными каталогами (они находятся внутри другого каталога, вложены в него)

  • каталоги организованы в многоуровневую (иерархическую) структуру, которая называется «деревом каталогов»

  • главный каталог диска (который пользователь видит, «открыв» диск, например, в Проводнике Windows или аналогичной программе) называется корневым каталогом или «корнем» диска, он обозначается буквой логического диска, за которой следует двоеточие и знак «\» (обратный слэш1); например, 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

желтым и фиолетовым маркером в таблице выделены соответствующие части маски и имен файлов (где есть совпадение)

  1. для двух последних имен проверяем второй блок маски: после «hel» должна быть цепочка «lo.c», или вплотную (и это возможно!) или через произвольную «вставку», на которую указывает звездочка в маске; видим, что оба имени прошли проверку:




    ?hel

    ?hel*lo.c

    hello.cp

    ×




    hello.cpp

    ×




    hhelolo.cpp

    hhelolo.cpp

    hhelolo.cpp

    hhelolo.c

    hhelolo.c

    hhelolo.c

  2. последняя часть маски, «?*», означает, что после «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. таким образом, правильный ответ – 3.

Возможные ловушки и проблемы:

    • можно забыть, что звездочка «*» может соответствовать и пустой последовательности; например, в рассмотренной задаче имя «hhelolo.cp» также соответствует маске

    • можно забыть, что знак «?» НЕ может соответствовать пустой последовательности, а заменяет ровно 1 символ


следующая страница >>