
- •Лекция 1_2. Вступ
- •1. Вступ до дисципліни.
- •Перечень рекомендуемой литературы
- •2.Основні етапи розробки програм
- •Постановка задачи
- •2.2 Математическая формализация задачи
- •Состав и тип данных
- •2.3 Выбор метода решения
- •2.4 Разработка алгоритма
- •2.5 Разработка программы (кодирование)
- •2.6 Отладка и тестирование программы
- •2.7 Анализ результатов. Уточнение модели.
- •2.8 Эксплуатация и сопровождение программы:
- •3. Поняття алгоритму, його властивості та форми подання
- •Формы представления алгоритмов.
- •Базовые алгоритмические конструкции.
- •Метод пошаговой детализации
- •4.Основні поняття платформи Microsoft .Net
- •Что такое и что дает dotNet?
- •Средства и технологии разработки
- •Для программистов...
- •5. Культура програмування.
- •6. Лексичні основи мов високого рівня Парадигмы программирования
- •Стандартизация языков программирования
- •Среда проектирования
- •Управляющие структуры
- •Определение последовательности действий в выражениях
- •Операции
- •Операторы
- •Составные операторы
- •Операторы выбора
- •Операторы цикла
- •Операторы перехода
- •Операторы исключений
5. Культура програмування.
Программа как формализованное описание процесса обработки данных. Программное средство.
Целью программирования является описание процессов обработки данных (в дальнейшем просто процессов). Согласно Международной федерации по обработке информации (ИФИП): данные (data) это представление фактов и идей в формализованном виде, пригодном для передачи и переработке в некоем процессе, а информация (information) это смысл, который придается данным при их представлении. Обработка данных (data processing) это выполнение систематической последовательности действий с данными. Данные представляются и хранятся на т.н. носителях данных. Совокупность носителей данных, используемых при какой-либо обработке данных, будем называть информационной средой (data medium). Набор данных, содержащихся в какой-либо момент в информационной среде, будем называть состоянием этой информационной среды. Процесс можно определить как последовательность сменяющих друг друга состояний некоторой информационной среды.
Описать процесс это значит определить последовательность состояний заданной информационной среды. Если мы хотим, чтобы по заданному описанию требуемый процесс порождался автоматически на каком-либо компьютере, необходимо, чтобы это описание было формализованным. Такое описание называется программой. С другой стороны, программа должна быть понятной и человеку, так как и при разработке программ, и при их использовании часто приходится выяснять, какой именно процесс она порождает. Поэтому программа составляется на удобном для человека формализованном языке программирования, с которого она автоматически переводится на язык соответствующего компьютера с помощью другой программы, называемой транслятором. Человеку (программисту), прежде чем составить программу на удобном для него языке программирования, приходится проделывать большую подготовительную работу по уточнению постановки задачи, выбору метода ее решения, выяснению специфики применения требуемой программы, прояснению общей организации разрабатываемой программы и многое другое. Использование этой информации может существенно упростить задачу понимания программы человеком, поэтому весьма полезно ее как-то фиксировать в виде отдельных документов (часто не формализованных, рассчитанных только для восприятия человеком).
Обычно программы разрабатываются в расчете на то, чтобы ими могли пользоваться люди, не участвующие в их разработке (их называют пользователями). Для освоения программы пользователем помимо ее текста требуется определенная дополнительная документация. Программа или логически связанная совокупность программ на носителях данных, снабженная программной документацией, называется программным средством (ПС). Программа позволяет осуществлять некоторую автоматическую обработку данных на компьютере. Программная документация позволяет понять, какие функции выполняет та или иная программа ПС, как подготовить исходные данные и запустить требуемую программу в процесс ее выполнения, а также: что означают получаемые результаты (или каков эффект выполнения этой программы). Кроме того, программная документация помогает разобраться в самой программе, что необходимо, например, при ее модификации.
Когда нужны собственные пространства имен
Описания всех типов и классов .NET находятся в пространствах имен.
Пространства имен — прекрасный способ распределить типы и классы по категориям, исключив конфликты имен. Microsoft размещает все типы и классы .NET в специальных пространствах имен, стремясь защитить их от конфликтов с другими именами. Нужны ли собственные пространства имен? Это зависит от ответа на вопрос: будут ли создаваемые вами типы и классы использоваться в среде, которой вы не управляете? Иначе говоря, если ваш код крутится внутри ограниченного круга разработчиков, можно обойтись своими правилами создания имен, не допуская появления конфликтов. Но если ваши классы предназначены для применения вне вашей организации и контролировать ситуацию с именами вы не сможете, без собственных пространств имен не обойтись. Кроме того, поскольку Microsoft рекомендует указывать имя вашей компании в качестве пространства имен верхнего уровня, я советовал бы (бесплатно!) всегда создавать пространства имен в случаях, когда с вашим кодом может столкнуться другой разработчик.
Рекомендации по изобретению имен
По статистике наибольшие затраты, связанные с разработкой приложений, приходятся на его сопровождение. Прежде чем мы продолжим, мне хотелось бы рассказать о соглашениях по составлению имен, поскольку от простоты и понятности такого соглашения может зависеть читабельность и, следовательно, удобство сопровождения кода.
Многие из нас знают, что соглашения об именах — болезненная тема. Этот вопрос решался проще, пока не появились Visual C++ и MFC.
Однако сейчас другое время, и в лице С# мы имеем новый язык и новые задачи. В этой среде мы не видим кода Microsoft. Более того появляется некий новый стандарт. Возможно, он будет отличаться от того, что я представляю здесь, но это хотя бы даст вам точку опоры.
Стандарты соглашения по назначению имен
Прежде чем обсуждать вопросы, связанные с конструированием имен для различных элементов вашего приложения, вспомним стандарты, имеющиеся к настоящему времени.
Венгерская нотация
Венгерскую нотацию использует большинство разработчиков на С и C++ (включая и МSовцев). Эта система формирования имен создана сотрудником Microsoft Чарльзом Симони (Charles Simonyi). В начале 1980-х Microsoft приняла на вооружение систему, основа которой взята из докторской диссертации Симони "Meta-Programming: A Software Production Method" ("Мета-программирование: способ производства программного обеспечения").
Согласно венгерской нотации к имени переменной добавляется приставка, показывающая ее тип. Однако не каждый тип имеет свой стандартный префикс. Кроме того, появление новых языков и новых типов требует создания новых приставок. Поэтому немудрено, что со временем мы станем сталкиваться с префиксами, которые никогда нам раньше не встречались. (Между прочим, термин "Венгерская нотация" как бы показывает, что префиксы делают переменные такими, как будто они написаны на языке, отличном от английского; к тому же г-н Симонии родом из Венгрии.)
Возможно, наиболее важной публикацией, агитирующей в пользу венгерской нотации, была первая книга, которую прочитал почти каждый разработчик под Windows и OS/2. Это книга Чарльза Петцольда (Charles Petzold) "Programming Windows" (Microsoft Press), в которой один из диалектов венгерской нотации применяется во всех демонстрационных приложениях. Более того, и Microsoft пользуется этой системой обозначений в собственных разработках. С MFC родилась очередная серия специфичных для C++ префиксов, продлив жизнь венгерской нотации. Так почему бы и нам не продолжить применение венгерской нотации? Тем более что эта система обозначений удобна в ситуациях, где желательно знать тип и/или область видимости применяемой переменной. Однако, как вы узнаете в главе 4, все типы в С# являются объектами и основаны на .NET-классе System.Object. Поэтому все переменные имеют основной набор функциональных возможностей и поведенческих характеристик. Поэтому венгерская нотация в среде .NET теряет свою привлекательность.
ПРИМЕЧАНИЕ Любопытные и те, кто страдает от бессонницы, могут почитать материалы о венгерской нотации по адресу http://msdn.microsqft.com/library/techart/hunganotat. htm.
Стили "Паскаль" и "верблюд"
Разработчики С# не связаны "жестким" стандартом, но из уже созданного ими видно, что они следуют набору условных обозначений, придуманных сотрудником Microsoft Робом Кэроном (Rob Caron), предложившим при обозначении переменных использовать смесь техник "Паскаль" и "верблюд". В статье "Coding Techniques and Programming Practices" ("Технологии и практика программирования"), имеющейся в MSDN ( http://msdn.microsoft.com/library/techart/cfr.htm) , он предлагает для имен методов применять технику "Паскаль", где первый символ изображается прописной буквой, и для имен переменных — технику "верблюд".
ПРИМЕЧАНИЕ Дополнительные сведения по этой теме см. в руководстве по .NET Framework, включенному в документацию по .NET Framework SDK, в разделе .NET Framework Developer Specificati-ons\.NET Framework Design Guidelines\Naming Guidelines.
Комментируйте программный код!!!
«Программа без комментариев несопровождаема… Это часовая бомба, а не компьютерная программа» Правила программирования на С и С++ Ален И. Голуб
Подведем итоги
Microsoft .NET — это переход на вычислительную модель, в которой устройства, службы и компьютеры работают совместно, обеспечивая создание решений для пользователей. Центром этого перехода являются разработка .NET Framework и CLR. .NET Framework содержит библиотеки классов, совместно используемые различными языками, которые компилируются для запуска в среде CLR. Поскольку С# разработан для CLR, вы не сможете решить даже простейшие задачи без CLR и библиотек классов .NET Framework. Понимание особенностей этих технологий является необходимым условием для получения максимальной пользы от С#, а как этого добиться, вы узнаете из этого курса.