70
Основы объектно-ориентированного программирования на языке C# Часть 2. Базовый синтаксис Якубович Денис Андреевич [email protected] Владимир 2016

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

Embed Size (px)

Citation preview

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

Основы объектно-ориентированного программирования на языке C#

Часть 2. Базовый синтаксис

Якубович Денис Андреевич

[email protected]

Владимир 2016

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

Содержание

• Структура программы

• Переменные

• Типы данных

• Арифметические и логические операторы

• Операторы условного выбора

• Циклические операторы

• Область видимости переменных. Преобразование типа

• Массивы

• Литералы. Ввод и вывод данных

• Математические функции. Класс Math

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Структура программы

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Структура программы и основные компоненты

Класс 1

Пространство имен

Класс 2 . . . Класс N

Класс

• Поле (я) / свойство (а) класса

• Метод (ы) класса

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Первая программа

/* Моя первая программа */ using System; // Подключение пространства имен System namespace MySpace // Пространство имен { class First // Основной класс { static void Main() // Точка входа { Console.WriteLine("Hello, world!"); } } }

Компилятор языка C# чувствителен к регистру букв.

Например, идентификатор main и Main – различные имена.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Первая программа

Пространство имен ограничивает область видимости класса.

Задается командой namespace.

Название может быть любым, кроме стандартных.

1

Класс описывает форму представления данных и код для их обработки.

Задается командой class.

Название может быть любым, кроме системных.

2

Методы организуют работу с данными. 3

Операторы «{ }» задают тело описания блока.

Используются для пространств имен, классов, методов и ряда других

операций.

4

Оператор «;» завершает выполнение любой команды.

Не используется для завершения «{ }». 5

Оператор «//» задает однострочный комментарий.

Между операторами «/* */» можно определить комментарий в несколько

строк.

6

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Первая программа

/* Моя первая программа */ using System; // Подключение пространства имен System class First // Основной класс { static void Main() // Точка входа { Console.WriteLine("Hello, world!"); } }

В случае отсутствия конфликтов имен между классами пространство имен

можно не указывать.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Переменные

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Переменная

Переменная – участок оперативной памяти, хранящий данные для

приложения.

Процессор обращается к ячейкам ОЗУ по адресу:

Минимальный размер ячейки – 1 байт.

Чаще используется более крупные ячейки.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Переменная

Программисту неудобно обращаться к ячейкам памяти по адресу.

Поэтому переменным даются имена.

В языке C# программист обращается к переменной по её имени.

Процессор обращается к переменной по её адресу.

Имя переменной лишь скрывает адрес ячейки в оперативной

памяти.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Типы данных. Описание переменных

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Типы данных

Роль типизации данных

C# - строго типизированный язык.

Это означает, кто каждая переменная

должна иметь тип.

Тип данных определяет:

• диапазон возможных значений

переменной;

• допустимые операции над

переменными данного типа.

Значимые и ссылочные типы

Отличаются способом распределения

оперативной памяти:

• для значимых типов заранее

выделяется компилятором;

• для ссылочных типов – во время

выполнения программы.

Дерево типов C# (в скобках – размер типа в байтах)

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Целочисленные типы

Тип Размер в байтах Диапазон

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

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

Вещественные типы

Тип Размер в байтах Диапазон

float 4 -3,402823 E38 .. -3,402823 E38

double 8 -1,79769313486232 E308 ..

1,79769313486232 E308

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Символьный и строковый типы

Тип Размер в байтах Диапазон

char 2 0..65535

string X Зависит от длинны строки

На хранение одного символа отводится 2 байта (Unicode).

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Логический тип

Тип Размер в байтах Диапазон

bool 1 true или false

Логический тип данных участвует в операциях сравнения и проверке условий.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Описание переменных

Каждая переменная должна быть описана:

тип имя_переменной;

Примеры:

byte n; // задана переменная типа byte

char sim; // задана символьная переменная

string Text; // задана строковая переменная

double x, y, z; // заданы три вещественные переменные

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Оператор присваивания

имя_переменной = значение;

тип имя_переменной = значение;

В 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

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

Арифметические и логические операторы

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Арифметические операторы

Основные

+ - сложение

- - разность

* - умножение

/ - деление

% - остаток от деления

Расширенные

++ - инкремент (+1)

-- - декремент (-1)

+= - увеличить на ...

-= - уменьшить на ...

*= - умножить на ...

/= - поделить на ...

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

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

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

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

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

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

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

Операторы отношения

Оператор Описание

== равно

!= не равно

> больше

< меньше

>= больше или равно

<= меньше или равно

Операторы отношения используются при сравнении объектов.

Результат имеет логический тип bool.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Логические операторы

Оператор Описание

& И

| ИЛИ

! НЕ

^ исключающее ИЛИ

&& укороченное И

|| укороченное ИЛИ

Логические операторы связывают логические выражения.

Результат имеет логический тип bool.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Операторы условного выбора

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Оператор if (полная форма)

C# Схема

if(условие)

{

// Оператор(ы) если истина

}

else

{

// Оператор(ы) если ложь

}

Если в блоке только один оператор (команда), то фигурные скобки

этого блока можно опустить.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Оператор if (неполная форма)

C# Схема

if(условие)

{

// Оператор(ы) если истина

}

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

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

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

Оператор if (расширенная форма)

C# Схема

if(условие_1)

{

// блок операторов 1

}

else if(условие_2)

{

// блок операторов 2

}

. . .

else if(условие_n)

{

// блок операторов n

}

[else

{

// блок операторов "иначе",

// необязателен

}]

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

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

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

Оператор выбора 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

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

Циклические операторы

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Циклические операции

Циклическую операцию можно организовать:

