SlideShare ist ein Scribd-Unternehmen logo
1 von 70
Downloaden Sie, um offline zu lesen
Основы объектно-ориентированного
программирования на языке C#
Часть 2. Базовый синтаксис
Якубович Денис Андреевич
yakubovich.studylib@mail.ru
Владимир 2016
Содержание
• Структура программы
• Переменные
• Типы данных
• Арифметические и логические операторы
• Операторы условного выбора
• Циклические операторы
• Область видимости переменных. Преобразование типа
• Массивы
• Литералы. Ввод и вывод данных
• Математические функции. Класс Math
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Структура программы
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Структура программы и основные компоненты
Класс 1
Пространство имен
Класс 2 . . . Класс N
Класс
• Поле (я) / свойство (а) класса
• Метод (ы) класса
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Первая программа
/* Моя первая программа */
using System; // Подключение пространства имен System
namespace MySpace // Пространство имен
{
class First // Основной класс
{
static void Main() // Точка входа
{
Console.WriteLine("Hello, world!");
}
}
}
Компилятор языка C# чувствителен к регистру букв.
Например, идентификатор main и Main – различные имена.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Первая программа
Пространство имен ограничивает область видимости класса.
Задается командой namespace.
Название может быть любым, кроме стандартных.
1
Класс описывает форму представления данных и код для их обработки.
Задается командой class.
Название может быть любым, кроме системных.
2
Методы организуют работу с данными.3
Операторы «{ }» задают тело описания блока.
Используются для пространств имен, классов, методов и ряда других
операций.
4
Оператор «;» завершает выполнение любой команды.
Не используется для завершения «{ }».
5
Оператор «//» задает однострочный комментарий.
Между операторами «/* */» можно определить комментарий в несколько
строк.
6
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Первая программа
/* Моя первая программа */
using System; // Подключение пространства имен System
class First // Основной класс
{
static void Main() // Точка входа
{
Console.WriteLine("Hello, world!");
}
}
В случае отсутствия конфликтов имен между классами пространство имен
можно не указывать.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Переменные
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Переменная
Переменная – участок оперативной памяти, хранящий данные для
приложения.
Процессор обращается к ячейкам ОЗУ по адресу:
Минимальный размер ячейки – 1 байт.
Чаще используется более крупные ячейки.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Переменная
Программисту неудобно обращаться к ячейкам памяти по адресу.
Поэтому переменным даются имена.
В языке C# программист обращается к переменной по её имени.
Процессор обращается к переменной по её адресу.
Имя переменной лишь скрывает адрес ячейки в оперативной
памяти.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Типы данных. Описание переменных
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Типы данных
Роль типизации данных
C# - строго типизированный язык.
Это означает, кто каждая переменная
должна иметь тип.
Тип данных определяет:
• диапазон возможных значений
переменной;
• допустимые операции над
переменными данного типа.
Значимые и ссылочные типы
Отличаются способом распределения
оперативной памяти:
• для значимых типов заранее
выделяется компилятором;
• для ссылочных типов – во время
выполнения программы.
Дерево типов C#
(в скобках – размер типа в байтах)
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Целочисленные типы
Тип Размер в байтах Диапазон
byte 1 0..255
sbyte 1 -128..127
short 2 -32768..32767
ushort 2 0..65535
int 4 -2147483648..2147483647
uint 4 0..4294967295
long 8 -9223372036854775808..9223372036854775807
ulong 8 0..18446744073709551615
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Вещественные типы
Тип Размер в байтах Диапазон
float 4 -3,402823 E38 .. -3,402823 E38
double 8
-1,79769313486232 E308 ..
1,79769313486232 E308
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Символьный и строковый типы
Тип Размер в байтах Диапазон
char 2 0..65535
string X Зависит от длинны строки
На хранение одного символа отводится 2 байта (Unicode).
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Логический тип
Тип Размер в байтах Диапазон
bool 1 true или false
Логический тип данных участвует в операциях сравнения и проверке условий.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Описание переменных
Каждая переменная должна быть описана:
тип имя_переменной;
Примеры:
byte n; // задана переменная типа byte
char sim; // задана символьная переменная
string Text; // задана строковая переменная
double x, y, z; // заданы три вещественные переменные
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Оператор присваивания
имя_переменной = значение;
тип имя_переменной = значение;
В C# нельзя работать с переменной, пока ей не присвоено значение!
Примеры:
// Переменные должны быть описаны выше!
n = 233; // n := 233;
sim = 'A'; // sim := код символа A
Text = "Пример строки"; // Text :="Пример строки"
x = y = z = 100; // x := 100; y := 100; z := 100;
// Описание и присваивание одновременно
int num = 2015;
double dx = 0.1, dy = 0.2;
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Арифметические и логические операторы
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Арифметические операторы
Основные
+ - сложение
- - разность
* - умножение
/ - деление
% - остаток от деления
Расширенные
++ - инкремент (+1)
-- - декремент (-1)
+= - увеличить на ...
-= - уменьшить на ...
*= - умножить на ...
/= - поделить на ...
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
int a = 100; // a:=100
int b = 20; // b:=20
int c = 20 * (a + b) / (a - b); // c:= значение выражения
c = c % 20; // перезаписать в c остаток от
// его деления на 20
string strA = "Привет, ";
string strB = "C#!";
// «склеить» строки
string strC = strA + strB + " Сегодня я изучаю основы.";
Арифметические операторы
Примеры:
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
int S = 0;
double X = 10.2;
double Y = 20.6;
S += 20; // аналогична команде S = S + 20;
X *= Y + 1; // аналогична команде X = X * (Y + 1);
Арифметические операторы
Расширенные арифметические операторы используются для сокращения
записи.
Например:
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
int i = 10;
++i; // аналогична команде i = i + 1;
--i; // аналогична команде i = i - 1;
i++; // аналогична команде i = i + 1;
i--; // аналогична команде i = i - 1;
Арифметические операторы
int a = 0, b = 0;
a = b++; // a := 0; b := 1
int a = 0, b = 0;
a = ++b; // a := 1; b := 1
Операции инкремента и декремента позволяют увеличить (уменьшить)
значение переменной на 1:
Оператор ++ (--), записанный слева, называют префиксным, а справа –
постфиксным.
Префиксный оператор имеет более высокий приоритет!
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Операторы отношения
Оператор Описание
== равно
!= не равно
> больше
< меньше
>= больше или равно
<= меньше или равно
Операторы отношения используются при сравнении объектов.
Результат имеет логический тип bool.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Логические операторы
Оператор Описание
& И
| ИЛИ
! НЕ
^ исключающее ИЛИ
&& укороченное И
|| укороченное ИЛИ
Логические операторы связывают логические выражения.
Результат имеет логический тип bool.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Операторы условного выбора
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Оператор if (полная форма)
C# Схема
if(условие)
{
// Оператор(ы) если истина
}
else
{
// Оператор(ы) если ложь
}
Если в блоке только один оператор (команда), то фигурные скобки
этого блока можно опустить.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Оператор if (неполная форма)
C# Схема
if(условие)
{
// Оператор(ы) если истина
}
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
int number = 10;
if (number >= 0)
{
Console.Write("Число неотрицательное");
}
else
{
Console.Write("Число отрицательное");
}
Оператор условного перехода if
Пример 1 (для полной формы).
double X = 0.5, A = 0.3, B = 1.6;
if (X >= A & X <= B)
Console.Write("Точка X принадлежит отрезку [A,B]");
Пример 2 (для неполной формы).
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Оператор if (расширенная форма)
C# Схема
if(условие_1)
{
// блок операторов 1
}
else if(условие_2)
{
// блок операторов 2
}
. . .
else if(условие_n)
{
// блок операторов n
}
[else
{
// блок операторов "иначе",
// необязателен
}]
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
using System;
class Program
{
static void Main()
{
int number = -34;
if (number > 0)
Console.WriteLine("Положительное");
else if (number == 0)
Console.WriteLine("Нуль");
else
Console.WriteLine("Отрицательное");
Console.ReadKey();
}
}
Пример 3. Определить знак числа.
Оператор if (расширенная форма)
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Оператор выбора switch
C# Пример
switch(выражение)
{
case const1:
// послед. операторов
break;
case const2:
// послед. операторов
break;
. . .
default:
// послед. операторов
break;
}
string lang = "C#";
switch (lang)
{
case "C":
Console.WriteLine("Я учу Cи");
break;
case "C++":
Console.WriteLine("Я учу C++");
break;
case "C#":
Console.WriteLine("Я учу C#");
break;
default:
Console.WriteLine("Лень...");
break;
}
Оператор switch выполняет блок, значение которого совпадает со значением
указанного выражения.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Циклические операторы
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Циклические операции
Циклическую операцию можно организовать:
• с помощью условных и безусловных переходов;
• с использованием специальных циклических операторов.
В C# реализовано четыре типа циклов:
• цикл со счетчиком;
• цикл с предусловием;
• цикл с постусловием;
• цикл перебора объектов в коллекции.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Оператор goto
// . . .
goto @MyLable; // перейти на метку @MyLable
/* Этот
участок
кода
пропускаем */
@MyLable:
// . . .
goto метка;
Оператор осуществляет переход на указанную метку.
Пример:
Избегайте практики использования меток.
Они приводят к «спагетти-коду».
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Цикл с использованием безусловного перехода
using System;
class Program
{
static void Main()
{
string Password;
@Again:
Password = Console.ReadLine(); // вводим текст
if (Password != "C#") // проверяем с ключом
{
Console.WriteLine("Пароль неверный!");
goto @Again; // повторяем ввод
}
}
}
Пример 1. Зациклить программу до тех пор, пока с клавиатуры не будет введено
слово «C#».
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Оператор for
for(инициализация; условие_работы; итерация)
{
// оператор(ы)
}
Оператор реализует цикл со счетчиком:
• инициализация – начальное значение;
• условие_работы – пока истинно, цикл продолжает работу;
• итерация – шаг цикла.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Оператор for
using System;
class Program
{
static void Main()
{
int Sum = 0; // счетчик для суммы
int n; // счетчик для перебираемых чисел
for (n = 1; n <= 100; n = n + 1)
{
Sum = Sum + n;
}
Console.Write("Сумма = " + Sum);
Console.ReadKey();
}
}
Пример 2. Найти сумму натуральных чисел от 1 до 100, используя оператор
for.
for (n = 1; n <= 100; n++)
Sum += n;
Сокращенный вариант цикла
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Оператор for
using System;
class Program
{
static void Main()
{
int i;
for (i = 0; i <= 1000; i += 5) // перебор с шагом 5
Console.WriteLine(i);
Console.ReadKey();
}
}
Пример 3. Вывести все числа в отрезке [0; 1000], кратные 5.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Операторы break и continue
Для преждевременного выхода из цикла используется оператор
break.
Для прерывания текущего шага цикла и перехода к новому
используется оператор continue.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Вложение циклов for
using System;
class Program
{
static void Main()
{
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= 9; j++)
Console.Write("{0}t", i * j);
Console.WriteLine();
}
Console.ReadKey();
}
}
Циклы допускают многократное вложение.
Пример 4. Построить таблицу умножения от 1 до 9.
Внутренний цикл
(для столбцов)
Внешний цикл
(для строк)
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Вариации цикла for
for (int i = 0; i < 10; i++)
{
// . . .
}
1й аналог (без шага):
2й аналог (без начала и шага):
Обычная реализация:
Бесконечный цикл:
for (; ; )
{
// . . .
}
int i = 0;
for (; i < 10; )
{
// . . .
i++;
}
for (int i = 0; i < 10; )
{
// . . .
i++;
}
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Оператор while
while(условие)
{
// оператор(ы)
}
Оператор повторяет внутренний блок до тех пор, пока условие
истинно.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Оператор while
using System;
class Program
{
static void Main()
{
double x = 0; // начальное значение (левый конец)
while (x <= 2) // пока не достигли правой границы
{
// выводим x и y(x)
Console.WriteLine("{0}t{1}", x, 1 - x * x);
x += 0.1; // следующий x
}
Console.ReadKey();
}
}
Пример 5. Построить таблицу для 𝑦 𝑥 = 1 − 𝑥2
на отрезке [0,2] c шагом 0.1.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Оператор do-while
do
{
// оператор(ы)
} while(условие)
Оператор вначале выполняет внутренний блок, а затем проверяет
условие. Если оно истинно, то цикл повторяется.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Оператор do-while
using System;
class Program
{
static void Main()
{
int number = 2016; // число
byte category = 0; // количество разрядов
do
{
number /= 10; // делим на 10, записываем неполное частное
category++; // добавляем разряд
} while (number > 0); // если текущий результат > 0,
// повторяем цикл
Console.Write("Количество цифр: " + category);
Console.ReadKey();
}
}
Пример 6. Посчитать количество цифр заданного целого числа.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Оператор foreach
foreach(тип имя_переменной in коллекция)
{
// оператор(ы)
}
Оператор перебирает все элементы коллекции и осуществляет с
ними указанные операции.
Простейший пример коллекции – массив.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Оператор foreach
using System;
class Program
{
static void Main()
{
int[] Mass = { 45, 0, -23, 112, 345, -45 }; // массив
int pstv = 0, neg = 0; // счетчики
// делаем для каждого элемента n из массива Mass
foreach (int n in Mass)
{
if (n >= 0) pstv++;
else neg++;
}
Console.WriteLine("Неотрицательных: " + pstv);
Console.WriteLine("Отрицательных: " + neg);
Console.ReadKey();
}
}
Пример 7. Посчитать количество отрицательных и неотрицательных элементов
массива.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Область видимости переменных.
Преобразование типа
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Область видимости переменных
Переменная i «глобальна», т.е. видна
относительно всего блока, в котором
описана.
int i;
for (i = 0; i < 10; i++)
{
// . . .
}
for (int i = 0; i < 10; i++)
{
// . . .
}
Переменная i «локальна», т.е.
доступна только внутри цикла.
Область видимости переменной – блок программы, в котором она
описана и доступна для использования.
Область видимости переменной может быть ограничена:
• блоками if (else), switch, for, while, do-while, foreach и т.п.
• областью класса или его метода.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Преобразование типа
(тип) выражение
Оператор преобразовывает выражение к более широкому / узкому
типу.
При преобразовании к более узкому типу возможна потеря данных.
int n = 10;
double x = 100.4;
double y = 49.52;
x = n; // Все хорошо: тип x более широкий, чем у n
n = x; // Ошибка! Нельзя преобразовать double в int!
n = (int) y; // Ошибки нет, но происходит потеря дробной части!
Примеры:
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Массивы
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Одномерный массив
Массив – множество проиндексированных элементов одного типа.
Массивы бывают:
• одномерные;
• многомерные.
Индексация элементов начинается с нуля.
Схема одномерного массива:
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Одномерный массив
тип[] имя_массива = new тип[размер];
тип[] имя_массива = {элемент_1, элемент_2, ..., элемент_N};
Первая команда резервирует в памяти место для массива с
указанным числом элементов.
Вторая команда задает массив перечислением элементов.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Одномерный массив
using System;
class Program
{
static void Main()
{
int[] Mass = new int[10]; // массив на 10 элементов
for (int i = 0; i < 10; i++)
Mass[i] = i + 1; // i-му элементу присваиваем число
Console.ReadKey();
}
}
Пример 1. Задать массив натуральных чисел элементами от 1 до 10.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Одномерный массив
using System;
class Program
{
static void Main()
{
int[] Mass = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Console.ReadKey();
}
}
Пример 2. Задать массив натуральных чисел элементами от 1 до 10
напрямую.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Многомерный массив
тип[,...,] имя_массива = new тип[размер1,...,размерN];
Команда задает многомерный массив (размерность 2 и более).
Многомерный массив – таблица данных в многомерном
пространстве.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Двумерный массив
Двумерный массив – обыкновенная таблица.
Пример:
Не имеет значения, какую размерность считать строкой, а какую – столбцом.
Реализация определяется программистом.
int[,] M = new int[20, 10];
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Двумерный массив
using System;
class Program
{
static void Main()
{
int n = 9;
int[,] Table = new int[n, n]; // двумерный массив 9х9
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
Table[i, j] = (i + 1) * (j + 1);
}
}
Пример 3. Сформировать двумерный массив, хранящий таблицу умножения.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Двумерный массив
using System;
class Program
{
static void Main()
{
string[,] TextMass = {
{ "Блок 1.1", "Блок 1.2" },
{ "Блок 2.1", "Блок 2.2" },
{ "Блок 3.1", "Блок 3.2" }
};
}
}
Пример 4. Сформировать двумерный массив по указанной таблице.
Блок 1.1 Блок 1.2
Блок 2.1 Блок 2.2
Блок 3.1 Блок 3.2
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Ступенчатый массив
тип[][] имя_массива = new тип[размер][];
Одно из измерений ступенчатого массива может изменяться.
M[0][0] M[0][1] M[0][2] M[0][3] M[0][4]
M[1][0] M[1][1] M[1][2]
M[2][0] M[2][1] M[2][2] M[2][3]
byte[][] Mass = new byte[3][]; // выделяем память под массив
Mass[0] = new byte[5]; // резерв. 5 элементов для первой строки
Mass[1] = new byte[3]; // резерв. 3 элемента для второй строки
Mass[2] = new byte[4]; // резерв. 4 элемента для третьей строки
Mass[0][0] = 1;
Mass[0][1] = 2;
. . .
Mass[2][3] = 12;
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Свойство Length
Массив.Length
Возвращает число элементов массива.
int[] Mass = { 34, -45, 56, 12, 45 };
for (byte i = 0; i < Mass.Length; i++)
{
// * * *
}
Console.Write(Mass.Length); // 5
string[,] Tab = new string[10, 20];
Console.Write(Tab.Length); // 200
int[][] Ar = new int[n][];
. . .
long Pro = 1;
for(i = 0; i < Ar.Length; i++) // Ar.Length = n
for(j = 0; j < Ar[i].Length; j++) // Ar[i].Length = числу элементов
Pro *= Ar[i][j]; // i-й в строке
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Литералы. Ввод и вывод данных
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Литералы
Литерал – постоянная величина, явна указывающая, к какому типу
данных относится.
Целочисленные:
100, -23 – литералы типа int
100l, -235L – литералы типа long
23u, 56U – литералы типа uint
0x1A, 0xFF – шестнадцатеричный литерал
Вещественные:
23.45, -3.034d, 45.6D – литералы типа double
45.6f, 34.0F – литералы типа float
Символьные и строковые:
'd', 'A', '%' – литералы типа char
"слово", "А это предложение" - литералы типа string
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Ввод и вывод. Методы классов Console и Convert
Write(параметр) – выводит символ, строку, числа и их комбинации.
WriteLine() – переводит каретку на следующую строку.
WriteLine(параметр) – комбинация первых двух.
Read() – читает символ из входного потока.
ReadLine() – читает строку из входного потока.
ReadKey() – ожидает нажатия клавиши.
Необходимо учитывать, что введенный текст рассматривается как поток
символов (тип string). Для перевода в числовой тип его нужно конвертировать.
ToByte(параметр) – переводит в беззнаковое число размером в байт.
ToInt16(параметр) – переводит в знаковое число размером в 2 байта.
ToInt32(параметр) – переводит в знаковое число размером в 4 байта.
ToInt64(параметр) – переводит в знаковое число размером в 8 байт.
ToDouble(параметр) – переводит в число с плавающей точкой.
ToString(параметр) – переводит в строку.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Console.Write("Hello, world!");
Console.WriteLine(23);
Console.Write(x + y + 10);
Console.Write("Hello, " + "world!");
Console.WriteLine("Сейчас " + year + " год.");
string S = Console.ReadLine();
int A = Convert.ToInt32(Console.ReadLine());
double X = Convert.ToDouble(Console.ReadLine());
Console.Write("Введите n: ");
byte n = Convert.ToByte(Console.ReadLine());
Ввод и вывод. Классы Console и Convert
Пример.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Форматированный вывод
WriteLine("Форматирующая строка",arg0,arg1,...,argN);
Форматирующая строка = выводимые символы + спецификаторы:
спецификатор {аргумент, ширина: формат}
Console.WriteLine("Сегодня {0} число", date);
i = 5; A[i] = 10;
Console.WriteLine("Элемент A({0})={1}", i, A[i]); // Элемент A(5)=10
Console.Write("{0:#.###}",10.234344); // 10.234
Console.WriteLine("ОдинtДваtТри");
Console.WriteLine("Разрыв n строки");
Console.Write(@"А здесь n разрыва t не будет");
Управляющие символы:
n – новая строка
t – табуляция
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Математические функции. Класс Math
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Математические функции. Класс Math
Класс Math реализует функции для математических вычислений.
Abs(число) Модуль числа.
Sqrt(число) Квадратный корень числа.
Max(число1,число2)
Min(число1,число2)
Наибольшее / наименьшее из двух указанных
чисел.
Exp(число) Експонента числа (𝑒 𝑥
).
Sin/ Cos/ Tan/
Asin/ Acos/ Atan(число)
Возвращает значение тригонометрической
функции.
Pow(число,степень) Возводит число в указанную степень.
Round() Округляет число до указанного разряда.
Trancate() Вычисляет целую часть числа.
PI Хранит значение константы 𝜋.
E Хранит значение константы 𝑒.
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
Математические функции. Класс Math
Пример.
double a = Math.Sqrt(100); // корень из 100
double Pi = Math.PI; // постоянное число PI
double b = Math.Cos(2 * Pi); // cos(2PI)
int max = Math.Max(33, 67); // максимальное из чисел 33 и 67
int min = Math.Min(45, max); // минимальное из чисел 45 и max
double r = Math.Round(1.0391, 2); // округлит до 1.04
double tr = Math.Truncate(1.391); // 1
Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

