Курсовая работа: Создание поисковой системы файлов в среде MS Visual Studio

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Введение

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

Язык программирования служит двум связанным между собой целям: он дает программисту аппарат для задания действий, которые должны быть выполнены, и формирует концепции, которыми пользуется программист, размышляя о том, что делать. Первой цели идеально отвечает язык, который настолько «близок к машине», что всеми основными машинными аспектами можно легко и просто оперировать достаточно очевидным для программиста образом. Второй цели идеально отвечает язык, который настолько «близок к решаемой задаче», чтобы концепции ее решения можно было выражать прямо и коротко.Язык предоставляет программисту набор концептуальных инструментов.

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

Целью данной курсовой работы является создание программы на языке С# для поиска файлов по заданной маске.

Данная тема актуальна, т.к. поиск файлов является неотъемлемой частью многих системных программ - файловых менеджеров, программ - архиваторов и пр.

Для достижения поставленной цели необходимо решить следующие задачи:

§ рассмотреть возможности языка С# и среды программирования VisualStudio при работе с файлами и каталогами;

§ спроектировать программу для поиска файлов по заданной маске и заданному пути.

Задание на курсовую работу

Разработать программу, выводящую на экран монитора информацию обо всех директориях и файлах, удовлетворяющих заданному шаблону:

[накопитель] [маршрут] имя_файла [расширение]

Для решение поставленной задачи поиска файлов необходимо задать:

§ имя файла или маску;

§ имя папки в которой будет выполняться поиск/

В результате выполнения программы будут получены список файлов по указанной спецификации и их количество (если файлов не найдено, то список будет пуст и количество равно 0).

1. Выбор языка программирования

Совокупность средств, с помощью которых программы пишутся, корректируются, преобразуются в машинные коды, отлаживаются и запускаются, называют средой разработки или оболочкой. Платформа .Net или .Net Framework - это больше чем просто среда разработки программ, это новое революционное объединение ранее разрозненных технологий компанией Microsoft, которые позволяют разрабатывать разнотипные приложения на различных языках программирования под различные операционные системы.

.NET Framework является надстройкой над операционной системой, в качестве которой может выступать любая версия Windows, Unix и вообще любая ОС (по заверению разработчиков), и состоит из ряда компонентов. Так, .NET Framework включает в себя:

1. Четыре официальных языка: С#, VB.NET, Managed C++ и JScript .NET.

2. Общеязыковую объектно-ориентированную среду выполнения CLR (Common Language Runtime), совместно используемую этими языками для создания приложений.

3. Ряд связанных между собой библиотек классов под общим именем FCL (Framework Class Library).

Основным компонентом платформы .NET Framework является общеязыковая среда выполнения программ CLR. Название среды - "общеязыковая среда выполнения" - говорит само за себя: это исполняющая среда, которая подходит для различных языков программирования. К функциям CLR относятся:

1. двухшаговая компиляция: преобразование программы, написанной на одном из языков программирования в управляемый код на промежуточном языке (Microsoft Intermediate Language, MSIL, или просто IL), а затем преобразование IL-кода в машинный код конкретного процессора, который выполняется с помощью виртуальной машины или JIT-компилятора (Just In Time compiler - компилирование точно к нужному моменту);

2. управление кодом: загрузка и выполнение уже готового IL-кода с помощью JIT-компилятора;

3. осуществление доступа к метаданным с целью проверки безопасности кода;

4. управление памятью при размещении объектов с помощью сборщика мусора (Garbage Collector);

5. обработка исключений и исключительных ситуаций, включая межъязыковые исключения;

6. осуществление взаимодействия между управляемым кодом (код, созданный для СLR) и неуправляемым кодом;

7. поддержка сервисов для разработки разнотипных приложений.

Следующим компонентом .Net Framework является FCL - библиотека классов платформы. Эта библиотека разбита на несколько модулей таким образом, что имеется возможность использовать ту или иную ее часть в зависимости от требуемых результатов. Так, например, в одном из модулей содержатся "кирпичики", из которых можно построить Windows-приложения, в другом - "кирпичики", необходимые для организации работы в сети и т.д.

Часть FCL посвящена описанию базисных типов. Тип - это способ представления данных; определение наиболее фундаментальных из них облегчает совместное использование языков программирования с помощью .NET Framework. Все вместе это называется Common Type System (CTS - единая система типов).

Кроме того, библиотека FCL включает в себя Common Language Specification (CLS - общая языковая спецификация), которая устанавливает: основные правила языковой интеграции. Спецификация CLS определяет минимальные требования, предъявляемые к языку платформы .NET. Компиляторы, удовлетворяющие этой спецификации, создают объекты, способные взаимодействовать друг с другом. Поэтому любой язык, соответствующий требованиям CLS, может использовать все возможности библиотеки FCL.

Как уже отмечалось, основными языками, предназначенными для платформы .NET Framework, являются С#, VB.NET, Managed C++ и JScript .NET. Для данных языков Microsoft предлагает собственные компиляторы, переводящие программу в IL-код, который выполняется JIT-компилятором среды CLR. Кроме Microsoft, еще несколько компаний и академических организаций создали свои собственные компиляторы, генерирующие код, работающий в CLR. На сегодняшний момент известны компиляторы для Pascal, Cobol, Lisp, Perl, Prolog и т.д. Это означает, что можно написать программу, например, на языке Pascal, а затем, воспользовавшись соответствующим компилятором, создать управляемый код, который будет работать в среде CLR.

Наилучшим образом свойства VisualStudio.NET реализованы в языке С#.

При создании этого языка программирования преследовалось несколько целей:

