Язык программирования С#
АЛФАВИТ С#
ПРАВИЛА ОБРАЗОВАНИЯ ИДЕНТИФИКАТОРОВ
КОММЕНТАРИИ
ВСТРОЕННЫЕ ТИПЫ ДАННЫХ
Переменные
Присваивание
Специальные случаи присваивания
Выражения
Приоритет выполнения операций
Операции increment, decrement
Арифметические операции
Операции отношения
Оператор if
Оператор цикла for
Язык С#
Класс Math
Циклы While
Табулирование функции
Генерация случайных чисел
Массивы
Объявление одномерных массивов
Пример
Печать массива
Многомерные массивы
Пример
Информатика и программирование
Оператор foreach
Программа с использованием foreach
579.00K
Category: programmingprogramming

Язык программирования С#. Основные понятия

1. Язык программирования С#

Основные понятия

2.

Пример описания структуры
программы
using System; //Подключение пространства имен
System namespace HelloWorld { //Объявление пространства имен
class Hello { //Объявление класса
static void Main() {//Главный метод программы
//Вывод строки
System.Console.WriteLine("Hello World!");
} //Конец метода
} //Конец класса
} //Конец пространства имён

3. АЛФАВИТ С#

• строчные и прописные буквы латинского
алфавита (мы их будем называть буквами);
• цифры от 0 до 9 (назовем их буквамицифрами);
• символ «_» (подчеркивание — также
считается буквой);
• набор специальных символов: " { }, 1 [ ] +
— %/ \; ' : ? < > = ! & # ~ *• прочие символы.

4. ПРАВИЛА ОБРАЗОВАНИЯ ИДЕНТИФИКАТОРОВ

• Первым символом идентификатора С#
может быть только буква.
• Следующими символами идентификатора
могут быть буквы, цифры и нижнее
подчеркивание.
• Длина идентификатора не ограничена.

5. КОММЕНТАРИИ

