Файл: Реферат язык программирования c # (сишарп) Исполнители Хмелинин. С. И. Боталова М. Н.docx

ВУЗ: Не указан

Категория: Реферат

Дисциплина: Не указана

Добавлен: 10.01.2024

Просмотров: 163

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Федеральное агентство по образованию

ГОУ ВПО «Уральский Государственный Технический Университет – УПИ» имени первого Президента России Б.Н. Ельцина

РЕФЕРАТ

ЯЗЫК ПРОГРАММИРОВАНИЯ c# (СИ-ШАРП)

Исполнители: Хмелинин. С.И.

Боталова М.Н.

Склярова С.В.

(группа ИМ-290301)

Руководитель: Мокрушин А.А.

Екатеринбург 2010

Оглавление


Введение 4

История возникновения 6

Особенности C# 8

Особенности реализации основных конструкций в C#. 10

Типы данных 10

Примитивные типы 10

Ссылочные типы 10

Структуры (записи) 11

Перечислимые типы 12

Массивы и коллекции 12

Параметризованные (обобщённые) типы 13

Переменные. 13

Циклы. 14

Цикл foreach 14

Цикл for 15

Цикл while 15

Цикл do-while 15

Функции и процедуры 15

Возвращаемые значения 16

Параметры 17

Некоторые особенности синтаксиса 17

Перегрузка операций 18

Пространства имён 18

Классы 19

Объявление класса 19

Создание объектов 20

Наследование классов 21

Таблица допустимых в определении классов комбинаций модификаторов доступа 22

Интерфейсы 22

Свойства и индексаторы 23

Сравнение C, C++ и C# 24

Сфера применения C# 27

Заключение 29

Список литературы 30

Приложения 31

Приложение 1 31

Приложение 2 31

Приложение 3 32

Приложение 4 32


Введение


C# — это типизированный, объектно-ориентированный, простой и в то же время мощный язык программирования, который позволяет разработчикам создавать многофункциональные приложения. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET (программной платформы от компании Microsoft, предназначенной для создания обычных программ и веб-приложений).

Символ # (октоторп) в названии языка печатается на клавиатуре как Shift+3, что символизирует третью реализацию C. С другой стороны # можно интерпретировать и как две пары плюсов ++;++, намекающие на новый шаг в развитии языка по сравнению с C++ (подобно шагу от C к C++), и как музыкальный символ диез, вместе с буквой C составляющий в английском языке название ноты до-диез (англ. C sharp). Октоторп # часто называют «шарпом» (от англ. sharp) из-за его схожести с диезом ♯, отсюда и название языка — «Си шарп».


C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. С# — это фактически гибрид разных языков. Переняв многое от своих предшественников — языков C++, Java, Delphi, Модула и Smalltalk - и опираясь на практику их использования, С# синтаксически не менее (если не более) чист, чем Java, так же прост, как Visual Basic, и обладает практически той же мощью и гибкостью, что и C++.

Цель данной работы:

  • Дать краткое представление языка C# и его особенностей

Сопутствующие задачи:

  • Кратко рассмотреть историю создания языка C#

  • Представить реализацию основных синтаксических конструкций

  • Проанализировать сходства и различия с другими подобными языками, такими, как С и С++.

  • Дать понятие о современных сферах применения C#.


История возникновения


Язык C# появился на свет в июне 2000 г. в результате кропотливой работы большой группы разработчиков компании Microsoft, возглавляемой Андерсом Хейлсбергом (Anders Hejlsberg).

Появление языка C# и инициативы .NET отнюдь не случайно пришлось на начало лета 2000 г. Именно к этому моменту компания Microsoft подготовила промышленные версии новых компонентных технологий и решений в области обмена сообщениями и данными, а также создания Internet-приложений (COM+, ASP+, ADO+, SOAP, Biztalk Framework). Несомненно, лучшим способом продвижения этих новинок является создание инструментария для разработчиков с их полноценной поддержкой. В этом и заключается одна из главных задач нового языка C#. Кроме того, Microsoft не могла больше расширять все те же инструменты и языки разработки, делая их все более и более сложными (а это было необходимо, так как требования поддержки современного оборудования и требования обеспечения обратной совместимости с программными продуктами начала 90-х годов становились всё более конфликтующими). Наступил момент, когда необходимо начать с чистого листа для того, чтобы создать простой, но имеющий сложную структуру набор языков, сред и средств разработки, которые позволят разработчику легко создавать современные программные продукты.

С# и .NET являются той самой отправной точкой. Если говорить упрощенно, то .NET представляет собой новую платформу, новый API (англ. Application Programming Interface - интерфейс прикладного программирования)для программирования в Windows, а С# - новый язык, созданный с нуля, для работы с этой платформой, а также для извлечения всех выгод из прогресса сред разработки и достижений объектно-ориентированного программирования в течение последних 20 лет.


Особенности C#


  • Полный и хорошо определенный набор основных типов.

  • Встроенная поддержка автоматической генерации XML-документации.

  • Автоматическое освобождение динамически распределенной памяти.

  • Возможность отметки классов и методов атрибутами, определяемыми пользователем. (это может быть полезно при документировании и способно воздействовать на процесс компиляции - например, можно пометить методы, которые должны компилироваться только в отладочном режиме).

  • Полный доступ к библиотеке базовых классов .NET, а также легкий доступ к Windows API (если это действительно необходимо).

  • Указатели и прямой доступ к памяти, если они необходимы (однако язык разработан таким образом, что практически во всех случаях можно обойтись и без этого).

  • Поддержка свойств и событий в стиле Visual Basic.

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

  • Возможность использования С# для написания динамических web-страниц ASP.NET.

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

