Файл: Реферат язык программирования c # (сишарп) Исполнители Хмелинин. С. И. Боталова М. Н.docx
Добавлен: 10.01.2024
Просмотров: 177
Скачиваний: 6
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Переменные.
Переменная представляет числовое или строковое значение или объект класса. Значение, хранящееся в переменной, может измениться, однако имя остается прежним. Переменная представляет собой один тип поля.
В 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. Оставшаяся часть определения является телом класса, в котором задаются данные и поведение. Поля, свойства, методы и события в классе обозначаются термином члены класса.
Создание объектов
Класс и объект — это разные вещи, хотя в некоторых случаях они взаимозаменяемы. Класс определяет тип объекта, но не сам объект. Объект — это конкретная сущность, основанная на классе и иногда называемая экземпляром класса.
Объекты можно создавать с помощью ключевого слова new, за которым следует имя класса, на котором будет основан объект:
Пример: Customer object1 = new Customer();
При создании экземпляра класса ссылка на этот объект передается программисту. В предыдущем примере object1 является ссылкой на объект, основанный на Customer. Эта ссылка указывает на новый объект, но не содержит данные этого объекта. Фактически, можно создать ссылку на объект без создания самого объекта:
Пример: Customer object2;
Создание таких ссылок, которые не указывают на объект, не рекомендуется, так как попытка доступа к объекту по такой ссылке приведет к сбою во время выполнения. Однако такую ссылку можно сделать указывающей на объект, создав новый объект или назначив ее существующему объекту:
Пример: Customer object3 = new Customer();
Customer object4 = object3;
В данном коде создаются две ссылки на объекты, которые указывают на один объект. Поэтому любые изменения объекта, выполненные посредством object3, будут видны при последующем использовании object4.Поскольку на объекты, основанные на классах, указывают ссылки, классы называют ссылочными типами.
Наследование классов
Наследование выполняется с помощью образования производных, то есть класс объявляется с помощью базового класса, от которого он наследует данные и поведение. Базовый класс задается добавлением после имени производного класса двоеточия и имени базового класса:
Пример: public class Manager : Employee
{
// Employee fields, properties, methods and events are inherited
// New Manager fields, properties, methods and events go here...
}
Когда класс объявляет базовый тип, он наследует все члены базового класса, за исключением конструкторов.
В отличие от C++, класс в C# может только напрямую наследовать от одного базового класса. Однако, поскольку базовый класс может сам наследовать от другого класса, класс может косвенно наследовать несколько базовых классов. Кроме того, класс может напрямую реализовать несколько интерфейсов.
Кроме двух ключевых модификаторов доступа (private и protected), для описания класса можно использовать ключевое слово abstract (абстрактный; создавать экземпляры такого класса запрещено, он может только наследоваться, в нем допускается наличие абстрактных членов) или sealed (изолированный; такой класс не может наследоваться). Эти ключевые слова являются взаимоисключающими.