- •Лекция 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. Самостоятельная работа
- •Дополнения Дополнение. Операции с#
- •Дополнение. Математические функции языка с#
- •Литература
Выражения и преобразование типов
Выражение - это синтаксическая единица языка, определяющая способ вычисления некоторого значения. Выражения состоят из операндов, операций и скобок. Каждый операнд является в свою очередь выражением или одним из его частных случаев - константой, переменной или функций.
Замечание. Список математических функции, реализованных в С# приведен в приложении 2.
Примеры выражений:
(а + 0.12)/6
х && у || !z
(t * Math.Sin(x)-l.05e4)/((2 * k + 2) * (2 * k + 3))
Операции выполняются в соответствии с приоритетами (см. приложение 1). Для изменения порядка выполнения операций используются круглые скобки. Если в одном выражении записано несколько операций одинакового приоритета, то унарные операции, условная операция и операции присваивания выполняются справа налево, остальные - слева направо. Например,
а = b = с означает a=(b=c),
a+b+c означает (а + b) + с.
Задания
Укажите последовательность выполнения операций в данном выражении:
(x*x+Math.Sin(x+1))/x-2.
Запишите заданное математическое выражение по правилам языка С#:
Результат вычисления выражения характеризуется значением и типом. Например, если а и b - переменные целого типа и описаны так:
int а = 2, b = 5;
то выражение а + b имеет значение 7 и тип int.
В выражение могут входить операнды различных типов. Если операнды имеют одинаковый тип, то результат операции будет иметь тот же тип. Если операнды разного типа, то перед вычислениями выполняются преобразования более коротких типов в более длинные для сохранения значимости и точности. Иерархия типов данных приведена в следующей схеме:
Преобразование типов в выражениях происходит неявно (без участия программистов) следующим образом: Если одни из операндов имеет тип, изображенный на более низком уровне, чем другой, то он приводится к типу второго операнда при наличии пути между ними. Если пути нет, то возникает ошибка компиляции (чтобы ее избежать, необходимо воспользоваться операцией явного преобразования). Если путей преобразования несколько, то выбирается наиболее короткий, не содержащий пунктирных линий.
Практикум
Написать программу, которая подсчитывает:
периметр квадрата, площадь которого равна а;
Пример:
using System;
namespace Example
{
class Program
{
static void Main()
{
Console.Write("s= ");
float s = float.Parse(Console.ReadLine());
double p = 4 * Math.Sqrt(s);
Console.WriteLine("p=" + p);
}
}
}
площадь равностороннего треугольника, периметр которого равен p;
расстояние между точками с координатами a, b и с, d;
среднее арифметическое кубов двух данных чисел;
среднее геометрическое модулей двух данных чисел;
гипотенузу прямоугольного треугольника по двум данным катетам a, b.
площадь прямоугольного треугольника по двум катетам a, b.
периметр прямоугольного треугольника по двум катетам a, b.
ребро куба, площадь полной поверхности которого равна s;
ребро куба, объем которого равен v;
периметр треугольника, заданного координатами вершин x1, y1, x2, y2, x3, y3;
площадь треугольника, заданного координатами вершин x1, y1, x2, y2, x3, y3;
радиус окружности, длина которой равна l;
радиус окружности, площадь круга которой равна s;
площадь равнобедренной трапеции с основаниями a и b и углом при большем основании;
площадь кольца с внутренним радиусом r1 и внешним r2;
радиус окружности, вписанной в равносторонний треугольник со стороной а;
радиус окружности, описанной около равностороннего треугольника со стороной а;
сумму членов арифметической прогрессии, если известен ее первый член, разность и число членов прогрессии;
сумму членов геометрической прогрессии, если известен ее первый член, знаменатель и число членов прогрессии.
Написать программу, которая определяет:
максимальное значение для двух различных вещественных чисел;
Пример:
using System;
namespace Hello
{
class Program
{
static void Main()
{
Console.Write("a= "); float a = float.Parse(Console.ReadLine());
Console.Write("b= "); float b = float.Parse(Console.ReadLine());
float max=(a>b)?a:b;
Console.WriteLine("max=" + max);
}
}
}
является ли заданное целое число четным;
является ли заданное целое число нечетным;
если целое число М делится на целое число N, то на экран выводится частное от деления, в противном случае выводится сообщение "M на N нацело не делится";
оканчивается ли данное целое число цифрой 7;
имеет ли уравнение ax2+bx+c=0 решение, где a, b, c – данные вещественные числа;
какая из цифр двухзначного числа больше: первая или вторая;
одинаковы ли цифры данного двухзначного числа;
является ли сумма цифр двухзначного числа четной;
является ли сумма цифр двухзначного числа нечетной;
кратна ли трем сумма цифр двухзначного числа;
кратна ли числу А сумма цифр двухзначного числа;
какая из цифр трехзначного числа больше: первая или последняя;
какая из цифр трехзначного числа больше: первая или вторая;
какая из цифр трехзначного числа больше: вторая или последняя;
все ли цифры трехзначного числа одинаковые;
существует ли треугольник с длинами сторон a, b, c;
является ли треугольник с длинами сторон a, b, c прямоугольным;
является ли треугольник с длинами сторон a, b, c равнобедренным;
является ли треугольник с длинами сторон a, b, c равносторонним.