Similar presentations:
Язык программирования С#. Основные понятия
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) оператор_1else 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 );