Weitere ähnliche Inhalte

Was ist angesagt?

Язык программирования C#
Язык программирования C#Язык программирования C#
Язык программирования C#Dmitri Soshnikov
 
C++ осень 2013 лекция 1
C++ осень 2013 лекция 1C++ осень 2013 лекция 1
C++ осень 2013 лекция 1Technopark
 
C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.Igor Shkulipa
 
C++ осень 2013 лекция 3
C++ осень 2013 лекция 3C++ осень 2013 лекция 3
C++ осень 2013 лекция 3Technopark
 
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияЕвгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov Sergey
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2Technopark
 
C++ осень 2013 лекция 5
C++ осень 2013 лекция 5C++ осень 2013 лекция 5
C++ осень 2013 лекция 5Technopark
 
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на LinuxПавел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на LinuxPlatonov Sergey
 
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...Iosif Itkin
 
C++ осень 2013 лекция 2
C++ осень 2013 лекция 2C++ осень 2013 лекция 2
C++ осень 2013 лекция 2Technopark
 
C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.Igor Shkulipa
 
C++ осень 2013 лекция 8
C++ осень 2013 лекция 8C++ осень 2013 лекция 8
C++ осень 2013 лекция 8Technopark
 
20120309 formal semantics shilov_lecture04
20120309 formal semantics shilov_lecture0420120309 formal semantics shilov_lecture04
20120309 formal semantics shilov_lecture04Computer Science Club
 
Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli typesmcroitor
 
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...Iosif Itkin
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioAndrey Karpov
 
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и JavascriptСергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и JavascriptSergey Platonov
 
