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

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


реферат Особенности языка программирования C# (Си-шарп)

Информация:

Тип работы: реферат. Добавлен: 08.07.2012. Сдан: 2010. Страниц: 11. Уникальность по antiplagiat.ru: < 30%

Описание (план):


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

РЕФЕРАТ 

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

                Исполнители: Хмелинин. С.И.
                                       Боталова М.Н.
                                       Склярова С.В.
                           (группа ИМ-290301)
                Руководитель: Мокрушин А.А. 
                 
                 
                 

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

Оглавление
Введение 3
История возникновения 4
Особенности C# 5
Особенности реализации основных конструкций в C#. 6
Типы данных 6
    Примитивные типы 6
    Ссылочные типы 6
    Структуры (записи) 7
    Перечислимые типы 8
    Массивы и коллекции 8
    Параметризованные (обобщённые) типы 8
Переменные. 9
Циклы. 10
    Цикл foreach 10
    Цикл for 10
    Цикл while 10
    Цикл do-while 10
Функции и процедуры 11
    Возвращаемые значения 11
    Параметры 12
Некоторые особенности синтаксиса 13
Перегрузка операций 13
Пространства имён 13
Классы 14
    Объявление класса 14
    Создание объектов 15
    Наследование классов 16
    Таблица допустимых в определении классов комбинаций модификаторов доступа 17
    Интерфейсы 17
Свойства и индексаторы 18
Сравнение C, C++ и C# 19
Сфера применения C# 21
Заключение 22
Список литературы 23
Приложения 24
Приложение 1 24
Приложение 2 24
Приложение 3 25
Приложение 4 25 

 


Введение

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 производит проверку корректности во время загрузки. Информация об обобщённых типах полностью присутствует во время выполнения и допускает полную поддержку рефлексии обобщённых типов и создание их новых реализаций

Переменные.

Переменная представляет числовое или строковое значение или объект класса. Значение, хранящееся в переменной, может измениться, однако имя остается прежним. Переменная представляет собой один тип поля.
В C# переменные объявляются  с определенным типом данных и  надписью.
Общий вид записи переменной: тип переменной имя переменной [= присваиваемое значение];
Необходимо указать  тип переменной: int, float, byte, short или  другой из более чем 20 различных  типов данных. Тип указывает, помимо всего прочего, точный объем памяти, который следует выделить для  хранения значения при выполнении приложения. При преобразовании переменной из одного типа в другой язык C# следует определенным правилам.
Например:  int answer = 42;
           string greeting = "Hello, World!";
           double bigNumber = 1e100;
           System.Console.WriteLine("{0} {1} {2}", answer, greeting, bigNumber);
Константа является другим типом поля. Она хранит значение, присваиваемое по завершении компиляции программы, и никогда после этого  не изменяется. Константы объявляются  помощью ключевого слова const; их использование  способствует повышению удобочитаемости  кода.
Например:   const int speedLimit = 55;
           const double pi = 3.14159265358979323846264338327950;
Переменная readonly аналогична константе, однако значение ей присваивается  при запуске программы. Это дает возможность задать значение на основе каких-либо других условий, неизвестных  до выполнения программы. Однако после  первого присваивания значение не может  быть снова изменено пока выполняется  программа.

Циклы.

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

Цикл foreach

В C# представлен новый  способ создания циклов, который может  быть неизвестен программистам на C++ и C: цикл foreach. Вместо просто создания переменной для индексирования массива или  другой структуры данных, такой как  коллекция, цикл foreach выполняет более  тяжелую работу.
Цикл foreach позволяет  производить итерацию по каждому  объекту в контейнерном классе, поддерживающем интерфейс IEnumerable. К контейнерным классам  относятся массивы, классы коллекций (System.Collection) и определенные пользователем  классы коллекций.
Объекты в цикле foreach доступны только для чтения! Значение объекта в коллекции изменять нельзя!
Пример: см. Приложение 1.

Цикл for

в случае если необходимо проводить итерации по элементам  массива то часто используют цикл for
Пример: см. Приложение 2.

Цикл while

Цикл while выполняет  оператор или блок операторов, пока определенное выражение не примет значение false.
Пример: см. Приложение 3.

Цикл do-while

Цикл do .. while выполнит блок операторов как минимум один раз, а затем повторит выполнение цикла до тех пор, пока условное выражение  не возвратит значение false.
Пример: см. Приложение 4.

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

Функция в C# - это средство, позволяющее выполнять некоторые участки кода в произвольном месте приложения. Мы имеем возможность передавать функциям информацию, с которой они должны работать, в виде параметров и получать результаты работы функции в виде возвращаемых значений. Параметры и возвращаемое значение функции вместе называются сигнатурой функции.
Функция отличается от процедуры двумя особенностями:
    всегда вычисляет некоторое значение, возвращаемое в качестве результата функции;
    вызывается в выражениях.
Процедура C# имеет  свои особенности:
    возвращает формальный результат void, указывающий на отсутствие результата;
    вызов процедуры является оператором языка;
    имеет входные и выходные аргументы, причем выходных аргументов - ее результатов - может быть достаточно много.
Наиболее широкое  применение процедуры и функции  получают в качестве методов классов.

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