В С# комментарий можно сделать одним из двух
способов.
Символы /* начинают комментарий, заканчивающийся
символами */
комментарии /* */ не могут быть вложенными.
Символы // начинают комментарий, заканчивающийся в
конце строки, на которой они появились.
Этот способ наиболее полезен для коротких
комментариев.
Символы // можно использовать для того, чтобы
закомментировать символы /* или */, а символами /*
можно закомментировать //.

6. ВСТРОЕННЫЕ ТИПЫ ДАННЫХ

Логический тип
Имя типа
Системный тип
Bool
System.Boolean
Арифметические целочисленные типы
Sbyte
System.SByte
Byte
System.Byte
Short
System.Short
Ushort
System.UShort
Int
System.Int32
Uint
System.UInt32
Long
System.Int64
Ulong
System.UInt64
Арифметический тип с плавающей точкой
Float
System.Single
Double
System.Double
Арифметический тип с фиксированной точкой
Decimal
System.Decimal
Символьные типы
Char
String
System.Char
System.String
Значения
true, false
Размер
8 бит
-128 — 127
0 — 255
-32768 —32767
0 — 65535
≈(-2*10^9 — 2*10^9)
≈(0 — 4*10^9)
Знаковое, 8 Бит
Беззнаковое, 8 Бит
Знаковое, 16 Бит
Беззнаковое, 16 Бит
Знаковое, 32 Бит
Беззнаковое, 32 Бит
Знаковое, 64 Бит
Беззнаковое, 64 Бит
≈(-9*10^18 — 9*10^18)
≈(0— 18*10^18)
+1.5*10^-45 - +3.4*10^38 7 цифр
+5.0*10^-324 15-16 цифр
+1.7*10^308
+1.0*10^-28 +7.9*10^28
28-29 значащих цифр
U+0000 - U+ffff
Строка из символов
Unicode
16 бит Unicode
символ

7. Переменные

Переменная – это величина, значение которой может
изменяться в процессе выполнения программы.
Переменная обладает именем, значением и типом. Имя и
тип задаются при объявлении переменной и остаются
неизменными на все время ее жизни.
Получение начального значения переменной называется
ее инициализацией. Важной новинкой языка C# является
требование обязательной инициализации переменной до
начала ее использования.
Попытка использовать неинициализированную
переменную приводит к ошибкам, обнаруживаемым еще
на этапе компиляции.
Инициализация переменных, как правило, выполняется в
момент объявления, хотя и может быть отложена.
Пример:
Int k=5, j; float x=0.1, y;

8. Присваивание

Выражение присваивания состоит из левой и правой
части.
Левая часть - это список переменных, в котором знак
равенства выступает в качестве разделителя.
Правая часть - это выражение.
Выражение правой части вычисляется, при
необходимости приводится к типу переменных левой
части, после чего все переменные левой части
получают значение вычисленного выражения.
Все переменные в списке левой части должны иметь
один тип или неявно приводиться к одному типу.
Пример
double x,y,z,w =1, u =7, v= 5;
x = y = z = w =(u+v+w)/(u-v-w);

9. Специальные случаи присваивания

Для присваиваний вида "x=x+1" и "x=x-1", в которых
переменная увеличивается или уменьшается на
единицу, используются специальные префиксные и
постфиксные операции "++" и "--". Другой важный
частный случай - это присваивания вида:
X = X <operator> (expression)
Для таких присваиваний используется краткая форма
записи:
X <operator>= expression
В качестве операции разрешается использовать
арифметические, логические (побитовые) операции и
операции сдвига языка C#.
Пример:
x += u+v; y /=(u-v); b &= (x<y);

10. Выражения

Выражения строятся из операндов - констант,
переменных, функций, - объединенных
знаками операций и скобками.
При вычислении выражения определяется
его значение и тип. Эти характеристики
однозначно задаются значениями и типами
операндов, входящих в выражение, и
правилами вычисления выражения.
Операции в выражениях выполняются слева
направо с соблюдением приоритета.
Изменить приоритет операции можно с
помощью ( ).

11. Приоритет выполнения операций

Приорите
Категория
т
0
Первичные
Операции
(expr) x.y f(x) a[x] x++ x-- new sizeof(t)
typeof(t)
3
Унарные
Мультипликативные
(Умножение)
Аддитивные (Сложение)
4
5
Сдвиг
<< >>
Отношения, проверка типов < > <= >= is as
6
7
8
== !=
&
^
9
Эквивалентность
Логическое И
Логическое исключающее
ИЛИ (XOR)
Логическое ИЛИ (OR)
10
11
12
Условное И
Условное ИЛИ
Условное выражение
&&
||
?:
13
Присваивание
= *= /= %= += -= <<= >>= &= ^= |=
1
2
+ - ! ~ ++x --x (T)x
*/%
+-
|

12. Операции increment, decrement

Операции инкремента - "увеличить на единицу" и
декремента - " уменьшить на единицу " могут быть
префиксными и постфиксными.
К высшему приоритету относятся постфиксные
операции x++ и x--.
Префиксные операции ++х и --х имеют на единицу
меньший приоритет.
Для префиксных операций результатом их
выполнения является измененное значение x,
постфиксные операции возвращают в качестве
результата значение x до изменения.
Пример.
Int k=5, t=3, g;
g=--k+5; t++;

13. Арифметические операции

Арифметические операции - " +, -, *, /, % ".
Операции " + " и " - " могут быть унарными и
бинарными.
Операция деления " / " над целыми типами
осуществляет деление нацело, для типов с
плавающей и фиксированной точкой обычное деление.
Операция " % " определена над всеми
арифметическими типами и возвращает
остаток от деления нацело. Тип результата
зависит от типов операндов.

14. Операции отношения

== равно,
!= не равно,
< меньше,
> больше,
<= меньше либо равно,
>= больше либо равно.
При формировании сложного условия
используются связки && - И , || - ИЛИ и ! - НЕ

15. Оператор if

if(выражение_1) оператор_1
else if(выражение_2) оператор_2
...
else if(выражение_K) оператор_K
else оператор_N
Вместо оператора может стоять блок {…}.
Выражения if должны заключаться в круглые скобки и
быть булевого типа.
Пример.
If(a>b) max=a
else max=b;

16. Оператор цикла for