операторы и выражения
операторы и выраженияоператоры и выражения
операторы и выраженияLidiKashka
 

Was ist angesagt? (20)

Язык программирования C#
Язык программирования C#Язык программирования C#
Язык программирования C#
 
C++ осень 2013 лекция 1
C++ осень 2013 лекция 1C++ осень 2013 лекция 1
C++ осень 2013 лекция 1
 
C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.
 
C++ осень 2013 лекция 3
C++ осень 2013 лекция 3C++ осень 2013 лекция 3
C++ осень 2013 лекция 3
 
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияЕвгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализация
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2
 
C++ осень 2013 лекция 5
C++ осень 2013 лекция 5C++ осень 2013 лекция 5
C++ осень 2013 лекция 5
 
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на LinuxПавел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
 
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
 
C++ осень 2013 лекция 2
C++ осень 2013 лекция 2C++ осень 2013 лекция 2
C++ осень 2013 лекция 2
 
C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.
 
Document
DocumentDocument
Document
 
C++ осень 2013 лекция 8
C++ осень 2013 лекция 8C++ осень 2013 лекция 8
C++ осень 2013 лекция 8
 
20120309 formal semantics shilov_lecture04
20120309 formal semantics shilov_lecture0420120309 formal semantics shilov_lecture04
20120309 formal semantics shilov_lecture04
 
Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli types
 
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...
 