Самый простой способ обмена данными с функциями —  использование возвращаемого значения. Функции, в которых применяются  возвращаемые значения, точно так  же обладают численным значением, как  и любые переменные, используемые при вычислении выражений. Аналогично переменным, возвращаемые значения обладают типом.
Если функция должна обладать возвращаемым значением, то необходимо внести два изменения:
    В описании функции вместо ключевого слова void указать тип возвращаемого значения.
    По завершении всех вычислений в функции использовать ключевое слово return и передать возвращаемое значение вызывающему коду.
Синтаксис кода для  функций консольного приложения будет выглядеть следующим образом:
<возвращаемыйТип> <имяФункции>( )
{
return <возвращаемоеЗначение>;
}
Единственным ограничением в данном случае является требование, гласящее, что <возвращаемоеЗначение> должно иметь тип <возвращаемыйТип> или же должна существовать возможность его неявного преобразования в этот тип. Вообще говоря, <возвращаемыйТип> может быть любым.

Параметры

Если функция должна получать параметры, то необходимо задать:
    Список принимаемых функцией параметров в ее описании, а также типы этих параметров
    Совпадающий список параметров при каждом вызове функции
Общий вид:  <ВозвращаемыйТип> <имяФункции> (<типПараметра> <имяПараметра> ...)
{
……
return <возвращаемоеЗначение>;
}
Здесь может быть произвольное число параметров, для  каждого из которых указываются  тип и имя. В качестве разделителя  между параметрами ставятся запятые. Каждый из параметров доступен внутри данной функции в качестве переменной.
При вызове функции  ее параметры должны в точности соответствовать  ее описанию. Необходимо совпадение типов  параметров, их количества и порядка их следования, иначе компилятор выдаст ошибку несоответствия сигнатурам вызываемых функций.

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

    Импорт статических  имён (import static) из классов. В C# импортируется  только сборка и при каждом использовании  импортируемых статических имён требуется указывать класс.
    В C# в switch можно использовать текстовые строки.
    C# содержит конструкции checked и unchecked, позволяющие локально включать и выключать динамическую проверку арифметического переполнения.
    C# поддерживает оператор перехода goto. Обычное использование — передача управления на разные метки case в операторе switch и выход из вложенного цикла.
    C# поддерживает отдельное понятие именованной типизированной константы и ключевое слово const.

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

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

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

C# использует пространства  имён (namespace), напоминающие одноимённый  механизм C++. Каждый класс относится  к некоторому пространству имён, те классы, для которых пространство  имён не указано явно, относятся  к безымянному пространству имён  по умолчанию. Пространства имён  могут быть вложенными друг  в друга.
Для обращения к  объекту, объявленному в другом пространстве имён или пакете, нужно объявить в программе требуемый пакет (пространство имён) как используемый. Обращение  к объекту производится через  квалифицированное имя, в качестве квалификатора используется имя  пакета (пространства имён). Если требуется  обращение к объекту без квалификации, программный модуль должен содержать  директиву разыменования: using.
Пространства имён никак не связаны с компилированными модулями (сборками, или assembly в терминологии Microsoft). Несколько сборок могут содержать  одно и то же пространство имён, в  одной сборке может объявляться  несколько пространств имён, не обязательно  вложенных. Модификаторы области видимости C# никак не связаны с пространствами имён.

Классы

Класс — это конструктор, который позволяет создавать  свои собственные пользовательские типы путем группирования переменных других типов, методов и событий. Класс подобен чертежу. Он определяет данные и поведение типа. Если класс  не объявлен статическим, то клиентский код может его использовать, создав объекты или экземпляры, назначенные  переменной. Переменная остается в  памяти, пока все ссылки на нее не выйдут из области видимости. В это  время среда CLR помечает ее пригодной  для сборщика мусора. Если класс  объявляется статическим, то в памяти остается только одна копия и клиентский код может получить к ней доступ только посредством самого класса, а не переменной экземпляра.
В отличие от структур классы поддерживают наследование, фундаментальную  характеристику объектно-ориентированного программирования.

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

Классы объявляются  с помощью ключевого слова class
Пример: public class Customer
         {
             //Fields, properties, methods and events go here...
         }
Ключевому слову class предшествует уровень доступа. Поскольку  в данном случае используется public, любой  может создавать объекты из этого  класса. По умолчанию классы определяются как internal (внутренние), что означает, что доступ к ним будет иметь только код текущего проекта. При желании можно указать, что класс является общим и должен быть доступен из других проектов. Для этого используется ключевое слово public. Классы, которые объявляются самостоятельно, не могут быть частными или защищенными. Соответствующие модификаторы — private и protected — можно использовать только для описания классов, являющихся членами других классов.
Имя класса указывается  после ключевого слова class. Оставшаяся часть определения является телом  класса, в котором задаются данные и поведение. Поля, свойства, методы и события в классе обозначаются термином члены класса.

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

Класс и объект —  это разные вещи, хотя в некоторых  случаях они взаимозаменяемы. Класс  определяет тип объекта, но не сам  объект. Объект — это конкретная сущность, основанная на классе и иногда называемая экземпляром класса.
и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.