Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек_ООП_2_1_1 Синтаксис языка C#. Данные и опе...doc
Скачиваний:
2
Добавлен:
13.11.2019
Размер:
208.9 Кб
Скачать

Какие математические функции и константы встроены в c#?

Смотрите класс Math.

Этот класс содержит два статических поля, задающих константы E и PI, а

также 23 статических метода. Методы задают:

• тригонометрические функции - Sin, Cos, Tan;

• обратные тригонометрические функции - ASin, ACos, ATan, ATan2(sinx,cosx);

• гиперболические функции - Tanh, Sinh, Cosh;

• экспоненту и логарифмические функции - Exp, Log, Log10;

• модуль, корень, знак - Abs, Sqrt, Sign;

• функции округления - Ceiling, Floor, Round;

• минимум, максимум, степень, остаток - Min, Max, Pow, IEEEReminder.

Пример возведения в степень:

double u = 2.5, v = 1.5, p;

p= Math.Pow(u,v);

Как в c# генерировать случайные числа?

Смотрите класс Random.

Пример генерации случайных чисел:

const int initRnd = 77;

// Объекты-генераторы случайных чисел

Random realRnd = new Random();

Random repeatRnd = new Random(initRnd);

// 5 случайных действительных чисел в диапазоне [0.0 -:- 0.99999999]

for (int i = 1; i <= 5; i++)

{ Console.WriteLine("Число " + i + "= " + realRnd.NextDouble()); }

// 5 случайных целых чисел в диапазоне [-5 -:- 6]

for (int i = 1; i <= 5; i++)

{ Console.WriteLine("Число " + i + "= " + realRnd.Next(-5, 6)); }

// массив из 10 случайных байтов

byte[] bar = new byte[10];

repeatRnd.NextBytes(bar);

for (int i = 0; i < 10; i++)

{ Console.WriteLine("Число " + i + "= " + bar[i]); }

Чем операторы C# отличаются от операторов С++?

Практически ничем. Несколько отличается оператор switch. Добавлен оператор foreach

Оператор switch:

switch(выражение)

{

case константное_выражение_1: [операторы_1 оператор_перехода_1]

...

case константное_выражение_K: [операторы_K оператор_перехода_K]

[default: операторы_N оператор_перехода_N]

}

В нем выражение при switch может быть не только целочисленным, но и текстовой строкой string. Оператор перехода в конце блока case обязателен, желательно, чтобы это был break.

Цикл foreach

Новым видом цикла, не унаследованным от С++, является цикл foreach, удобный при работе с массивами, коллекциями и другими подобными контейнерами данных:

foreach(тип идентификатор in контейнер) оператор

Тело цикла выполняется для каждого элемента в контейнере. Тип идентификатора должен быть согласован с типом элементов, хранящихся в контейнере данных. Предполагается также, что элементы контейнера (массива, коллекции) упорядочены.

На каждом шаге цикла идентификатор, задающий текущий элемент контейнера, получает значение очередного элемента в соответствии с порядком, установленным на элементах контейнера. С этим текущим элементом и выполняется тело цикла – выполняется столько раз, сколько элементов находится в контейнере.

Цикл заканчивается, когда полностью перебраны все элементы контейнера.

Серьезным недостатком циклов foreach в языке C# является то, что цикл работает только на чтение, но не на запись элементов. Так что наполнять контейнер элементами приходится с помощью других операторов цикла.

Выводы:

  1. Чтобы экономить память и время, по возможности используйте структуры вместо классов.

  2. Переменные значимых типов можно использовать, как представители классов – у них тоже есть методы (в частности – функции преобразования типов).

  3. Предкам можно присвоить значение потомков, но не наоборот. При этом, как правило, просто переставляются ссылки. И всегда можно добраться до «скрывшихся» полей потомков.

  4. Переменные класса Object можно использовать для временного хранения любых значений.

  5. Удобно преобразовывать типы методами класса Convert.

  6. Глобальных переменных нет, а локальные и статические переменные ведут себя иначе, чем в С++.

  7. Операции типа x++ x-- ведут себя иначе, чем в С++.

  8. В C# нельзя явно применять целые числа вместо логических чисел, как в С++.

  9. Выражение при switch может быть не только целочисленным, но и текстовой строкой string. Оператор перехода в конце блока case обязателен.

На самостоятельное изучение:

  • Ознакомиться с основами Visual Studio .Net и Framework .Net по лекции 1 из «Лекции по C# В_А_Биллинг.pdf»

  • Ознакомиться с основами создания проектов в C# по лекции № 2 из «Лекции по C# В_А_Биллинг.pdf»

  • Проверить на практике, что переменные класса Object можно использовать для временного хранения любых значений, которые можно извлекать из них с помощью явного преобразования типа.

  • Проверить на практике, что при присваивании переменных типа массив, строка и класс друг другу значения полей не копируются, а становятся общими.

  • Ознакомиться с вопросами преобразования типов в C# по лекции № 4 из «Лекции по C# В_А_Биллинг.pdf». Обратить особое внимание на пример с опасными преобразованиями. Проверить его на своем компьютере.