Синтаксические основы языка программирования 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();
}
}
}
Листинг
.
Получаем следующий результат:
















