Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Общие сведения о языке C#
В 2000 году корпорация Microsoft выпустила в свет C++ нового поколения под названием C# («Си шарп»), основным постулатом которого является высказывание: «всякая сущность есть объект». Язык основан на строгой компонентной архитектуре и реализует передовые механизмы обеспечения безопасности кода. язык программирования C# вобрал лучшие черты целого ряда своих предшественников:С, C++, Java и Visual Basic.
Синтаксис языка C#
Программа на языке С# представляет собой текстовый файл (один или несколько), состоящий из операторов языка и комментариев.
Операторы могут содержать зарезервированные слова, идентификаторы, константы и выражения. Отдельные части оператора отделяются друг от друга пробелами.
Комментарии представляют собой произвольный текст, следующий за символами / / до конца текущей строки (однострочные комментарии) или располагающийся на нескольких строках, ограниченных символами / * в начале комментария и * / в его конце (многострочные комментарии).
Каждый оператор заканчивается точкой с запятой, что позволяет располагать в одной строке несколько операторов и (или) один длинный оператор на нескольких строках. В последнем случае перенос части оператора на другую строку возможен в любом месте, где располагается пробел, за исключением строковых выражений.
Строковые выражения ограничиваются символами “. Например:
Console. WriteLine (“Язык программирования С#”);
// Будет выведено: Язык программирования С#
Если необходимо включить в строковое выражение собственно символ “ перед ним ставится символ \:
Console.WriteLine (“Язык программирования \”C#\””);
//Будет выведено: Язык программирования ”C#”
Основу языка составляют зарезервированные слова это английские слова, сообщающие компилятору о необходимости тех или иных действий. В окне редактора кода зарезервированные слова обычно выдеяются цветом. Например:
public static void Main()
Здесь public, static, void - зарезервированные слова;
Main идентификатор.
Идентификаторы представляют собой имена констант, переменных, классов, методов, меток. Идентификаторы могут содержать любые Unicode-буквы (в том числе буквы национального алфавита), цифры и знак подчеркивания (_). Идентификаторы могут начинаться буквой или знаком подчеркивания. В качестве идентификатора может использоваться и зарезервированное слово, если ему предшествует символ @.
Примеры правильных идентификаторов:
мой_идентификатор
identifierl
Subroutine
Obool
@static
Примеры неправильных идентификаторов:
мой идентификатор // содержит пробел
lidentifier // начинается цифрой
bool // зарезервированное слово
@booll // за символом @ нет зарезервированного cлова
Как и все С-подобные языки, язык С# чувствителен к регистру букв, поэтому BooL, Static или vOid являются идентификаторами, а не зарезервированными словами. Если идентификатор представляет собой составное слово (состоит из нескольких следующих друг за другом слов), рекомендуется второе и следующие за ним слова начинать прописной буквой:
IdentifierNumberOne
За идентификатором метода в обязательном порядке должны следовать символы (), даже если метод не имеет формальных параметров:
static void MyMetod ()
Использование Microsoft Visual Studio 2008
Интегрированная система разработки Microsoft Visual Studio 2008 значительно облегчает создание программ С#. В ее составе имеются мощные отладочные средства, справочная библиотека MSDN Library, содержащая невероятно огромное количество информации (на английском языке), визуальные средства проектирования приложений Microsoft Windows и многое другое.
Создание консольных приложений в Microsoft Visual Studio 2008
Первая программа на С#
При создании программ и комплексов программ в интегрированной системе разработки Microsoft Visual Studio 2008 используются понятия решение (solution) и проект (project).
Проект представляет собой набор файлов исходных текстов, файлов графических изображений и других файлов, необходимых для создания программы. Например, для нашего проекта создается файл исходного текста HelloApp.cs и ряд других файлов, например файл значка (пиктограммы).
Обычно сложные программные комплексы содержат в себе много программ и компонентов, причем, возможно, созданных с использованием разных языков программирования и даже рассчитанных для использования на различных компьютерных платформах. Для облегчения разработки Microsoft Visual Studio .NET позволяет представить все создаваемые компоненты такого комплекса в виде набора проектов, объединенных общим решением.
Так, чтобы создать простейшую консольную программу с использованием Microsoft Visual Studio, запустите эту среду разработки приложений и выберите из меню File строку New. Затем из меню второго уровня выберите строку Project.
В результате на экране появится диалоговое окно New Project:
Рисунок 1 Диалоговое окно New Project
В списке Project Types следует указать тип проекта Visual C# Windows. Далее в списке шаблонов Templates выберете Console Application для создания консольного приложения.
В поле Name введите имя проекта, например, Hello. B поле Location путь к каталогу проектов, в котором будет размещен каталог создаваемого проекта. Для выбора пути к каталогу проектов вы можете воспользоваться кнопкой Browse.
Проделав все описанные выше действия, щелкните кнопку ОК. В результате будет запущен мастер проектов, который автоматически создаст и загрузит в окно редактирования исходный текст программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Hello
{
class Program
{
static void Main(string[] args)
{
}
}
}
В данном случае при создании проекта было также автоматически создано решение Hello. Информация об этом решении была сохранена в файле с именем Hello.sln. После того как вы закончите работу с Microsoft Visual Studio 2008, для того, чтобы снова вернуться к работе над проектом, достаточно просто щелкнуть дважды пиктограмму этого файла в папке проекта.
Любая, даже простейшая программа С# создает свои классы. Она также может определять для этих классов собственные пространства имен. Такое определение делается при помощи ключевого слова namespace. После ключевого слова указывается параметр имя определяемого пространства имен:
namespace Hello
{
…
}
Мастер проектов создал класс Program, в котором определен единственный метод Main(). Любая программа на С# (точнее, любая используемая в проекте сборка) должна содержать класс, в котором объявляется статический (static) метод Main (). Этот метод определяет точку входа в программу (сборку): именно сюда передается управление в момент начала работы программы. Обратите внимание: название метода начинается прописной буквой. Такое написание обязательно.
Дополним созданное мастером проектов приложение таким образом, чтобы сразу после запуска на консоль была выведена строка «Hello, С# world!». Для этого достаточно в тело метода Main, ограниченное двумя фигурными скобками добавить оператор вывода Console.WriteLine(“Привет, С# !”) и оператор вывода Console.ReadLine(), который приостановит работу программы после вывода на консоль строки.
Таким образом, текст вашей первой программы на C# должен иметь вид:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Hello // объявление пространства имен Hello
{
class Program //название класса
{
static void Main(string[] args)
{
Console.WriteLine("Привет, C# !"); //Вывод строки на консоль
Console.ReadLine();//Приостановление программы до нажатия Enter
}
}
}
Для запуска данной программы в Microsoft Visual Studio 2008 достаточно нажать клавишу F5. Если все было сделано правильно, через некоторое время на экране компьютера появится консольное окно с сообщением «Привет, C# !»:
Нажмите в этом окне клавишу Enter и окно исчезнет.
В том случае, если вы ошиблись при наборе кода, в нижней части главного окна Microsoft Visual Studio .NET появится сообщение об ошибке. Кроме того, ошибочные строки выделяются в окне редактирования волнистой линией синего цвета. Если подвести курсор мыши к такой линии, около курсора появится текст соответствующего сообщения об ошибке.
Примитивные типы данных в языке С#
Язык С# относится к строго типизированным языкам - любые используемые в нем идентификаторы должны принадлежать к какому-то типу. Для данных тип определяет способ их внутреннего (машинного) представления, а также совокупность действии, которые можно осуществлять над данными. Однако в С# типами считаются также классы и структуры, которые представляют собой совокупности данных и программного кода.
Примитивные типы обозначаются зарезервированными словами. В языке С# к ним относятся числовые типы данных со знаком, числовые переменные без знака, символьные переменные, логические (булевы) переменные и строки, а также перечисления. Рассмотрим элементарные типы данных С# и их обозначение подробнее.
Таблица 1 -Обозначения примитивных числовых типов и соответствующий им диапазон значений:
Тип |
Диапазон значений |
Описание |
Числа без знака |
||
byte |
От 0 до 255 |
8-разрядное значение без знака, занимает 1 байт памяти |
ushort |
От 0 до 65 535 |
16-разрядное значение без знака, занимает 2 байта памяти |
uint |
От 0 до 4 294 967 295 |
32-разрядное значение без знака, занимает 4 байта памяти |
ulong |
От 0 до 18446744073709551615 |
64-разрядное значение без знака, занимает 8 байт памяти |
Числа со знаком |
||
sbyte |
От -128 до 127 |
8-разрядное значение без знака, занимает 1 байт памяти |
short |
От-32 768 до 32 767 |
16-разрядное значение без знака, занимает 2 байта памяти |
int |
От-2 147 483 648 до 2 147 483 647 |
32-разрядное значение без знака, занимает 4 байта памяти |
long |
От -9223372036854775808 до 9223372036854775807 |
64-разрядное значение без знака, занимает 8 байт памяти |
Числа с плавающей точкой |
||
float |
От 1,5х10-45 до 3,4х1038 |
32-разрядное число с плавающей точкой, максимальная точность представления чисел 7 десятичных цифр |
double |
От 5,0х10-324 до 1,7х10308 |
64-разрядное число с плаваю-щей точкой, максимальная точность представления чисел 16 десятичных цифр |
decimal |
От 1,0х10-28 до 7,9х1028 |
128-разрядное число с плаваю-щей точкой, максимальная точность представления чисел 29 десятичных цифр |
Для хранения отдельных символов текста (таких, как буквы, знаки пунктуации и управляющие символы) в языке С# предусмотрен специальный тип данных char. Для этого типа данных используется кодировка UNICODE, поэтому символы char занимают в памяти 2 байта.
Текстовые строки, в свою очередь, определяются с помощью ключевого слова string и так же хранятся в кодировке UNICODE.
Логические переменные в С# объявляются с помощью ключевого слова bool и могут принимать одно из двух значений true (истина) или false (ложь).
Таким образом, чтобы объявить переменную в C#, необходимо сначала указать ее тип (автоматически выделяется синим), а затем идентификатор(отображается черным):
bool Bool;
int x, y;
string myString;
Объявленную переменную можно сразу же инициализировать, то есть наполнить начальным значением:
bool Bool = true;
int x = 0;
string S = "Язык c#";
object Obj = new Object();
Важной особенностью языка является требование обязательной инициализации переменной до ее первого использования, поэтому обычно инициализация переменной осуществляется в момент ее объявления. Попытка использования неинициализированной переменной обнаруживается еще на этапе компиляции.
Переменную можно объявлять в любом месте программы, но первого ее использования.
Если объявляется сразу несколько переменных одного типа, они могут быть объединены в список, где соседние объявления разделяются запятыми:
int x = 0, y = 1, z = new int()
Как видите, инициализация переменной может происходить двумя способами: указанием ее значения или обращением к умалчиваемому конструктору в предложении new. В последнем случае переменная инициализируется начальным значением 0, которое трактуется в зависимости от типа переменной: для числовых переменных оно указывает истинное значение, для логических соответствует значению false, для строк означает пустую строку и т.д.
При объявлении переменных значащих типов обычно используется первый способ, так как он проще и наглядней. При объявлении переменных ссылочных типов, наоборот, чаще используется второй способ.
Объявление константы осуществляется так же, как и объявление инициированной переменной, но оператор объявления начинается зарезервированным словом const:
const int x = 1, у = 100, z = 0;
Заметим, что константу нельзя инициировать с помощью предложения new. Разумеется, константу нельзя указывать в левой части оператора присваивания, за исключением оператора, в котором она объявляется.
При объявлении переменной (константы) можно указать ее область видимости с помощью специальных модификаторов (private, public, static и т.д.)
Важно помнить, что в языках программирования С и C++ переменные всегда содержат какие-либо значения. Программист может задать эти значения явно с помощью оператора присваивания, а может и не задавать. В последнем случае в переменной будет храниться либо нуль, либо случайное значение.
Что же касается языка С#, то в нем с помощью специального литерала null программист может указать, что переменная вообще не содержит никакого значения. При этом литерал пи 11 не эквивалентен нулевому значению. Он предназначен для использования в тех ситуациях, когда в переменной не хранится ни нулевое, ни какое-либо другое значение.
После знакомства с типами данных, переменными нужно научиться их инициализировать, а также рассмотреть основные операторы языка С#.
Базовые операторы и выражения языка C#
Операторы представляют собой символы, с помощью которых программа может выполнять те или иные действия над переменными, литералами и другими объектами.
В результате выполнения оператора всегда получается какое-то значение, представляющее собой результат выполнения оператора. Объекты программы, над которыми выполняются действия, называются Например, оператор сложения чисел принимает два операнда. Результатом сложения будет число, равное сумме значений операндов, т. е. сумме складываемых чисел. Операторы и операнды формируют выражения.
Прежде чем использовать переменную, программа должна задать для нее начальное значение. В языке С# это обязательное условие. Начальное значение может быть задано с помощью оператора присваивания при объявлении переменной, а также в процессе выполнения программы.
Инициализаторы переменных всех типов данных, кроме перечисления, выглядят одинаково. Составляя выражение для инициализации, вначале вы указываете тип данных, затем имя переменной, потом оператор присваивания в виде знака равенства (=) и, наконец, литерал соответствующего типа:
byte myByte = 25;
short distanceY = 356;
int height = -0x1234;
double eNumber = 2.71;
string Name = "Иван";
После инициализации программа может передать переменной новое значение с помощью все того же оператора присваивания. При этом инициализации одной переменной может использоваться другая, уже инициализированная ранее переменная:
int х = 0;
int y = x;
int z;
х = 1;
z = x;
Создайте новое консольное приложение, которое бы выводило присвоенные x, y и z значения. Для этого необходимо применить новый формат вызова метода WriteLine, при котором ему передаются два параметра, разделенные запятой. Первый из них представляет буквальный строковый литерал "Значение переменной х = {0} ", а второйчисловую переменную х:
Console.WriteLine("Значение переменной х = {0}", x);
Следовательно, текст программы будет иметь вид:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Task
{
class Program
{
static void Main(string[] args)
{
int x = 0;
int y = x; // инициализция переменных
int z;
x = 1;
z = х;
Console.WriteLine("Значение переменных: х = {0}, y = {1}, z = {2}", х, y, z); // вывод на экран значений х, у и z
Console.ReadLine(); // приостанавливает программу до нажания Enter
}
}
}
В языке С# имеются математические операторы, предназначенные для сложения, вычитания, умножения, деления и вычисления остатка от деления. Эти операторы, а также используемые для их обозначения символы приведены в таблице 2.
Таблица 2 Математические операторы
Символ |
Оператор |
+ |
Сложение (или слияния строк) |
- |
Вычитание |
* |
Умножение |
/ |
Деление |
% |
Вычисление остатка при целочисленном делении |
Важно помнить, что результат операции обязательно должен быть записан в переменную.
В языке С# имеется также набор унарных (unary) операторов, имеющих дело только с одним операндом. Краткие сведения о данных операторах представденны в таблице 3.
Таблица 3 Унарные операторы
Символ |
Оператор |
Действие |
+ |
Унарный плюс |
Результатом является значение операнда |
- |
Унарный минус |
изменяет знак операнда |
++ |
Инкремент |
Увеличивает операнд на 1 |
-- |
Декремент |
Уменьшает операнд на 1 |
! |
Унарное логическое отрицание |
вычисляет значение своего логического операнда, а затем изменяет его на противоположное значение |
~ |
Унарная поразрядная операция дополнения |
вычисляет поразрядное дополнение своего операнда |
(…) |
Преобразование типа выражения |
позволяющий выполнять явное преобразование типов данных. Например: long х = 1.4 + (long)5;
|
Следует обратить внимание на то, что если используется префиксная форма унарного оператора инкремента или декремента (++х или --х), то содержимое переменной изменяется до ее чтения, а если постфиксная (хх++ или х--) - после.
Для выполнения логических операций над логическими данными, объявленными в программе при помощи ключевого слова bool используют соответствующие операторы, результатом значения которых всегда является false или true.
Таблица 4 Логические операторы
Символ |
Оператор |
&& |
Логическое И |
|| |
Логическое ИЛИ |
! |
Унарное логическое отрицание |
Рассмотрите применение некоторых из перечисленных операторов в процессе самостоятельной реализации программы, расчитывающей изменение ценности информации.
Известно, что ценность большинства видов информации, циркулирующей в обществе, со временем уменьшается информация стареет. Старение информации Сi в первом приближении можно аппроксимировать выражением вида:
Сi(t) = С0*ехр (2.3*t/tj), (1)
где С0 ценность информации в момент ее возникновения (создания); t время от момента возникновения информации до момента ее использования; tj продолжительность жизненного цикла информации (от момента возникновения до момента устаревания).
Для расчета значения Сi необходимо будет так же воспользоваться методом Math.Exp(). Значение констант С0 = 1000 и tj = 5. Значение t считать равным 3.5.
В результате выполнения данного задания должна быть получена программа, примерный текст которой имеет вид:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
const float C0 = 1000, tj = 5; // объявление констант
double t = 3.5d, Ci; // инициализация переменных
t = -2.3*t/tj;
// вычисление экспоненты с использованием Math.Exp()
Ci = C0*Math.Exp(t);
Console.WriteLine("На данный момент ценность информации составляет {0}", Ci);
Console.ReadLine();
}
}
}
В языке С# имеется специальный набор операторов, управляющих ходом выполнения программы. Так для проверки какого-либо условия и выполнения на основании результатов этих проверок тех или иных действии используются условные операторы и операторы выбора. Для выполнения каких-либо повторяющихся действий применяются специальные итерационные (циклические) операторы. А операторы безусловного перехода позволяют программе прервать исполнение текущей последовательности команд, переключившись на исполнение другой последовательности команд.
Все эти команды позволяют управлять ходом исполнения строк программы, поэтому они и называются управляющими.
Таблица 4 Управляющие операторы и их применение
Оператор |
Применение |
if |
Выполнение строк программы в зависимости от значения логического выражения |
switch |
Оператор выбора. Используется для исполнения того или иного фрагмента программы в зависимости от значения переменной или выражения |
goto |
Оператор безусловного перехода к выполнению новой последовательности команд |
for |
Оператор цикла. Проверка выполнения условия завершения, а также итерация выполняются в начале цикла |
while |
Оператор цикла с проверкой условия завершения, выполняемой в начале цикла |
foreach |
Оператор цикла для просмотра всех элементов массива или коллекции |
do |
Оператор цикла с проверкой условия завершения, выполняемой в конце цикла |
continue |
Выполнение цикла с начала |
break |
Прерывание выполнения цикла |
return |
Возврат управления из метода |
С учетом полученнх об управляющих операторах сведениях дополните вашу программу расчета стоимости информации на данный момент возможностью ввода времени от момента возникновения информации до момента ее использования пользователем и проверки корректности введенных данных.
Для получения данных, введенных пользователем, воспользуйтесь методом ReadLine:
myString = Console.ReadLine();
Полученные данные будут иметь строковый тип. Для их преобразования к численному типу необходимо воспользоваться методом System.Convert.ToSingle(myString) или System.Convert.ToDouble(myString) в зависимости от типа переменной, которой будет присвоено данное значение.