834.41K
Категория: ПрограммированиеПрограммирование

Программирование на C#. Семинар 5

1.

Программирование на C#
Семинар 5
Методы.
Передача Параметров по Ссылке
Использование модификаторов out и ref
1

2.

Методы
[модификаторы] тип_возврата ИмяМетода([параметры])
{
// Тело метода
}

3.

Возврат из метода и возврат значения

4.

Возврат из метода и возврат значения

5.

Передача по значению

6.

Передача по ссылке

7.

example4
Перестановка типов значений

8.

9.

Задача 1: Вывод таблицы целых чисел
Вывести на экран таблицу чисел от 0 до 15 в десятичной и шестнадцатеричной системах счисления
using System;
class Program {
static void Main() {
Console.WriteLine("Dec\tHex");
Console.WriteLine("=================");
for (int i = 0; i < 16; i++) {
Console.WriteLine("{0}\t{0:X4}", i);
}
}
}
Самостоятельно выделить статический метод, позволяющий для целого числа вывести в консольное окно его
битовое представление. Код в методе Main() заменить вызовом этого метода.
9

10.

Задача 2: Масштабирование прямоугольника
Часто возникает необходимость работать с чужим кодом. В предложенной задаче реализован метод,
увеличивающий ширину и высоту прямоугольника на одну единицу.
// Метод увеличивает высоту и ширину прямоугольника на 1
// Прямоугольник задан координатами верхнего левого угла
// высотой и шириной
public static bool RectangleInflate(int x, int y, ref int height, ref int width) {
// проверяем корректность переданных значений
if (height <= 0 || width <= 0) return false;
height++;
width++;
return true;
}
10

11.

Задача 2: Масштабирование прямоугольника
public static void Main() {
// тест метода для корректных данных
int x = 0, y = 0;
int height = 5, width = 7;
Console.WriteLine("({0},{1}) h={2} w={3}", x, y, height, width);
if (!RectangleInflate(x, y, ref height, ref width)) {
Console.WriteLine("Неверные параметры прямоугольника!");
return;
}
Console.WriteLine("Преобразование успешно произведено:");
Console.WriteLine("({0},{1}) h={2} w={3}", x, y, height, width);
int xWrong = 1, yWrong = 1;
Console.WriteLine();
int heightWrong = -5, widthWrong = 7;
11

12.

Задача 2: Масштабирование прямоугольника
// тест метода для неверных данных
Console.WriteLine("({0},{1}) h={2} w={3}", xWrong, yWrong, heightWrong, widthWrong);
if (!RectangleInflate(x, y, ref heightWrong, ref widthWrong)) {
Console.WriteLine("Неверные параметры прямоугольника!");
return;
}
Console.WriteLine("Преобразование успешно произведено:");
Console.WriteLine("({0},{1}) h={2} w={3}", xWrong, yWrong, heightWrong, widthWrong);
}
12

13.

Задания к задаче 2
1. Тесты, предложенные в методе Main() – пример дублирующего кода. Напишите метод, в который
можно выделить этот код и используйте его вызовы в Main().
2. Напишите метод RectangleDeflate(), имеющий те же параметры, что и метод
RectangleInflate(). Метод, возвращает true, если переданный в качестве параметра прямоугольник
может быть уменьшен по обоим измерениям на 1 и уменьшает измерения на 1 и false в противном
случае. Полагать, что длина стороны не может быть меньше 1.
3. Напишите метод RectangleNormalize(), имеющий те же параметры, что и метод
RectangleInflate(). Метод, возвращает true, если переданный в качестве параметров
прямоугольник может быть преобразован в квадрат путём уменьшения длины одной из сторон и
уменьшает одно из сторон и false в противном случае. Самостоятельно рассмотреть варианты
некорректных параметров.
13

14.

Задача 3: Переупорядочивание Цифр
Напишите метод, преобразующий значение целочисленного трёхзначного
параметра, чтобы его цифры стали упорядочены по убыванию. Метод должен
возвращать значение false, если параметр задан неверно или true при
удачном преобразовании.
В основной программе вводится трёхзначное натуральное число, которое затем
преобразуется с помощью описанного метода.
Заголовок метода:
public static bool ReverseDigits(ref uint number)
14

15.

Задача 4: Циклический Сдвиг Символа
Напишите метод, изменяющий значение символьного параметра русского или
английского алфавита путём его циклического сдвига на shiftCount позиций вперёд
или назад (если значение shiftCount отрицательное).
Метод должен возвращать значение false, если аргумент не является символом
русского или английского алфавита, и true в случае успеха.
В основной программе вводится символ и количество позиций, на которое
выполняется его циклический сдвиг с помощью описанного метода. Если метод
вернул false, символ должен остаться неизменным.
Заголовок метода:
public static bool Shift(int shiftCount, ref char ch)
Примеры сдвига: (b, 4) → f; (Г, 10) → М; (V, -3) → S; (d, 26) → d; (Z, 53) → A
15

16.

Задача 5: Площадь и Периметр Треугольника
Напишите метод, вычисляющий площадь (a) и периметр (p) треугольника по
заданным длинам его сторон. Метод должен возвращать значение false, если
параметры заданы неверно и треугольник с такими длинами построить нельзя
или true в случае успеха.
В основной программе вводятся значения трёх вещественных чисел – сторон
треугольника.
Заголовок метода:
public static bool Triangle(double x, double y, double z,
out double p, out double s)
16

17.

Задача 6: Сумма по Формуле
Напишите метод для вычисления суммы по заданной формуле:
English     Русский Правила