C# vs C++
C# vs C++C# vs C++
C# vs C++
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-Studio
 
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и JavascriptСергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
 
операторы и выражения
операторы и выраженияоператоры и выражения
операторы и выражения
 

Andere mochten auch

JavaScript. Basics (in russian)
JavaScript. Basics (in russian)JavaScript. Basics (in russian)
JavaScript. Basics (in russian)Mikhail Davydov
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorialsakreyi
 
О.В.Сухорослов "Параллельное программирование. Часть 2"
О.В.Сухорослов "Параллельное программирование. Часть 2"О.В.Сухорослов "Параллельное программирование. Часть 2"
О.В.Сухорослов "Параллельное программирование. Часть 2"Yandex
 
Mathematics through my eyes
	 Mathematics through my eyes	 Mathematics through my eyes
Mathematics through my eyes6izik
 
Создание интерактивных апплетов для мобильных платформ в среде Геометрические...
Создание интерактивных апплетов для мобильных платформ в среде Геометрические...Создание интерактивных апплетов для мобильных платформ в среде Геометрические...
Создание интерактивных апплетов для мобильных платформ в среде Геометрические...Школьная лига РОСНАНО
 
Оптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalОптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalVlad Savitsky
 
Способы доставки на орбиту-2. КСМИ
Способы доставки на орбиту-2. КСМИСпособы доставки на орбиту-2. КСМИ
Способы доставки на орбиту-2. КСМИОткрытый Космос
 
Егор Стремоусов. Модульная сетка: Что? Где? Когда?
Егор Стремоусов. Модульная сетка: Что? Где? Когда?Егор Стремоусов. Модульная сетка: Что? Где? Когда?
Егор Стремоусов. Модульная сетка: Что? Где? Когда?Egor Stremousov
 
20090721 hpc exercise2
20090721 hpc exercise220090721 hpc exercise2
20090721 hpc exercise2Michael Karpov
 
20080224 efficientalgorithms kulikov_lecture14
20080224 efficientalgorithms kulikov_lecture1420080224 efficientalgorithms kulikov_lecture14
20080224 efficientalgorithms kulikov_lecture14Computer Science Club
 
Эффективно закупаем трафик и правильно оцениваем его качество
Эффективно закупаем трафик и правильно оцениваем его качествоЭффективно закупаем трафик и правильно оцениваем его качество
Эффективно закупаем трафик и правильно оцениваем его качествоAppTractor
 
Ruby: основы ООП
Ruby: основы ООПRuby: основы ООП
Ruby: основы ООПEvgeny Smirnov
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorialskailash454
 
Web-программирование и жизнь.
Web-программирование и жизнь.Web-программирование и жизнь.
Web-программирование и жизнь.Alex Mamonchik
 
