Синтаксические основы языка программирования C#
Дополнительные материалы к занятию можно скачать здесь.
Вложенные файлы: Presentation_2.pptx
Вложенные папки: Lecture2_1, Lecture2_2, Lecture2_3
Язык программирования C# является основным инструментам разработки приложений Windows Presentation Foundation, Silverlight и XNA. Он имеет Си-подобный синтаксис, то есть тело функций заключается в фигурные скобки, а после выражений ставится точка с запятой. Сравним способы объявления и инициализации переменных в С++ и в С#.
C++ | C# |
---|---|
#include<iostream> using namespace std; void main() { int a; a=5; cout<<"\na = "<<a<<endl; } |
using System; namespace Example { class Program { static void Main() { double b; b = 3.14159; Console.WriteLine("b = " + b); Console.WriteLine("Нажмите любую кнопку!"); Console.ReadKey(); } } } |
Идентичным образом работают и операторы сравнения:
C++ | C# |
---|---|
#include<iostream> using namespace std; void main() { double a,b,c; a=3; b=7; if(a>b){c=a;} else {c=b;} cout<<"\nMaximal value is ... "<<c<<endl; } |
using System; namespace Example { class Program { static void Main() { double a, b, c; a = -8; b = 6; if (a > b) { c = a; } else { c = b; } Console.WriteLine("Максимальное из двух чисел ... " + c); } } } |
Вместе с тем, C# имеет много общего и с языком JavaScript.
Сравним работу с текстом.
C# | JavaScript |
---|---|
using System; namespace Example { class Program { static void Main() { string a, b, c, d, str; a = "О сколько нам открытий чудных"; b = "\nГотовят просвещенья дух"; c = "\nИ опыт, сын ошибок трудных,"; d = "\nИ гений, парадоксов друг"; str = a + b + c + d; Console.WriteLine(str); Console.WriteLine("Нажмите любую кнопку!"); Console.ReadKey(); } } } |
<html> <script type="text/javascript"> var a,b,c,d,str; a="Чтоб истину познать,"+"<br/>"; b="Проникни в суть."+"<br/>"; c="Вглубь всех вещей"+"<br/>"; d="Старайся заглянуть"; str=a+b+c+d; document.write(str); </script> </html> |
Во всех трех языках циклы организованы сходным образом:
C++ | C# |
---|---|
#include<iostream> using namespace std; void main() { int i,n,sum; n=10; sum=0; for(i=1;i<=n;i++) { cout<<"\n"<<i; sum+=i; } cout<<"\nSum of first "<<n<<" numbers is ... "<<sum<<endl; } |
using System; namespace Example { class Program { static void Main() { int i, n, sum; string str; n = 10; sum = 0; for (i = 1; i <= n; i++) { Console.WriteLine("" + i); sum += i; } str = "Сумма первых " + n + " членов ряда равна ... " + sum; Console.WriteLine(str); Console.WriteLine("Нажмите любую кнопку!"); Console.ReadKey(); } } } |
JavaScript |
---|
<html> <script type="text/javascript"> var i,n,sum,str; sum=0; str=""; n=10; for(i=1;i<=n;i++) { str+=i+"<br>"; sum+=i; } str+="<br/>" + "Сумма первых " + n + " членов ряда = " + sum; document.write(str); </script> </html> |
Сравним способы использования функций.
C++ | C# |
---|---|
#include<iostream> #include<math.h> using namespace std; void root(double a, double b, double c) { double d, x1, x2; d=pow(b,2)-4*a*c; if(d<0) {cout<<"\nThere are no real roots!"<<endl;} else { x1=(-b-sqrt(d))/(2*a); x2=(-b+sqrt(d))/(2*a); cout<<"\nx1 = "<<x1<<"\nx2 = "<<x2<<endl; } } void main() { void root(double a, double b, double c); double a,b,c; a=-8; b=3; c=11; root(a,b,c); } |
using System; namespace Example { class Program { static void root(double a, double b, double c) { double d, x1, x2; string str; d = System.Math.Pow(b, 2) - 4 * a * c; if (d < 0) { str = "Действительных корней нет!"; } else { x1 = (-b - System.Math.Sqrt(d)) / (2 * a); x2 = (-b + System.Math.Sqrt(d)) / (2 * a); str = "x1 = " + x1 + "\nx2 = " + x2; } Console.WriteLine(str); } static void Main() { double a, b, c; a=3; b=-8; c=-2; root(a, b, c); Console.WriteLine("Нажмите любую кнопку!"); Console.ReadKey(); } } } |
JavaScript |
---|
<html> <script type="text/javascript"> function root(a,b,c) { var d,x1,x2; d = Math.pow(b, 2) - 4 * a * c; if (d < 0) { str = "Действительных корней нет!"; } else { x1 = (-b - Math.sqrt(d)) / (2 * a); x2 = (-b + Math.sqrt(d)) / (2 * a); str = "x1 = " + x1 + "<br/>" + "x2 = " + x2; } document.write(str); } var a,b,c; a=-4; b=9; c=11; root(a,b,c); </script> </html> |
Работа с датой и временем
Сравним, как эта возможность реализуется в C# и на JavaScript.
JavaScript
<html> <script type="text/javascript"> var myDate,Year,Month,Day,str; myDate=new Date; Year=myDate.getYear(); Month=myDate.getMonth(this)+1; Day=myDate.getDay(this)-1; str="Сегодня "+myDate+"<br/>"+Day+"-е число "+Month+"-го месяца "+Year+"-го года"; document.write(str); </script> </html>
Возможности работы с датой и временем в C# гораздо богаче. Приведем несколько примеров.
Пример 2.1. Знакомство с датой и временем
Создаем новое консольное приложение C#. Называем проект Lecture_2_1.
Наберите в окне кода следующую программу:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Lecture_2_1 { class Program { static void Main() { // Получаем дату и время для текущего момента, // адаптированного для местной временной зоны DateTime saveNow = DateTime.Now; string str; str = "Сегодня: " + saveNow; str += "\nТекущая дата: " + saveNow.Date; str += "\nТекущий год: " + saveNow.Year; str += "\nТекущий месяц: " + saveNow.Month; str += "\nТекущий день: " + saveNow.Day; str += "\nДень недели: " + saveNow.DayOfWeek; str += "\nДень года: " + saveNow.DayOfYear; str += "\nЧас: " + saveNow.Hour; str += "\nМинуты: " + saveNow.Minute; str += "\nСекунды: " + saveNow.Second; str += "\nМиллисекунды: " + saveNow.Millisecond; str += "\nВремя: " + saveNow.Kind; Console.WriteLine(str); Console.WriteLine("Нажмите любую кнопку!"); Console.ReadKey(); } } }
Получаем следующий результат:
Пример 2.2. Определение количества секунд, прошедших за определенное время
Суть предлагаемой работы заключается в следующем. За начало отсчета функционирования системы ГЛОНАСС принято 0 часов 0 минут и 0 секунд 1-го января 1983 года. Найдем количество секунд, прошедших с этого момента по сегодняшний день.
Создаем новое консольное приложение C#. Называем проект Lecture_2_2.
Наберите в окне кода следующую программу:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Lecture_2_2 { class Program { static void Main(string[] args) { System.DateTime date1 = new System.DateTime(1983, 1, 1, 0, 0, 0); DateTime date2 = DateTime.Now; System.TimeSpan diff1 = date2.Subtract(date1); string str; str = "Первая дата: " + date1; str += "\nВторая дата: " + date2; str += "\nВторая дата - Первая дата: " + diff1; int mydays, myhours, myminutes, myseconds; mydays = diff1.Days; myhours = diff1.Hours; myminutes = diff1.Minutes; myseconds = diff1.Seconds; int totalSeconds; totalSeconds = myseconds + myminutes * 60 + myhours * 3600 + mydays * 86400; str += "\nДней: " + mydays + "\nЧасов: " + myhours + "\nМинут: " + myminutes + "\nСекунд: " + myseconds; str += "\nВсего секунд: " + totalSeconds; Console.WriteLine(str); Console.WriteLine("Нажмите любую кнопку!"); Console.ReadKey(); } } }Листинг .
Получаем следующий результат:
Пример 2.3. Определение интервалов повторяемости системы ГЛОНАСС
Система ГЛОНАСС возвращается в исходное состояние каждые 17 витков. Один виток спутники ГЛОНАСС совершают за 11 часов 15 минут и 44 секунды. За начало отсчета функционирования системы ГЛОНАСС принято 0 часов 0 минут и 0 секунд 1-го января 1983 года. Определим количество прошедших циклов системы ГЛОНАСС.
Создаем новое консольное приложение C#. Называем проект Lecture_2_3.
Наберите в окне кода следующую программу:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Lecture_2_3 { class Program { static void Main(string[] args) { System.DateTime date1 = new System.DateTime(1983, 1, 1, 0, 0, 0); DateTime date2 = DateTime.Now; System.TimeSpan diff1 = date2.Subtract(date1); string str; str = "Первая дата: " + date1; str += "\nВторая дата: " + date2; str += "\nВторая дата - Первая дата: " + diff1; int mydays, myhours, myminutes, myseconds; mydays = diff1.Days; myhours = diff1.Hours; myminutes = diff1.Minutes; myseconds = diff1.Seconds; int totalSeconds; totalSeconds = myseconds + myminutes * 60 + myhours * 3600 + mydays * 86400; str += "\nДней: " + mydays + "\nЧасов: " + myhours + "\nМинут: " + myminutes + "\nСекунд: " + myseconds; str += "\nВсего секунд: " + totalSeconds; //Интервал повторяемости трасс движения НКА и зон радиовидимости НКА //наземными средствами составляет 17 витков (7 суток 23 часа 27 минут 28 секунд). int tGLONASS; tGLONASS = 7 * 24 * 3600 + 23 * 3600 + 27 * 60 + 28; str += "\nИнтервал повторяемости ГЛОНАСС составляет : " + tGLONASS + " секунд"; int n; //Количество интервалов повторяемости трасс движения НКА n = totalSeconds / tGLONASS; str += "\nСовершено интервалов повторяемости ГЛОНАСС: " + n; int secondsLeft; //Прошло секунд с начала нового интервала повторяемости secondsLeft = totalSeconds - n * tGLONASS; str += "\nПрошло секунд с начала нового интервала повторяемости: " + secondsLeft; Console.WriteLine(str); Console.WriteLine("Нажмите любую кнопку!"); Console.ReadKey(); } } }Листинг .
Получаем следующий результат: