- •Лекция 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. Самостоятельная работа
- •Дополнения Дополнение. Операции с#
- •Дополнение. Математические функции языка с#
- •Литература
Вложенные циклы
Циклы могут быть простые или вложенные (кратные, циклы в цикле). Вложенными могут быть циклы любых типов: while, do while, for. Каждый внутренний цикл должен быть полностью вложен во все внешние циклы. "Пересечения" циклов не допускаются.
Рассмотрим пример использования вложенных циклов, который позволит вывести на экран числа следующим образом:
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
static void Main()
{
for (int i = 1; i <= 4; ++i, Console.WriteLine()) //1
for (int j=1; j<=5; ++j)
Console.Write(" " + 2);
}
Замечание. В строке 1 в блоке модификации содержится два оператора ++i и Console.WriteLine(). В данном случае после каждого увеличения параметра i на 1 курсор будет переводиться на новую строку.
Задание. Измените программу так, чтобы таблица содержала n и m столбцов (значения n и m вводятся с клавиатуры).
Операторы безусловного перехода
В С# есть несколько операторов, изменяющих естественный порядок выполнения команд: оператор безусловного перехода goto, оператор выхода break, оператор перехода к следующей итерации цикла continue, оператор возврата из метода return и оператор генерации исключения throw.
Оператор безусловного перехода goto
Оператор безусловного перехода goto имеет формат:
goto <метка>;
В теле той же функции должна присутствовать ровно одна конструкция вида:
<метка>: <оператор>;
Оператор goto передает управление на помеченный меткой оператор. Рассмотрим пример использования оператора goto:
static void Main()
{
float x;
metka: Console.WriteLine("x="); //оператор, помеченный меткой
x = float.Parse(Console.ReadLine());
if (x!=0) Console.WriteLine("y({0})={1}", x, 1 / x );
else
{
Console.WriteLine("функция не определена");
goto metka; // передача управление метке
}
}
Следует учитывать, что использование оператора goto затрудняет чтение больших по объему программ, поэтому использовать метки нужно только в крайних случаях, например, в операторе switch.
Оператор выхода break
Оператор break используется внутри операторов ветвления и цикла для обеспечения перехода в точку программы, находящуюся непосредственно за оператором, внутри которого находится break.
Мы уже применяли оператор break для выхода из оператора switch, аналогичным образом он может применяться для выхода из других операторов.
Оператор перехода к следующей итерации цикла continue
Оператор перехода к следующей итерации цикла continue пропускает все операторы, оставшиеся до конца тела цикла, и передает управление на начало следующей итерации (повторение тела цикла). Рассмотрим оператор continue на примере.
static void Main()
{
Console.WriteLine("n=");
int n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
if (i % 2 == 0) continue;
Console.Write(" " + i);
}
}
Замечание. Операторы return и throw будут рассмотрены позже.
Практикум
Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений "Да", "Нет", "На границе" в зависимости от того, лежит ли точка внутри заштрихованной области, вне заштрихованной области или на ее границе.
Пример:
1. |
using System; namespace Hello { class Program { static void Main() { Console.Write("x="); float x = float.Parse(Console.ReadLine()); Console.Write("y="); float y = float.Parse(Console.ReadLine()); if (x * x + y * y < 9 && y > 0) Console.WriteLine("внутри"); else if (x * x + y * y > 9 || y < 0) Console.WriteLine("вне"); else Console.WriteLine("на границе"); } } } |
Области задаются графически следующим образом:
2. |
3. |
4. |
|
5. |
6. |
7. |
8. |
9. |
10. |
11. |
12. |
13. |
14. |
15. |
16. |
17. |
18. |
19. |
20. |
Составить программу.
Замечание. При решении данных задач возможно использовать оператор switch или вложенные операторы if.
Дан порядковый номер дня недели, вывести на экран его название.
Пример:
using System;
namespace Hello
{
class Program
{
static void Main()
{
Console.Write("n=");
byte n = byte.Parse(Console.ReadLine());
switch (n)
{
case 1: Console.WriteLine("понедельник"); break;
case 2: Console.WriteLine("вторник"); break;
case 3: Console.WriteLine("среда"); break;
case 4: Console.WriteLine("четверг"); break;
case 5: Console.WriteLine("пятница"); break;
case 6: Console.WriteLine("суббота"); break;
case 7: Console.WriteLine("воскресенье"); break;
default: Console.WriteLine("ВЫ ОШИБЛИСЬ"); break;
}
}
}
}
Дан порядковый номер месяца, вывести на экран количество месяцев оставшихся до конца года.
Дан порядковый номер дня месяца, вывести на экран количество дней оставшихся до конца месяца.
Дан номер масти m (1 m4), определить название масти. Масти нумеруются: "пики" - 1, "трефы" - 2, "бубны" - 3, "червы" - 4.
Дан номер карты k (6 k14), определить достоинство карты. Достоинства определяются по следующему правилу: "туз" - 14, "король" - 13, "дама" - 12, "валет" - 11, "десятка" - 10, …, "шестерка" - 6.
Дан номер масти m (1 m4) и номер достоинства карты k (6 k14). Определить полное название соответствующей карты в виде "дама пик", "шестерка бубен" и т.д.
С 1 января 1990 года по некоторый день прошло n дней, определить название текущего месяца.
С 1 января 1990 года по некоторый день прошло m месяцев, определить название текущего месяца.
С некоторой даты по настоящий день прошло m месяцев, определить название месяца неизвестной даты.
С некоторой даты по настоящий день прошло m месяцев, найти неизвестную дату.
С некоторой даты по настоящий день прошло n дней, найти неизвестную дату.
С 1 января 1990 года по некоторый день прошло m месяцев и n дней, определить название текущего месяца.
Дано расписание приемных часов врача. Вывести на экран приемные часы врача в заданный день недели (расписание придумать самостоятельно).
Проведен тест, оцениваемый в целочисленный баллах от нуля до ста. Вывести на экран оценку тестируемого в зависимости от набранного количества баллов: от 90 до 100 - "отлично", от 70 до 89 - "хорошо", от 50 до 69 - "удовлетворительно", менее 50 - "неудовлетворительно".
Дан год. Вывести на экран название животного, символизирующего заданный год по восточному календарю.
Дан возраст человека мужского пола в годах. Вывести на экран возрастную категорию: до года - "младенец", от года до 11 лет - "ребенок", от 12 до 15 лет - "подросток", от 16 до 25 лет - "юноша", от 26 до 70 лет - "мужчина", более c лет - "старик".
Дан пол человека: м - мужчина, ж - женщина. Вывести на экран возможные мужские и женские имена в зависимости от введенного пола.
Дан признак транспортного средства: a - автомобиль, в - велосипед, м - мотоцикл, с - самолет, п - поезд. Вывести на экран максимальную скорость транспортного средства в зависимости от введенного признака.
Дан номер телевизионного канала. Вывести на экран наиболее популярные программы заданного канала.
Дан признак геометрической фигуры на плоскости: к - круг, п - прямоугольник, т - треугольник. Вывести на экран периметр и площадь заданной фигуры (данные, необходимые для расчетов, запросить у пользователя).
Вывести на экран:
Замечание. Решите каждую задачу тремя способами - используя операторы цикла while, do while и for.
целые числа 1, 3, 5, …, 21 в строчку через пробел:
Пример:
using System;
namespace Hello
{
class Program
{
static void Main()
{
Console.Write("n=");
byte n = byte.Parse(Console.ReadLine());
Console.Write("while: ");
int i = 1;
while (i <= n)
{
Console.Write(" " + i);
i += 2;
}
Console.Write("do while: ");
i = 1;
do
{
Console.Write(" " + i);
i += 2;
}
while (i <= n);
Console.Write("For: ");
for (i = 1; i<=n; i+=2)
{
Console.Write(" " + i);
}
}
}
}
целые числа 10, 12, 14, …, 60 в обратном порядке в столбик;
числа следующим образом:
10 10.4
11 11.4
…
25 25.4
числа следующим образом:
25 25.5 24.8
26 26.5 25.8
…
35 35.5 34.8
таблицу соответствия между весом в фунтах и весом в килограммах для значений 1, 2, 3, …, 10 фунтов (1 фунтов = 453г);
таблицу перевода 5, 10, 15, …, 120 долларов США в рубли по текущему курсу (значение курса вводится с клавиатуры);
таблицу стоимости для 10, 20, 30,…, 100 штук товара, при условии, что одна штука товара стоит х руб (значение х водится с клавиатуры);
таблицу перевода расстояний в дюймах в сантиметры для значений 2, 4, 6, …, 12 дюймов (1 дюйм = 25.4 мм);
кубы всех целых чисел из диапазона от А до В (АВ) в обратном порядке;
все целые числа из диапазона от А до В (АВ), оканчивающиеся на цифру Х;
все целые числа из диапазона от А до В (АВ), оканчивающиеся на цифру Х или У;
все целые числа из диапазона от А до В (АВ), оканчивающиеся на любую четную цифру;
только положительные целые числа из диапазона от А до В (АВ);
все целые числа из диапазона от А до В , кратные трем (АВ);
все четные числа из диапазона от А до В , кратные трем (АВ);
только отрицательные четные числа из диапазона от А до В (АВ);
все двухзначные числа, в записи которых все цифры разные;
все двухзначные числа, в которых старшая цифра отличается от младшей не больше чем на 1;
все трехзначные числа, которые начинаются и заканчиваются на одну и ту же цифру;
все трехзначные числа, в которых хотя бы две цифры повторяются.
Вывести на экран числа следующим образом:
Пример:
1) |
1 |
1 |
1 |
1 |
1 |
1 |
|
2 |
2 |
2 |
2 |
2 |
2 |
|
3 |
3 |
3 |
3 |
3 |
3 |
|
4 |
4 |
4 |
4 |
4 |
4 |
|
|
|
|
|
|
|
using System;
namespace Hello
{
class Program
{
static void Main()
{
for (int i = 1; i<=4; ++i, Console.WriteLine())
{
for(int j=1; j<=6; ++j)
Console.Write(" " + i);
}
}
}
}
2) |
1 |
2 |
3 |
… |
10 |
|
3) |
-10 |
-9 |
-8 |
… |
12 |
|
| |||||||||||||||||||||||
1 |
2 |
3 |
… |
10 |
-10 |
-9 |
-8 |
… |
12 | ||||||||||||||||||||||||||||
1 |
2 |
3 |
… |
10 |
-10 |
-9 |
-8 |
… |
12 | ||||||||||||||||||||||||||||
1 |
2 |
3 |
… |
10 |
-10 |
-9 |
-8 |
… |
12 | ||||||||||||||||||||||||||||
|
|
|
|
|
-10 |
-9 |
-8 |
… |
12 | ||||||||||||||||||||||||||||
|
|
|
|
| |||||||||||||||||||||||||||||||||
4) |
41 |
42 |
43 |
… |
50 |
|
5) |
5 |
|
|
|
|
|
6) |
1 |
1 |
1 |
1 |
1 |
| |||||||||||||||||
51 |
52 |
53 |
… |
60 |
5 |
5 |
|
|
|
1 |
1 |
1 |
1 |
|
| ||||||||||||||||||||||
61 |
62 |
63 |
… |
70 |
5 |
5 |
5 |
|
|
1 |
1 |
1 |
|
|
| ||||||||||||||||||||||
… |
|
|
|
|
5 |
5 |
5 |
5 |
|
1 |
1 |
|
|
|
| ||||||||||||||||||||||
71 |
72 |
73 |
… |
80 |
5 |
5 |
5 |
5 |
5 |
1 |
|
|
|
|
| ||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||||||||||||||||||||||
7) |
1 |
|
|
|
|
|
8) |
6 |
6 |
6 |
6 |
6 |
|
9) |
7 |
|
|
|
|
| |||||||||||||||||
2 |
2 |
|
|
|
7 |
7 |
7 |
7 |
|
6 |
6 |
|
|
|
| ||||||||||||||||||||||
3 |
3 |
3 |
|
|
8 |
8 |
8 |
|
|
5 |
5 |
5 |
|
|
| ||||||||||||||||||||||
4 |
4 |
4 |
4 |
|
9 |
9 |
|
|
|
4 |
4 |
4 |
4 |
|
| ||||||||||||||||||||||
5 |
5 |
5 |
5 |
5 |
10 |
|
|
|
|
3 |
3 |
3 |
3 |
3 |
| ||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||||||||||||||||||||||
10) |
8 |
8 |
8 |
8 |
8 |
|
11) |
1 |
|
|
|
|
|
12) |
1 |
|
|
|
|
| |||||||||||||||||
7 |
7 |
7 |
7 |
|
1 |
2 |
|
|
|
2 |
1 |
|
|
|
| ||||||||||||||||||||||
6 |
6 |
6 |
|
|
1 |
2 |
3 |
|
|
3 |
2 |
1 |
|
|
| ||||||||||||||||||||||
5 |
5 |
|
|
|
1 |
2 |
3 |
4 |
|
4 |
3 |
2 |
1 |
|
| ||||||||||||||||||||||
4 |
|
|
|
|
1 |
2 |
3 |
4 |
5 |
5 |
4 |
3 |
2 |
1 |
| ||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||||||||||||||||||||||
13) |
0 |
1 |
2 |
3 |
4 |
|
14) |
4 |
3 |
2 |
1 |
0 |
|
15) |
1 |
|
|
|
|
| |||||||||||||||||
0 |
1 |
2 |
3 |
|
3 |
2 |
1 |
0 |
|
0 |
|
|
|
|
| ||||||||||||||||||||||
0 |
1 |
2 |
|
|
2 |
1 |
0 |
|
|
2 |
2 |
|
|
|
| ||||||||||||||||||||||
0 |
1 |
|
|
|
1 |
0 |
|
|
|
0 |
0 |
|
|
|
| ||||||||||||||||||||||
0 |
|
|
|
|
0 |
|
|
|
|
3 |
3 |
3 |
|
|
| ||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
|
|
| ||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
4 |
4 |
4 |
4 |
|
| ||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
|
| ||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
5 |
5 |
5 |
5 |
5 |
| ||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
0 | ||||||||||||||||||||||
|
|
|
|
| |||||||||||||||||||||||||||||||||
16) |
8 |
|
|
|
|
|
17) |
1 |
|
|
|
|
|
18) |
9 |
|
|
|
|
| |||||||||||||||||
7 |
|
|
|
|
6 |
|
|
|
|
4 |
|
|
|
|
| ||||||||||||||||||||||
7 |
7 |
|
|
|
2 |
2 |
|
|
|
8 |
8 |
|
|
|
| ||||||||||||||||||||||
6 |
6 |
|
|
|
7 |
7 |
|
|
|
3 |
3 |
|
|
|
| ||||||||||||||||||||||
6 |
6 |
6 |
|
|
3 |
3 |
3 |
|
|
7 |
7 |
7 |
|
|
| ||||||||||||||||||||||
5 |
5 |
5 |
|
|
8 |
8 |
8 |
|
|
2 |
2 |
2 |
2 |
|
| ||||||||||||||||||||||
5 |
5 |
5 |
5 |
|
4 |
4 |
4 |
4 |
|
6 |
6 |
6 |
6 |
6 |
| ||||||||||||||||||||||
4 |
4 |
4 |
4 |
|
9 |
9 |
9 |
9 |
|
1 |
1 |
1 |
1 |
1 |
| ||||||||||||||||||||||
|
|
|
|
| |||||||||||||||||||||||||||||||||
19) |
3 |
|
|
|
|
|
20) |
2 |
2 |
2 |
2 |
2 |
|
| |||||||||||||||||||||||
0 |
|
|
|
|
3 |
4 |
5 |
6 |
7 | ||||||||||||||||||||||||||||
2 |
3 |
|
|
|
2 |
2 |
2 |
2 |
| ||||||||||||||||||||||||||||
9 |
0 |
|
|
|
2 |
3 |
4 |
5 |
| ||||||||||||||||||||||||||||
2 |
2 |
3 |
|
|
2 |
2 |
2 |
|
| ||||||||||||||||||||||||||||
8 |
9 |
0 |
|
|
1 |
2 |
3 |
|
| ||||||||||||||||||||||||||||
2 |
2 |
2 |
3 |
|
2 |
2 |
|
|
| ||||||||||||||||||||||||||||
7 |
8 |
9 |
0 |
|
0 |
1 |
|
|
| ||||||||||||||||||||||||||||
2 |
2 |
2 |
2 |
3 |
2 |
|
|
|
| ||||||||||||||||||||||||||||
6 |
7 |
8 |
9 |
0 |
-1 |
|
|
|
|