принципы ооп и программирование классов в C#
принципы ооп и программирование классов в C#принципы ооп и программирование классов в C#
принципы ооп и программирование классов в C#bolevik
 

Andere mochten auch (20)

JavaScript. Basics (in russian)
JavaScript. Basics (in russian)JavaScript. Basics (in russian)
JavaScript. Basics (in russian)
 
C++ tutorials
C++ tutorialsC++ tutorials
C++ tutorials
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorials
 
О.В.Сухорослов "Параллельное программирование. Часть 2"
О.В.Сухорослов "Параллельное программирование. Часть 2"О.В.Сухорослов "Параллельное программирование. Часть 2"
О.В.Сухорослов "Параллельное программирование. Часть 2"
 
Mathematics through my eyes
	 Mathematics through my eyes	 Mathematics through my eyes
Mathematics through my eyes
 
Создание интерактивных апплетов для мобильных платформ в среде Геометрические...
Создание интерактивных апплетов для мобильных платформ в среде Геометрические...Создание интерактивных апплетов для мобильных платформ в среде Геометрические...
Создание интерактивных апплетов для мобильных платформ в среде Геометрические...
 
Оптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalОптимизация JavaScript в Drupal
Оптимизация JavaScript в Drupal
 
Способы доставки на орбиту-2. КСМИ
Способы доставки на орбиту-2. КСМИСпособы доставки на орбиту-2. КСМИ
Способы доставки на орбиту-2. КСМИ
 
Егор Стремоусов. Модульная сетка: Что? Где? Когда?
Егор Стремоусов. Модульная сетка: Что? Где? Когда?Егор Стремоусов. Модульная сетка: Что? Где? Когда?
Егор Стремоусов. Модульная сетка: Что? Где? Когда?
 
20090721 hpc exercise2
20090721 hpc exercise220090721 hpc exercise2
20090721 hpc exercise2
 
20080224 efficientalgorithms kulikov_lecture14
20080224 efficientalgorithms kulikov_lecture1420080224 efficientalgorithms kulikov_lecture14
20080224 efficientalgorithms kulikov_lecture14
 
Эффективно закупаем трафик и правильно оцениваем его качество
Эффективно закупаем трафик и правильно оцениваем его качествоЭффективно закупаем трафик и правильно оцениваем его качество
Эффективно закупаем трафик и правильно оцениваем его качество
 
JQuery
JQueryJQuery
JQuery
 
Bobrovckii
BobrovckiiBobrovckii
Bobrovckii
 
Изучение С/С++
Изучение С/С++Изучение С/С++
Изучение С/С++
 
ДПО в области ИБ: проблемы и решения
ДПО в области ИБ: проблемы и решенияДПО в области ИБ: проблемы и решения
ДПО в области ИБ: проблемы и решения
 
Ruby: основы ООП
Ruby: основы ООПRuby: основы ООП
Ruby: основы ООП
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorials
 
Web-программирование и жизнь.
Web-программирование и жизнь.Web-программирование и жизнь.
Web-программирование и жизнь.
 
принципы ооп и программирование классов в C#
принципы ооп и программирование классов в C#принципы ооп и программирование классов в C#
принципы ооп и программирование классов в C#
 

Ähnlich wie Основы ооп на языке C#. Часть 2. базовый синтаксис.

Лекция 1. Основы объектно-ориентированного программирования
Лекция 1. Основы объектно-ориентированного программированияЛекция 1. Основы объектно-ориентированного программирования
Лекция 1. Основы объектно-ориентированного программированияВиталий Емельянов
 
1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#Olga Maksimenkova
 
Основы С++ (операторы, типы данных, функции)
Основы С++ (операторы, типы данных, функции)Основы С++ (операторы, типы данных, функции)
Основы С++ (операторы, типы данных, функции)Olga Maksimenkova
 
лабораторная работа №4
лабораторная работа №4лабораторная работа №4
лабораторная работа №4Zhanna Kazakova
 
Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Andrey Karpov
 
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Dima Dzuba
 
Типы данных
Типы данныхТипы данных
Типы данныхMonsterXX
 
Predzazhita 2009 v16
Predzazhita 2009 v16Predzazhita 2009 v16
Predzazhita 2009 v16guest1ba51d
 
Автоматическая генерация тестов по комментариям к программному коду
Автоматическая генерация тестов по комментариям к программному кодуАвтоматическая генерация тестов по комментариям к программному коду
Автоматическая генерация тестов по комментариям к программному кодуAlexey Noskov
 
PG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр Коротков
PG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр КоротковPG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр Коротков
PG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр Коротковpgdayrussia
 
Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013ScalaNsk
 
лекции спрг 6_семестр (1)
лекции спрг 6_семестр (1)лекции спрг 6_семестр (1)
лекции спрг 6_семестр (1)djbelyakk
 
Основы программирования на C++
Основы программирования на C++Основы программирования на C++
Основы программирования на C++Olga Maksimenkova
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9Technopark
 
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...corehard_by
 

Ähnlich wie Основы ооп на языке C#. Часть 2. базовый синтаксис. (20)

Лекция 1. Основы объектно-ориентированного программирования
Лекция 1. Основы объектно-ориентированного программированияЛекция 1. Основы объектно-ориентированного программирования
Лекция 1. Основы объектно-ориентированного программирования
 
1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#
 
Основы С++ (операторы, типы данных, функции)
Основы С++ (операторы, типы данных, функции)Основы С++ (операторы, типы данных, функции)
Основы С++ (операторы, типы данных, функции)
 
OO Design with C++: 0. Intro
OO Design with C++: 0. IntroOO Design with C++: 0. Intro
OO Design with C++: 0. Intro
 
лабораторная работа №4
лабораторная работа №4лабораторная работа №4
лабораторная работа №4
 
Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?
 
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
 
лекция 1
лекция 1лекция 1
лекция 1
 
Типы данных
Типы данныхТипы данных
Типы данных
 
Predzazhita 2009 v16
Predzazhita 2009 v16Predzazhita 2009 v16
Predzazhita 2009 v16
 
Автоматическая генерация тестов по комментариям к программному коду
Автоматическая генерация тестов по комментариям к программному кодуАвтоматическая генерация тестов по комментариям к программному коду
Автоматическая генерация тестов по комментариям к программному коду
 
PG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр Коротков
PG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр КоротковPG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр Коротков
PG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр Коротков
 
Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013
 
лекции спрг 6_семестр (1)
лекции спрг 6_семестр (1)лекции спрг 6_семестр (1)
лекции спрг 6_семестр (1)
 
Классы и объекты С#
Классы и объекты С#Классы и объекты С#
Классы и объекты С#
 
лекция 4
лекция 4лекция 4
лекция 4
 
лекция 4
лекция 4лекция 4
лекция 4
 
Основы программирования на C++
Основы программирования на C++Основы программирования на C++
Основы программирования на C++
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9
 
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
 