§ Создать первый компонентно-ориентированный язык в семействе C/C++. Как уже говорилось выше, программирование все в меньшей степени ориентируется на создание приложений, работающих на одном конкретном компьютере, и все больше смещается в сторону создания распределенных приложений, состоящих из компонентов, передаваемых по сети и подключаемых по мере необходимости. Для создания таких компонентов могут использоваться традиционные языки программирования (их и следует для этого использовать, поскольку они оптимизированы для решения подобных задач). Однако к языку, используемому для объединения этих компонентов в одно законченное приложение, предъявляются столь специфические требования, что им в полной мере не отвечает ни один из традиционных языков программирования. Этот язык не должен отличаться особой сложностью, поскольку все сложные задачи решаются на уровне компонентов, но должен обладать развитой системой диагностики и повышенным уровнем безопасности, так как ему приходится работать с объектами, совместная работа которых не гарантирована.

§ Создать альтернативу языку Java. При создании языка Java, используемого для разработки приложений, которые должны работать везде "от кофеварки до сервера", выяснилось, что единственным путем создания такого языка является размещение всех используемых данных в объектах, то есть, грубо говоря, превращение всех типов данных в классы. Поскольку попытка "внести улучшения" в стандарт языка Java, похоже, бесславно завершилась, перед Microsoftвстала задача создать собственную альтернативу данному языку, используя аналогичные подходы. Поэтому в С# не только сокращается разрыв между простыми типами и классами, но и имеется возможность создавать структурные типы, объектам которых не требуется выделять память в куче.

§ Повысить надежность программ и их устойчивость к ошибкам. Для решения этой задачи в С# реализована автоматическая сборка мусора, исключающая возникновение утечек памяти, структурированная обработка исключений и безопасная работа с типами.

§ Создать максимально простой язык. Как уже говорилось выше, на компонентно-ориентированном языке не предполагается создание особо сложных компонентов: для этого можно воспользоваться одним из уже имеющихся языков. Поэтому перед разработчиками С# была поставлена задача максимального упрощения языка при повышении его строгости. Для простоты подключения компонентов в С# интегрированы хорошо знакомые разработчикам механизмы СОМ и DLL, что также облегчает работу. В то же время, для создания и использования объектов С# не нужны файлы заголовков, файлы .idlили библиотеки типов. Эти компоненты содержат всю необходимую информацию в себе и не нуждаются в регистрации.

Язык С# одновременно является и очень простым, и очень сложным. Набор его исполняемых операторов сведен до минимума, а все используемые типы строго формализованы, что существенно облегчает его изучение. С другой стороны, этот язык предназначен для работы с достаточно сложными объектами и не приспособлен для выполнения простейших задач, обычно используемых для ознакомления с языком (кроме самых простых и, как правило, не имеющих практической ценности). Поэтому, чтобы эффективно использовать этот язык, необходимо разбираться в достаточно сложных областях программирования. Однако вернемся к его простоте.

Основным отличием С# от С и С++ является отсутствие указателей, что несколько непривычно после столь интенсивного их использования в этих языках. По умолчанию все программы на языке С# преобразуются в контролируемый код, в котором запрещено использование небезопасных операций, включая непосредственное обращение к памяти. Эта операция считается небезопасной, поскольку при ее выполнении отсутствует проверка того, что обращение производится именно к той области памяти, к которой хотел обратиться разработчик.

В С++ одни и те же операции ::, . и -> используются в пространствах имен, функциях-членах класса и ссылках. Для новичка бывает сложно разобраться, в каком контексте используется каждая из этих операций. В С# используется только одна операция . (точка), используемая для разделения имен при их вложении.

В С# используется единая система типов, рассматривающая любой тип, начиная от простейшего целочисленного типа до сложнейшего класса. Для того чтобы представление простого типа как объекта не привело к снижению быстродействия приложения, в С# используется механизм упаковки и распаковки.

С целью дальнейшего ужесточения проверки совместимости типов, целый и логический типы в С# разделены, что исключает проверку нулевого значения целочисленной переменной в условном операторе без формирования условного выражения, чем очень увлекаются программисты на С и С++. С другой стороны, это исключает появление ошибок при использовании операции присваивания вместо операции сравнения.

При разработке С# был учтен обширный опыт работы с языком С++, и многие операции, которые в С++ приходилось выполнять самостоятельно, в С# выполняются автоматически.

Одним из нововведений С# является появление нового типа финансовых данных. Тип decimalпозволяет программисту без всяких опасений сравнивать два числа, записанных в формате с плавающей точкой. Не секрет, что в С++ и других языках программирования эта операция, вследствие непредсказуемых ошибок округления, была довольно-таки рискованной. Если и этот тип вас не устраивает, вы можете создать свой собственный простой тип, удовлетворяющий всем вашим запросам (а если не сможете, значит, ваши запросы превышают ваши возможности как программиста).

В С# реализовано автоматическое управление памятью: выделение памяти осуществляется пользователем, а ее уничтожение - сборщиком мусора. Поскольку ссылка на производный класс может быть оформлена как ссылка на его базовый класс, и у программиста нет возможности в явном виде указать тип уничтожаемого объекта, подобное распределение обязанностей подразумевает существенное повышение требований к безопасности используемых типов.

Среда выполнения программ С# является верифицируемой, то есть в процессе выполнения приложения она следит за тем, чтобы работающий код не производил недопустимых операций с типами. При этом производится не только проверка допустимости преобразований типов (например, при передаче аргумента методу), но и проверка допустимости обращения по указанному адресу.

Источник: https://otherreferats.allbest.ru/download/1111731/