Язык С был развит из В Деннисом Ритчи в BellLaboratories и первоначально реализован на компьютере DEC PDP-11 в 1972 году. С использует многие важные концепции BCPL и В, а также добавляет типы данных и другие свойства. Первоначально С приобрел широкую известность как язык разработки операционной системы UNIX. Сегодня фактически все новые операционные системы написаны на С или на C#. В течение двух последних десятилетий С стал доступным для большинства компьютеров. С независим от аппаратных средств. При тщательной разработке на С можно написать мобильные программы, переносимые на большинство компьютеров.
В конце 70-х годов С развился в то, что теперь относят к «традиционному С», «классическому С» или «С Кернигана и Ритчи». Публикация издательством Prentice-Hall книги Кернигана и Ритчи «Язык программирования Со привлекла широкое внимание к этому языку. Эта публикация стала одной из наиболее удачных книг по вычислительной технике за все время.
Широкое распространение С на различных типах компьютеров (иногда называемых аппаратными платформами) привело, к сожалению, ко многим вариациям языка. Они были похожи, но несовместимы друг с другом. Это было серьезной проблемой для разработчиков программ, нуждавшихся в написании совместимых программ, которые можно было бы выполнять на нескольких платформах. Стало ясно, что необходима стандартная версия С. В 1983 году при Американском Национальном Комитете Стандартов в области вычислительной техники и обработки информации был создан технический комитет X3J11, чтобы «обеспечить недвусмысленное и машинно-независимое определение языка». В 1989 году стандарт был утвержден. ANSI скооперировался с Международной Организацией Стандартов (InternationalStandardsOrganizations — ISO), чтобы стандартизировать С в мировом масштабе; совместный стандарт был опубликован в 1990 году и назван ANSI/ISO 9899: 1990. Копии этого документа можно заказать в ANSI. Второе издание книги Кернигана и Ритчи, вышедшее в 1988 году, отражает эту версию, называемую ANSI С; эта версия языка используется теперь повсеместно.
VisualStudio.NET
В данной книге для разработки всех программ на С#, начиная от самых простых примеров использования командной строки и заканчивая более сложными типами создаваемых проектов, мы будем применять VisualStudio.NET (VS),
VS не является обязательным для создания приложений на С#, однако эта система существенно упрощает жизнь программиста. Конечно, мы можем (при желании) производить манипуляции над файлами с исходным кодом на С# с помощью обычного текстового редактора (вроде широко распространенного приложения Notepad) и компилировать код в модули с помощью компилятора командной строки, который является составной частью .NETFramework. Но зачем это делать, если имеется такой мощный инструмент, как VS?
Ниже приводится краткий перечень возможностейч УБ, благодаря которым эта система является наиболее привлекательным средством разработки в .NET;
□ VS автоматически выполняет все шаги, необходимые для компиляции исходного кода, и одновременно позволяет управлять всеми используемыми опциями, если мы пожелаем их переопределить,
□ Текстовый редактор VS настроен для работы с теми языками, которые поддерживаются VS (включая С#), поэтому он может интеллектуально обнаруживать ошибки и подсказывать в процессе ввода, какой именно код необходим,
□ В состав VS входят программы, позволяющие создавать приложения
в WindowsForms и WebForms путем простого перетаскивания мышью элементов пользовательского интерфейса.
□ Многие типы проектов, создание которых возможно на С#, могут разрабатываться на основе "каркасного" кода, заранее включаемого в программу. Вместо того чтобы каждый раз начинать с нуля,
VS позволяет использовать уже имеющиеся файлы с исходным кодом, что уменьшает временные затраты на создание проекта.
□ В состав VS входит несколько вспомогательных программ, которые позволяют автоматизировать выполнение наиболее распространенных задач; причем многие из этих программ могут добавлять необходимый код в уже существующие файлы, так что программисту не придется беспокоиться (а в некоторых случаях н вообще вспоминать) о соблюдении синтаксических правил.
□ VS имеет большое количество мощных инструментов, благодаря которым можно просматривать отдельные элементы проекта или осуществлять
в них поиск, независимо от того, являются ли эти элементы файлами
с кодами на языке С# или представляют собой какие-либо иные ресурсы,
например, двоичные графические или звуковые файлы,
□ Распространять приложения в VS столь же просто, как и писать их:
VS облегчает передачу кода клиентам и позволяет им инсталлировать его без каких-либо проблем.
□ VS допускает использование совершенных методов отладки при разработке проектов: например, пошаговое выполнение кода, когда выполняется один оператор за раз, что дает возможность следить за текущим состоянием приложения.
И это далеко не все преимущества VS!
Решения VS
Когда мы используем VS для разработки приложений, то мы делаем это через создание решений. В терминах VS решение — это нечто большее, чем просто приложение. Решения состоят из проектов, среди которых могут быть "проекты WindowsForms", "проекты WebForms" и т. д. Решения могут включать несколько проектов, что позволяет группировать логически взаимосвязанные части кода в одном месте, даже если они в действительности компилируются в разные модули, расположенные в различных местах на жестком диске.Такая возможность оказывается очень полезной, поскольку она позволяет работать над "разделяемым" кодом (который может быть помещен в кэш глобальных модулей) одновременно с приложениями, использующими этот код. Отладка программ оказывается намного легче, когда имеется единая среда разработки, в которой применяется пошаговое выполнение операторов в различных модулях,
Итоги
В данной главе было дано общее описание .NETFramework н рассмотрено, каким образом эта система упрощает разработку эффективных н гибких приложений, Вы познакомились с процессом превращения программ, написанных на таких языках, как С#, в работающие приложения, и узнали, выгоды можно извлечь из использования управляемого кода, запускаемого под управлением единой системы выполнения программ CLR.NET.
Также было рассказано, что представляет собой С#, какое отношение он имеет к .NETFramework, и дано описание инструмента, который будет использоваться для выполнения разработок на С#,— VisualStudio.NET.
В следующей главе мы с помощью VS создадим работающий код на С#; полученные при этом знания в дальнейшем позволят нам сконцентрироваться собственно на языке С# и не уделять излишнего внимания работе VS.
Введение в объектное ориентирование начинается с главы 1!
Большинство вузовских профессоров, которые будут учить по этой книге, преподавали процедурное программирование много лет (вероятно, на С или Паскале) и имеют, возможно, некоторый опыт преподавания объектно-ориентированного программирования. C# сам по себе не является чисто объектно-ориентированным языком. Скорее он является гибридным языком, дающим возможность и процедурного, и объектно-ориентированного программирования.
Так что мы выбрали следующий подход. Первые пять глав книги знакомят с процедурным программированием на C#. Они описывают принципы программирования, управляющие структуры, функции, массивы, указатели и строки. Эти главы освещают компоненты С ANSI в C# и усовершенствования С, сделанные в C#.
В главе 1 раздел «Размышления об объектах» знакомит с концепциями и терминологией объектной ориентации. Соответствующие разделы глав 2-5 представляют набор требований для создания серьезного проекта объектно-ориентированной системы, а именно — программы моделирования лифта, и проводят студента через типичные этапы процесса объектно-ориентированного проектирования. В этих параграфах рассматривается, как идентифицировать объекты в задаче, как определить атрибуты и функции объекта и как определить взаимодействия объектов. К тому времени, когда студент завершил главу 5, он (или она) уже провел тщательное объектно-ориентированное проектирование модели лифта и готов, если не жаждет, начать программирование лифта на C#.
Об этой книге
Книга «Как программировать на C#» содержит богатый набор примеров, упражнений и проектов, взятых из различных областей, чтобы дать студенту возможность решать действительно интересные и жизненные задачи.
Книга решает прежде всего задачи обучения. Например, фактически по каждой новой теме как C#, так и объектно-ориентированного программирования, приводится законченная рабочая программа на C# и тут же показывается результат ее выполнения. Чтение этих программ весьма похоже на их ввод в компьютер с последующим прогоном.
Упражнения варьируются от простых вопросов на повторение пройденного до серьезных задач программирования и крупных проектов. Преподаватели, ищущие темы для курсовых проектов, найдут много подходящих задач в упражнениях глав 3-18.
Имеется пособие для преподавателя на дискетах в форматах PC и Макинтош с программами, встречающимися в основном тексте, и ответами на почти все вопросы, помещенные в конце глав (к данному изданию эти дискеты не прилагаются — прим. ред.).
При написании этой книги мы использовали варианты компиляторов C#, работающие на рабочих станциях SunSPARCstation, компьютерах AppleMacintosh (Symantech Си++), IBMPC (TurboC#, BorlandC#, CSET++ фирмы IBM и Microsoft C/C++ версии 7 и VisualC#) и DECVAX/VMS (DECC#). Большая часть программ из текста книги будут работать на всех этих компиляторах при незначительной их модификации или вовсе без таковой. Мы публикуем версии, разработанные нами на BorlandC#.