for(инициализаторы; условие;
список_выражений) оператор;
Оператор, стоящий после закрывающей
скобки, задает тело цикла. В большинстве
случаев телом цикла является блок.
Сколько раз будет выполняться тело цикла,
зависит от трех управляющих элементов,
заданных в скобках.
Инициализаторы задают начальное
значение одной или нескольких переменных,
часто называемых счетчиками или просто
переменными цикла.

17.

Условие задает условие окончания цикла,
соответствующее выражение при вычислении должно
получать значение true или false.
Список выражений, записанный через запятую,
показывает, как меняются счетчики цикла на каждом шаге
выполнения.
Если условие цикла истинно, то выполняется тело цикла,
затем изменяются значения счетчиков и снова
проверяется условие. Как только условие становится
ложным, цикл завершает свою работу.
В цикле for тело цикла может ни разу не выполняться,
если условие цикла ложно после инициализации, а может
происходить зацикливание, если условие всегда остается
истинным. В нормальной ситуации тело цикла
выполняется конечное число раз.

18.

Примеры.
for (int i =1,j =2,S=0; i<10; i++) S+=i*j;
for
for
(int i =1,j =2,S=0; i<10; i++) {x*=2; S+=i*j;}
(int i =1; i<10; i++) for (int j =1; j<10; j++)
S+=i*j;

19. Язык С#

20. Класс Math

Класс Math, содержит два статических поля, задающих
константы E и PI, а также 23 статических метода:
тригонометрические функции - Sin, Cos, Tan;
обратные тригонометрические функции - ASin, ACos,
ATan, ATan2 (sinx, cosx);
гиперболические функции - Tanh, Sinh, Cosh;
экспоненту и логарифмические функции - Exp, Log,
Log10;
модуль, корень, знак - Abs, Sqrt, Sign;
функции округления - Ceiling, Floor, Round;
минимум, максимум, степень, остаток - Min, Max, Pow,
IEEERemainder.

21. Циклы While

while(выражение) оператор;
Эта модификация соответствует стратегии:
"сначала проверь, а потом делай".
Цикл, проверяющий условие завершения в
конце, соответствует стратегии: "сначала
делай, а потом проверь". Тело такого цикла
выполняется, по меньшей мере, один раз.
Вот синтаксис этой модификации:
do оператор while(выражение);

22. Табулирование функции

Табулировать функцию на заданном
интервале [a,b] c заданным шагом h –
значит найти все значения функции в
точках
x=a
y(x)
x=a+h
y(x)
x=a+2h
y(x)

x=b
y(x)

23. Генерация случайных чисел

const int initRnd = 77;
Random realRnd = new Random();
Random repeatRnd = new Random(initRnd);
// случайные числа в диапазоне [0,1)
Console.WriteLine("случайные числа в диапазоне[0,1)");
for(int i =1; i <= 5; i++)
{ Console.WriteLine("Число " + i + "= " + realRnd.NextDouble() ); }
// случайные числа в диапазоне[min,max]
int min = -100, max=-10;
Console.WriteLine("случайные числа в диапазоне ["+min +"," + max + "]");
for(int i =1; i <= 5; i++)
{ Console.WriteLine("Число " + i + "= " + realRnd.Next(min,max) ); }
// случайный массив байтов byte[] bar = new byte[10];
repeatRnd.NextBytes(bar);
Console.WriteLine("Массив случайных чисел в диапазоне [0, 255]");
for(int i =0; i < 10; i++) { Console.WriteLine("Число " + i + "= " +bar[i]); }

24. Массивы

Массивом называют упорядоченную совокупность элементов одного
типа.
Каждый элемент массива имеет индексы, определяющие порядок
элементов. Число индексов задает размерность массива. Каждый
индекс изменяется в некотором диапазоне [a,b].
Диапазон [a,b] называется граничной парой, a - нижней границей, b верхней границей индекса. При объявлении массива границы
задаются выражениями.
Если все границы заданы константными выражениями, то число
элементов массива известно в момент его объявления и ему может
быть выделена память еще на этапе трансляции. Такие массивы
называются статическими.
Если выражения, задающие границы, зависят от переменных, то
такие массивы называются динамическими, поскольку память им
может быть отведена только динамически в процессе выполнения
программы, когда становятся известными значения соответствующих
переменных.
Массиву, как правило, выделяется непрерывная область памяти.