• с помощью условных и безусловных переходов;

• с использованием специальных циклических операторов.

В C# реализовано четыре типа циклов:

• цикл со счетчиком;

• цикл с предусловием;

• цикл с постусловием;

• цикл перебора объектов в коллекции.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Оператор goto

// . . .

goto @MyLable; // перейти на метку @MyLable

/* Этот

участок

кода

пропускаем */

@MyLable:

// . . .

goto метка;

Оператор осуществляет переход на указанную метку.

Пример:

Избегайте практики использования меток.

Они приводят к «спагетти-коду».

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Цикл с использованием безусловного перехода

using System;

class Program

{

static void Main()

{

string Password;

@Again:

Password = Console.ReadLine(); // вводим текст

if (Password != "C#") // проверяем с ключом

{

Console.WriteLine("Пароль неверный!");

goto @Again; // повторяем ввод

}

}

}

Пример 1. Зациклить программу до тех пор, пока с клавиатуры не будет введено

слово «C#».

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Оператор for

for(инициализация; условие_работы; итерация) { // оператор(ы) }

Оператор реализует цикл со счетчиком:

• инициализация – начальное значение;

• условие_работы – пока истинно, цикл продолжает работу;

• итерация – шаг цикла.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Оператор 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

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

Оператор 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

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

Операторы break и continue

Для преждевременного выхода из цикла используется оператор

break.

Для прерывания текущего шага цикла и перехода к новому

используется оператор continue.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Вложение циклов 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

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

Вариации цикла 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

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

Оператор while

while(условие) { // оператор(ы) }

Оператор повторяет внутренний блок до тех пор, пока условие

истинно.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Оператор 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

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

Оператор do-while

do

{

// оператор(ы)

} while(условие)

Оператор вначале выполняет внутренний блок, а затем проверяет

условие. Если оно истинно, то цикл повторяется.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Оператор 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

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

Оператор foreach

foreach(тип имя_переменной in коллекция) { // оператор(ы) }

Оператор перебирает все элементы коллекции и осуществляет с

ними указанные операции.

Простейший пример коллекции – массив.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Оператор 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

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

Область видимости переменных. Преобразование типа

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Область видимости переменных

Переменная 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

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

Преобразование типа

(тип) выражение

Оператор преобразовывает выражение к более широкому / узкому

типу.

При преобразовании к более узкому типу возможна потеря данных.

int n = 10;

double x = 100.4;

double y = 49.52;

x = n; // Все хорошо: тип x более широкий, чем у n

n = x; // Ошибка! Нельзя преобразовать double в int!

n = (int) y; // Ошибки нет, но происходит потеря дробной части!

Примеры:

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Массивы

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Одномерный массив

Массив – множество проиндексированных элементов одного типа.

Массивы бывают:

• одномерные;

• многомерные.

Индексация элементов начинается с нуля.

Схема одномерного массива:

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Одномерный массив

тип[] имя_массива = new тип[размер];

тип[] имя_массива = {элемент_1, элемент_2, ..., элемент_N};

Первая команда резервирует в памяти место для массива с

указанным числом элементов.

Вторая команда задает массив перечислением элементов.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Одномерный массив

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

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

Одномерный массив

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

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

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

тип[,...,] имя_массива = new тип[размер1,...,размерN];

Команда задает многомерный массив (размерность 2 и более).

Многомерный массив – таблица данных в многомерном

пространстве.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Двумерный массив

Двумерный массив – обыкновенная таблица.

Пример:

Не имеет значения, какую размерность считать строкой, а какую – столбцом.

Реализация определяется программистом.

int[,] M = new int[20, 10];

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Двумерный массив

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

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

Двумерный массив

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

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

Ступенчатый массив

тип[][] имя_массива = 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

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

Свойство 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

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

Литералы. Ввод и вывод данных

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Литералы

Литерал – постоянная величина, явна указывающая, к какому типу

данных относится.

Целочисленные:

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

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

Ввод и вывод. Методы классов Console и Convert

Write(параметр) – выводит символ, строку, числа и их комбинации.

WriteLine() – переводит каретку на следующую строку.

WriteLine(параметр) – комбинация первых двух.

Read() – читает символ из входного потока.

ReadLine() – читает строку из входного потока.

ReadKey() – ожидает нажатия клавиши.

Необходимо учитывать, что введенный текст рассматривается как поток

символов (тип string). Для перевода в числовой тип его нужно конвертировать.

ToByte(параметр) – переводит в беззнаковое число размером в байт.

ToInt16(параметр) – переводит в знаковое число размером в 2 байта.

ToInt32(параметр) – переводит в знаковое число размером в 4 байта.

ToInt64(параметр) – переводит в знаковое число размером в 8 байт.

ToDouble(параметр) – переводит в число с плавающей точкой.

ToString(параметр) – переводит в строку.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

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

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

Форматированный вывод

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

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

Математические функции. Класс Math

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Математические функции. Класс Math

Класс Math реализует функции для математических вычислений.

Abs(число) Модуль числа.

Sqrt(число) Квадратный корень числа.

Max(число1,число2) Min(число1,число2)

Наибольшее / наименьшее из двух указанных чисел.

Exp(число) Експонента числа (𝑒𝑥).

Sin/ Cos/ Tan/ Asin/ Acos/ Atan(число)

Возвращает значение тригонометрической функции.

Pow(число,степень) Возводит число в указанную степень.

Round() Округляет число до указанного разряда.

Trancate() Вычисляет целую часть числа.

PI Хранит значение константы 𝜋.

E Хранит значение константы 𝑒.

Основы объектно-ориентированного программирования на языке C# ©Якубович Д.А., Владимир 2016

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

Математические функции. Класс 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