Основы ооп на языке C#. Часть 2. базовый синтаксис.

  • 1. Основы объектно-ориентированного программирования на языке C# Часть 2. Базовый синтаксис Якубович Денис Андреевич yakubovich.studylib@mail.ru Владимир 2016
  • 2. Содержание • Структура программы • Переменные • Типы данных • Арифметические и логические операторы • Операторы условного выбора • Циклические операторы • Область видимости переменных. Преобразование типа • Массивы • Литералы. Ввод и вывод данных • Математические функции. Класс Math Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 3. Структура программы Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 4. Структура программы и основные компоненты Класс 1 Пространство имен Класс 2 . . . Класс N Класс • Поле (я) / свойство (а) класса • Метод (ы) класса Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 5. Первая программа /* Моя первая программа */ using System; // Подключение пространства имен System namespace MySpace // Пространство имен { class First // Основной класс { static void Main() // Точка входа { Console.WriteLine("Hello, world!"); } } } Компилятор языка C# чувствителен к регистру букв. Например, идентификатор main и Main – различные имена. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 6. Первая программа Пространство имен ограничивает область видимости класса. Задается командой namespace. Название может быть любым, кроме стандартных. 1 Класс описывает форму представления данных и код для их обработки. Задается командой class. Название может быть любым, кроме системных. 2 Методы организуют работу с данными.3 Операторы «{ }» задают тело описания блока. Используются для пространств имен, классов, методов и ряда других операций. 4 Оператор «;» завершает выполнение любой команды. Не используется для завершения «{ }». 5 Оператор «//» задает однострочный комментарий. Между операторами «/* */» можно определить комментарий в несколько строк. 6 Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 7. Первая программа /* Моя первая программа */ using System; // Подключение пространства имен System class First // Основной класс { static void Main() // Точка входа { Console.WriteLine("Hello, world!"); } } В случае отсутствия конфликтов имен между классами пространство имен можно не указывать. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 9. Переменная Переменная – участок оперативной памяти, хранящий данные для приложения. Процессор обращается к ячейкам ОЗУ по адресу: Минимальный размер ячейки – 1 байт. Чаще используется более крупные ячейки. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 10. Переменная Программисту неудобно обращаться к ячейкам памяти по адресу. Поэтому переменным даются имена. В языке C# программист обращается к переменной по её имени. Процессор обращается к переменной по её адресу. Имя переменной лишь скрывает адрес ячейки в оперативной памяти. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 11. Типы данных. Описание переменных Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 12. Типы данных Роль типизации данных C# - строго типизированный язык. Это означает, кто каждая переменная должна иметь тип. Тип данных определяет: • диапазон возможных значений переменной; • допустимые операции над переменными данного типа. Значимые и ссылочные типы Отличаются способом распределения оперативной памяти: • для значимых типов заранее выделяется компилятором; • для ссылочных типов – во время выполнения программы. Дерево типов C# (в скобках – размер типа в байтах) Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 13. Целочисленные типы Тип Размер в байтах Диапазон byte 1 0..255 sbyte 1 -128..127 short 2 -32768..32767 ushort 2 0..65535 int 4 -2147483648..2147483647 uint 4 0..4294967295 long 8 -9223372036854775808..9223372036854775807 ulong 8 0..18446744073709551615 Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 14. Вещественные типы Тип Размер в байтах Диапазон float 4 -3,402823 E38 .. -3,402823 E38 double 8 -1,79769313486232 E308 .. 1,79769313486232 E308 Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 15. Символьный и строковый типы Тип Размер в байтах Диапазон char 2 0..65535 string X Зависит от длинны строки На хранение одного символа отводится 2 байта (Unicode). Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 16. Логический тип Тип Размер в байтах Диапазон bool 1 true или false Логический тип данных участвует в операциях сравнения и проверке условий. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 17. Описание переменных Каждая переменная должна быть описана: тип имя_переменной; Примеры: byte n; // задана переменная типа byte char sim; // задана символьная переменная string Text; // задана строковая переменная double x, y, z; // заданы три вещественные переменные Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 18. Оператор присваивания имя_переменной = значение; тип имя_переменной = значение; В C# нельзя работать с переменной, пока ей не присвоено значение! Примеры: // Переменные должны быть описаны выше! n = 233; // n := 233; sim = 'A'; // sim := код символа A Text = "Пример строки"; // Text :="Пример строки" x = y = z = 100; // x := 100; y := 100; z := 100; // Описание и присваивание одновременно int num = 2015; double dx = 0.1, dy = 0.2; Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 19. Арифметические и логические операторы Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 20. Арифметические операторы Основные + - сложение - - разность * - умножение / - деление % - остаток от деления Расширенные ++ - инкремент (+1) -- - декремент (-1) += - увеличить на ... -= - уменьшить на ... *= - умножить на ... /= - поделить на ... Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 21. int a = 100; // a:=100 int b = 20; // b:=20 int c = 20 * (a + b) / (a - b); // c:= значение выражения c = c % 20; // перезаписать в c остаток от // его деления на 20 string strA = "Привет, "; string strB = "C#!"; // «склеить» строки string strC = strA + strB + " Сегодня я изучаю основы."; Арифметические операторы Примеры: Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 22. int S = 0; double X = 10.2; double Y = 20.6; S += 20; // аналогична команде S = S + 20; X *= Y + 1; // аналогична команде X = X * (Y + 1); Арифметические операторы Расширенные арифметические операторы используются для сокращения записи. Например: Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 23. int i = 10; ++i; // аналогична команде i = i + 1; --i; // аналогична команде i = i - 1; i++; // аналогична команде i = i + 1; i--; // аналогична команде i = i - 1; Арифметические операторы int a = 0, b = 0; a = b++; // a := 0; b := 1 int a = 0, b = 0; a = ++b; // a := 1; b := 1 Операции инкремента и декремента позволяют увеличить (уменьшить) значение переменной на 1: Оператор ++ (--), записанный слева, называют префиксным, а справа – постфиксным. Префиксный оператор имеет более высокий приоритет! Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 24. Операторы отношения Оператор Описание == равно != не равно > больше < меньше >= больше или равно <= меньше или равно Операторы отношения используются при сравнении объектов. Результат имеет логический тип bool. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 25. Логические операторы Оператор Описание & И | ИЛИ ! НЕ ^ исключающее ИЛИ && укороченное И || укороченное ИЛИ Логические операторы связывают логические выражения. Результат имеет логический тип bool. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 26. Операторы условного выбора Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 27. Оператор if (полная форма) C# Схема if(условие) { // Оператор(ы) если истина } else { // Оператор(ы) если ложь } Если в блоке только один оператор (команда), то фигурные скобки этого блока можно опустить. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 28. Оператор if (неполная форма) C# Схема if(условие) { // Оператор(ы) если истина } Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 29. int number = 10; if (number >= 0) { Console.Write("Число неотрицательное"); } else { Console.Write("Число отрицательное"); } Оператор условного перехода if Пример 1 (для полной формы). double X = 0.5, A = 0.3, B = 1.6; if (X >= A & X <= B) Console.Write("Точка X принадлежит отрезку [A,B]"); Пример 2 (для неполной формы). Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 30. Оператор if (расширенная форма) C# Схема if(условие_1) { // блок операторов 1 } else if(условие_2) { // блок операторов 2 } . . . else if(условие_n) { // блок операторов n } [else { // блок операторов "иначе", // необязателен }] Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 31. using System; class Program { static void Main() { int number = -34; if (number > 0) Console.WriteLine("Положительное"); else if (number == 0) Console.WriteLine("Нуль"); else Console.WriteLine("Отрицательное"); Console.ReadKey(); } } Пример 3. Определить знак числа. Оператор if (расширенная форма) Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 32. Оператор выбора switch C# Пример switch(выражение) { case const1: // послед. операторов break; case const2: // послед. операторов break; . . . default: // послед. операторов break; } string lang = "C#"; switch (lang) { case "C": Console.WriteLine("Я учу Cи"); break; case "C++": Console.WriteLine("Я учу C++"); break; case "C#": Console.WriteLine("Я учу C#"); break; default: Console.WriteLine("Лень..."); break; } Оператор switch выполняет блок, значение которого совпадает со значением указанного выражения. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 33. Циклические операторы Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 34. Циклические операции Циклическую операцию можно организовать: • с помощью условных и безусловных переходов; • с использованием специальных циклических операторов. В C# реализовано четыре типа циклов: • цикл со счетчиком; • цикл с предусловием; • цикл с постусловием; • цикл перебора объектов в коллекции. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 35. Оператор goto // . . . goto @MyLable; // перейти на метку @MyLable /* Этот участок кода пропускаем */ @MyLable: // . . . goto метка; Оператор осуществляет переход на указанную метку. Пример: Избегайте практики использования меток. Они приводят к «спагетти-коду». Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 36. Цикл с использованием безусловного перехода using System; class Program { static void Main() { string Password; @Again: Password = Console.ReadLine(); // вводим текст if (Password != "C#") // проверяем с ключом { Console.WriteLine("Пароль неверный!"); goto @Again; // повторяем ввод } } } Пример 1. Зациклить программу до тех пор, пока с клавиатуры не будет введено слово «C#». Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 37. Оператор for for(инициализация; условие_работы; итерация) { // оператор(ы) } Оператор реализует цикл со счетчиком: • инициализация – начальное значение; • условие_работы – пока истинно, цикл продолжает работу; • итерация – шаг цикла. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 38. Оператор for using System; class Program { static void Main() { int Sum = 0; // счетчик для суммы int n; // счетчик для перебираемых чисел for (n = 1; n <= 100; n = n + 1) { Sum = Sum + n; } Console.Write("Сумма = " + Sum); Console.ReadKey(); } } Пример 2. Найти сумму натуральных чисел от 1 до 100, используя оператор for. for (n = 1; n <= 100; n++) Sum += n; Сокращенный вариант цикла Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 39. Оператор for using System; class Program { static void Main() { int i; for (i = 0; i <= 1000; i += 5) // перебор с шагом 5 Console.WriteLine(i); Console.ReadKey(); } } Пример 3. Вывести все числа в отрезке [0; 1000], кратные 5. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 40. Операторы break и continue Для преждевременного выхода из цикла используется оператор break. Для прерывания текущего шага цикла и перехода к новому используется оператор continue. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 41. Вложение циклов for using System; class Program { static void Main() { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= 9; j++) Console.Write("{0}t", i * j); Console.WriteLine(); } Console.ReadKey(); } } Циклы допускают многократное вложение. Пример 4. Построить таблицу умножения от 1 до 9. Внутренний цикл (для столбцов) Внешний цикл (для строк) Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 42. Вариации цикла for for (int i = 0; i < 10; i++) { // . . . } 1й аналог (без шага): 2й аналог (без начала и шага): Обычная реализация: Бесконечный цикл: for (; ; ) { // . . . } int i = 0; for (; i < 10; ) { // . . . i++; } for (int i = 0; i < 10; ) { // . . . i++; } Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 43. Оператор while while(условие) { // оператор(ы) } Оператор повторяет внутренний блок до тех пор, пока условие истинно. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 44. Оператор while using System; class Program { static void Main() { double x = 0; // начальное значение (левый конец) while (x <= 2) // пока не достигли правой границы { // выводим x и y(x) Console.WriteLine("{0}t{1}", x, 1 - x * x); x += 0.1; // следующий x } Console.ReadKey(); } } Пример 5. Построить таблицу для 𝑦 𝑥 = 1 − 𝑥2 на отрезке [0,2] c шагом 0.1. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 45. Оператор do-while do { // оператор(ы) } while(условие) Оператор вначале выполняет внутренний блок, а затем проверяет условие. Если оно истинно, то цикл повторяется. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 46. Оператор do-while using System; class Program { static void Main() { int number = 2016; // число byte category = 0; // количество разрядов do { number /= 10; // делим на 10, записываем неполное частное category++; // добавляем разряд } while (number > 0); // если текущий результат > 0, // повторяем цикл Console.Write("Количество цифр: " + category); Console.ReadKey(); } } Пример 6. Посчитать количество цифр заданного целого числа. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 47. Оператор foreach foreach(тип имя_переменной in коллекция) { // оператор(ы) } Оператор перебирает все элементы коллекции и осуществляет с ними указанные операции. Простейший пример коллекции – массив. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 48. Оператор foreach using System; class Program { static void Main() { int[] Mass = { 45, 0, -23, 112, 345, -45 }; // массив int pstv = 0, neg = 0; // счетчики // делаем для каждого элемента n из массива Mass foreach (int n in Mass) { if (n >= 0) pstv++; else neg++; } Console.WriteLine("Неотрицательных: " + pstv); Console.WriteLine("Отрицательных: " + neg); Console.ReadKey(); } } Пример 7. Посчитать количество отрицательных и неотрицательных элементов массива. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 49. Область видимости переменных. Преобразование типа Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 50. Область видимости переменных Переменная i «глобальна», т.е. видна относительно всего блока, в котором описана. int i; for (i = 0; i < 10; i++) { // . . . } for (int i = 0; i < 10; i++) { // . . . } Переменная i «локальна», т.е. доступна только внутри цикла. Область видимости переменной – блок программы, в котором она описана и доступна для использования. Область видимости переменной может быть ограничена: • блоками if (else), switch, for, while, do-while, foreach и т.п. • областью класса или его метода. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 51. Преобразование типа (тип) выражение Оператор преобразовывает выражение к более широкому / узкому типу. При преобразовании к более узкому типу возможна потеря данных. int n = 10; double x = 100.4; double y = 49.52; x = n; // Все хорошо: тип x более широкий, чем у n n = x; // Ошибка! Нельзя преобразовать double в int! n = (int) y; // Ошибки нет, но происходит потеря дробной части! Примеры: Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 53. Одномерный массив Массив – множество проиндексированных элементов одного типа. Массивы бывают: • одномерные; • многомерные. Индексация элементов начинается с нуля. Схема одномерного массива: Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 54. Одномерный массив тип[] имя_массива = new тип[размер]; тип[] имя_массива = {элемент_1, элемент_2, ..., элемент_N}; Первая команда резервирует в памяти место для массива с указанным числом элементов. Вторая команда задает массив перечислением элементов. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 55. Одномерный массив using System; class Program { static void Main() { int[] Mass = new int[10]; // массив на 10 элементов for (int i = 0; i < 10; i++) Mass[i] = i + 1; // i-му элементу присваиваем число Console.ReadKey(); } } Пример 1. Задать массив натуральных чисел элементами от 1 до 10. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 56. Одномерный массив using System; class Program { static void Main() { int[] Mass = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; Console.ReadKey(); } } Пример 2. Задать массив натуральных чисел элементами от 1 до 10 напрямую. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 57. Многомерный массив тип[,...,] имя_массива = new тип[размер1,...,размерN]; Команда задает многомерный массив (размерность 2 и более). Многомерный массив – таблица данных в многомерном пространстве. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 58. Двумерный массив Двумерный массив – обыкновенная таблица. Пример: Не имеет значения, какую размерность считать строкой, а какую – столбцом. Реализация определяется программистом. int[,] M = new int[20, 10]; Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 59. Двумерный массив using System; class Program { static void Main() { int n = 9; int[,] Table = new int[n, n]; // двумерный массив 9х9 for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) Table[i, j] = (i + 1) * (j + 1); } } Пример 3. Сформировать двумерный массив, хранящий таблицу умножения. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 60. Двумерный массив using System; class Program { static void Main() { string[,] TextMass = { { "Блок 1.1", "Блок 1.2" }, { "Блок 2.1", "Блок 2.2" }, { "Блок 3.1", "Блок 3.2" } }; } } Пример 4. Сформировать двумерный массив по указанной таблице. Блок 1.1 Блок 1.2 Блок 2.1 Блок 2.2 Блок 3.1 Блок 3.2 Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 61. Ступенчатый массив тип[][] имя_массива = new тип[размер][]; Одно из измерений ступенчатого массива может изменяться. M[0][0] M[0][1] M[0][2] M[0][3] M[0][4] M[1][0] M[1][1] M[1][2] M[2][0] M[2][1] M[2][2] M[2][3] byte[][] Mass = new byte[3][]; // выделяем память под массив Mass[0] = new byte[5]; // резерв. 5 элементов для первой строки Mass[1] = new byte[3]; // резерв. 3 элемента для второй строки Mass[2] = new byte[4]; // резерв. 4 элемента для третьей строки Mass[0][0] = 1; Mass[0][1] = 2; . . . Mass[2][3] = 12; Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 62. Свойство Length Массив.Length Возвращает число элементов массива. int[] Mass = { 34, -45, 56, 12, 45 }; for (byte i = 0; i < Mass.Length; i++) { // * * * } Console.Write(Mass.Length); // 5 string[,] Tab = new string[10, 20]; Console.Write(Tab.Length); // 200 int[][] Ar = new int[n][]; . . . long Pro = 1; for(i = 0; i < Ar.Length; i++) // Ar.Length = n for(j = 0; j < Ar[i].Length; j++) // Ar[i].Length = числу элементов Pro *= Ar[i][j]; // i-й в строке Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 63. Литералы. Ввод и вывод данных Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 64. Литералы Литерал – постоянная величина, явна указывающая, к какому типу данных относится. Целочисленные: 100, -23 – литералы типа int 100l, -235L – литералы типа long 23u, 56U – литералы типа uint 0x1A, 0xFF – шестнадцатеричный литерал Вещественные: 23.45, -3.034d, 45.6D – литералы типа double 45.6f, 34.0F – литералы типа float Символьные и строковые: 'd', 'A', '%' – литералы типа char "слово", "А это предложение" - литералы типа string Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 65. Ввод и вывод. Методы классов Console и Convert Write(параметр) – выводит символ, строку, числа и их комбинации. WriteLine() – переводит каретку на следующую строку. WriteLine(параметр) – комбинация первых двух. Read() – читает символ из входного потока. ReadLine() – читает строку из входного потока. ReadKey() – ожидает нажатия клавиши. Необходимо учитывать, что введенный текст рассматривается как поток символов (тип string). Для перевода в числовой тип его нужно конвертировать. ToByte(параметр) – переводит в беззнаковое число размером в байт. ToInt16(параметр) – переводит в знаковое число размером в 2 байта. ToInt32(параметр) – переводит в знаковое число размером в 4 байта. ToInt64(параметр) – переводит в знаковое число размером в 8 байт. ToDouble(параметр) – переводит в число с плавающей точкой. ToString(параметр) – переводит в строку. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 66. Console.Write("Hello, world!"); Console.WriteLine(23); Console.Write(x + y + 10); Console.Write("Hello, " + "world!"); Console.WriteLine("Сейчас " + year + " год."); string S = Console.ReadLine(); int A = Convert.ToInt32(Console.ReadLine()); double X = Convert.ToDouble(Console.ReadLine()); Console.Write("Введите n: "); byte n = Convert.ToByte(Console.ReadLine()); Ввод и вывод. Классы Console и Convert Пример. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 67. Форматированный вывод WriteLine("Форматирующая строка",arg0,arg1,...,argN); Форматирующая строка = выводимые символы + спецификаторы: спецификатор {аргумент, ширина: формат} Console.WriteLine("Сегодня {0} число", date); i = 5; A[i] = 10; Console.WriteLine("Элемент A({0})={1}", i, A[i]); // Элемент A(5)=10 Console.Write("{0:#.###}",10.234344); // 10.234 Console.WriteLine("ОдинtДваtТри"); Console.WriteLine("Разрыв n строки"); Console.Write(@"А здесь n разрыва t не будет"); Управляющие символы: n – новая строка t – табуляция Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 68. Математические функции. Класс Math Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 69. Математические функции. Класс Math Класс Math реализует функции для математических вычислений. Abs(число) Модуль числа. Sqrt(число) Квадратный корень числа. Max(число1,число2) Min(число1,число2) Наибольшее / наименьшее из двух указанных чисел. Exp(число) Експонента числа (𝑒 𝑥 ). Sin/ Cos/ Tan/ Asin/ Acos/ Atan(число) Возвращает значение тригонометрической функции. Pow(число,степень) Возводит число в указанную степень. Round() Округляет число до указанного разряда. Trancate() Вычисляет целую часть числа. PI Хранит значение константы 𝜋. E Хранит значение константы 𝑒. Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016
  • 70. Математические функции. Класс Math Пример. double a = Math.Sqrt(100); // корень из 100 double Pi = Math.PI; // постоянное число PI double b = Math.Cos(2 * Pi); // cos(2PI) int max = Math.Max(33, 67); // максимальное из чисел 33 и 67 int min = Math.Min(45, max); // минимальное из чисел 45 и max double r = Math.Round(1.0391, 2); // округлит до 1.04 double tr = Math.Truncate(1.391); // 1 Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016