25. Объявление одномерных массивов

Объявление одномерного массива выглядит следующим образом:
<тип>[] <объявители>;
Квадратные скобки являются неотъемлемой частью определения
класса, так что запись T[] следует понимать как класс одномерный
массив с элементами типа T.
Как и в случае объявления простых переменных, каждый объявитель
может быть именем или именем с инициализацией. В первом случае
речь идет об отложенной инициализации. Нужно понимать, что при
объявлении с отложенной инициализацией сам массив не
формируется, а создается только ссылка на массив, имеющая
неопределенное значение Null. Поэтому пока массив не будет
реально создан и его элементы инициализированы, использовать его
в вычислениях нельзя.
Пример объявления трех массивов с отложенной инициализацией:
int[] a, b, c;

26.

Чаще всего при объявлении массива используется имя с
инициализацией. Возможны два варианта инициализации.
В первом случае инициализация является явной и
задается константным массивом.
Пример: double[] x= {5.5, 6.6, 7.7};
Элементы константного массива следует заключать в
фигурные скобки.
Во втором случае создание и инициализация массива
выполняется в объектном стиле с вызовом конструктора
массива. И это наиболее распространенная практика
объявления массивов. Пример:
int[] d= new int[5];

27. Пример

//объявление массива с явной
инициализацией
int[] x ={5,5,6,6,7,7};
//объявление массивов с отложенной
инициализацией int[] u,v;
u = new int[3];
for(int i=0; i<3; i++) u[i] =i+1;
for(int i = 0; i<3;i++) v[i] = Random();

28. Печать массива

Процедура печати массива с именем А
выглядит так:
for(int i = 0; i<n; i++)
Console.Write("\t" +А+ "[{0}]={1}", i, A[i]);
Console.WriteLine();

29. Многомерные массивы

Объявление многомерного массива в общем случае:
<тип>[, ... ,] <объявители>;
Число запятых, увеличенное на единицу, и задает
размерность массива.
Все сказанное для одномерных массивов, справедливо и
для многомерных.
Явная инициализация многомерными константными
массивами возможна, но из-за громоздкости применяется
редко. Проще инициализацию реализовать программно.
Пример явной инициализации массивом констант:
int[,]matrix = {{1,2},{3,4}};

30. Пример

int n=5,m=7; Random r = new Random();
int [,] mas = new int[n,m];
for (int i=0; i<=n; i++)
{for (int j=0; j<=m; j++)
{mas[i,j]=r.Next();
Console.Write("\t" +“mas[{0},{1}]={2}", i,j, mas[i,j]);
}Console.Writeline();
}

31. Информатика и программирование

Лекция 6
Оператор foreach

32. Оператор foreach

Применяется для перебора элементов массива. Синтаксис:
foreach ( тип имя in имя_массива ) тело_цикла
Имя задает локальную по отношению к циклу переменную,
которая будет по очереди принимать все значения из
массива, например:
int[] massiv = { 24, 50, 18, 3, 16, -7, 9, -1 };
foreach ( int x in massiv ) Console.WriteLine( x );

33. Программа с использованием foreach

int[] a = { 3, 12, 5, -9, 8, -4 };
Console.WriteLine( "Исходный массив:" );
foreach ( int elem in a )
Console.Write( "\t" + elem );
Console.WriteLine();
long sum = 0;
// cумма отрицательных элементов
int num = 0;
// количество отрицательных элементов
foreach ( int elem in a )
if ( elem < 0 ) {
for ( int i = 0; i < n; ++i )
sum += elem; num++;
if ( a[i] < 0 ) {
}
sum += a[i]; num++;
Console.WriteLine( "sum = " + sum );
}
Console.WriteLine( "num = " + num );
int max = a[0];
// максимальный элемент
foreach ( int elem in a )
if ( elem > max ) max = elem;
Console.WriteLine( "max = " + max );
English     Русский Rules