Особенности реализации основных конструкций в C#.


Авторы C# стремились создать язык, сочетающий простоту и выразительность современных объектно-ориентированных языков (вроде Java) c богатством возможностей и мощью C++. Наиболее важная новая характеристика С#, по сравнению с предшествующими языками, - это поддержка возможности взаимодействия нескольких компьютерных языков (многоязыкового программирования). По словам Андерса Хейлсберга, C# позаимствовал большинство своих синтаксических конструкций из C++. В частности, в нем присутствуют такие удобные типы данных, как структуры и перечисления (другой потомок C++ -- Java -- лишен этих элементов, что создает определенные неудобства при программировании). Синтаксические конструкции С# унаследованы не только от C++, но и от C, и от Visual Basic. Например, в С#, как и в Visual Basic, используются свойства классов. Как C++, С# позволяет производить перегрузку операторов для созданных вами типов.


Рассмотрим особенности реализации основных синтаксических конструкций в C#:

Типы данных

Примитивные типы


Поддерживает идею примитивных типов (которые в C# являются подмножеством типов-значений — value types). Для трансляции примитивных типов в объектные используется их автоматическое «заворачивание» в объекты (boxing) и «разворачивание» (unboxing). У C# имеется больше примитивных типов, чем у Java, за счёт беззнаковых целых типов (unsigned), имеющихся парно ко всем знаковым, и специального типа decimal для высокоточных вычислений с фиксированной запятой.

Ссылочные типы


Переменные ссылочных типов, называемые объектами, сохраняют ссылки на фактические данные. Для объявления ссылочных типов используются следующие ключевые слова: class, interface, delegate. Также существуют встроенные типы: object и string.

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

Ключевое слово delegate используется для объявления ссылочного типа, который может быть использован для инкапсуляции именованного или анонимного метода. Делегаты аналогичны используемым в языке C++ указателям на функции, но являются строго типизированными и безопасными. Делегат должен быть создан при помощи метода или лямбда-выражения, имеющего совместимые возвращаемый тип и входные параметры.

Тип object представляет собой псевдоним для Object в платформе .NET Framework. В унифицированной системе типов C# все типы, предопределенные и пользовательские, ссылочные типы и типы значений, наследуют непосредственно или косвенно от Object. Переменным типа object можно назначать значения любых типов. Когда переменная типа значения преобразуется в объект, говорят, что она упаковывается. Когда переменная типа object преобразуется в тип значения, говорят, что она распаковывается.

Тип данных string — это последовательность, не содержащая ни одного, или содержащая любое число знаков Юникода. В платформе.NET Framework string является псевдонимом для String.

Структуры (записи)


C# позволяет создавать пользовательские типы-значения, используя ключевое слово struct. В отличие от экземпляров классов, экземпляры типов-значений создаются не в куче, а на стеке
вызовов или в составе экземпляра объекта, в котором они объявлены, что в некоторых случаях повышает производительность кода. С точки зрения программиста они подобны классам, но с несколькими ограничениями: у них не может быть явного конструктора без параметров (но может быть конструктор с параметрами), от них нельзя наследовать, и они не могут явно наследоваться от других типов (всегда неявно наследуются от класса System.ValueType), но могут реализовывать интерфейсы. Кроме того, значения struct-типов поддерживают логику присваивания значения (то есть переменная этого типа содержит не ссылку, а само значение, и присваивание одной переменной значения другой приводит не к копированию ссылки на один и тот же объект, а к копированию значений полей одной структуры в другую).

Перечислимые типы


Перечислимые типы в C# происходят от примитивных целочисленных типов. Допустимым значением перечислимого типа является любое значение лежащего в его основе примитивного, хотя для его присваивания может потребоваться явное приведение типа. Это позволяет комбинировать значения перечислимого типа побитовой операцией «или», если они являются битовыми флагами.

Массивы и коллекции


Массивы и коллекции получили выражение в синтаксисе, благодаря особой разновидности цикла for (цикл по коллекции, известный также как цикл foreach). Массив является объектом класса Array.

В C# есть как настоящие многомерные массивы, так и массивы массивов, которые в C# обычно называются «неровными», или «ступенчатыми» (jagged). Многомерные массивы всегда «прямоугольные» (говоря в двумерной терминологии), в то время как массивы массивов могут хранить строки разной длины (опять-таки в двумерном случае, в многомерном аналогично). Многомерные массивы ускоряют доступ к памяти (для них указатель разыменовывается только один раз), а неровные массивы работают медленнее, но экономят память, когда не все строки заполнены. Многомерные массивы требуют для своего создания лишь один вызов оператора new, а ступенчатые требуют явно выделять память в цикле для каждой строки.

Параметризованные (обобщённые) типы


Типы могут быть параметризованными, что поддерживает парадигму обобщённого программирования.

Поддержка обобщённости была интегрирована в саму виртуальную среду выполнения, впервые появившись в .NET 2.0. Язык здесь стал лишь внешним интерфейсом для доступа к этим возможностям среды. Компилятор производит статическую проверку типов, а в дополнение к этому JIT производит проверку корректности во время загрузки. Информация об обобщённых типах полностью присутствует во время выполнения и допускает полную поддержку рефлексии обобщённых типов и создание их новых реализаций