- •Учебное пособие по дисциплине «программирование»
- •Оглавление
- •1 С# 6.0 и платформа .Net 4.6 6
- •С# 6.0 и платформа .Net 4.6
- •Платформа Microsoft .Net Framework.
- •Понятия приложения, проекта, решения
- •Среда разработки Visual Studio .Net
- •Создание первого проекта
- •Компиляция и выполнение программы в среде clr
- •Технология объектно-ориентированного программирования
- •Состав языка
- •Типы данных
- •Переменные и константы
- •Организация ввода-вывода данных. Форматирование.
- •Вывод данных
- •Ввод данных
- •Операции
- •3. Отрицание:
- •9. Условная операция.
- •Выражения и преобразование типов
- •Операторы языка c#
- •Операторы следования
- •Операторы ветвления
- •Оператор выбора switch
- •Операторы цикла
- •Операторы безусловного перехода
- •Методы: основные понятия
- •Необязательные параметры
- •Именованные параметры
- •Перегрузка методов
- •Рекурсивные методы
- •Обработка исключений
- •Оператор try
- •Операторы checked и unchecked
- •Генерация собственных исключений
- •Полезные совет
- •Массивы
- •Одномерные массивы
- •Многомерные массивы
- •Ступенчатые массивы
- •Оператор foreach и его использование при работе с массивами
- •Символы и строки
- •Символы char
- •Неизменяемые строки string
- •Изменяемые строки
- •Регулярные выражения
- •Метасимволы в регулярных выражениях
- •Поиск в тексте по шаблону
- •Редактирование текста
- •Организация с#-системы ввода-вывода
- •Байтовый поток
- •Символьный поток
- •Двоичные потоки
- •Перенаправление стандартных потоков
- •Работа с файловой системой
- •Работа с каталогами Абстрактный класс FileSystemInfo
- •Класс DirectoryInfo
- •Класс Directory
- •Работа с файлами Класс Filelnfo
- •Класс File
- •Основные понятия
- •Данные: поля и константы
- •Конструкторы
- •Конструкторы экземпляра
- •Конструкторы класса
- •Свойства
- •«Один класс – один файл»,
- •Классы (продолжение)
- •Деструкторы
- •Индексаторы
- •Операции класса
- •Унарные операции
- •Бинарные операции
- •Операции преобразования типов
- •Иерархия классов
- •Наследование
- •Использование защищенного доступа
- •Наследование конструкторов
- •1) Позволяет вызвать конструктор базового класса:
- •2) Позволяет получить доступ к члену базового класса, который скрыт "за" членом производного класса.
- •Многоуровневая иерархия
- •Переменные базового класса и производного класса
- •Виртуальные методы
- •Абстрактные методы и классы
- •Запрет наследования
- •Обобщенные типы
- •Значения по умолчанию
- •Статические поля обобщенных классов
- •Ограничения универсальных типов
- •Использование нескольких универсальных параметров
- •Обобщенные методы
- •Наследование обобщенных типов
- •Анонимные типы
- •Методы расширения
- •Интерфейсы
- •Введение в интерфейсы
- •Интерфейсы в преобразованиях типов
- •Обобщенные интерфейсы
- •Явное применение интерфейсов
- •Клонирование объектов. Интерфейс iCloneable
- •Сортировка объектов. Интерфейс iComparable
- •Применение компаратора
- •Ковариантность и контравариантность обобщенных интерфейсов
- •Структуры
- •Перечисления enum
- •Коллекции
- •Введение в коллекции
- •Необобщенные коллекции
- •Обобщенные коллекции
- •Инициализация словарей
- •Класс ObservableCollection
- •Индексаторы и создание коллекций
- •Интерфейсы iEnumerable и iEnumerator
- •Итераторы и оператор yield
- •Именованный итератор
- •Класс Hashtable
- •Делегаты, события и лямбды
- •Делегаты
- •События
- •Класс данных события AccountEventArgs
- •Анонимные методы
- •Ковариантность и контравариантность делегатов
- •Ковариантность и контравариантность в обобщенных делегатах
- •Делегаты Action, Predicate и Func
- •Встроенные Методы (Expression–Bodied)
- •Сериализация
- •Введение в сериализацию объектов
- •Атрибут Serializable
- •Формат сериализации
- •Бинарная сериализация. BinaryFormatter
- •Сериализация в формат soap. SoapFormatter
- •Сериализация в xml. XmlSerializer
- •Сериализация в json. DataContractJsonSerializer
- •Сборка мусора, управление памятью и указатели
- •Сборщик мусора в c#
- •Класс System.Gc
- •Финализируемые объекты
- •Создание деструкторов
- •Интерфейс iDisposable
- •Комбинирование подходов
- •Общие рекомендации по использованию Finalize и Dispose
- •Указатели
- •Ключевое слово unsafe
- •Операции * и &
- •Получение адреса
- •Операции с указателями
- •Указатель на другой указатель
- •Указатели на структуры, члены классов и массивы
- •Указатели на массивы и stackaloc
- •Оператор fixed и закрепление указателей
- •Dlr в c#. Ключевое слово dynamic
- •Сборки .Net
- •Роль сборок в приложениях .Net
- •Манифест сборки
- •Атрибуты сборки
- •Разделяемые сборки. Добавление сборки в gac
- •Строгое имя сборки
- •Многопоточность
- •Введение в многопоточность. Класс Thread
- •Получение информации о потоке
- •Статус потока
- •Приоритеты потоков
- •Создание потоков. Делегат ThreadStart
- •Потоки с параметрами и ParameterizedThreadStart
- •Синхронизация потоков
- •Мониторы
- •Класс AutoResetEvent
- •Мьютексы
- •Семафоры
- •Использование таймеров
- •Параллельное программирование и библиотека tpl
- •Задачи и класс Task
- •Массив задач
- •Работа с классом Task
- •Свойства класса Task
- •Возвращение результатов из задач
- •Задачи продолжения
- •Класс Parallel
- •Выход из цикла
- •Отмена задач и параллельных операций. CancellationToken
- •Отмена параллельных операций Parallel
- •Aсинхронное программирование
- •Асинхронные делегаты
- •IAsyncResult и методы BeginInvoke/EndInvoke
- •Асинхронные методы, async и await
- •Последовательный и параллельный вызов асинхронных методов
- •Обработка ошибок в асинхронных методах
- •Обработка исключений в async void-методах
- •Обработка нескольких исключений. WhenAll
- •Await в блоках catch и finally
- •Отмена асинхронных операций
- •Рефлексия
- •Введение в рефлексию. Класс System.Type
- •Получение типа
- •Применение рефлексии и исследование типов
- •Получение информации о методах
- •Получение конструкторов
- •Получение информации о полях и свойствах
- •Поиск реализованных интерфейсов
- •Динамическая загрузка сборок и позднее связывание
- •Позднее связывание
- •Атрибуты в .Net
- •Ограничение применения атрибута
- •Основы linq
- •Методы расширения linq
- •Список используемых методов расширения linq
- •Фильтрация выборки и проекция
- •Фильтрация
- •Выборка сложных объектов
- •Сложные фильтры
- •Проекция
- •Переменые в запросах и оператор let
- •Выборка из нескольких источников
- •Сортировка
- •Множественные критерии сортировки
- •Работа с множествами
- •Разность множеств
- •Пересечение множеств
- •Объединение множеств
- •Удаление дубликатов
- •Агрегатные операции
- •Метод Aggregate
- •Получение размера выборки. Метод Count
- •Получение суммы
- •Максимальное, минимальное и среднее значения
- •Методы Skip и Take
- •Группировка
- •Соединение коллекций. Метод Join, GroupJoin и Zip
- •Метод Zip
- •Методы All и Any
- •Отложенное и немедленное выполнение linq
- •Делегаты и анонимные методы в запросах linq
- •Работа с xml в c#
- •Работа с xml с помощью классов System.Xml
- •Изменение xml-документа
- •Удаление узлов
- •Linq to Xml. Создание Xml-документа
- •Выборка элементов в linq to xml
- •Изменение документа в linq to xml
- •Введение в Parallel linq. Метод AsParallel
- •Метод AsParallel
- •Метод ForAll
- •Метод AsOrdered
- •Обработка ошибок и отмена операции
- •Прерывание параллельной операции
- •Службы Windows
- •Создание службы для Windows
- •Установка службы
- •Сетевое программирование в с# и .Net
- •Основы работы с сетями в c# и .Net
- •Введение в сети и протоколы
- •Адреса в .Net
- •Отправка запросов
- •Класс WebClient
- •Классы WebRequest и WebResponse
- •Отправка данных в запросе
- •Обработка ошибок при запросах
- •Класс Socket
- •Общий принцип работы сокетов
- •Клиент-серверное приложение на сокетах tcp
- •Протокол tcp
- •Многопоточное клиент-серверное приложение tcp
- •Консольный tcp-чат
- •NetworkStream и текстовые потоки
- •Потоки бинарных данных
- •Протокол http
- •Руководство по Universal Windows Platform
- •Руководство по ado.Net и работе с базами данных
- •Глава 3. Работа с SqlDataAdapter и DataSet
- •Глава 4. Linq to sql
- •Введение в Entity Framework
- •Что такое Entity Framework
- •Способы взаимодействия с бд
- •Первое приложение с Entity Framework. Подход Code First
- •Взаимодействие с данными. Подходы
- •Code First к существующей базе данных
- •Соглашения по наименованию в Code First
- •Сопоставление типов
- •Названия таблиц и столбцов
- •Автоматизация Code First
- •Автоматизация Code First и ef Power Tools
- •Основы Entity Framework
- •Основные операции с данными
- •Добавление
- •Редактирование
- •Удаление
- •Строка подключения
- •Строка подключения в Model First и Database First
- •Навигационные свойства и lazy loading
- •Способы получения связанных данных
- •Связь один-к-одному
- •Связь один ко многим
- •Связь один ко многим. Практический пример
- •Связь многие ко многим
- •Инициализация базы данных
- •Параллелизм в Entity Framework
- •Управление транзакциями
- •Руководство по программированию для Xamarin Forms
- •Руководство по asp.Net Core
- •Паттерны проектирования в c# и .Net
- •Руководство по игростроению на платформе MonoGame
- •Задания для самостоятельного выполнения Рекомендации по выполнению практикума
- •Лабораторная работа. Алгебра логики и логические задачи.
- •Лабораторная работа. Алгоритмы. Алгоритмизация.
- •Цель и порядок работы
- •Контрольные вопросы
- •Задания
- •Лабораторная работа. Основы c# (.Net)
- •Работа с консолью и класс Console
- •Лабораторная работа. Основные операции с#. Выражения. Преобразование типов.
- •Лабораторная работа. Операторы языка c#
- •Лабораторная работа. Методы: основные понятия
- •Лабораторная работа. Рекурсивные методы
- •I. Разработать рекурсивный метод (возвращающий значение):
- •II. Разработка рекурсивных методов ( не возвращающих значений):
- •Лабораторная работа. Обработка исключений
- •Лабораторная работа. Массивы
- •I. Дана последовательность целых чисел.
- •II. Дана последовательность из n действительных чисел.
- •III. Дан массив размером n×n, элементы которого целые числа.
- •IV. Дан массив размером n×n, элементы которого целые числа.
- •Лабораторная работа. Символы и строки
- •Лабораторная работа. Регулярные выражения
- •Лабораторная работа. Организация с#-системы ввода-вывода
- •I. Работа с двоичными файлами:
- •II. Работа с текстовым (символьным) файлом.
- •Лабораторная работа. Работа с файловой системой
- •Лабораторная работа. Классы: основные понятия, данные, методы, конструкторы, свойства
- •Лабораторная работа. Классы: деструкторы, индексаторы, операции класса, операции преобразования типов
- •Лабораторная работа. Иерархия классов
- •Лабораторная работа. Интерфейсы и структуры
- •Лабораторная работа. Коллекции пространства имен System.Collection
- •Решить следующие задачи с использованием класса Stack:
- •Решить следующие задачи с использованием класса Queue:
- •Решить задачи из предыдущей лабораторной работы, используя класс ArrayList.
- •Лабораторная работа. Делегаты
- •Лабораторная работа. Сборки .Net
- •Лабораторная работа. Многопоточность
- •Лабораторная работа. Парелельное программирование и библиотека tpl.
- •Лабораторная работа. Сетевое программирование c#.
- •Лабораторная работа. Windows Universal Platform.
- •Лабораторная работа. Wup - проект.
- •Лабораторная работа. Ado.Net работа с базами данных
- •1. Библиотека
- •2. Университет
- •3. Оптовая база
- •4. Производство
- •5. Сеть магазинов
- •6. Авторемонтные мастерские
- •7. Деканат
- •8. Договорная деятельность организации
- •9. Поликлиника
- •10. Телефонная станция
- •11. Спорт
- •12. Сельскохозяйственные работы
- •13. Городской транспорт
- •14. География
- •15. Домоуправление
- •16. Аэропорт
- •Лабораторная работа. Entity Framework
- •1. Библиотека
- •2. Университет
- •3. Оптовая база
- •4. Производство
- •5. Сеть магазинов
- •6. Авторемонтные мастерские
- •7. Деканат
- •8. Договорная деятельность организации
- •9. Поликлиника
- •10. Телефонная станция
- •11. Спорт
- •12. Сельскохозяйственные работы
- •13. Городской транспорт
- •14. География
- •15. Домоуправление
- •16. Аэропорт
- •Лабораторная работа. Xamarin Forms
- •Лабораторная работа. Asp.Net mvc 5 / Core
Лабораторная работа. Сетевое программирование c#.
Задания
Реализовать программу "talk" (клиент и сервер), позволяющую организовать диалог двух пользователей. Текстовая строка посылается партнеру по нажатию "Enter". Соединение разрывается при наборе строки, содержащей один-единственный символ "." (точка) (2).
Реализовать пару программ (клиент--сервер), позволяющую переслать произвольный (бинарный) файл с одной машины на другую (2).
Сетевой "Морской бой" (4).
Сетевые "Крестики-нолики" на бесконечном поле (3).
Сетевая игра "Быки и коровы" (3). (Каждый играющий задумывает четырехзначное число. Задача -- угадать число соперника. На очередном ходе игрок предлагает число и получает в ответ число быков и коров, бык соответствует правильной цифре на своем месте, корова -- цифре, которая содержится в записи числа, но названа не на своем месте.)
Сетевая игра "Го" (5) http://ournetlife.ru/category/games/ho_-_kitaiskaya_logicheskaya_igra.html
Реализовать сервер и клиент так, чтобы сервер мог работать с несколькими клиентами одновременно (с помощью потоков на сервере). Каждый клиент посылает на сервер приветствие, после чего сервер ждёт случайное число секунд от 1 до 10 и посылает ответ клиенту.
Реализовать клиент, который запрашивает у пользователя пароль, вычисляет его хеш-сумму (CRC-32), передаёт хеш-сумму на сервер, после чего сервер сравнивает её со своей хеш-суммой (которую он вычисляет по паролю так же, как клиент) и посылает клиенту подтверждение - пароль верен или нет.
Реализовать сервер, который хранит базу данных, состоящую из записей, каждая запись имеет несколько полей (например - фамилия, имя, отчество, группа). Клиент может совершать операции с этой базой данных, которые пользователь вводит клиенту с клавиатуры. Операции такие - добавить запись в базу данных, удалить запись, просмотреть все записи.
Реализовать сервер, который может передавать команды системе на исполнение (с помощью функции system()). Пользователь вводит команды интерактивно в клиенте, клиент передаёт их на сервер, сервер печатает команду и исполняет её.
Проект "Файловый сервер": Filesrv.zip
Варианты
Проект "Файловый сервер". Реализовать команду "get" для клиента, которая получает файл от сервера.
Проект "Файловый сервер". Реализовать команду "put" для клиента, которая пересылает файл на сервер.
Проект "Файловый сервер". Реализовать команду "ls" для клиента, которая получает от сервера список файлов в текущей директории и распечатывает его на экране терминала.
Проект "Файловый сервер". Реализовать команду "mget" для клиента, которая получает несколько файлов от сервера. Список файлов задается с использованием звездочки "*" в имени файла.
Проект "Файловый сервер". Реализовать команду "mput" для клиента, которая передает серверу несколько файлов. Список файлов задается с использованием звездочки "*" в имени файла.
Лабораторная работа. Windows Universal Platform.
Задания
Общая часть задания: написать Windows Universal Platform -приложение, заголовок главного окна которого содержит Ф. И. О., группу и номер варианта. В программе должна быть предусмотрена обработка исключений, возникающих из-за ошибочного ввода пользователя
Вариант 1
Создать меню с командами Input, Calc и Exit. При выборе команды Input открывается диалоговое окно, содержащее: три поля типа TextBox для ввода длин трех сторон треугольника; группу из двух флажков (Периметр и Площадь) типа CheckBox; кнопку типа Button. Обеспечить возможность: ввода длин трех сторон треугольника; выбора режима с помощью флажков: подсчет периметра и/или площади треугольника. При выборе команды Calc открывается диалоговое окно с результатами. При выборе команды Exit приложение завершается.
Вариант 2
Создать меню с командами Size, Color, Paint, Quit. Команда Paint недоступна. При выборе команды Quit приложение завершается. При выборе команды Size открывается диалоговое окно, содержащее:
два поля типа TextBox для ввода длин сторон прямоугольника;
группу из трех флажков (Red, Green, Blue) типа CheckBox;
кнопку типа Button.
Обеспечить возможность:
ввода длин сторон прямоугольника в пикселах в поля ввода;
выбора его цвета с помощью флажков.
После задания параметров команда Paint становится доступной. При выборе команды Paint в главном окне приложения выводится прямоугольник заданного размера и сочетания цветов или выдается сообщение, если введенные размеры превышают размер окна.
Вариант 3
Создать меню с командами Input, Work, Exit.
При выборе команды Exit приложение завершает работу. При выборе команды Input открывается диалоговое окно, содержащее:
три поля ввода типа TextBox с метками Radius, Height, Density;
группу из двух флажков (Volume, Mass) типа CheckBox;
кнопку типа Button.
Обеспечить возможность:
ввода радиуса, высоты и плотности конуса;
выбора режима с помощью флажков: подсчет объема и/или массы конуса.
При выборе команды Work открывается окно сообщений с результатами.
Вариант 4
Создать меню с командами Input, Calc, Draw, Exit.
При выборе команды Exit приложение завершает работу. При выборе команды Input открывается диалоговое окно, содержащее:
поле ввода типа TextBox с меткой Radius;
группу из двух флажков (Square, Length) типа CheckBox;
кнопку типа Button.
Обеспечить возможность:
ввода радиуса окружности;
выбора режима с помощью флажков: подсчет площади круга (Square) и/или длины окружности (Length).
При выборе команды Calc открывается окно сообщений с результатами. При выборе команды Draw в центре главного окна выводится круг введенного радиуса или выдается сообщение, что рисование невозможно (если диаметр превышает размеры рабочей области).
Вариант 5
Создать меню с командами input, Calc, About.
При выборе команды About открывается окно с информацией о разработчике. При выборе команды Input открывается диалоговое окно, содержащее:
три поля ввода типа TextBox с метками Number 1, Number 2, Number 3;
группу из двух флажков (Summ, Least multiple) типа CheckBox;
кнопку типа Button.
Обеспечить возможность ввода трех чисел и выбора режима вычислений с помощью флажков: подсчет суммы трех чисел (Summ) и/или наименьшего общего кратного двух первых чисел (Least multiple). При выборе команды Calc открывается диалоговое окно с результатами.
Вариант 6
Создать меню с командами Input, Calc, Quit.
Команда Calc недоступна. При выборе команды Quit приложение завершается. При выборе команды Input открывается диалоговое окно, содержащее:
два поля ввода типа TextBox с метками Number 1, Number 2;
группу из трех флажков (Summa, Max divisor, Multiply) типа CheckBox;
кнопку типа Button.
Обеспечить возможность:
ввода двух чисел;
выбора режима вычислений с помощью флажков (можно вычислять в любой комбинации такие величины, как сумма, наибольший общий делитель и произведение двух чисел).
При выборе команды Calc открывается окно сообщений с результатами.
Вариант 7
Создать меню с командами Begin, Help, About.
При выборе команды About открывается окно с информацией о разработчике. При выборе команды Begin открывается диалоговое окно, содержащее:
поле ввода типа TextBox с меткой input;
метку типа Label для вывода результата;
группу из трех переключателей (2, 8, 16) типа RadioButton;
две кнопки типа Button — Do и ОК.
Обеспечить возможность:
ввода числа в десятичной системе в поле input;
выбора режима преобразования с помощью переключателей: перевод в двоичную, восьмеричную или шестнадцатеричную систему счисления.
При щелчке на кнопке Do должен появляться результат перевода.
Вариант 8
Создать меню с командами Input color, Change, Exit, Help.
При выборе команды Exit приложение завершает работу. При выборе команды Input color открывается диалоговое окно, содержащее:
три поля ввода типа TextBox с метками Red, Green, Blue;
группу из двух флажков (Left, Right) типа CheckBox;
кнопку типа Button.
Обеспечить возможность ввода RGB-составляющих цвета. При выборе команды Change цвет главного окна изменяется на заданный (левая, правая или обе половины окна в зависимости от установки флажков).
Вариант 9
Создать меню с командами Input size, Choose, Change, Exit.
При выборе команды Exit приложение завершает работу. Команда Change недоступна. При выборе команды Input size открывается диалоговое окно, содержащее:
два поля ввода типа TextBox с метками Size х, Size у;
кнопку типа Button.
При выборе команды Choose открывается диалоговое окно, содержащее:
группу из двух переключателей (Increase, Decrease) типа RadloButton;
кнопку типа Button.
Обеспечить возможность ввода значений в поля Size х и Size у. Значения интерпретируются как количество пикселов, на которое надо изменить размеры главного окна (увеличить или уменьшить в зависимости от положения переключателей).
После ввода значений команда Change становится доступной. При выборе этой команды размеры главного окна увеличиваются или уменьшаются на введенное количество пикселов.
Вариант 10
Создать меню с командами Begin, Work, About.
При выборе команды About открывается окно с информацией о разработчике. При выборе команды Begin открывается диалоговое окно, содержащее:
поле ввода типа TextBox с меткой Input word;
группу из двух переключателей (Upper case, Lower case) типа RadioButton;
кнопку типа Button.
Обеспечить возможность ввода слова и выбора режима перевода в верхний или нижний регистр в зависимости от положения переключателей. При выборе команды Work открывается диалоговое окно с результатом перевода.
Вариант 11
Создать меню с командами Input color, Change, Clear.
При выборе команды Input color открывается диалоговое окно, содержащее:
группу из двух флажков (Up, Down) типа CheckBox;
группу из трех переключателей (Red, Green, Blue) типа RadioButton;
кнопку типа Button.
Обеспечить возможность:
выбора цвета с помощью переключателей;
ввода режима, определяющего, какая область закрашивается: все окно, его верхняя или нижняя половина.
При выборе команды Change цвет главного окна изменяется на заданный (верхняя, нижняя или обе половины в зависимости от введенного режима). При выборе команды Clear восстанавливается первоначальный цвет окна.
Вариант 12
Создать меню с командами Translate, Help, About, Exit.
При выборе команды Exit приложение завершает работу. При выборе команды Translate открывается диалоговое окно, содержащее:
поле ввода типа TextBox с меткой Binary number;
поле ввода типа TextBox для вывода результата (read-only);
группу из трех переключателей (8, 10, 16) типа RadioButton;
кнопку Do типа Button.
Обеспечить возможность:
ввода числа в двоичной системе в поле Binary number;
выбора режима преобразования с помощью переключателей: перевод в восьмеричную, десятичную или шестнадцатеричную систему счисления.
При щелчке на кнопке Do должен появляться результат перевода.
Вариант 13
Создать меню с командами Reverse, About, Exit.
При выборе команды About открывается окно с информацией о разработчике. При выборе команды Reverse открывается диалоговое окно, содержащее:
поле ввода типа TextBox с меткой Input;
группу из двух переключателей (Upper case, Reverse) типа CheckBox;
кнопку ОК типа Button.
Обеспечить возможность ввода фразы и выбора режима: перевод в верхний регистр и/или изменение порядка следования символов на обратный в зависимости от состояния переключателей. Результат преобразования выводится в исходное поле ввода.
Вариант 14
Создать меню с командами Input, Show и Exit.
При выборе команды Exit приложение завершает работу. При выборе команды Input открывается диалоговое окно вида:
Обеспечивается возможность ввода координат двух точек и выбора режима с помощью флажков length и koef: подсчет длины отрезка, соединяющего эти точки, и/или углового коэффициента.
При выборе команды Show открывается окно сообщений с результатами подсчета.
Вариант 15
Создать меню с командами Input, About и Exit.
При выборе команды Exit приложение завершает работу. При выборе команды About открывается окно с информацией о разработчике. При выборе команды Input открывается диалоговое окно вида:
Обеспечивается возможность ввода суммы в рублях и перевода ее в евро и доллары по обычному или льготному курсу. Поля Euro и $ доступны только для чтения.
Вариант 16
Создать меню с командами Begin, Work, About.
При выборе команды About открывается окно с информацией о разработчике. При выборе команды Begin открывается диалоговое окно, содержащее:
два поля ввода типа TextBox;
группу из двух переключателей (First letter, All letters) типа RadioButton;
кнопку типа Button.
Обеспечить возможность ввода предложения и выбора режима его преобразования: либо начинать с прописной буквы каждое слово (First letter), либо перевести все буквы в верхний регистр (All letters). При выборе команды Work открывается диалоговое окно с результатом преобразования.
Вариант 17
Написать анализатор текстовых файлов, выводящий информацию о количестве слов в тексте, а также статистическую информацию о введенной пользователем букве.
Создать следующую систему меню:
Файл
Загрузить текст
Выход
Анализ
Количество слов
Повторяемость буквы
При выборе файла для загрузки использовать объект типа OpenFileDialog. При выборе команды Количество слов программа должна вывести в окно сообщений количество слов в тексте.
При выборе команды Повторяемость буквы программа предлагает пользователю ввести букву, а затем выводит количество ее повторений без учета регистра в окно сообщений.
Вариант 18
Создать редактор текстовых файлов с возможностью сохранения текста в формате HTML. Создать следующую систему меню:
Файл
Загрузить текст
Сохранить как текст
Сохранить как HTML
Выход
При выборе файла для загрузки использовать объект OpenFi leDialog. При выборе файла для сохранения использовать объект SaveFileDlalog. Для редактирования текста использовать объект Memo.
При сохранении текста в формате HTML текст записывать в файл с заменой:
всех пробелов на символы ;
всех символов перевода строки на символы <BR>;
всех символов < на символы <;
всех символов > На символы >:;
всех символов & на символы &атр;;
всех символов " (двойные кавычки) на символы Squot;.
Вариант 19
Создать меню с командами Input, Draw, Clear.
При выборе команды Input открывается диалоговое окно, содержащее:
четыре поля для ввода координат двух точек;
группу из трех переключателей (Red, Green, Blue) типа RadioButton;
кнопку типа Button.
При выборе команды Draw в главное окно выводится отрезок прямой выбранного цвета с координатами концов отрезка, заданными в диалоговом окне. При выборе команды Clear отрезок стирается.
Вариант 20
Создать меню с командами Input, Change , Exit.
При выборе команды Exit приложение завершает работу. Команда Change недоступна. В центре главного окна выведен квадрат размером 10 0 х 10 0 пикселов. При выборе команды Input открывается диалоговое окно, содержащее:
два поля ввода типа TextBox с метками Size х, Size у;
группу из двух переключателей (Increase, Decrease) типа RadioButton;
кнопку типа Button.
Обеспечить возможность ввода значений в поля Size х и Size у. Значения интерпретируются как количество пикселов, на которое надо изменить размеры квадрата, выведенного в главное окно (увеличить или уменьшить в зависимости от положения переключателей).
После ввода значений команда Change становится доступной. При выборе этой команды размеры квадрата увеличиваются или уменьшаются на введенное количество пикселов. Если квадрат выходит за пределы рабочей области окна, выдается сообщение.
