1.66M
Категория: ПрограммированиеПрограммирование

Программирование на C# 1 модуль

1.

Программирование на C#
1 модуль

2.

Где готовиться?
vk.com/podbel20212022
vk.com/podbel_alt

3.

темы
Парадигмы
Служебные слова
Порядок операций
Логические операции
Приведение типов
Статические конструкторы
in/out/ref
Перегрузка методов
DateTime
Regex

4.

парадигмы
+ Императивная – Последовательные команды.
+ Объектно-ориентированная – Объекты.
+ Обобщенная – System.Collections.Generic . (List<int>, List<string>)
+/- Функциональная – Есть функции, нет циклов. (Haskell)
-/+ Декларативная – Описывается, что надо сделать, а не как сделать. (System.Linq)
-/+ Рефлексивная – Анализ кода. (System.Reflection)
-/+ Распределенная – Параллельное выполнение кода. (System.Threading)
- Логическая – Доказательство математических задач.
- Доказательная – Доказательство правильности алгоритма.

5.

парадигмы
Ответ: 134
Ответ: 3
Ответ: 235

6.

Служебные слова
bool byte short char int long float double decimal object string
ushort uint ulong sbyte
nint nuint
false true null
void
const
goto
if else switch case
do while for foreach in continue break
try catch throw
class enum
private protected public readonly static
new
default
out ref in
params
return
using namespace
is
internal extern

7.

Контекстно-зависимые Служебные слова
• var
• dynamic
• partial

8.

Служебные слова
Ответ: 12345
Ответ: 1
Ответ: 145
Ответ: 235

9.

Служебные слова
Ответ: 235
Ответ: 124

10.

Порядок операций
Операторы
Категория
new x.y x->y x++ x--
Первичные
+x -x !x ~x ++x --x ^x
Унарные
x*y x/y x%y
Мультипликативные
x+y x-y
Аддитивный
x<<y x>>y
Сдвиг
x<y x>y x<=y x>=y
Относительный
x==y x!=y
Равенство
x&y
Логическое И (AND)
x^y
Логическое исключающее ИЛИ (XOR)
x|y
Логическое ИЛИ (OR)
x&&y
Условное И
x||y
Условное ИЛИ
x??y
Оператор объединения с null
с ? t : f
Тернарный оператор

11.

Порядок операций
1.
2.
3.
4.
5.
6.
7.
8.
Унарные операции имеют наивысший приоритет
* > +
Математика раньше логики. * > &
&>|
(& - логическое умножение, | - логическое сложение)
&>^>|
& > &&
(битовые раньше логических)
Сдвиги – самые приоритетные из логических
Тернарный оператор последний

12.

лайфхаки
• ~x = -x-1
• ~~x = -(-x-1)-1 = x+1-1 = x
• 1 << x = 2**x
• x^x = 0
• y^x^x = y^0 = y

13.

Порядок операций
Ответ: 28
Ответ: 6

14.

Порядок операций
Ответ: 4
Ответ: 4

15.

Приведение типов
1) Любой целочисленный тип неявно преобразуется в любой числовой тип с
плавающей запятой.
2) Неявное приведение возможно если не может возникнуть потери данных
1 byte
2 short
4 Int
8 long
4 float
8 double
16 decimal
2 char

16.

Приведение типов
Ответ: 1345
Ответ: 13

17.

Статические конструкторы
Основное предназначение – инициализация статических переменных.
Вызывается только один раз при первом обращении к любому члену класса.

18.

Ответ: 7889

19.

Передача аргументов по ссылке
in – передача по ссылке для ввода. Переменную нельзя изменить внутри метода.
out – передача по ссылке для вывода. Переменная должна быть
инициализирована внутри метода.
ref – передача по ссылке.

20.

Ответ: 12631-4

21.

Перегрузка методов
Перегрузка – создание методов с одинаковыми названиями, но с различными
параметрами
У методов не должно быть одинаковых сигнатур.
В сигнатуру входят:
• Имя метода
• Количество параметров
• Типы параметров
• Модификаторы параметров (ref, out, in)
Для компилятора ref = out = in.

22.

Перегрузка методов
Метод
Сигнатура
public static void Sum(int a, int b){}
Sum(int, int)
public int Sum(int a, int c){}
Sum(int, int)
private static long[,] Sum(int a, int[] array){}
Sum(int, int[])
protected void Sum(int a, out int A){}
Sum(int, ref int)
protected void Sum(ref short a, in short b)
Sum(ref short, ref short)

23.

Выберите пары методов с одинаковой
сигнатурой
1
int Main(string[] args)
void Main(string[] args)
2
int Main(string[] args)
int Main(int[] args)
3
int Main(string[] args)
int Main()
4
static int Add(int a, int b)
public int Add(int a, int b)
5
public int Sub(int a, int b)
public int Add(int a, int b)
6
int Add(int a, int b)
int Add(ref int a, ref int b)
7
int Add(out long a, ref short b)
Int Add(in long a, out short b)
8
protected void Alert()
public static void Alert()

24.

Ответ: udsus

25.

datetime
Является структурой
Неизменяемый тип

26.

regex
.
Любой один символ (даже пробел)
a*
0 или более a
a+
1 или более a [1, +∞]
a?
0 или 1 a
a|b
a или b
[a-z0-9]
[ab]
Диапазон
a или b
[ab0-9]
a или b или диапазон
[^abd]
Что угодно, кроме a, b, d
English     Русский Правила