- •Лекция 1. Платформа Microsoft .Net Framework 2.0
- •Понятия приложения, проекта, решения
- •Среда разработки Visual Studio .Net
- •Создание первого проекта
- •Компиляция и выполнение программы в среде clr
- •1.2. Рекомендации по выполнению практикума
- •1.3. Рекомендации по самостоятельной работе
- •Лекция 2. Технология объектно-ориентированного программирования
- •Состав языка
- •Типы данных
- •Переменные и константы
- •Организация ввода-вывода данных. Форматирование
- •Вывод данных
- •Ввод данных
- •Практикум
- •Самостоятельная работа
- •Лекция 3. Операции
- •Выражения и преобразование типов
- •Практикум
- •Самостоятельная работа
- •Лекция 4. Операторы языка c#
- •Операторы следования
- •Операторы ветвления
- •Условный оператор if
- •Оператор выбора switch
- •Операторы цикла
- •Цикл с предусловием while
- •Цикл с постусловием do while
- •Цикл с параметром for
- •Вложенные циклы
- •Операторы безусловного перехода
- •Оператор безусловного перехода goto
- •Оператор выхода break
- •Оператор перехода к следующей итерации цикла continue
- •Практикум
- •Самостоятельная работа
- •Лекция 5. Методы: основные понятия
- •Методы: основные понятия. Перегрузка методов. Методы: основные понятия
- •Перегрузка методов
- •Практикум
- •Самостоятельная работа Теоретический материал
- •Практическое задание
- •Лекция 6. Рекурсивные методы
- •Практикум
- •Самостоятельная работа
- •Лекция 7. Обработка исключений
- •Оператор try
- •Операторы checked и unchecked
- •Генерация собственных исключений
- •Полезные совет
- •Практикум
- •Самостоятельная работа Теоретический материал Вычисление конечных сумм и произведений
- •Вычисление бесконечных сумм
- •Практическое задание
- •Лекция 8. Массивы
- •Одномерные массивы
- •Массивы и исключения
- •Массив как параметр
- •Массив как объект
- •Многомерные массивы
- •Ступенчатые массивы
- •Оператор foreach и его использование при работе с массивами
- •Практикум
- •Самостоятельная работа Теоретический материал Вставка и удаление элементов в массивах
- •Практические задания
- •Лекция 9. Символы и строки
- •Символы char
- •Неизменяемые строки string
- •Изменяемые строки
- •Практикум
- •Самостоятельная работа
- •Запуск программы из командной строки
- •Передача параметров в метод Main из командной строки
- •Практические задачи
- •Лекция 10. Регулярные выражения
- •Метасимволы в регулярных выражениях
- •Поиск в тексте по шаблону
- •Редактирование текста
- •Практикум
- •Самостоятельная работа Теоретический материал
- •Практическое задание
- •Лекция 11. Организация с#-системы ввода-вывода
- •Байтовый поток
- •Символьный поток
- •Двоичные потоки
- •Перенаправление стандартных потоков
- •Практикум
- •Самостоятельная работа
- •Лекция 12. Работа с файловой системой
- •12.1.Работа с файловой системой: классы Directory и Filе и классы DirectoryInfo и FileInfo Работа с файловой системой
- •Работа с каталогами Абстрактный класс FileSystemInfo
- •Класс DirectoryInfo
- •Класс Directory
- •Работа с файлами Класс Filelnfo
- •Класс File
- •12.2. Практикум
- •12.3. Самостоятельная работа
- •Данные: поля и константы
- •Конструкторы
- •Конструкторы экземпляра
- •Конструкторы класса
- •Свойства
- •"Один класс - один файл",
- •13.2. Практикум
- •13.3. Самостоятельная работа
- •13.4. Классы: деструкторы, индексаторы, операции класса, операции преобразования типов Деструкторы
- •Индексаторы
- •Операции класса
- •Унарные операции
- •Бинарные операции
- •Операции преобразования типов
- •13.5. Практикум (продолжение практикума 13)
- •13.6. Самостоятельная работа
- •Лекция 14. Иерархия классов
- •14.1 Иерархия
- •Наследование
- •Использование защищенного доступа
- •Наследование конструкторов
- •Многоуровневая иерархия
- •Переменные базового класса и производного класса
- •Виртуальные методы
- •Абстрактные методы и классы
- •Запрет наследования
- •14.2. Практикум
- •14.3. Самостоятельная работа
- •Лекция 15. Интерфейсы и структуры
- •15.1. Пользовательские и стандартные интерфейсы. Структуры Интерфейсы
- •Стандартные интерфейсы .Net
- •Структуры
- •15.2. Практикум
- •15.3. Самостоятельная работа Теоретический материал
- •Задание
- •Лекция 16. Коллекции
- •16.1. Классификация коллекций. Коллекции общего назначения: стек. Очередь, динамический массив, хеш-таблица Коллекции
- •Коллекции общего назначения
- •Класс Stack
- •Класс Queue
- •Класс ArrayList
- •Класс Hashtable
- •16.2. Практикум
- •16.3. Самостоятельная работа
- •Дополнения Дополнение. Операции с#
- •Дополнение. Математические функции языка с#
- •Литература
Перегрузка методов
Иногда бывает удобно, чтобы методы, реализующие один и тот же алгоритм для различных типов данных, имели одно и то же имя. Использование нескольких методов с одним и тем же именем, но различными типами и количеством параметров называется перегрузкой методов. Компилятор определяет, какой именно метод требуется вызвать, по типу и количеству фактических параметров.
Рассмотрим следующий пример:
class Program
{
static int max(int a) //первая версия метода max
{
int b = 0;
while (a > 0)
{
if (a % 10 > b) b = a % 10;
a /= 10;
}
return b;
}
static int max(int a, int b) //вторая версия метода max
{
if (a > b) return a;
else return b;
}
static int max(int a, int b, int c) //третья версия метода max
{
if (a > b && a > c) return a;
else if (b > c) return b;
else return c;
}
static void Main()
{
int a = 1283, b = 45, c = 35740;
Console.WriteLine(max(a));
Console.WriteLine(max(a, b));
Console.WriteLine(max(a, b, c));
}
}
При вызове метода max компилятор выбирает вариант, соответствующий типу и количеству передаваемых в метод аргументов. Если точного соответствия не найдено, выполняются неявные преобразования типов в соответствии с общими правилами. Если преобразование невозможно, выдается сообщение об ошибке. Если выбор перегруженного метода возможен более чем одним способом, то выбирается "лучший" из вариантов (вариант, содержащий меньшие количество и длину преобразований в соответствии с правилами преобразования типов). Если существует несколько вариантов, из которых невозможно выбрать лучший, выдается сообщение об ошибке.
Перегрузка методов является проявлением полиморфизма, одного из основных свойств ООП. Программисту гораздо удобнее помнить одно имя метода и использовать его для работы с различными типами данных, а решение о том, какой вариант метода вызвать, возложить на компилятор. Этот принцип широко используется в классах библиотеки .NET. Например, в стандартном классе Console метод WriteLine перегружен 19 раз для вывода величин разных типов.
Практикум
Решение простейших задач:
Разработать метод для нахождения минимального из двух чисел. Вычислить с помощью него значение выражения.
Пример.
using System;
namespace Hello
{
class Program
{
static double min(double a, double b)
{
return (a < b) ? a : b;
}
static void Main(string[] args)
{
Console.Write("x=");
double x = double.Parse(Console.ReadLine());
Console.Write("y=");
double y = double.Parse(Console.ReadLine());
double z = min(3 * x, 2 * y) + min(x - y, x + y);
Console.WriteLine("z=" + z);
}
}
}
Разработать метод для нахождения минимального из двух чисел. Вычислить с помощью него минимальное значение из четырех чисел,,,.
Разработать метод для нахождения максимального из двух чисел. Вычислить с помощью него значение выражения.
Разработать метод , который вычисляет значение по следующей формуле:. Определить, в какой из точекилифункция принимает наибольшее значение.
Разработать метод , который вычисляет значение по следующей формуле:. Определить, в какой из точек а или b, функция принимает наименьшее значение.
Разработать метод , который возвращает младшую цифру натурального числа. Вычислить с помощью него значение выражения.
Разработать метод , который возвращает вторую справа цифру натурального числа. Вычислить с помощью него значение выражения.
Разработать метод , который для заданного натурального числа n находит значение. Вычислить с помощью него значение выражения.
Разработать метод , который для заданного натурального числа n и вещественного х находит значение выражения. Вычислить с помощью данного метода значение выражения.
Разработать метод , который нечетное число заменяет на, а четное число уменьшает в два раза. Продемонстрировать работу данного метода на примере.
Разработать метод , который число, кратное, уменьшает враз, а остальные числа увеличивает на. Продемонстрировать работу данного метода на примере.
Разработать метод , который в двузначном числе меняет цифры местами, а остальные числа оставляет без изменения. Продемонстрировать работу данного метода на примере.
Разработать метод , который в трехзначном числе меняет местами первую с последней цифрой, а остальные числа оставляет без изменения. Продемонстрировать работу данного метода на примере.
Разработать метод , который по катетамивычисляет гипотенузу. С помощью данного метода найти периметр фигуры ABCD по заданным сторонам AB, AC и DC.
Разработать метод , который по длинам сторон треугольника,,вычисляет его площадь. С помощью данного метода по заданным вещественным числам,,,,,, g найти площадь пятиугольника, изображенного на рисунке.
Разработать метод , который вычисляет длину отрезка по координатам вершини, и метод, который вычисляет периметр треугольника по длинам сторон,,. С помощью данных методов найти периметр треугольника, заданного координатами своих вершин.
Разработать метод , который вычисляет длину отрезка по координатам вершин (x_{1}, y_{1}) и, и метод, который вычисляет максимальное из чисел,. С помощью данных методов определить, какая из трех точек на плоскости наиболее удалена от начала координат.
Разработать метод , который вычисляет длину отрезка по координатам вершини, и метод, который вычисляет минимальное из чисел,. С помощью данных методов найти две из трех заданных точек на плоскости, расстояние между которыми минимально.
Разработать метод , который вычисляет длину отрезка по координатам вершини, и метод t(a, b, c), который проверяет, существует ли треугольник с длинами сторон,,. С помощью данных методов проверить, можно ли построить треугольник по трем заданным точкам на плоскости.
Разработать метод , который вычисляет длину отрезка по координатам вершини, и метод, который проверяет, существует ли треугольник с длинами сторон. С помощью данных методов проверить, сколько различных треугольников можно построить по четырем заданным точкам на плоскости.
Постройте таблицу значений функции дляс шагом.
Замечание. Для решения задачи использовать вспомогательный метод.
Пример:
using System;
namespace Hello
{
class Program
{
static double f (double x)
{
double y;
if (x >= 0.9) y = 1 / Math.Pow(1 + x, 2);
else if (x >= 0) y = 0.2 * x + 0.1;
else y = x * x + 0.2;
return y;
}
static void Main(string[] args)
{
Console.Write("a=");
double a = double.Parse(Console.ReadLine());
Console.Write("b=");
double b = double.Parse(Console.ReadLine());
Console.Write("h=");
double h = double.Parse(Console.ReadLine());
for (double i = a; i <= b; i += h)
Console.WriteLine("f({0:f2})={1:f4}", i, f(i));
}
}
}
|
2. |
3. |
4. |
5. |
6. |
7. |
8. |
9. |
10. |
11. |
12. |
13. |
14. |
15. |
16. |
17. |
18. |
19. |
20. |
Перегрузите метод из предыдущего раздела так, чтобы его сигнатура (заголовок) соответствовала видуstatic void f (double x, out double y). Продемонстрируйте работу перегруженных методов.