Методические указания для студентов по выполнению практических работ ПМ.03 «РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ БИЗНЕСА»

Министерство общего и профессионального образования Свердловской области
ГАПОУ СО «ЕКАТЕРИНБУРГСКИЙ ЭКОНОМИКО-ТЕХНОЛОГИЧЕСКИЙ КОЛЛЕДЖ»












СБОРНИК МЕТОДИЧЕСКИХ УКАЗАНИЙ

ДЛЯ СТУДЕНТОВ ПО ВЫПОЛНЕНИЮ

ПРАКТИЧЕСКИХ РАБОТ

ПМ.03 «РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ БИЗНЕСА»

профессиональный цикл

технический профиль


специальности 09.02.04 «Информационные системы»


ДЛЯ СТУДЕНТОВ ОЧНОЙ И ЗАОЧНОЙ ФОРМ ОБУЧЕНИЯ









Екатеринбург, 2015 г.










Методические рекомендации печатаются по решению Методического Совета ГАПОУ СО «ЕЭТК» № 01 от 28.08.2015 г.



Составитель: Серкова Е. Г., преподаватель ГАПОУ СО «ЕЭТК»





Методические указания для выполнения практических работ являются частью основной профессиональной образовательной программы ГАПОУ СО «Екатеринбургский экономико-технологический колледж» по специальностям СПО 09.02.04 «Информационные системы» в соответствии с требованиями ФГОС СПО третьего поколения.
Методические указания по выполнению практических работ адресованы студентам очной (заочной) формы обучения.
Методические указания включают в себя учебную цель, перечень образовательных результатов, заявленных во ФГОС СПО третьего поколения, задачи, обеспеченность занятия, краткие теоретические и учебно-методические материалы по теме, вопросы для закрепления теоретического материала, задания для практической работы студентов и инструкцию по ее выполнению, порядок и образец отчета о проделанной работе.


.







СОДЕРЖАНИЕ

13 TOC \o "1-1" \h \z \u 1413 LINK \l "_Toc427580985" 14Практическая работа №1, 2 «Консольные и линейные приложения» 13 PAGEREF _Toc427580985 \h 1461515
13 LINK \l "_Toc427580986" 14Практическая работа №3, 4 «Создание проектов с использованием условного оператора if/else» 13 PAGEREF _Toc427580986 \h 14241515
13 LINK \l "_Toc427580987" 14Практическая работа №5, 6 «Создание проектов с использованием оператора выбора switch и перечислений» 13 PAGEREF _Toc427580987 \h 14321515
13 LINK \l "_Toc427580988" 14Практическая работа № 7, 8 «Создание проектов создание циклической структуры (for)» 13 PAGEREF _Toc427580988 \h 14401515
13 LINK \l "_Toc427580989" 14Практическая работа № 9, 10 «Создание проектов создание циклической структуры (while и do)» 13 PAGEREF _Toc427580989 \h 14481515
13 LINK \l "_Toc427580990" 14Практическая работа №11, 12 «Создание проектов для работы с одномерными массивами» 13 PAGEREF _Toc427580990 \h 14561515
13 LINK \l "_Toc427580991" 14Практическая работа №13 «Создание проектов для работы с двумерными массивами» 13 PAGEREF _Toc427580991 \h 14611515
13 LINK \l "_Toc427580992" 14Практическая работа №14 «Создание простейших методов» 13 PAGEREF _Toc427580992 \h 14661515
13 LINK \l "_Toc427580993" 14Практическая работа №15, 16 «Создание простейших классов» 13 PAGEREF _Toc427580993 \h 14701515
13 LINK \l "_Toc427580994" 14Практическая работа №17 «Создание классов с использованием свойств» 13 PAGEREF _Toc427580994 \h 14801515
13 LINK \l "_Toc427580995" 14Практическая работа №18 «Создание классов, иерархически связанных между собой» 13 PAGEREF _Toc427580995 \h 14831515
13 LINK \l "_Toc427580996" 14Практическая работа №19 «Создание проектов с использованием текстовых файлов» 13 PAGEREF _Toc427580996 \h 14871515
15 Раздел 1 «Основы разработки приложений на платформе Microsoft.NET».

Тема 1.1. «Основы программирования на С# »

Практическая работа №1, 2 «Консольные и линейные приложения»

Учебная цель:
Познакомиться с интегрированной средой разработки Microsoft Visual Studio 2012.
Научиться использовать элементы кнопка, текстовый блок и метка.
Научиться составлять программы для решения задач линейной структуры.
Научиться создавать программы линейной структуры.
Освоить использование различных способов вывода данных.

Учебные задачи:
Вычислить простейшие математические выражения.
Научиться настраивать внешний вид элементов.
Научится использовать встроенные математические функции для вычисления выражений.
Научиться создавать проекты линейной структуры на С#.

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен
уметь:
разрабатывать программное обеспечение с помощью языков программирования.

знать:
специализированное программное обеспечение проектирования;
алгоритмизацию и программирование на встроенных алгоритмических языках;
платформы для создания, исполнения и управления информационной системой.

Задачи практической работы:

Повторить теоретический материал по теме практической работы.
Ответить на вопросы для закрепления теоретического материала.
Выполнить задания.
Оформить отчет.

Обеспеченность занятия и средства обеспечения указаны в рабочей программе профессионального модуля.

Краткие теоретические и учебно-методические материалы по теме практической работы

Понятие «консоль» пришло к нам из тех времен, когда были популярны большие компьютеры, их называли мейнфреймами. Компания размещала в каком-нибудь помещении один гигантскийкомпьютер, а на рабочих местах служащих устанавливалась только клавиатура и простенькиймонитор, называвшийся консолью. Клавиатура и монитор подключались к тому самому "монстру", спрятанному от посторонних глаз в отдельной комнате. Такие мониторы не умели отображать графику только текст. Информация передавалась в мейнфрейм при помощи клавиатуры – основного устройства ввода, а консоль – основное устройство вывода – позволяла компьютеру представлять информацию пользователю.
Типы данных представлены в таблице.
Название
Ключевое слово
Тип .NET
Диапазон значений

Булевский
bool
Boolean
true, false

Целые
sbyte
SByte
–128 127


byte
Byte
0 255


short
Int16
–32768 32767


ushort
UInt16
0 65535


int
Int32

·(–2109 2109)


uint
UInt32

·(0 4109)


long
Int64

·(–91018 91018)


ulong
UInt64

·(0 181018)

Вещественные
float
Single
1.510-45 3.41038


double
Double
5.010-324 1.710308

Финансовый
decimal
Decimal
1.010-28 7.91028

Символьный
char
Char
U+0000 U+ffff

Строковый
string
String
длина ограничена объемом доступной памяти

object
object
Object
Можно хранить все, что угодно

Переменная это величина, которая во время работы программы может изменять свое значение. Все переменные, используемые в программе, должны быть описаны.
Для каждой переменной задается ее имя и тип:
int number;
float x, y;
При объявлении можно присвоить переменной начальное значение (инициализировать).
int number = 100;
Можно использовать не только константы, но и выражения главное, чтобы на момент описания они были вычислимыми, например:
int b = 1, a = 100;
int x = b * a + 25;
Присваивание – это замена старого значения переменной на новое. Старое значение стирается бесследно.
Переменная = выражение;
a = b + c;
x = 1;
x = x + 0.5;
Операции отношения: проверка на равенство (= =), проверка на неравенство (!=).
Логические операции: && операции И (and), || операции ИЛИ (or), ! отрицание (НЕ).
Операция ++/-- увеличивает/уменьшает значение переменной на единицу. Оба знака операции могут записываться перед операндом (префиксная форма) или после операнда (постфиксная форма). При использовании постфиксной формы операции ++ и - - (а++ и a--) выполняются после того, как значение переменной было использовано в выражении, а префиксные операции (++а и --a) до использования.
Сложное присваивание в C#:
x += 0.5; соответствует x = x + 0.5;
x *= 0.5; соответствует x = x * 0.5;
a %= 3; соответствует a = a % 3;
Операция остатка от деления (%) 
Математические функции: класс Math:
Abs(x) - модуль целого числа;
Ceil(x) – ближайшее целое, не меньшее x;
Fabs(x) – модуль вещественного числа;
Floor(x) – наибольшее целое не превышающее x (с помощью этой операции можно найти целую часть числа или какого-то выражения, например деления);
Fmod(x,y) – остаток от деления нацело x на y(для вещественного типа);
Pow(x,y) – x в степени y – xy;
Sqrt(x) – квадратный корень (положительное значение);
Max(x,y) – максимальное из двух чисел;
Min(x,y) – минимальное из двух чисел;
Round(x)-округление.
Методы ввода и вывода:
Console.ReadLine считывает строку символов, введенную с клавиатуры (или иного устройства ввода).
Console.WriteLine выводит текст на экран (или иное устройство вывода) начиная с новой строки.
Console.Write выводит на экран ряд символов без перехода на новую строку.
Вопросы для закрепления теоретического материала к практическому занятию:

Как можно настроить свойства компонента?
Назовите основные свойства, настраиваемые для метки и кнопки.
Для чего нужен «Обозреватель решений»?
Как сохранить проект?
Назовите свойство, настраивающее тип шрифта, его начертание и размер.
Какими способами можно разместить компонент на форме?
Назовите ключевое слово, используемое для описания вещественного числа.
С помощью какой функции можно определить квадратный корень?
В каком порядке выполняются действия в выражении?
Опишите принцип работы оператора присваивания.
Для чего нужен MessageBox?
Какое свойство (какого компонента?) необходимо настроить, чтобы цвет шрифта всех компонентов на форме по умолчанию стал красным?
Назовите операцию нахождения остатка от деления двух чисел.
Что такое консоль?

Задания и инструкция по выполнению практической работы

Задание 1. Создайте консольное приложение Visual Studio 2012.
- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Консольное приложение. В нижней части окна введите имя проекта Консоль1.
- Укажите папку для сохранения проекта.
ВАЖНО! Для каждого проекта должна быть отдельная папка.

- Далее следует подождать, когда компилятор создаст проект и загрузит консольное приложение.







Так как C# имеет Си-подобный синтаксис, каждая строка завершается точкой с запятой, а каждый блок кода помещается в фигурные скобки.
- Наберите следующий код программы.

- Запустите программу на выполнение, нажав на кнопку или F5. Программа выполнит операции.
Текст программы содержит оператор вывода на экран. Вывод осуществляется путем обращения к методу WriteLine. Впереди данной строки и после нее будет пропущено по одной пустой строке, что обеспечивается наличием управляющих символов \n.
Оператор Console.ReadLine() позволяет ввести данные, в данном случае ожидает нажатие любой кнопки от пользователя.

Задание 2. Напишите программу, в которой описываются и выводятся на экран локальные переменные.
- Создайте консольное приложение Консоль2.
- Наберите следующий код программы.


Задание 3. Напишите программу, которая рассматривает операции ++/--.
- Создайте консольное приложение Консоль3.
- Наберите следующий код программы.


Задание 4. Напишите программу, которая рассматривает операции ввода/вывода.
- Создайте консольное приложение Консоль4.
- Наберите следующий код программы.

В классе Console определены методы ввода строки и отдельного символа, но нет методов, которые позволяют непосредственно считывать с клавиатуры числа. Ввод числовых данных выполняется в два этапа:
1) Символы, представляющие собой число, вводятся с клавиатуры в строковую переменную.
2) Выполняется преобразование из строки в переменную соответствующего типа.
Преобразование можно выполнить с помощью специального класса Convert, определенного в пространстве имен System.
- Строку
Console.Write("\n\nВес= "+weight+" рост="+height);
приведите к следующему виду
Console.Write("\n\nВес= "+weight+"\n\nрост="+height);
- Сделайте вывод о назначении \n.

Задание 5.
- Создайте консольное приложение Консоль5.
- Наберите следующий код программы.

В данном проекте требуется вывести в каждой строке не одну, а три величины, поэтому прежде чем передавать их для вывода, их требуется «склеить» в одну строку с помощью операции +.
- Самостоятельно разберитесь в коде программы.
Задание 6. Создайте приложение в Visual Studio 2012, позволяющее перевести градусы по Фаренгейте в градусов по Цельсию по формуле


- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.

- Далее следует подождать, когда компилятор создаст проект и загрузит главное окно проекта. Microsoft Visual Studio 2012 имеет интерфейс, изображенный на рисунке.

Обозреватель решений (Solution Explorer)
Позволяет управлять составными частями проекта.

Вывод (Output)
Отображает информацию о выполненной компиляции, включая информацию о количестве ошибок

Свойства (Properties)
Позволяет настраивать свойства выделенных компонентов

Панель элементов (Toolbox)
Отображает имеющиеся элементы

Разработка проекта приложения в C# состоит из двух взаимосвязанных процессов: конструирование пользовательского интерфейса и написание текста программы, необходимого для решения поставленной задачи.
- Отобразите окно Обозревателя решений, для этого в меню Вид выберите пункт меню Обозреватель решений (Solution Explorer). В данном окне  представлена структура построенного решения. Выделите его за заголовок и разместите, как показано на рисунке и нажмите на скрепку для автоматического скрытия окна.


- Отобразите окно Свойств (Properties), для этого в меню Вид выберите пункт меню Окно свойств или нажмите F4. В данном окне можно увидеть свойства выбранного элемента решения. Выделите его за заголовок и разместите, как показано на рисунке.

- Откройте папку, содержащую проект и Вы увидите следующую файловую структуру. Заметьте, что мы еще не написали ни одной строчки кода, а в проект уже входит множество файлов, поэтому следует для каждого нового проекта создавать отдельную папку.



Файл
Описание

1.sln
Файл организует проекты, элементы проектов и решений в одно решение.

1.v11.suo
Файл пользовательской информации (User Options File). Отслеживает настройки на уровне пользователя в Visual Studio, такие как контрольные точки.

App.config
Файл, используемый для настройки параметров приложения.

1.csproj
Файл проекта Visual Studio.

Program.cs
Файл содержит точку входа приложения.

Form1.cs
Форма приложений Windows.

Form1.Designer.cs
Файл содержит код, автоматически генерированный визуальным конструктором при добавлении элементов управления на форму и изменения их свойств.

Form1.resx
Файл, используемый для определения и изменения ресурсов приложения.


- В Строке заголовка формы укажите название окна проекта. Для этого в окне Свойства в свойстве Text для формы, запишите Перевод градусов.

- На Панели элементов в разделе Стандартные элементы управления выберите компонент Button (кнопка) и щелкните в любом месте формы. При этом на форме появится кнопка, и в Инспекторе объектов будут отображаться ее свойства. В свойстве Text для кнопки запишите Перевести. В свойстве Font увеличьте размер шрифта.

- Исходными данными в этой задачи будут градусы по Фаренгейте. Для ввода этих данных используйте элемент TextBox, а для пояснения к полю элемент Label. Разместите данные элементы на форме.

- Измените свойства элемента Label:
Text запишите Введите градусы по Фаренгейту.
Font измените размер шрифта 14 пт.
- Измените размер шрифта для элемента TextBox, с помощью свойства Font.

- Результат расчетов будет отображаться в текстовой строке, поэтому поместите на форму Label и в свойство Text оставьте пустым, размер шрифта 14 пт.

- Для того чтобы при щелчке на кнопке Перевести происходил расчет градусов по Цельсию нужно написать код, обрабатывающий событие «щелчок на кнопке». Дважды щелкните по кнопке Перевести левой кнопкой мыши.
При этом откроется программная часть проекта, в которой добавилась следующая запись:

Это заготовка процедуры обработки события Click (щелчок).
- Между { (начало) и } (конец) надо записать текст процедуры, состоящий из операторов расчета:

- Запустите приложение на выполнение и протестируйте её.

Задание 7. Напишите программу «Кнопка». На форме создаются две кнопки, щелчок указателя мыши на которых открывает надпись на форме или удаляет надпись с формы.
- Создайте новый проект.
- В Строке заголовка формы укажите название окна проекта. Для этого в Инспекторе объектов, в свойстве Text для формы, запишите: Кнопка.
- На Панели элементов в разделе Стандартные элементы управления выберите компонент Button и щелкните в любом месте формы. При этом на форме появится кнопка, и в Инспекторе объектов будут отображаться ее свойства. В свойстве Text для кнопки запишите: Кнопка 1. Аналогично добавьте вторую кнопку, только подпись на этой кнопке запишите: Кнопка 2. Настройте свойство Font для этих кнопок, увеличив размер шрифта 14 пт.

- На Панели элементов в разделе Стандартные элементы управления выберите компонент Label. Щелкните на поле формы, и на нем появится объект Label, а Инспектор объектов отобразит его свойства. Свойство Visible (видимый) для объекта Label 1 надо установить в False (ложь). Это значит, что текст не будет видимым. В свойстве Text запишите: Привет!. Выберите параметры для шрифта с помощью свойства Font (шрифт) и ForeColor (цвет текста).

- Запустите проект. Убедитесь, что в окне программы есть только кнопки. Закройте окно программы.

- Для того чтобы при щелчке на кнопке появлялась надпись Привет!, надо написать код, обрабатывающий событие «щелчок на кнопке». Двойным щелчком левой кнопкой мыши щелкните по элементу Кнопка 1. При этом откроется программная часть проекта, в которой добавилась следующая запись:

Это заготовка процедуры обработки события Click (щелчок).
- Между фигурными скобками следует записать текст процедуры, состоящий из оператора:

Этот оператор присваивает свойству Visible (видимый) метки Label1, находящейся на форме Form1, значение True (истина).
- Запустите программу и убедитесь, что она работает.

Самостоятельное задание №1.
Напишите событие OnClick для второй кнопки, позволяющий скрывать надпись на форме. Сделайте так, чтобы щелчок на второй кнопке не только удалял надпись «Привет!», но и отображал какую-либо другую надпись, например: «Пока!», другого цвета. Используйте для этого уже имеющуюся метку.

Задание 8. Напишите программу «Щелчок на кнопке». При щелчке по различным кнопкам на форме в специальном окне появляется соответствующий текст выбранного цвета.
- Создайте новый проект.
- В Строке заголовка формы укажите название окна проекта. Для этого в Инспекторе объектов, в свойстве Text для формы, запишите: Щелчок.
- На Панели элементов в разделе Контейнеры выберите компонент Panel и щелкните в любом месте формы. В свойстве Text для панели запишите: Кнопка 1. Аналогично добавьте вторую кнопку, только подпись на этой кнопке запишите: Кнопка 2. Настройте свойство Font для этих кнопок, увеличив размер шрифта 14 пт.

- На Панели элементов в разделе Стандартные элементы управления выберите компонент Button и разместите в панели четыре кнопки, в свойстве Text для этих кнопок запишите: «Кнопка 1», «Кнопка 2», «Кнопка 3», «Кнопка 4». В свойстве Cursor (курсор) для каждой кнопки выберите из списка значение: Hand. Тогда при наведении курсора на кнопку он приобретет вид ладошки. Настройте свойство Font для этих кнопок, увеличив размер шрифта 14 пт и сделав шрифт полужирным.

- Под панелью с кнопками вставьте компонент TextBox. Настройте свойство Font для этих кнопок, увеличив размер шрифта 14 пт.

- Для того чтобы при щелчке на кнопке появлялась надпись Привет!, надо написать код, обрабатывающий событие «щелчок на кнопке». Теперь сделайте так, чтобы при щелчке на кнопках, в окне TextBox1 появлялся текст: «Щелчок на кнопке 1», «Щелчок на кнопке 2», «Щелчок на кнопке 3», «Щелчок на кнопке 4». Двойным щелчком левой кнопкой мыши щелкните по элементу Кнопка 1. При этом откроется программная часть проекта, в которой следует добавить следующие операторы: оператор присваивания свойству Text значения, оператор изменения цвета, который берется из системной палитры цветов.

- Создайте по аналогии процедуры, обрабатывающие щелчок указателем мыши на других кнопках. НЕ ЗАБЫВАЙТЕ, что следует вызвать для каждой кнопки событие нажатие кнопки и записать только операторы, которые изображены в фигурных скобках.

- Запустите программу и убедитесь, что она работает.

Самостоятельное задание №2.
Добавьте операторы в процедуры для кнопок для того, чтобы при щелчке на каждой кнопке изменялся цвет текста на кнопках.

Задание 9. Разработать приложение для управления свойствами кнопок во время выполнения приложения.
- Создайте новый проект.
- В Строке заголовка формы укажите название окна проекта. Для этого в Инспекторе объектов, в свойстве Text для формы, запишите: Управление свойствами кнопок.
- С Панели элементов в разделе Стандартные элементы управления выберите компонент Button и разместите на форме 6 кнопок Button и один Label. Выровнять их положение и размеры, в соответствии с рисунком.

Для выравнивания кнопок следует выделить все кнопки и выровнять их размеры и положение с помощью кнопок .
- Настройте свойства всех элементов помещенных на форму:
Элемент
Свойство
Значение свойства

Button1
Text
Вывести текст на метку


Font
размер 14 пт

Button2
Text
Стереть текст с метки


Font
размер 14 пт

Button3
Text
Сделать кнопку недоступной


Font
размер 14 пт

Button4
Text
Сделать кнопку доступной


Font
размер 14 пт

Button5
Text
Сделать кнопку невидимой


Font
размер 14 пт

Button6
Text
Сделать кнопку видимой


Font
размер 14 пт

Label1
Text
Место для вывода текста


Font
размер 14 пт, начертание = полужирный

- После размещения компонентов форма примет вид, приведенный на рисунке.

- Напишите события для каждой кнопки. Не забудьте формировать событие автоматически (двойным щелчком мыши по элементу)

- Запустите приложение и проверьте работоспособность всех кнопок формы.

Задание 10. Создайте приложение в Visual Studio 2012, позволяющее определить количество полных метров в пути, данном в сантиметрах.
- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Разместите компоненты в соответствии с рисунком, настроив свойства данных элементов.

- Создайте событие нажатие кнопки Перевести.

Выводить полученные результаты удобно не только с помощью компонентов label и textBox, но и с использованием объекта MessageBox.

MessageBox.Show("Текст сообщения", "Заголовок сообщения", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
- Запустите приложение на выполнение и протестируйте программу.


Самостоятельное задание №3. Напишите программу решения задачи. Исходные данные определите самостоятельно.
1 вариант. Даны три целых числа. Найти их сумму и произведение.
2 вариант. Дана сторона квадрата a. Найти его периметр и площадь.
3 вариант. Дана длина ребра куба a. Найти объем куба и площадь его полной поверхности.
4 вариант. Даны три числа. Найти их среднее арифметическое.
5 вариант. Известно, что X кг конфет стоит A рублей. Определить, сколько стоит Y кг этих же конфет.
6 вариант. Дан размер файла в байтах. Переведите эту величину в килобайты.
7 вариант. Дано двузначное число. Найдите сумму и произведение его цифр.
8 вариант. С начала суток прошло N секунд. Определите сколько полных часов прошло с начала суток.
9 вариант. С начала суток прошло N секунд. Определите сколько полных минут прошло с начала очередного часа;
10 вариант. Составьте программу для вычисления периметра прямоугольника.
11 вариант. Универмаг в ноябре продал товаров на А млн. р., что на 15% больше, чем в октябре. На какую сумму были проданы товары в октябре?
12 вариант. В классе N учеников. После контрольной было получено: A - пятерок, B - четверок, C -троек. Найти процент троек, четверок и пятерок.
13 вариант. По двум данным катетам найти гипотенузу и площадь прямоугольного треугольника.
14 вариант. Автомобиль проехал три участка пути разной длины с разными скоростями. Найти среднюю скорость автомобиля.
15 вариант. Известна сумма денег, имеющаяся у покупателя и стоимость одной единицы товара. Сколько единиц товара сможет купить покупатель и какова его сдача?
16 вариант. Известен плановый P и фактический F показатели выпуска продукции предприятием. Определить процент выполнения плана.
17 вариант. За год квартплата повышалась дважды. Первый раз на 30%, а второй на 40%.Год назад семья Березовских платила квартплату 80 рублей в месяц. Сколько они платят сейчас.
18 вариант. Определить, сколько целых часов (H) и целых минут (М) прошло с начала суток. Например, если k= 13257 = 3 * 36000 + 40 * 60 + 57, то H= 3, М= 40. Вывести на экран фразу: «Это...часов...минут».
19 вариант. Составить программу вычисления объема и площади поверхности куба по данной длине ребра (V=a3 S=6a2).

Критерии оценки:
«отлично»
правильно решены все задания с 1 по 10;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
варианты самостоятельного задания решены верно, самостоятельно.
«хорошо»
задания с 1 по 10 решены с ошибками;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решен только вариант самостоятельного задания № 3.
«удовлетворительно»
решены задания с 1 по 10 с ошибками;
решены самостоятельные варианты № 1, 2.

Образец отчета по практической работе

Отчет по практической работе №1
Название практической работы: «Консольные и линейные приложения»
Вариант №0

Цели работы:
1. Познакомиться с интегрированной средой разработки Microsoft Visual Studio 2012.
2. Научиться использовать элементы кнопка, текстовый блок и метка.
3. Научиться составлять программы для решения задач линейной структуры.
4. Научиться создавать программы линейной структуры.
5. Освоить использование различных способов вывода данных.

Внешний вид:

Код программы:

Тест:

Вывод: В ходе выполнения практической работы №1 я научился ..., освоил ... .
Практическая работа №3, 4 «Создание проектов с использованием условного оператора if/else»

Учебная цель:
Познакомиться с интегрированной средой разработки Microsoft Visual Studio 2012.
Научиться использовать оператор if при решении задач.
Научиться использовать элементы PictureBox, OpenFileDialog.
Освоить создание программ разветвляющейся структуры.
Освоить использование тернарного оператора и оператора if.
Освоить правила записи условных выражений.

Учебные задачи:
Научиться записывать условия различной степени сложности;
Научиться настраивать внешний вид элементов.
Создавать проекты разветвляющейся структуры на С# с использованием изученных компонентов.

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен
уметь:
разрабатывать программное обеспечение с помощью языков программирования.

знать:
специализированное программное обеспечение проектирования;
алгоритмизацию и программирование на встроенных алгоритмических языках;
платформы для создания, исполнения и управления информационной системой.

Задачи практической работы:

Повторить теоретический материал по теме практической работы.
Ответить на вопросы для закрепления теоретического материала.
Выполнить задания.
Оформить отчет.

Обеспеченность занятия и средства обеспечения указаны в рабочей программе профессионального модуля.

Краткие теоретические и учебно-методические материалы по теме практической работы
Синтаксис условного оператора if
If (условие) оператор;
else оператор;

if (условие)
{оператор1;
оператор2;
операторN;}
else
{оператор1;
оператор2;
операторN;}
Если значение условия «истинно», то выполняется оператор (им может быть составной оператор - блок), следующий за условием. Если же условие принимает значение «ложно» то выполняется оператор, следующий за ключевым словом else. В записи оператора if вторая часть (т. е. оператор else) может отсутствовать. Тогда, если условие принимает значение «ложно», выполняется сразу следующий оператор программы. В качестве условия может стоять произвольное выражение. В операторе if лишь проверяется, является ли значение этого выражения ненулевым (истинным) или нулевым (ложным).
Любая последовательность операторов, заключенная в фигурные скобки, является составным оператором. Составной оператор не должен заканчиваться (;), поскольку ограничителем блока служит сама закрывающаяся скобка. Внутри блока каждый оператор должен ограничиваться (;).

Вопросы для закрепления теоретического материала к практическому занятию:

Какое условие нужно записать для проверки числа на четность?
Перечислите основные логические операции, используемые при записи условий.
Объясните разницу между обычными и сокращенными логическими операциями: & и &&, | и ||.
Назовите операторы сравнения.

Задания и инструкция по выполнению практической работы
Задание 1. Составить программу вычисления выражения



- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Разместите компоненты, в соответствии с рисунком, настроив свойства данных элементов.

- Создайте событие нажатие кнопки Вычислить.

- Запустите приложение на выполнение и протестируйте программу.

Самостоятельное задание №1. Создайте новый проект для вычисления значения функции f(x) по варианту:





























































Задание 2. Создайте приложение, позволяющее загружать изображения на форму.
- Создайте новый проект.
- В строке заголовка формы введите название окна программы: Загрузка изображений.
- На Панели элементов в разделе Стандартные элементы управления выберите компонент Button и разместите на форме две кнопки, в свойстве Text для этих кнопок запишите: «Открыть», «Очистить». Настройте свойство Font для этих кнопок, увеличив размер шрифта 14 пт и сделав шрифт полужирным.
- C Панели элементов в разделе Стандартные элементы управления поместите на форму компонент PictureBox (изображение) и компонент OpenFileDialog (окно диалога «Открыть файл») в разделе Диалоговые окна панели элементов.

- Настройте свойство SizeMode для элемента PictureBox1 в значение Zoom, чтобы загружаемый рисунок масштабировался по размеру рамки.
- Создайте событие нажатие кнопки Открыть и между фигурных скобок введите операторы, изображенные на рисунке.

Первая строка отображает компонент на форме, т. к. по нажатию на кнопку очистить этот компонент будет скрываться.
Вторая строка настраивает фильтр, для отображения в окне загрузки файлов, только изображений.
Следующие строки означают: Если в окне загрузки файла нажата кнопка ОК, тогда загрузить в элемент изображение.
- Создайте событие для кнопки Очистить, запишите в теле процедуры следующий оператор:

- Запустите программу и проверьте, как она работает.


Задание 3. Дано целое число. Если оно является положительным (сюда же относится и нулевое значение), то увеличить его на 10; в противном случае вычесть из него 5. Вывести полученное число.
- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Разместите компоненты, в соответствии с рисунком, настроив свойства данных элементов.

- Создайте событие нажатие кнопки Вычислить.

- Запустите приложение на выполнение и протестируйте программу с положительными и отрицательными числами.

- Измените событие нажатия кнопки Вычислить, которое демонстрирует использование тернарного оператора if.


Самостоятельное задание № 2. Составьте программу для решения следующих задач:
Дано двухзначное число. Верно ли, что в его записи присутствует цифра 8?
Дано двухзначное число. Присутствуют ли в записи этого числа цифры 2 или 7?
Дано двухзначное число. Имеются ли в его записи цифры 3, 6 или 9?
Дано трехзначное число. Является ли оно палиндромом (слева и справа читается одинаково)?
Дано трехзначное число. Верно ли, что все его цифры одинаковы?
Дано четырехзначное число. Равна ли сумма двух первых его цифр сумме двух его последних?
Дано трехзначное число. Кратна ли сумма его цифр пяти?
Дано трехзначное число. Кратна ли произведение его цифр числу А?
Дано трехзначное число. Верно ли, что первая и последняя его цифры одинаковы?
Дано трехзначное число. Верно ли, что последняя цифра этого числа является четной?
Дано трехзначное число. Верно ли, что последняя цифра этого числа является нечетной?
Дано четырехзначное число. Верно ли, что в записи этого числа использованы два одинаковых двузначных числа?
Является ли первое число двухзначным, а второе однозначным?
Является ли первое число отрицательным, а второе положительным?
Известны два расстояния: одно в километрах, другое – в футах (1 фут=0,45 м.). Какое из расстояний меньше?
Даны три числа. Найти среднее из них (то есть число, расположенное между наименьшим и наибольшим).
Даны три числа. Найти сумму двух наибольших из них.
Дано целое число. Вывести его строку-описание вида «отрицательное четное число», «нулевое число», «положительное нечетное число» и т. д.
Дано целое число, лежащее в диапазоне 1–999. Вывести его строку - описание вида «четное двузначное число», «нечетное трехзначное число» и т. д.

Самостоятельное задание №3. Составьте программу для решения следующих задач:
Даны натуральные числа х и у, определяющие возраст двух друзей. Из данных чисел напечатать те, которые обозначают «школьный» возраст, то есть от 7 до 16 лет.
Три поросенка: Ниф-Ниф, Нуф-Нуф и Наф-Наф нашли под дубом желуди. Каждый из них набрал себе приличный запас на зиму (дано три числа). Составить программу, которая бы определяла, кто из поросят поленился и набрал меньше всех.
Федя пытается протолкнуть в форточку размерами X см и У см свою голову диаметром не более D см. Удастся ли мальчику его эксперимент, или его голова застрянет?
Даны два конверта прямоугольной формы с длинами сторон (а, b) и (с, d). Определить, можно ли один из конвертов вложить в другой?
Имеется прямоугольное отверстие со сторонами а и b и кирпич с ребрами х, у, z. Требуется определить, пройдет ли кирпич в отверстие?
Сестры подсчитали свои денежные накопления: у них оказались разные суммы. Какая сестра должна дать другой денег и сколько, чтобы у обеих сестер суммы стали равными?
Напишите программу-модель анализа пожарного датчика в помещении, которая выводит сообщение «Пожарная ситуация», если температура (ее значение вводится с клавиатуры) в комнате превысила 60єС.
Рис расфасован в два пакета. Вес первого - m кг, второго – n кг. Составьте программу, определяющую: какой пакет тяжелее – первый или второй? вес более тяжелого пакета.
В туристической фирме клиенту на выбор были предложены три путевки (про каждую известны стоимость N1, N2 и N3 и продолжительность тура Dl, D2 и D3 дней). Какую из трех путевок может выбрать турист, если в его распоряжении X денег и У дней отпуска?
Жители Норвегии, Швеции и Финляндии спорили, где зима холоднее, называя среднюю температуру января в своих столицах. Определите, в каких странах эта температура оказалась ниже средней температуры января в Челябинске (t = 13°С).
За контрольную работу в классе учениками было получено Р пятерок, СН четверок, TR троек и DV двоек. Определить сколько человек учится в классе.
За контрольную работу в классе учениками было получено Р пятерок, СН четверок, TR троек и DV двоек. Определить каков средний балл.
За контрольную работу в классе учениками было получено Р пятерок, СН четверок, TR троек и DV двоек. Определить сколько учеников получили оценку, превышающую средний балл?
Создайте проект «Угадай число!». При каждом запуске этого проекта случайным образом задумывается число от 1 до 10. Задача пользователя отгадать это число. При этом, в проекте должны даваться пояснения: «Недобор» или «Перебор».
Год является високосным, если его номер кратен 4. однако, из кратных 100, високосными являются лишь кратные 400 (например, 1700, 1800 и 1900 – невисокосные, 2000 – високосный). Дано натуральное число N. Определить, является ли високосным год с таким номером.

Критерии оценки:
«отлично»
правильно решены все задания с 1 по 3;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решены варианты самостоятельных заданий 1-3 верно, самостоятельно.
«хорошо»
задания с 1 по 3 решены с ошибками;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решены верно, любые два самостоятельных заданий.
«удовлетворительно»
решены задания с 1 по 3 с ошибками;
наличие отчета по практической работе, не соответствующего образцу оформления отчета.
решено верно, хотя бы одно самостоятельное задание.

Отчет по практической работе аналогичный практической работе №1, в отчет входит оформление всех самостоятельных заданий данной практической работы

Практическая работа №5, 6 «Создание проектов с использованием оператора выбора switch и перечислений»
Учебная цель:
Познакомиться с интегрированной средой разработки Microsoft Visual Studio 2012.
Научиться использовать оператор switch при решении задач.
Освоить использование компонента comboBox.
Научиться создавать перечисления.
Получить навыки использования перечислений при написании пользовательских программ.

Учебные задачи:
Научиться записывать условия различной степени сложности;
Создавать проекты разветвляющейся структуры на С# с использованием компонента comboBox.
Создавать проекты для работы с перечислениями.

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен
уметь:
разрабатывать программное обеспечение с помощью языков программирования.

знать:
специализированное программное обеспечение проектирования;
алгоритмизацию и программирование на встроенных алгоритмических языках;
платформы для создания, исполнения и управления информационной системой.

Задачи практической работы:

Повторить теоретический материал по теме практической работы.
Ответить на вопросы для закрепления теоретического материала.
Выполнить задания.
Оформить отчет.

Обеспеченность занятия и средства обеспечения указаны в рабочей программе профессионального модуля.

Краткие теоретические и учебно-методические материалы по теме практической работы
В случае, когда нужно выполнить несколько сравнений подряд, очень удобно использовать оператор switch case.
Формат оператора:
switch (выражение)
{ case Значение1:
последовательность операторов
break;
case Значение2:
последовательность операторов
break;
case ЗначениеN:
последовательность операторов
break;
default
последовательность операторов
}
Сначала вычисляется выражение в скобках за ключевым словом switch. Затем просматривается список меток (case Значение1 и т. д.) до тех пор, пока не находится метка, соответствующая значению вычисленного выражения. Далее происходит выполнение соответствующая последовательность операторов, следующих за двоеточием. Если же значение выражения не соответствует ни одной из меток оператора switch, то выполняется последовательность операторов, следующая за ключевым словом default. Допускается конструкция без слова default.
Когда после последовательности операторов встречается ключевое слово break, то выполнение оператора break приводит к выходу из оператора switch и переходу к следующему оператору программы. Если же оператор break отсутствует, то выполнение продолжается до первого оператора break ли до конца оператора switch.
В операторе switch case в качестве выражения можно использовать либо переменную, либо выражение только определенных типов, а именно:
любого целочисленного типа;
символьного типа (char);
строкового типа (string);
перечисления.
В операторе switch case нельзя использовать переменные вещественного типа или типа decimal.
При работе с оператором switch case удобно использовать такие компоненты как: comboBox и listBox. Основные свойства этих компонентов приведены в таблице.
Свойство
Описание

Items
Элементы списка - коллекция строк

Items.Add(«элемент»)
Добавление элемента в список.

SelectedIndex
Номер выбранного элемента в списке. Если ни один элемент не выбран, значение свойства =-1.

SelectedItem
Выбранный элемент списка.
Если необходимо воспользоваться его значением, то переведите его в строковый тип SelectedItem.ToString()

Text
Строка текста, отображаемая в заголовке

Главное событие, обрабатываемое при выборе элемента в любом из этих списков – SelectedIndexChanged.
Перечисление - это множество именованных целочисленных констант. Ключевое слово enum объявляет перечислимый тип.
Формат записи перечисления таков:
enum имя {список_перечисления};
где имя - указывает на имя типа перечисления, список_перечисления – это список идентификаторов, разделенных запятыми.
Пример:
enum Color {Red, Green, Blue}
Каждый элемент перечисления имеет связанное с ним константное значение, тип которого определяется базовым типом перечисления.

Вопросы для закрепления теоретического материала к практическому занятию:

Опишите принцип работы оператора switch.
Сформулируйте недостатки и преимущества использования оператора switch.
Назовите свойство компонента comboBox, позволяющее узнать индекс выбранного элемента.

Задания и инструкция по выполнению практической работы

Задание 1. Составить программу, выводящую картинку по выбранному времени года.
- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Измените заголовок формы, в свойстве Text установите значение Работа с ComboBox.
- Разместите компонент ComboBox. В свойстве Font установите полужирное начертание и размер шрифта равным 14 пт.
- В свойстве Items задайте значение списка: Зима, Весна, Лето, Осень.

- В свойсте Text задайте значение Выберите время года.

- Разместите на форме элемент PictureBox. Установите свойство SizeMode в значение Zoom.

- В папку с проектом из Интернета скачайте изображения разного вида времен года и переименуйте в соответствии времени года.

- Создайте событие выбора элемента списка для элемента comboBox1, для этого достаточно дважды щелкнуть мышью по данному элементу.

- Запустите приложение на выполнение и протестируйте программу.


Самостоятельное задание №1. Создайте новый проект для решения задач по варианту:
Дано целое число K. Вывести строку-описание оценки, соответствующей числу K (1 «плохо», 2 «неудовлетворительно», 3 «удовлетворительно», 4 «хорошо», 5 «отлично»). Если K не лежит в диапазоне 1–5, то вывести строку «ошибка».
Дан перечень месяцев года. Вывести название соответствующего времени года («зима», «весна», «лето», «осень»), сопроводив все соответствующее картинками.
Дан перечень месяцев года. Определить количество дней в выбранном месяце. В проекте следует вводить год и выдавать количество дней в месяце в зависимости от года.
Дан перечень арифметических операций: «+» сложение, «-» вычитание, «*» умножение, «/» деление. Также даны вещественные числа A и B (B не равно 0). Выполнить над числами указанное действие и вывести результат.
Дан перечень единиц длины (миллиметр, сантиметр, метр, дециметр, километр) и длина отрезка в этих единицах (вещественное число). Найти длину отрезка в метрах.
Дан перечень единиц массы (миллиграмм, грамм, килограмм, центнер, тонна) и масса тела в этих единицах (вещественное число). Найти массу тела в килограммах.
Известен радиус окружности и имеется перечень элементов, касающихся этой окружности (диаметр D = 2·R, длина L = 2·
··R, площадь круга S =
··R2). Определить значение для выбранного элемента данной окружности.
Известны длины сторон прямоугольника. Кроме того, имеется перечень элементов, касающихся этого прямоугольника: периметр, площадь, диагональ. Необходимо определить значение для выбранного элемента прямоугольника.
Дано целое число в диапазоне от1 до 99, определяющее возраст человека (в годах). Вывести фразу «мне N лет», обеспечив правильное согласование числа со словом «год», например: 20 «двадцать лет», 32 «тридцать два года», 41 «сорок один год».
Написать программу, позволяющую по последней цифре числа определить последнюю цифру его квадрата.
Дано натуральное число n (1
· n
· 9999), определяющее стоимость товара в копейках. Выразить стоимость в рублях и копейках. Например, 3 рубля 21 копейка, 15 рублей 5 копеек, 1 рубль ровно и т.п.
В старояпонском календаре был принят 60-летний цикл, состоявший из пяти 12-летних подциклов. Подциклы обозначались названиями цвета: зеленый, красный, желтый, белый и черный. Внутри каждого подцикла годы носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи (для справки: 1984 – год зеленой крысы – был началом очередного цикла). Напишите программу, которая вводит номер некоторого года нашей эры и печатает его название по старояпонскому календарю.
На форме имеется 3 кнопки: на одной написано – «воздушный транспорт», на другой – «наземный транспорт», на третьей – «водный транспорт». Нажатие каждой из этих кнопок должно сопровождаться отображением соответствующей иллюстрации.
На форме имеется 6 кнопок, на каждой из которых написаны числа от 1 до 6 (позиции игрального кубика). Нажатие каждой из этих кнопок должно сопровождаться отображением соответствующей иллюстрации.
Для каждой введённой цифры (0-9) вывести соответствующее ей название на английском языке (0-zero, 1-one, 2-two, ).
Составить программу, позволяющую получит словесное описание школьных отметок (1-«плохо», 2-«неудовлетворительно», 3-«удовлетворительно», 4-«хорошо», 5-«отлично»).
Напишите программу, позволяющую рассчитать стоимость жалюзи в зависимости от материала изготовления и размеров этих жалюзи. Для этого разместите на форме комбинированный список и заполните его названиями материала изготовления (пластик, алюминий, соломка, текстиль). Разместите также элементы, позволяющие вводить размеры жалюзи в сантиметрах. Выбор элемента списка должен приводить к демонстрации цены за 1 кв.м. и расчетам по введенным размерам.
Напишите программу, позволяющую рассчитать стоимость фотографии в зависимости от ее размеров. Для этого разместите на форме комбинированный список и область для размещения изображений. Список нужно будет заполнить возможными размерами фотографии. При выборе элемента списка: рассчитывается стоимость этой фотографии (известна цена за 1 кв. см.) и меняется размер изображения.

Задание 2. Создать проект, имитирующий выбор сигнала светофора.
Составить программу, выводящую картинку по выбранному времени года.
- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Измените заголовок формы, в свойстве Text установите значение Светофор.
- Разместите компонент ComboBox. В свойстве Font установите полужирное начертание и размер шрифта равным 12 пт.
- В свойстве Items задайте значение списка: Красный, Желтый, Зеленый.

- Разместите компонент Label. Удалите значения из свойства Text и в свойстве Font установите полужирное начертание и размер шрифта равным 12 пт.

- Создайте событие выбора элемента списка для элемента comboBox1, для этого достаточно дважды щелкнуть мышью по данному элементу. Не забудьте объявить тип перечисление перед методом нажатия кнопки.


- Запустите приложение на выполнение и протестируйте программу.


Самостоятельное задание №2. Создайте новый проект для решения задач по варианту:
Создайте проект, который позволял бы менять оформление визуальных элементов на форме (использовать перечисления)
Создайте проект, позволяющий выводить название дня недели по его номеру, используя перечисление.
Создайте проект, позволяющий по дате рождения определить знак зодиака и увидеть картинку этого знака (использовать перечисление).

Критерии оценки:
«отлично»
правильно решено задание 1 и 2;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решены варианты самостоятельных заданий 1-2 верно, самостоятельно.
«хорошо»
правильно решено задание 1 и 2;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решен один из вариантов самостоятельных заданий верно и номер варианта совпадает с заданным.
«удовлетворительно»
правильно решено задание 1 и 2;
наличие отчета по практической работе, не соответствующего образцу оформления отчета.
не решен ни один вариант самостоятельных заданий.

Отчет по практической работе аналогичный практической работе №1, в отчет входит оформление всех самостоятельных заданий данной практической работы


Практическая работа № 7, 8 «Создание проектов создание циклической структуры (for)»
Учебная цель:
Познакомиться с интегрированной средой разработки Microsoft Visual Studio 2012.
Освоить построение циклических алгоритмов с известным количеством проходов.
Освоить использование циклического оператора for при решении задач.
Освоить использование компонента listBox.

Учебные задачи:
Научиться создавать проекты различной сложности с использованием циклов.
Создавать проекты разветвляющейся структуры на С# с использованием компонента listBox.

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен
уметь:
разрабатывать программное обеспечение с помощью языков программирования.

знать:
специализированное программное обеспечение проектирования;
алгоритмизацию и программирование на встроенных алгоритмических языках;
платформы для создания, исполнения и управления информационной системой.

Задачи практической работы:

Повторить теоретический материал по теме практической работы.
Ответить на вопросы для закрепления теоретического материала.
Выполнить задания.
Оформить отчет.

Обеспеченность занятия и средства обеспечения указаны в рабочей программе профессионального модуля.

Краткие теоретические и учебно-методические материалы по теме практической работы

Циклический оператор for используется в том случае, когда количество повторений либо заранее известно, либо может быть четко определено.
Синтаксис оператора: for (инициализация; проверка условия; изменение) оператор;
Пример использования:
int s = 0;
for (int i = 1; i<=100; i++) s+=i;
В простейшей форме инициализация используется для присвоения начального значения параметру цикла. Проверка условия - обычно условное выражение, которое определяет, когда цикл должен быть завершен. Приращение обычно используется для изменения параметра цикла каждый раз при повторении цикла. Эти три раздела заголовка цикла должны быть разделены точкой с запятой. Выполнение цикла происходит до тех пор, пока условное выражение истинно. Как только условие становится ложным, начинает выполняться следующий за циклом for оператор.

Схема выполнения оператора for:
1. Вычисляется выражение 1.
2. Вычисляется выражение 2.
3. Если значения выражения 2 отлично от нуля (истина), выполняется тело цикла, вычисляется выражение 3 и осуществляется переход к пункту 2, если выражение 2 равно нулю (ложь), то управление передается на оператор, следующий за оператором for.
Проверка условия всегда выполняется в начале цикла. Это значит, что тело цикла может ни разу не выполниться, если условие выполнения сразу будет ложным.
Любое из трех выражений может быть опущено, но точки с запятой обязательно должны стоять. Если пропущено выражение2, считается, что оно имеет значение 1 /истинно/, и цикл никогда не заканчивается /бесконечный цикл/.
Оператор break завершает выполнение цикла, внутри которого записан.
Оператор continue выполняет переход к следующей итерации цикла.
Важной функцией класса String, является функция Format. Эта функция формирует строку из нескольких составляющих и с определенным форматированием. Синтаксис функции Format следующий:
String.Format(строка содержащая шаблон, param[] аргумент)
param[] говорит методу, что он может принимать неограниченное количество аргументов, разделенных запятой. На примере это выглядит так:
String.Format(“{0} {1}”, “Привет”, “всем”);
Вернет строку «Привет всем». В фигурных скобках указываются индексы полей, которые передаются, начиная с нуля. «Привет» нулевое поле, «всем» первое поле. В самих фигурных скобках, кроме форматирования через запятую можно указывать тип или, другими словами, как форматировать данное поле.
При выводе чисел индексам можно задавать типы форматирования в виде букв (через двоеточие):
Функция
Результат

String.Format("{0:c}",12.53)
12,53р.

String.Format("{0:e}",12.53)
1,253000e+001

String.Format("{0:f}", 12.53)
12,53

String.Format("{0:00.0000}", 12.53)
12,5300

String.Format("{0:(#).##}", 12.53)
(12),53

·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Вопросы для закрепления теоретического материала к практическому занятию:

В каких случаях целесообразно использовать цикл FOR?
Пусть цикл записан в виде: FOR (int v:=e1; v<=e2; v++) S; Как называется e1?
Задания и инструкция по выполнению практической работы

Задание 1. Вывести таблицу значений функции y=sin(x), если х меняется от 1 до 2 с шагом 0.2.
- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Измените заголовок формы, в свойстве Text установите значение Таблица значений F(x).
- Разместите компонент ListBox. В свойстве Font установите полужирное начертание и размер шрифта равным 14 пт.

- Разместите на форме элемент Button. В свойстве Font установите полужирное начертание и размер шрифта равным 14 пт. В свойстве Text установите значение Пуск.

- Создайте событие для элемента Button1, для этого достаточно дважды щелкнуть мышью по данному элементу.

- Запустите приложение на выполнение и протестируйте программу.

- Экспериментальным путем выясните значение каждого параметра функции Format (удалите один симво, запусмтиет и сравните результаты, верните символ, затем удалите другой и т. д.). Результат исследования запишитие в тетрадь.

Задание 2. Известно N чисел (числа задаются случайным образом в промежутке [-50; 50]). Составьте программу, которая определяет количество отрицательных, количество положительных и количество нулей среди введенных чисел. Значение N вводится с клавиатуры.
- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Измените заголовок формы, в свойстве Text установите значение Определение чисел.
- Разместите компоненты ListBox, Button, TextBox, Label как показано на рисунке. В свойстве Font установите размер шрифта равным 14 пт.

- В свойствах Text задайте значения, соответствующие рисунку.

- Создайте событие для элемента Button1, для этого достаточно дважды щелкнуть мышью по данному элементу.
Алгоритм данного события:
1. Создается новый экземпляр класса Random (генератора случайных чисел).
2. Очищается ListBox1.
3. Объявление переменных: n – целый тип и первоначальное значение берет из компонента TextBox1, предварительно преобразовав тип; pol – количество положительных чисел; otr - количество отрицательных чисел; zer – количество нулей.
4. В цикле от 1 до n выполняется:
Присваивание случайного числа целочисленной переменной a;
Добавление элемента в компонент ListBox1;
Если а равна нулю, тогда переменная zer увеличивается на единицу;
Если а положительная, тогда переменная pol увеличивается на единицу;
Если а отрицательная, тогда переменная otr увеличивается на единицу;
5. Выводиться результат в элемент Label 2. \n означает вывод с новой строки.

- Запустите приложение на выполнение и протестируйте программу.

Задание 3. Ввести с клавиатуры 10 чисел. Если среди них есть числа, большие 15, заменить их на 15.
- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Измените заголовок формы, в свойстве Text установите значение Определение чисел.
- Разместите компоненты ListBox, Button, TextBox, Label как показано на рисунке. В свойстве Font установите размер шрифта равным 12 пт.
- В свойствах Text задайте значения, соответствующие рисунку.

- Создайте событие для элемента Button1 (кнопка Добавить), для этого достаточно дважды щелкнуть мышью по данному элементу.
Алгоритм данного события:
1. Объявляется целочисленная переменная n, начальное значение которой равно количеству строк элемента ListBox1.
2. Если n (количество элементов списка) меньше или равно 9 (т. к. номера строк в списке ListBox начинают нумероваться с нуля) и если текстовый блок пустой, то добавить строку в список ListBox1 из элемента TextBox1 преобразовав значение к целому типу, иначе вывести сообщение о невозможности ввода чисел в список.

- Создайте событие для элемента Button2 (кнопка Проверить и изменить), для этого достаточно дважды щелкнуть мышью по данному элементу.
Алгоритм данного события:
1. Объявляется целочисленная переменная n, начальное значение которой равно количеству строк элемента ListBox1.
2. Если n (количество элементов списка) меньше 9(т. к. номера строк в списке ListBox начинают нумероваться с нуля) тогда вывести сообщение о недостаточном количестве строк в списке, иначе в цикле от i=0 до n проверять если значение строки с номером i больше 15, тогда изменить данную строку на значение равное 15.


- Создайте событие для элемента Button3 (кнопка Очистить), для этого достаточно дважды щелкнуть мышью по данному элементу.

- Создайте событие для элемента Button4 (кнопка Изменить), для этого достаточно дважды щелкнуть мышью по данному элементу.
Данное событие содержит один условный оператор: Если элемент TextBox1 пустой, тогда вывести сообщение о необходимости ввести значение на которое следует поменять строку списка, иначе выделенному номеру строки списка присвоить значение из элемента TextBox1, преобразовав к типу Int.

- Создайте событие для элемента Button4 (кнопка Удалить), для этого достаточно дважды щелкнуть мышью по данному элементу. RemoveAt – удаляет элемент по указанному индексу.

Самостоятельное задание №1. Создайте новый проект для решения одной из задачи по вариантам.
Белоснежка на Рождество решила купить гномам новые рубашки и измерила рост каждого. В магазине продаются рубашки трех ростов: I 25(35 см, II 36(45 см и III 46(55 см. Выведите таблицу, в которой будут указаны реальный рост каждого гнома и соответствующий ему рост рубашки.
При поступлении в ВУЗ абитуриенты, получившие двойку на первом экзамене, ко второму не допускаются. Известны оценки десяти абитуриентов, полученные на первом экзамене. Определить, кто из них допущен ко второму экзамену.
В чемпионате по футболу команде за выигрыш дается 3 очка, за ничью – 2 очка, за проигрыш – 0 очков. Известно количество очков, полученных каждой из N команд. Определите словесный итог игры для каждой команды.
Петру Петровичу очень везло на рыбалке. Начиная с понедельника, он каждый день ловил К золотых рыбок (случайное число от 0 до 4) и каждая исполняла по 3 его желания. Сколько желаний Петра Петровича сбывалось ежедневно в течение всей недели.
Известно количество абитуриентов, подавших заявления на каждую из десяти специальностей и план приема по каждой специальности. Определить конкурс по каждой специальности.
Известны цены двенадцати наименований товаров в магазине. Покупатель имеет N рублей и может купить только один товар. Определитесь по каждому товару, сможет ли он его приобрести.
Из двух собачьих будок, находящихся на расстоянии 27 км одна от другой, навстречу друг другу выскочили в одно и то же время две драчливые собачки. Первая бежит со скоростью 4 км/ч, а вторая – 5 км/ч. Выдайте таблицу, из которой будет видно, как быстро сокращается расстояние между собачками: отобразите (ежечасно) расстояние, которое пробегают собачки, и расстояние, которое еще остается между ними.
Племя каннибалов решило съесть своих соседей, но дикари не знали, какое из ближайших племен выбрать: если в племени мало народу, то на всех каннибалов не хватит; если много самих каннибалов побьют. Оптимальное количество известно: от 10 до 65 человек. Рядом с ними проживало К племен, в каждом из которых известно количество жителей. Какие из этих племен людоеды могут съесть?
После уроков N учеников решали и отлаживали задачи на компьютере. Первый полностью отладил задачу за К минут (число вводится), все последующие тратили времени на 10 минут больше предыдущего. Сколько компьютерного времени им понадо6илось?
У прилавка магазина выстроилась очередь из 8 покупателей. Вам известно время обслуживания каждого покупателя. Определить время пребывания в очереди конкретного покупателя.
Клиент внес в банк К рублей. Каждый месяц эта сумма увеличивается на Y процентов. Выдать таблицу ежемесячных выплат клиента.
Составить программу вычисления суммы квадратов всех натуральных чисел от 1 до N.
Составить программу вычисления произведения всех четных натуральных чисел от 1 до N.
Найти произведение N произвольных чисел.
Известно N чисел (числа задаются случайным образом в промежутке [-15; 10]). Определить сумму положительных чисел и произведение чисел, кратных пяти.
Известно N чисел (числа задаются случайным образом в промежутке [-50; 50]). Определить сумму отрицательных четных чисел и произведение чисел, кратных трем.
Известно N чисел (числа задаются случайным образом в промежутке [1; 50]). Сравнить произведение четных чисел и произведение чисел, кратных трем или четырем.
Известно N чисел (числа задаются случайным образом в промежутке [20; 50]). Вывести те из них, которые делятся на 3, но не делятся на 5.
Вычислить произведение целых нечетных чисел от M до N (MДано натуральное n. Вычислить 1*3*5*....*n - для нечетных n и 2*4*6*....*n - для четных n.
Ввести с клавиатуры 10 чисел – положительных и отрицательных. Заменить все отрицательные числа их модулями и напечатать все полученные 10 чисел.
Вывести двузначные числа, которые делятся на 4, но не делятся на 6.
Дано вещественное число цена 1 кг конфет. Вывести стоимость 1, 2, , 10 кг конфет.
Для температуры от -15о до +30оС найти соответствующие значения температуры по шкале Фаренгейта и Кельвина. Известно, что для пересчета по шкале Фаренгейта нужно исходное значение t°С умножить на 1,8 и прибавить 32, а по шкале Кельвина значение абсолютного нуля соответствует 273,15оС.
Известна цена 1 кг изюма (значение вводится с клавиатуры). Вывести стоимость 100, 200, , 1000 г изюма.
Напечатать таблицу перевода расстояний в дюймах в сантиметры (1 дюйм = 2,54 см) для значений от 2 до 12 с шагом в 1 дюйм (от K до N дюймов с шагом H).
Напечатать таблицу соответствия между весом в фунтах и весом в килограммах для значений от 1 до N фунтов с шагом H фунт (1 фунт = 400 гр.).
Пожарных учат надевать штаны за 10 секунд. Получите таблицу одевания одного пожарного в течение пяти минут.

Самостоятельное задание №2. Составить программу выводящую список по варианту.
Вариант 1. всех четных чисел от 1 до 100.
Вариант 2. всех нечетных чисел от 1 до 100.
Вариант 3. всех чисел, заканчивающихся на цифру 5, от 1 до 100.
Вариант 4. всех чисел, заканчивающихся на цифру 2, от 1 до 100.
Вариант 5. всех чисел, заканчивающихся на цифру 3, от 1 до 100.
Вариант 6. всех чисел, заканчивающихся на цифру 4, от 1 до 100.
Вариант 7. всех четных чисел от 1 до 1000.
Вариант 8. всех нечетных чисел от 1 до 1000.
Вариант 9. всех чисел, заканчивающихся на цифру 5, от 1 до 1000.
Вариант 10. всех чисел, заканчивающихся на цифру 2, от 1 до 1000.
Вариант 11. всех чисел, заканчивающихся на цифру 3, от 1 до 1000.
Вариант 12. всех чисел, заканчивающихся на цифру 4, от 1 до 1000.
Вариант 13. всех чисел, заканчивающихся на цифру 6, от 1 до 1000.
Вариант 14. всех чисел, заканчивающихся на цифру 7, от 1 до 1000.
Вариант 15. всех чисел, заканчивающихся на цифру 8, от 1 до 1000.

Критерии оценки:
«отлично»
правильно решены все задания с 1 по 3;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решены варианты самостоятельного задания №1,2, самостоятельно.
«хорошо»
задания с 1 по 3 решены с ошибками;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решены варианты самостоятельного задания №1,2, с подсказками преподавателя.
«удовлетворительно»
решены задания с 1 по 3 с ошибками;
наличие отчета по практической работе, не соответствующего образцу оформления отчета.
решено одно из самостоятельных заданий.


Отчет по практической работе аналогичный практической работе №1, в отчет входит оформление всех самостоятельных заданий данной практической работы
Практическая работа № 9, 10 «Создание проектов создание циклической структуры (while и do)»
Учебная цель:
Познакомиться с интегрированной средой разработки Microsoft Visual Studio 2012.
Освоить построение циклических алгоритмов с не известным количеством проходов.
Освоить использование циклических операторов while и do при решении задач.

Учебные задачи:
Научиться создавать проекты различной сложности с использованием циклов.

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен
уметь:
разрабатывать программное обеспечение с помощью языков программирования.

знать:
специализированное программное обеспечение проектирования;
алгоритмизацию и программирование на встроенных алгоритмических языках;
платформы для создания, исполнения и управления информационной системой.

Задачи практической работы:

Повторить теоретический материал по теме практической работы.
Ответить на вопросы для закрепления теоретического материала.
Выполнить задания.
Оформить отчет.

Обеспеченность занятия и средства обеспечения указаны в рабочей программе профессионального модуля.

Краткие теоретические и учебно-методические материалы по теме практической работы

Циклический оператор while предназначен для организации цикла с предусловием, а оператор do – для организации цикла с постусловием. Выбор подходящего циклического оператора зависит от решаемой задачи, а также от личных предпочтений программиста.
Синтаксис цикла с предусловием: while (выражение) оператор;

Схема выполнения оператора while следующая:
1. Вычисляется выражение.
2. Если выражение ложно, то выполнение оператора while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполняется тело оператора while.
3. Процесс повторяется с пункта 1.
Цикл while является «условным» циклом, использующим условие на входе.
При построении цикла while необходимо включить в него какие-то конструкции, изменяющие величину проверяемого выражения так, чтобы, в конце концов, оно стало ложным. В противном случае выполнение цикла никогда не завершится.
Для изменения хода выполнения операторов, составляющих тело цикла можно воспользоваться операторами break и continue.
Синтаксис цикла с постусловием: do оператор while выражение;
Оператор do повторно выполняет оператор или блок операторов, пока определенное выражение не примет значение false. В других языках программирования (Паскаль) данный чикл работает иначе.
Рекомендации по написанию циклов
если в теле циклов while и for требуется выполнить более одного оператора, нужно заключать их в блок;
всем переменным, встречающимся в правой части операторов присваивания в теле цикла, до этого присвоены значения, а также возможно ли выполнение других операторов;
проверить, изменяется ли в теле цикла хотя бы одна переменная, входящая в условие продолжения цикла.

Вопросы для закрепления теоретического материала к практическому занятию:
Для чего нужен циклический алгоритм?
Чем отличается цикл с постусловием от цикла с предусловием?

Задания и инструкция по выполнению практической работы

Задание 1. Заполните таблицу в тетради:
Параметр
For
While
Do

Минимальное количество раз выполнения




Операторные скобки {}




Выход из цикла false/true




Изменение переменной условия




Задание начального значения




Место нахождения тела цикла





Задание 2. Создайте проект, определяющий количество цифр в числе.
Количество цифр в числе n неизвестно, поэтому необходимо использовать оператор While. Использование For потребует или введения дополнительных переменных, или искусственного выхода из цикла. Подсчет количества цифр начнем с последней цифры числа. Увеличим счетчик цифр на единицу (k). Число (n) уменьшим в 10 раз (разделив его на 10 и взяв только целую часть от деления), убирая тем самым из него последнюю цифру (подсчитанную). Далее с получившимся числом проделаем ту же последовательность действий и т. д., пока число не станет равным нулю.
Пусть введено число 65387, присвоим это значение переменной с именем m, значение счетчика числа цифр (k) равно 0. Выполним действия, описанные выше, их результат приведен в таблице. Итак, окончательное значение переменной k равно 5, в числе и цифр.
k
n

0
65387

1
6538

2
653

3
65

4
6

5
0

- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Измените заголовок формы, в свойстве Text установите значение Определение характеристик числа.
- Разместите компоненты Button, TextBox, Label как показано на рисунке. В свойстве Font установите размер шрифта равным 12 пт.

- В свойствах Text задайте значения, соответствующие рисунку.

- Создайте событие для элемента Button1, для этого достаточно дважды щелкнуть мышью по данному элементу.

- Запустите приложение на выполнение и протестируйте программу.

- Модифицируйте программу, так чтобы она еще находила сумму цифр числа. Добавьте на форму еще один Label, для вывода суммы числа. В свойстве Font установите размер шрифта равным 12 пт.

- Удалите у данного элемента значение свойстве text.

- Откройте ранее созданное событие для элемента Button1, для этого достаточно дважды щелкнуть мышью по данному элементу. Дополните программу вычислением суммы цифр числа. Операция % вычисляет остаток от деления, т. е. поделив число на 10, мы будим добавлять его к сумме.

- Запустите приложение на выполнение и протестируйте программу.

Самостоятельное задание №1. Продолжите модификацию программы в задании 1, так чтобы она позволяла:
найти первую цифру числа, например, для числа 7265 это цифра 7;
поменять порядок цифр числа на обратный. Например, было 12345, стало 54321;
найти количество четных цифр числа;
найти самую большую цифру числа;
n найти сумму цифр числа, больших 5;
ответить на вопрос, сколько раз данная цифра встречается в числе? Для этого следует добавить еще одно поле для ввода искомого значения.

Самостоятельное задание №2. Решите задачу 1 (Вывести таблицу значений функции y=sin(x), если х меняется от 1 до 2 с шагом 0.2) из практической работы №4 двумя способами с использованием оператора While и Do.

Задание 3. Составить программу перестановки первой и последней цифр введенного натурального числа. Пусть пользователем введено число 4538. После перестановки первой и последней цифр число станет таким: 8534.
Определить последнюю цифру числа нетрудно. Это можно сделать уже известным нам способом: 4538 % 10.
Чтобы найти и отделить первую цифру числа, надо использовать прием, который применялся в предыдущей программе для вывода цифр числа и для подсчета суммы цифр, т. е. отделять по одной цифре справа. Но, если в предыдущих программах такой процесс продолжался до тех пор пока n не равнялось нулю, а когда n становилось равным нулю, то цикл заканчивался, т. е. все цифры, включая первую, отделялись, то теперь надо этот процесс остановить на одну цифру раньше и тогда последним значением переменной n будет первая цифра числа. В нашем примере она равна 4.
Итак, первая и последняя цифры найдены. Как переставить их в числе.
Для веденного нами числа это можно сделать так. Вычесть из него первую цифру, умноженную на 1000 и вычесть последнюю цифру:
4538 -4 * 1000 - 8 = 530.
К полученному результату прибавить последнюю цифру - 8, умноженную на 1000 и прибавить первую цифру:
530 +8 * 1000 + 4 = 8534.
Две последние операции можно записать в одной строке:
4538 -4 * 1000 - 8 +8 * 1000 + 4 = 8534.
Возникает одна трудность. Как определить разряд, в котором находится первая цифра числа (первая слева) и на сколько надо умножить ее при вычитании? Тысячи ли это, десятки тысяч или другой разряд?
Для того, чтобы это выяснять заведем переменную, первоначальное значение которой 1, а затем, каждый раз при отделении цифры она умножается на 10.
Посмотрим весь процесс на примере того же числа 4538.
Первоначальные значения: n = 4538, i = 1.
Цикл продолжается пока n >= 10, 4538 >= 10 - истина, значит операторы цикла выполняются первый раз:
i = i *10 = 1*10 = 10; - переменная i получает первое значение,
n = 4538 div 10 = 453.
Проверка условия: 453 >= 10 - условие выполняется, значит цикл выполняется второй раз:
i = i *10 = 10*10 = 100;
n = 453 div 10 = 45.
Проверка условия: 45 >= 10 - истина, значит цикл выполняется третий раз:
i = i*10 = 100*10 = 1000;
n := 45 div = 4.
Проверка условия: 4 >= 10 - ложь, значит операторы цикла не выполняются.
Цикл заканчивается.
Конечные значения переменных: n = 4 - первая цифра числа, i = 1000.

- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Измените заголовок формы, в свойстве Text установите значение Перестановка первой и последней цифры числа.
- Разместите компоненты Button, TextBox, Label как показано на рисунке. В свойстве Font установите размер шрифта равным 12 пт. В свойствах Text задайте значения, соответствующие рисунку.

- Создайте событие для элемента Button1, для этого достаточно дважды щелкнуть мышью по данному элементу. Комментарии вводить не нужно. Разберитесь в коде самостоятельно, используя описание алгоритма в начале задания.

- Запустите приложение на выполнение и протестируйте программу.

- Измените программу, используя цикл с постусловием. Запустите приложение на выполнение и протестируйте программу.

Самостоятельное задание №3. Напишите программу для решения одной из предложенных ниже задач.
Составить программу вывода всех натуральных чисел, меньших n, квадрат суммы цифр которых равен заданному числу m.
Известны оценки каждого из 10 учеников класса по физике (использовать случайные числа). Определить количество пятерок, четверок, троек и двоек.
Известна масса каждого человека из некоторой группы людей (15 человек). Людей, имеющих массу более 100 кг, будем условно называть «большими». Определить среднюю массу «больших» людей и среднюю массу всех остальных.
Известен рост каждого человека в группе из 10 человек. На сколько рост самого высокого из них превышает рост самого низкого?
Известны оценки ученика по 12 предметам. Верно ли, что среди них нет троек?
Каждая бактерия делится на две в течение одной минуты. Начальное значение бактерий равно B. Сколько их станет через A минут.
Стоимость доставки самолетом 1кг груза составляет 30 рублей. Для каждого из N пассажиров введите вес багажа, который он перевозит. Подсчитайте, сколько каждый пассажир должен заплатить за перевозку своего багажа. Вычислите также общий вес груза, перевозимого пассажирами.
Население города увеличивается на 3% каждый год. В 1983 году население города составляло 65000 человек. Напишите программу, которая выведет на экран предсказываемую численность населения города в каждом году, вплоть до 2000.
При изготовлении детали измеряется ее диаметр. Если он больше 4 и меньше 5, то деталь – небракованая. Определите процент брака в партии из N деталей.
В лифте десятиэтажного дома кнопка первого этажа находится на высоте 1м 20см от пола. Кнопка каждого следующего этажа выше предыдущего на 10см. Получить таблицу этажей, до которых сможет доехать маленький мальчик. При этом известно, что рост мальчика N см (случайное число от 90см до 1м50см), а подпрыгивая, он может дотянуться до высоты, превышающей его рост на 45см.
Друзья составили про Петю задачу: наш друг Петя ест невкусную макаронину длиной 60км. Каждый день он съедает N метров этой макаронины (случайное число от 50 до 500). Сколько дней понадобится Пете, чтобы съесть всю макаронину? Сколько метров этой макаронины осталось Пете на последний день? Показать таблицу ежедневных Петиных достижений.
Вы должны своему другу 5 рублей. Вместо того, чтобы попросить вас вернуть ему сразу весь долг, Ваш друг предлагает, чтобы вы платили ему определенную сумму еженедельно в течение 15 недель. Он просит вас уплатить ему в первую неделю 1 копейку, во вторую - 2, в третью - 4, в четвертую - 8 и т.д. Вы уже почти согласились с его предложением, но затем решаете сначала написать программу, чтобы проверить, какую сумму вам придется заплатить, если вы примете его предложение. Напишите эту программу и решите, каким способом лучше выплатить свой долг.
По стеблю растения, высота которого 1 м, от земли ползет гусеница. Днем она поднимается на 3 дм, а ночью опускается на 2 дм. Через сколько суток гусеница доползет до верхушки растения. Выдать таблицу движения гусеницы по дням.
Десять совершенно одинаковых давно нестриженных барана пришли в парикмахерскую. С каждого барана состригли некоторое количество шерсти. Причем минимальное количество состриженной шерсти с одного барана составляет 300 г, а максимальное – 6 кг (в этом случае баран постригся наголо). Выдать таблицу значений, из которой будет видно: сколько шерсти состригли с каждого барана и сколько еще шерсти на нем осталось.
В стаде 40 баранов. Один баран поджал 2 ноги и сразу упал, второй баран поджал 3 ноги и еще быстрее упал, а третий поджал только одну ногу и поэтому не упал. Определить: сколько ног поджали все бараны в стаде, если известно, что каждый баран поджал некоторое количество ног: минимум - одну, максимум – три (получить случайным образом). А также определить: сколько баранов отдыхает на земле и сколько баранов гордо стоит.
Вам необходимо найти цифровой корень числа. Цифровой корень числа вычисляется следующим образом: складываются все цифры числа, затем все цифры найденной суммы и т.д. Процесс повторяется до тех пор, пока в результате не будет получено однозначное число (цифра), которое и является цифровым корнем.
На летних каникулах студент Вася отправился на турбазу «Горная вершина». Ему предстоял поход по маршруту повышенной сложности. Необходимо было преодолеть N горных уступов. При этом спуски и подъемы с уступа и на уступ можно было осуществить только при помощи лестницы. Чтобы подняться с одного горного уступа на другой, Вася должен взять лестницу такой длины, чтобы она была не меньше абсолютной разности высот этих уступов. То же самое происходит и при спуске. Поход Васе предстоит долгий и тяжелый, провизии нужно взять много, поэтому Вася не хочет тащить слишком длинную и тяжелую лестницу. Помогите Васе минимизировать длину лестницы, но так, чтобы он все-таки смог пройти свой нелегкий путь. Считается, что Вася изначально находится на вершине первого уступа, а итоговая цель маршрута – оказаться на вершине самого последнего уступа.

Критерии оценки:
«отлично»
правильно решены все задания с 1 по 3;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решены все самостоятельные задания №1-3, самостоятельно.
«хорошо»
правильно решены все задания с 1 по 3;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решены два самостоятельных задания, с подсказками преподавателя.
«удовлетворительно»
правильно решены все задания с 1 по 3;
наличие отчета по практической работе, не соответствующего образцу оформления отчета.
решено одно самостоятельное задание.


Отчет по практической работе аналогичный практической работе №1, в отчет входит оформление всех самостоятельных заданий данной практической работы


Практическая работа №11, 12 «Создание проектов для работы с одномерными массивами»
Учебная цель:
Познакомиться с интегрированной средой разработки Microsoft Visual Studio 2012.
Освоить заполнение одномерных массивов разными способами.
Освоить вывод элементов одномерного массива в элементы ListBox.
Освоить выполнение типовых операций обработки одномерных массивов.

Учебные задачи:
Научиться создавать проекты для работы с одномерными массивами.

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен
уметь:
разрабатывать программное обеспечение с помощью языков программирования.

знать:
специализированное программное обеспечение проектирования;
алгоритмизацию и программирование на встроенных алгоритмических языках;
платформы для создания, исполнения и управления информационной системой.

Задачи практической работы:

Повторить теоретический материал по теме практической работы.
Ответить на вопросы для закрепления теоретического материала.
Выполнить задания.
Оформить отчет.

Обеспеченность занятия и средства обеспечения указаны в рабочей программе профессионального модуля.

Краткие теоретические и учебно-методические материалы по теме практической работы

Массив представляет собой совокупность данных одного типа с общим для обращения к ним именем. В С# массивы могут быть как одномерными, так и многомерными. Массивы служат самым разным целям, поскольку они предоставляют удобные средства для объединения связанных вместе переменных.
Массивами в С# можно пользоваться практически так же, как и в других языках программирования. Тем не менее, у них имеется одна особенность: они реализованы в виде объектов.
Типичными операциями при работе с массивами являются:
вывод элементов массива;
ввод данных в массив;
определение суммы, произведения и количества каких-либо элементов массива;
поиск максимального или минимального элемента массива;
поиск заданного элемента массива.
В языке C# каждый индекс изменяется в диапазоне от 0 до некоторого конечного значения.
Объявление одномерного массива выглядит следующим образом: тип[] имя массива;
При объявлении массива используется имя с инициализацией, элементы константного массива следует заключать в фигурные скобки.
double[] x = {5.5, 6.6, 7.7};
Создание массива выполняется с помощью операции new.
int[] d = new int[5];
Здесь объявлен динамический целочисленный массив, в котором будут храниться 5 целых чисел.
Заполнение данными с клавиатуры массив A.
for(int i = 0; i < 5; i++) A[i] = int.Parse(Console.ReadLine());
Вычисляются элементы массива C.
for(int i = 0; i < 5; i++) C[i] = A[i] + B[i];

Вопросы для закрепления теоретического материала к практическому занятию:
Что такое массив?
Как осуществляется доступ к элементам массива?
Для чего нужно описывать массивы?
Как осуществляется объявление массивов на С#?
Что такое размерность массива?
Опишите способы задания одномерного массива.
Какие способы сортировки массивов вы знаете?

Задания и инструкция по выполнению практической работы

Задание 1. Заполнить одномерный массив числовыми данными случайным образом (из промежутка [-10; 10]). Вывести массив в ListBox. Определить сумму положительных и количество отрицательных элементов массива.
- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Измените заголовок формы, в свойстве Text установите значение Одномерный массив.
- Разместите компоненты Button, Label, ListBox как показано на рисунке. В свойстве Font установите размер шрифта равным 12 пт. Удалите текст из компонента Label1 и Label2.

- Создайте событие для элемента Button1 (Определить массив), для этого достаточно дважды щелкнуть мышью по данному элементу. Объявите переменную массива выше процедуры, как показано на рисунке.

- Создайте событие для элемента Button2 (Сумма положительных элементов), для этого достаточно дважды щелкнуть мышью по данному элементу.

- Создайте событие для элемента Button3 (Количество отрицательных элементов), для этого достаточно дважды щелкнуть мышью по данному элементу.

- Запустите приложение на выполнение и протестируйте программу.


Самостоятельное задание №1. Модифицируйте программу в задании 1, добавив кнопку и изменив диапазон случайных чисел, в соответствии с вариантом. Если требуется разместите необходимые компоненты на форме.
№ варианта
Диапазон значений
Задание

1
-100 - 100
Заменить все элементы с отрицательным значением на значение минимального не равного 0 положительного элемента

2
-50 - 50
Подсчет количества элементов массива кратных 3.

3
0 - 100
Подсчет количества элементов массива с нечетными индексами.

4
-50 - 50
Подсчет количества элементов массива, лежащие в интервале от с1 до с2.

5
-100 - 100
Подсчет суммы элементов массива кратных 3.

6
-100 - 100
Подсчет суммы элементов массива с нечетными индексами.

7
-100 - 100
Подсчет суммы элементов массива с четными индексами.

8
-100 - 100
Заменить все элементы с отрицательными значениями средним арифметическим значением всех элементов массива

9
0 - 100
Подсчет суммы элементов массива, лежащие в интервале от с1 до с2.

10
0 - 100
Подсчет произведения элементов массива кратных 3.

11
-50 - 50
Подсчет произведения элементов массива с нечетными индексами.

12
-100 - 100
Подсчет произведения элементов массива, лежащие в интервале от с1 до с2.

13
0 - 100
Обменять местами наибольший и наименьший элементы.

14
-50 - 50
Определить, сколько среди элементов массива чисел меньших K, равных K и больших K.

15
-100 - 100
Подсчитать, сколько в массиве отрицательных, положительных и нулевых элементов.


Самостоятельное задание №2. Составьте проект для решения задачи по варианту. Если сказано, что массив заполнен некоторыми числами – используйте либо заполнение случайными числами (диапазон случайных чисел определяйте самостоятельно, опираясь на смысл задачи), либо заполнение с клавиатуры.
В массив из 7 элементов занесены натуральные числа. Найти сумму тех элементов, которые кратны К.
Дана последовательность десяти действительных чисел. Заменить все ее члены, большие данного числа, самим эти числом. Подсчитать количество замен.
Записать в массив Y(5) квадраты чисел, указанных в массиве N(5).
Вывести на печать первый отрицательный элемент массива A(20) и его номер, полагая, что в массиве есть хотя бы один отрицательный элемент.
Дана последовательность действительных чисел. Подсчитать, сколько в этой последовательности положительных, отрицательных и нулевых элементов.
Определить количество элементов последовательности натуральных чисел, кратных некоторому числу и заключенных в определенном промежутке.
Даны целые числа. Вывести на экран только те числа, значение которых больше их индекса.
Найти разность максимального и минимального элементов массива X(10).
Дан массив из 10 элементов. Подсчитайте количество таких элементов:
которые больше среднего арифметического всех его элементов;
которые равны максимальному значению этого массива.
Пусть дана последовательность из 15 различных целых чисел. Найдите среднее арифметическое чисел этой последовательности, расположенных между максимальным и минимальным числами.
Дан набор из 10 целых чисел. Вывести в том же порядке все четные (нечетные) числа из данного набора и количество K таких чисел.
Выяснить, верно ли, что произведение элементов массива есть неотрицательное число.
Дан массив. Все его элементы:
увеличить в 2 раза;
уменьшить на число a.
Дан массив. Определить:
сумму всех элементов массива;
сумму первых шести элементов массива;
сумму элементов массива с k1-го по k2-й (k1 и k2 вводятся с клавиатуры);
Дан массив. Определить:
произведение всех элементов массива;
сумму квадратов всех элементов массива;
среднее арифметическое элементов массива с p1-го по p2-й (p1 и p2 вводятся с клавиатуры).
Дан массив целых чисел. Выяснить:
верно ли, что сумма элементов массива есть четное число;
верно ли, что сумма квадратов элементов массива есть пятизначное число.


Критерии оценки:
«отлично»
правильно решено задание 1;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решены все самостоятельные задания №1-2, самостоятельно.
«хорошо»
правильно решено задание 1;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решено самостоятельное задание 2.
«удовлетворительно»
правильно решено задание 1;
наличие отчета по практической работе, не соответствующего образцу оформления отчета.
решено самостоятельное задание 1.


Отчет по практической работе аналогичный практической работе №1, в отчет входит оформление всех самостоятельных заданий данной практической работы

Практическая работа №13 «Создание проектов для работы с двумерными массивами»
Учебная цель:
Познакомиться с интегрированной средой разработки Microsoft Visual Studio 2012.
Освоить заполнение двумерных массивов разными способами.
Освоить вывод элементов двумерного массива в сетку DataGridView.
Освоить выполнение типовых операций обработки двумерных массивов.

Учебные задачи:
Научиться создавать проекты для работы с двумерными массивами.

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен
уметь:
разрабатывать программное обеспечение с помощью языков программирования.

знать:
специализированное программное обеспечение проектирования;
алгоритмизацию и программирование на встроенных алгоритмических языках;
платформы для создания, исполнения и управления информационной системой.

Задачи практической работы:

Повторить теоретический материал по теме практической работы.
Ответить на вопросы для закрепления теоретического материала.
Выполнить задания.
Оформить отчет.

Обеспеченность занятия и средства обеспечения указаны в рабочей программе профессионального модуля.

Краткие теоретические и учебно-методические материалы по теме практической работы
В повседневной жизни довольно часто приходится иметь дело с информацией, которая представлена в табличной форме. Колонки и (или) строки таблицы, как правило, состоят из однородной информации. Поэтому в программе, обрабатывающей табличные данные, имеет смысл использовать массивы для хранения и обработки таблиц. Такая таблица может быть представлена как двумерный массив.
Для работы с двумерными массивами используются вложенные циклы.


А11
А12
А13
А14

A (3, 4(
А21
А22
А23
А24


А31
А32
А33
А34


Объявление двумерного массива integer размерами 10x20: int[ , ] table = new int[10, 20];
Оба размера массива разделяются запятой. В первой части этого объявления синтаксическое обозначение [ , ] означает, что создается переменная ссылки на двумерный массив. Если же память распределяется для массива с помощью оператора new, то используется следующее синтаксическое обозначение: int[10, 20]. В данном объявлении создается массив размерами 10x20, но и в этом случае его размеры разделяются запятой.
Для доступа к элементу двумерного массива следует указать оба индекса, разделив их запятой. Например, в следующей строке кода элементу массива table с координатами местоположения (3,5) присваивается значение 10: table[3, 5] = 10;

Вопросы для закрепления теоретического материала к практическому занятию:
Что такое массив?
В чем разница между одномерными и двумерными массивами?
Как осуществляется описание двумерных массивов на С#?
Как можно осуществить ввод матрицы?
Как можно организовать вывод матрицы?

Задания и инструкция по выполнению практической работы
Задание 1. Создайте приложение, которое выводит двухмерный массив случайных чисел в объекте DataGridView и определяет минимальный элемент.
- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Измените заголовок формы, в свойстве Text установите значение Двумерный массив.
- Разместите компоненты Button, DataGridView как показано на рисунке. В свойстве Font установите размер шрифта равным 12 пт.

- Создайте событие для элемента Button1(Сформировать массив), для этого достаточно дважды щелкнуть мышью по данному элементу.

- Создайте событие для элемента Button2(Поиск минимальных элементов по строкам), для этого достаточно дважды щелкнуть мышью по данному элементу.

- Запустите приложение на выполнение и протестируйте программу.

Самостоятельное задание №1. Составьте проект для решения задачи по вариантам. Если сказано, что массив заполнен некоторыми числами – используйте либо заполнение случайными числами (диапазон случайных чисел определяйте самостоятельно, опираясь на смысл задачи), либо заполнение с клавиатуры.
Сформировать двумерный массив M размерностью 4х3 по правилу: элементы первой строки=1, второй строки=2, все остальные=3. Найти сумму и произведение всех элементов, а также максимальный элемент массива.
Найти сумму всех положительных элементов массива Y[4, 4], найти среднее арифметическое всех элементов. Массив сформировать случайным образом.
Задан двумерный массив из 12-ти элементов. Разделить каждый элемент массива на 7. Результат сохранить в том же массиве.
Дан двумерный массив. Определить:
сумму элементов второго столбца массива, больших 10;
количество ненулевых элементов первой строки массива;
сумму отрицательных элементов пятой строки массива.
Дан двумерный массив. Определить:
сумму элементов третьей строки массива, не превышающих 25;
количество элементов второго столбца массива, больших 15;
сумму элементов четвертого столбца массива, меньших 100.
Дан двумерный массив. Определить:
количество элементов четвертой строки массива, меньших 5;
среднее арифметическое четных элементов третьего столбца;
среднее арифметическое элементов четвертой строки, кратных трем.
Дан двумерный массив. Определить:
количество ненулевых элементов второго столбца массива, больших 15;
среднее арифметическое нечетных элементов пятой строки;
среднее арифметическое элементов четвертого столбца, кратного четырем.
В массиве записаны целые числа. Вычислить:
произведение элементов побочной диагонали массива, меньших 10;
сумму элементов главной диагонали массива, оканчивающихся цифрой 7.
В массиве записаны целые числа. Вычислить:
количество нулевых элементов, расположенных над главной диагональю массива;
число нечетных элементов, расположенных под побочной диагональю массива.
Дана матрица размера M ЧN и целое число K (1
·K
·M). Найти сумму и произведение элементов K-й строки данной матрицы.
Дана матрица размера M ЧN и целое число K (1
·K
·M). Найти сумму и произведение элементов K-го столбца данной матрицы.
В двумерном массиве хранится информация о количестве студентов в той или иной группе каждого курса института с первого по пятый (в первой строке информация о группах первого курса, во второй второго и т. д.). На каждом курсе имеется 8 групп. Составить программу для расчета общего числа студентов на любом курсе.
В двухмерном массиве хранится информация о зарплате 5 человек за каждый месяц года (первого человека в первой строке, второго во второй и т. д.). Составить программу для расчета общей зарплаты, полученной за год любым человеком, информация о зарплате которого представлена в массиве.
В поезде 10 вагонов, в каждом из которых 36 мест. Информация о проданных на поезд билетах хранится в двумерном массиве, номера строк которых соответствуют номерам вагонов, а номера столбцов номерам мест. Если билет на то или иное место продан, то соответствующий элемент массива имеет значение 1, в противном случае 0. Составить программу, определяющую число свободных мест в любом из вагонов поезда.
Дан двумерный массив целых чисел. В каждой его строке (столбце) найти:
сумму отрицательных элементов;
среднее арифметическое отрицательных элементов;
Дан двумерный массив целых чисел. В каждой его строке (столбце) найти:
количество четных элементов;
среднее арифметическое положительных элементов, кратных пяти;
Дан двумерный массив целых чисел. В каждой его строке (столбце) найти:
количество элементов, попадающих в промежуток от a до b;
сумму нечетных положительных элементов;
Дан двумерный массив целых чисел. В каждой его строке (столбце) найти:
количество положительных элементов, кратных k;
сумму элементов в строках с k1 по k2;
Дан двумерный массив целых чисел. В каждой его строке (столбце) найти:
количество элементов, кратных a или b;
произведение отрицательных элементов в столбцах с k1 по k2;

Критерии оценки:
«отлично»
правильно решено задание 1;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решено самостоятельное задание №1, самостоятельно и вариант соответствует номеру ПК.
«хорошо»
правильно решено задание 1;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решено самостоятельное задание 1с недочетами и вариант соответствует номеру ПК.
«удовлетворительно»
правильно решено задание 1;
наличие отчета по практической работе, не соответствующего образцу оформления отчета.
решено самостоятельное задание, но вариант не соответствует номеру ПК.

Отчет по практической работе аналогичный практической работе №1, в отчет входит оформление всех самостоятельных заданий данной практической работы

Тема 1.2 «Принципы объектно-ориентированного программирования»

Практическая работа №14 «Создание простейших методов»
Учебная цель:
Познакомиться с интегрированной средой разработки Microsoft Visual Studio 2012.
Освоить создание методов, не возвращающих значения.
Освоить использование методов в проекте.

Учебные задачи:
Научиться создавать простые методы и использовать их в своей программе.

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен
уметь:
разрабатывать программное обеспечение с помощью языков программирования.

знать:
специализированное программное обеспечение проектирования;
алгоритмизацию и программирование на встроенных алгоритмических языках;
платформы для создания, исполнения и управления информационной системой.

Задачи практической работы:

Повторить теоретический материал по теме практической работы.
Ответить на вопросы для закрепления теоретического материала.
Выполнить задания.
Оформить отчет.

Обеспеченность занятия и средства обеспечения указаны в рабочей программе профессионального модуля.

Краткие теоретические и учебно-методические материалы по теме практической работы
В языке C# нет специальных ключевых слов - procedure и function, но присутствуют сами эти понятия.
Синтаксис объявления метода позволяет однозначно определить, чем является метод - процедурой или функцией.
Функция отличается от процедуры двумя особенностями:
1. Она всегда вычисляет некоторое значение, возвращаемое в качестве результата функции;
2. И вызывается в выражениях.
Процедура C# имеет свои особенности:
1. Она возвращает формальный результат void, указывающий на отсутствие результата;
2. Вызов процедуры является оператором языка;
3. И она имеет входные и выходные аргументы, причем выходных аргументов - ее результатов - может быть достаточно много.
Обычно метод предпочитают реализовать в виде функции тогда, когда он имеет один выходной аргумент, рассматриваемый как результат вычисления значения функции. Возможность вызова функций в выражениях также влияет на выбор в пользу реализации метода в виде функции. В других случаях метод реализуют в виде процедуры.
Написание метода всегда состоит из двух этапов: подготовка кода решаемого алгоритма и определение входных и выходных параметров. Методы могут работать как с параметрами, так и без них. Если метод не возвращает никаких значений, то к его заголовку добавляется ключевое слово void. Методы целесообразно помещать в отдельные классы.
Статические поля – поля, принадлежащие классу. Они объявляются с ключевым словом static. Основное отличие от обычных полей – для обращения к статическим полям не требуется создание объекта. Доступ осуществляется напрямую через имя класса. Более того, через объекты к статическим полям обратиться нельзя.
Пример объявления статического поля: public static int I;
Синтаксис заголовка метода:
[атрибуты][модификаторы доступа]{void| тип_результата_функции}
имя_метода([список_формальных_аргументов])
Квадратные скобки в формуле показывают, что атрибуты и модификаторы могут быть опущены при описании метода.
Модификаторы доступа:
- public показывает, что метод открыт и доступен для вызова клиентами и потомками класса.
- private говорит, что метод предназначен для внутреннего использования в классе и доступен для вызова только в теле методов самого класса.
Если модификатор доступа опущен, то по умолчанию предполагается, что он имеет значение private и метод является закрытым для клиентов и потомков класса.
Обязательным при описании заголовка является указание типа результата, имени метода и круглых скобок, наличие которых необходимо и в том случае, если сам список формальных аргументов отсутствует. Формально тип результата метода указывается всегда, но значение void однозначно определяет, что метод реализуется процедурой. Тип результата, отличный от void, указывает на функцию. Вот несколько простейших примеров описания методов:
void A() {...};
int B(){...};
public void C(){...};
Методы A и B являются закрытыми, а метод С - открыт. Методы A и С реализованы процедурами, а метод B - функцией, возвращающей целое значение.
Вызов метода, независимо от того, процедура это или функция, имеет один и тот же синтаксис:
имя_метода([список_фактических_аргументов])
Если это оператор, то вызов завершается точкой с запятой. Формальный аргумент, задаваемый при описании метода - это всегда имя аргумента (идентификатор). Фактический аргумент - это выражение, значительно более сложная синтаксическая конструкция.

Вопросы для закрепления теоретического материала к практическому занятию:
Что такое метод?
Назовите модификаторы доступа.
Какое ключевое слово необходимо использовать в заголовке метода, если метод не возвращает значений?
Перечислите основные моменты, которые необходимо соблюдать при вызове метода.
С какой целью используется ключевое слово static?

Задания и инструкция по выполнению практической работы

Задание 1. Известны катеты нескольких прямоугольных треугольников. Определить для каждого треугольника значение гипотенузы.
- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Измените заголовок формы, в свойстве Text установите значение Гипотенуза.
- Разместите компоненты Button, Label, numericUpDown как показано на рисунке. В свойстве Font установите размер шрифта равным 12 пт. В свойствах Text задайте значения, соответствующие рисунку.

- Создайте обработчик событий на кнопку Рассчитать.

Компилятор подчеркнул метод Hip, т. к. не может его найти не в одном из встроенных классов.
- Напишите метод Hip, который будет высчитывать значение гипотенузы. Создаем метод ниже события нажатия на кнопку, т. е. после закрывающийся }.

Данный метод мы вызвали из нажатия кнопки сразу по имени, передав только параметы. Создавать объект не потребовалось, так как перед методом указали слово static (статический).
- Запустите программу на выполнение. Проверьте работоспособность.

Самостоятельное задание № 1. Создайте новый проект для решения следующей задачи с использованием методов по вариантам.
Даны две переменные x, y (вещественные). Используя метод нахождения наименьшего из двух значений, найти наименьшее из x, y.
Даны две переменные x, y (вещественные). Используя метод нахождения наименьшего из двух значений, найти наименьшее из x+y, x
·y, 0.5.
Даны две переменные x, y (вещественные). Используя метод нахождения наименьшего из двух значений, найти наименьшее из 2x, |x-y|, 4.5, (x+y)/3.
Разработать метод max(a,b) для нахождения максимального из двух чисел. Вычислить с помощью него значение выражения z=max(x,2y-x)+max(5x+3y,y).
Разработать метод f(n), который для заданного натурального числа n находит значение 13 EMBED Equation.3 1415. Вычислить с помощью него значение выражения:
13 EMBED Equation.3 1415.
Описать метод, находящий величину угла в радианах, если дана его величина D в градусах (D вещественное число, 0
· D
· 360). Воспользоваться следующим соотношением: 180
· =
· радианов.
Описать метод, находящий величину угла в градусах, если дана его величина D в радианах (D вещественное число). Воспользоваться следующим соотношением: 180
· =
· радианов. Методы: вычисление длины отрезка, вычисление площади по формуле Герона 13 QUOTE 1415
, где 13 QUOTE 1415

Даны координаты трех вершин треугольника. Найти длины всех его сторон и периметр, если треугольник существует.
Используйте метод нахождения длины отрезка, заданного координатами своих концов. Методы: вычисление длины отрезка, вычисление площади по формуле Герона 13 QUOTE 1415
, где 13 QUOTE 1415

Напишите программу поиска большего из четырех чисел с использованием метода поиска большего из двух чисел.
Составьте программу для вычисления длин медиан треугольника, у которого длины сторон a, b, c. Длина медианы будет рассчитываться в методе.
Даны координаты двух точек A(x1,y1) и B(x2,y2) в прямоугольной системе координат. Какая из этих точек находится дальше от начала координат, определить с помощью метода.
Даны три числа x, y, z. Найти значение выражения max (x+y+z, xyz)+3, с помощью метода.

Критерии оценки:
«отлично»
правильно решено задание 1;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решено самостоятельное задание №1, самостоятельно.
«хорошо»
правильно решено задание 1;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решено самостоятельное задание №1, с ошибками.
«удовлетворительно»
правильно решено задание 1;
наличие отчета по практической работе, не соответствующего образцу оформления отчета.
не решено самостоятельное задание №1.

Отчет по практической работе аналогичный практической работе №1, в отчет входит оформление всех самостоятельных заданий данной практической работы
Практическая работа №15, 16 «Создание простейших классов»
Учебная цель:
Познакомиться с интегрированной средой разработки Microsoft Visual Studio 2012.
Освоить алгоритм построения класса;
Освоить создание объектов класса.

Учебные задачи:
Научиться создавать проекты с использованием простых классов.

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен
уметь:
разрабатывать программное обеспечение с помощью языков программирования.

знать:
специализированное программное обеспечение проектирования;
алгоритмизацию и программирование на встроенных алгоритмических языках;
платформы для создания, исполнения и управления информационной системой.

Задачи практической работы:

Повторить теоретический материал по теме практической работы.
Ответить на вопросы для закрепления теоретического материала.
Выполнить задания.
Оформить отчет.

Обеспеченность занятия и средства обеспечения указаны в рабочей программе профессионального модуля.

Краткие теоретические и учебно-методические материалы по теме практической работы

Все программы на языке C# создаются внутри классов. Основная структура класса имеет следующий вид:

Слово class должно быть написано строчными буквами, но имя класса может быть любым и содержать как прописные, так и строчные буквы, причем использование пробелов не допускается.
Класс представляет собой шаблон, по которому определяется форма объекта. В нем указываются данные и код, который будет оперировать этими данными. В С# используется спецификация класса для построения объектов, которые являются экземплярами класса. При этом очень важно подчеркнуть, что класс является логической абстракцией. Физическое представление класса появится в оперативной памяти лишь после того, как будет создан объект этого класса.
При определении класса объявляются данные, которые он содержит, а также код, оперирующий этими данными. Если самые простые классы могут содержать только код или только данные, то большинство настоящих классов содержит и то, и другое.
Объект можно рассматривать как совокупность свойств, методов и событий, работающий при этом как единое целое.
Синтаксис класса:
class имя_класса{
тип_доступа тип имя_переменной1;
тип_доступа тип имя_переменной2;

тип_доступа возвращаемый_тип
имя_метода1(список_параметров) {тело_метода}
}
где тип_доступа может быть public, private, protected, internal. Члены класса с типом доступа public доступны везде за пределами данного класса, с типом доступа protected – внутри членов данного класса и производных, с типом доступа private - только для других членов данного класса. Тип доступа internal применяется для типов, доступных в пределах одной сборки.
Пример:
class Animal
{
public string Name;
private int Weight;
protected int Type;
public int Animal(int W, int T, string N)
{
Weight=W;
Type=T;
Name=N;
}
public int GetWeight()
{
return Weight;
}
}
Создание объекта:
имя_класса имя_обьекта = new имя_класса();
При создании объекта класса происходит вызов соответствующего конструктора класса.

Вопросы для закрепления теоретического материала к практическому занятию:
Что такое класс?
Что такое объект?
Назовите основные принципы ООП и дайте каждому из них характеристику.
Какие элементы определяются в составе класса?
Каково соотношение понятий «класс» и «объект»?
Что понимается под термином «члены класса»?
Какие модификаторы типа доступа Вам известны?
В чем заключаются особенности доступа членов класса с модификатором public?
В чем заключаются особенности доступа членов класса с модификатором private?
В чем заключаются особенности доступа членов класса с модификатором protected?
В чем заключаются особенности доступа членов класса с модификатором internal?
Какое ключевое слово языка C# используется при создании объекта?
Приведите синтаксис создания объекта в общем виде.

Задания и инструкция по выполнению практической работы

Задание 1. Создать простой класс Worker.
- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Измените заголовок формы, в свойстве Text установите значение Работа с классом Рабочий.
- Разместите компоненты Button, TextBox, Label, numericUpDown как показано на рисунке. В свойстве Font установите размер шрифта равным 12 пт. В свойствах Text задайте значения, соответствующие рисунку.

- В обозревателе решений нажмите ПКМ и в контекстном меню выберите команду Добавить – класс.

- В окне добавления нового элемента задайте имя класса Worker и нажмите кнопку Добавить.

- В результате в код проекта добавиться заготовка для создания класса Worker.

- В класс добавьте два общедоступных поля: имя и возраст, а также одно защищеное поле: вес.

- Для записи и чтения данных из защищенных полей используйте методы. Добавьте в класс Worker метод SetEat, который будет отвечать за еду: если человек что-то съест, то его вес должен будет увеличиться на количество съеденного. Если поле вес защищенное, то в него не только писать нельзя, но и читать тоже нельзя. Для чтения данных из защищенного поля необходимо использовать еще один метод GetEat.

- Создайте обработчик событий на кнопку Показать вес, установив значение параметра eda сначала 5 кг, затем 15 кг пищи, а потом проверьте его вес.

- Запустите программу на выполнение. Проверьте работоспособность.

- Усовершенствуйте метод SetEat таким образом, что если рабочий за раз съедает более, чем 10 кг, то его возраст увеличивается на год, а вес увеличивается только наполовину от съеденного.
- Измените данный метод в классе, в соответствии с рисунком.

- Запустите программу на выполнение. Проверьте работоспособность. Сохраните и не удаляйте, т. к. она понадобиться в следующей практической работе.

- Обозреватель решений изображён на рисунке.


Самостоятельное задание №1. Создайте проект, в котором можно было бы вводить и получать информацию об определенных объектах некоторого класса:
класс «Книги»: название, автор, год выпуска, объем в листах.
класс «Насекомые»: название, скорость передвижения, окраска, используемая пища, среда обитания.
класс «Газеты»: название, номер, дата выпуска.
класс «Пирожные»: название, тесто, крем, вес, калорийность, цена.
класс «Молочные изделия»: название, вес, жирность, производитель, цена.
класс «Поезд»: номер, пункт отправления, пункт назначения, дата отправления, время отправления, время в пути.
класс «Собака»: кличка, порода, рост по холке, окрас шерсти, вес, характер.
класс «Самолет»: марка самолета, пункт отправления, пункт назначения, дата отправления, время отправления, время в пути.
класс «Студент»: имя, отчество, фамилия, пол, группа, дата рождения, рост, вес, вид спорта.
класс «Телефонный звонок»: номер телефона, дата разговора, продолжительность, код города.
класс «Поездка»: номер поезда, пункт назначения, дни следования, время прибытия, время стоянки.
класс «Кинотеатр»: название кинофильма, сеанс, стоимость билета, зал, количество зрителей.
класс «Товар»: название, цена, единицы измерения, вид товара, количество.
класс «Автомобиль»: арка, мощность, стоимость.
класс «Экзамен»: имя студента, предмет, дата экзамена, оценка.

Задание 2. Создайте класс Монтср с защитным полем уровнем жизни и методом поиска уровня жизни после игры. В зависимости от выпавшего случайного значения, тот или иной монстр теряет половину своих сил.
- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Измените заголовок формы, в свойстве Text установите значение Игра.
- Разместите компоненты Button, Label как показано на рисунке. В свойстве Font установите размер шрифта равным 12 пт. В свойствах Text задайте значения, соответствующие рисунку.

- В обозревателе решений нажмите ПКМ и в контекстном меню выберите команду Добавить – класс.

- В окне добавления нового элемента задайте имя класса Monstr и нажмите кнопку Добавить.
- В результате в код проекта добавиться заготовка для создания класса Monstr.

- В класс добавьте защищенное поле: уровень жизни.

- Для того чтобы данное поле было доступно в основной программе следует написать метод на чтение данного поля.

- Добавьте в класс Monstr метод Min, который будет отвечать за сокращение уровня жизни монстра в два раза после игры. В качестве входного параметра (а) будет задаваться значение текущего уровня жизни мостра.

- Создайте обработчик событий на кнопку Играть. Количество жизни в игре у монстра (b) будет задаваться случайным образом.

- Запустите программу на выполнение. Проверьте работоспособность.

Задание 3. Ответьте на следующие вопросы преподавателю:
Раскройте последовательность работы с классами;
Укажите область описания класса;
Укажите область описания закрытых полей и функций класса;
Что означает – закрытое поле;
Укажите область описания открытых полей и функций;
Что значит открытые поля и функции класса;
Опишите синтаксис описания класса (заголовок, тело);
Опишите синтаксис реализации функций класса;
Опишите технологию вызова функций в теле главной функции.

Задание 4. Измените текст программы так, чтобы поле levlife стало доступным в основной функции и значение этого поля задавалось с клавиатуры.
Задание 5. Модифицируйте текст программы так, чтобы в системе существовало три монстра с различными уровнями жизни, задание которых осуществляется с клавиатуры.
Задание 6. Дополните текст программы описанием функции, которая позволит при уменьшении значения поля levlife определенного монстра, увеличить значение этого поля остальных монстров на 30 очков.

Самостоятельное задание №2. Создайте новый проект для работы с приведенным ниже классом:
Класс «Пирожное»:
Поля класса: название, тесто, крем, вес, калорийность, цена.
Методы класса:
вывод информации о пирожном;
подсчет стоимости покупки пирожных конкретного вида.
определите стоимость покупки пирожных, если эти пирожные могут быть разного вида.
дополнительно придумайте к каждому классу еще по одному методу, возвращающему значение.
Класс «Цветы»
Поля класса: название, тип, оттенок, страна-производитель, цена, длина стебля.
Методы класса:
вывод информации о цветке (с возвратом значения),
подсчет стоимости покупки букета (количество цветов в букете задается в виде параметра, void-метод).
дополнительно придумайте к каждому классу еще по одному методу, возвращающему значение.
Класс «Спортсмен»
Поля класса: имя, отчество, фамилия, пол, возраст (*дата рождения), рост, вес, вид спорта.
Методы класса:
вывод информации о спортсмене;
определение идеального веса по формуле Брока:
до 40 лет: идеальный вес (кг) = рост (см) – 110
после 40 лет: идеальный вес (кг) = рост (см) – 100
определение идеального веса по формуле Купера:
для женщины: идеальный вес (кг) = (рост (см) х 3,5 : 2,54 - 108) х 0,453
для мужчины: идеальный вес (кг) = (рост (см) х 4,0 : 2,54 - 128) х 0,453.
Дополнительно придумайте к каждому классу еще по одному методу, возвращающему значение.
Класс «Комната»
Поля класса: длина комнаты, ширина комнаты, высота потолков, количество окон, высота окна, ширина окна.
Методы класса:
«Вычисление площади комнаты»;
«Вычисление объема комнаты»;
«Информация о комнате»;
«Ремонт»: - определить количество рулонов обоев, необходимое для ремонта данной комнаты. Предусмотреть работу с рулонами разной длины (10 м и 15 м).
дополнительно придумайте к каждому классу еще по одному методу, возвращающему значение.
Класс «Автомобиль».
Поля класса: объем бака (начальное значение этого поля установите прямо в классе), количество бензина в баке (начальное значение - ноль), расход бензина на сотню (начальное значение установите в классе), пробег.
Методы класса:
«Информация о машине» - отображаются следующие характеристики: объем бака, количество бензина в баке, расход и пробег.
«Заправить машину» - позволяет увеличивать количество бензина в баке. Если весь желаемый бензин поместился, то метод должен возвращать ноль. Если что-то не поместилось, то метод должен возвращать это значение.
«Ехать» - в качестве параметра будет количество километров. Во время поездки бензин в баке должен уменьшаться, пробег увеличиваться. При этом необходимо отследить ситуацию, когда бензина может не хватить на всю поездку. В этом случае нужно выдать сообщение, что столько-то километров не доехали. В случае, когда пробег пройдет порог очередной тысячи - расход надо увеличить на 0,1 и вывести сообщение.
«Надо ли заправляться?» - метод возвращает значение «Истина», если в баке осталось меньше 10% бензина и «Ложь» – в противном случае.
Класс «Покупатель»
Поля класса: название покупаемого продукта, цена, количество, кошелек, настроение (начальное значение=10).
Методы класса:
«Информация о покупке» - отображается название купленного продукта, его количество и стоимость покупки.
«Купить» - если человек что-то покупает, то стоимость покупки увеличивается, а наличность кошелька уменьшается. Выдавать сообщение, сколько денег осталось в кошельке после совершения покупки. Добавьте связь с настроением: если денег хватило на совершение покупки, то настроение увеличивается на 50% от суммы покупки, а если не хватило – то настроение уменьшается на количество единиц, равное количеству денег, которых не хватило для совершения покупки.
«Посмотреть настроение» - отслеживайте само настроение:
если настроение больше 15, то оно «бодрое»,
если от 5 до 15, то – нормальное,
если от -10 до 5 , то – плохое,
если меньше -10, то – депрессивное.

Критерии оценки:
«отлично»
правильно решены все задания с 1 по 6;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решены все самостоятельные задания №1-2, самостоятельно.
«хорошо»
правильно решены все задания с 1 по 4;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решены все самостоятельные задания №1-2 с недоработками, самостоятельно.
«удовлетворительно»
правильно решены все задания с 1 по 3;
наличие отчета по практической работе, не соответствующего образцу оформления отчета.
решено одно самостоятельное задание.

Отчет по практической работе аналогичный практической работе №1, в отчет входит оформление всех самостоятельных заданий данной практической работы
Практическая работа №17 «Создание классов с использованием свойств»
Учебная цель:
Познакомиться с интегрированной средой разработки Microsoft Visual Studio 2012.
Освоить создание свойств класса.

Учебные задачи:
Научиться создавать классы с необходимыми свойствами и использовать их в своей программе.

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен
уметь:
разрабатывать программное обеспечение с помощью языков программирования.

знать:
специализированное программное обеспечение проектирования;
алгоритмизацию и программирование на встроенных алгоритмических языках;
платформы для создания, исполнения и управления информационной системой.

Задачи практической работы:

Повторить теоретический материал по теме практической работы.
Ответить на вопросы для закрепления теоретического материала.
Выполнить задания.
Оформить отчет.

Обеспеченность занятия и средства обеспечения указаны в рабочей программе профессионального модуля.

Краткие теоретические и учебно-методические материалы по теме практической работы

Свойства – неотъемлемая часть класса. Именно с помощью свойств реализовывается один из «китов» объектно-ориентированного программирования – инкапсуляция.
Инкапсуляция (инкапсуляция вариаций)– техника сокрытия частей Объектно-Ориентированных программных систем.
Свойство это конструкция языка C#, которая заменяет собой использование обычных методов доступа.
Работа со свойством экземпляра напоминает работу с полями экземпляра.
Свойство состоит из имени, типа и тела. В теле задаются методы доступа, через использование ключевых слов set и get.
Метод set автоматически срабатывает тогда, когда свойству пытаются присвоить значение. Это значение представлено ключевым словом value.
Метод get автоматически срабатывает тогда, когда мы пытаемся получить значение.
int field;
public int Property
{
get { return field; }
set { field = value;}
}
Метод доступа get–используется для получения значения из переменной.
Метод доступа set-используется для записи значения в переменную.
Свойство только для чтения
int field;
public int Property
{
get
{
return field;
}
}

Свойство только для записи
int field;
public int Property
{
set
{
field = value;
}
}


Автоматически реализуемые свойства это более лаконичная форма свойств, их есть смысл использовать, когда в методах доступа get и set не требуется дополнительная логика.
При создании автоматически реализуемых свойств, компилятор создаст закрытое, анонимное резервное поле, которое будет доступно с помощью методов get и set свойства.

Вопросы для закрепления теоретического материала к практическому занятию:
Для чего нужны свойства класса?
Что означает «инкапсуляция»?
Опишите механизм создания свойства класса.

Задания и инструкция по выполнению практической работы

Задание 1. Измените программу из практической работы №13 задания №1, так чтобы вместо двух методов SetEat и GetEat появилось одно свойство Ves.
- Измените класс Worker в соответствии с рисунком. Все имена полей измените с маленькой буквы.

- Измените событие на кнопку в соответствии с рисунком.

- Запустите программу на выполнение. Проверьте работоспособность.
Самостоятельное задание № 1. Вернитесь к одному из своих ранее составленных проектов, работающих с классами, и измените классы так, чтобы в них появились свойства.

Критерии оценки:
«отлично»
правильно решено задание 1;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решено самостоятельное задание №1, самостоятельно.
«хорошо»
правильно решено задание 1;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решено самостоятельное задание №1, не все методы чтения и записи закрытых полей заменены на свойства.
«удовлетворительно»
правильно решено задание 1;
наличие отчета по практической работе, не соответствующего образцу оформления отчета.
не решено самостоятельное задание №1.

Отчет по практической работе аналогичный практической работе №1, в отчет входит оформление всех самостоятельных заданий данной практической работы
Практическая работа №18 «Создание классов, иерархически связанных между собой»
Учебная цель:
Познакомиться с интегрированной средой разработки Microsoft Visual Studio 2012.
Освоить создание классов, связанных отношением наследования.
Освоить написание конструкторов.
Освоить переопределение методов.

Учебные задачи:
Научиться создавать и использовать иерархически связанные между собой классы в своих проектах.

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен
уметь:
разрабатывать программное обеспечение с помощью языков программирования.

знать:
специализированное программное обеспечение проектирования;
алгоритмизацию и программирование на встроенных алгоритмических языках;
платформы для создания, исполнения и управления информационной системой.

Задачи практической работы:

Повторить теоретический материал по теме практической работы.
Ответить на вопросы для закрепления теоретического материала.
Выполнить задания.
Оформить отчет.

Обеспеченность занятия и средства обеспечения указаны в рабочей программе профессионального модуля.

Краткие теоретические и учебно-методические материалы по теме практической работы

Наследование – одна из основных характеристик объектно-ориентированного программирования. Когда новый класса становится потомком существующего, он наследует все незакрытые методы, свойства и поля своего предка. Новый класс затем можно расширять, добавляя или заменяя эти методы, поля и свойства. Все это, в конечном счете, позволяет значительно упростить программирование путем многократного использования кода.
Синтаксис:
class имя_класса : имя_родительского_класса {тело_класса}
Конструктор классаспециальный метод, который вызывается вовремя построения класса.

Если в теле класса не определен явно ни один конструктор, то всегда используется «невидимый» конструктор по умолчанию.
Имя конструктора всегда совпадает с именем класса. Конструкторы не имеют возвращаемых значений.
Задача конструктора по умолчанию–инициализация полей значениями по умолчанию.
Задача пользовательского конструктора–инициализация полей предопределенными пользователем значениями.

Вопросы для закрепления теоретического материала к практическому занятию:
Как вы понимаете суть наследования?
Какие методы есть у любого класса?
Каким ключевым словом необходимо снабдить метод предка, чтобы его потомки могли этот метод изменять?
Какие типы конструкторов вы знаете?
Зачем использовать конструкторы по умолчанию?

Задания и инструкция по выполнению практической работы

Задание 1. Создать классы «фигура» и «треугольник» так, чтобы «фигура» был «предком», а «треугольник» - потомком.
- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Измените заголовок формы, в свойстве Text установите значение Работа с классом фигура.
- Разместите компоненты Button, TextBox, Label как показано на рисунке. В свойстве Font установите размер шрифта равным 12 пт. В свойствах Text задайте значения, соответствующие рисунку.

- В обозревателе решений нажмите ПКМ и в контекстном меню выберите команду Добавить – класс.

- В окне добавления нового элемента задайте имя класса Figura и нажмите кнопку Добавить.
- В результате в код проекта добавиться заготовка для создания класса Figura.

- Напишите класс, включив в него методы, поля и конструктор в соответствии с рисунком.

- В обозревателе решений нажмите ПКМ и в контекстном меню выберите команду Добавить – класс.

- В окне добавления нового элемента задайте имя класса Treug и нажмите кнопку Добавить.
- В результате в код проекта добавиться заготовка для создания класса Treug.
- Напишите класс, включив в него методы, поля и конструктор в соответствии с рисунком.

- Создайте обработчик событий на кнопку Рассчитать.

- Запустите программу на выполнение. Проверьте работоспособность.


Самостоятельное задание № 1. Построить иерархию классов в соответствии с вариантом задания:
Студент, преподаватель, персона, заведующий кафедрой
Служащий, персона, рабочий, инженер
Рабочий, кадры, инженер, администрация
Деталь, механизм, изделие, узел
Организация, страховая компания, нефтегазовая компания, завод
Журнал, книга, печатное издание, учебник
Тест, экзамен, выпускной экзамен, испытание
Место, область, город, мегаполис
Игрушка, продукт, товар, молочный продукт
Квитанция, накладная, документ, счет
Автомобиль, поезд, транспортное средство, экспресс
Двигатель, двигатель внутреннего сгорания, дизель, реактивный двигатель
Республика, монархия, королевство, государство
Млекопитающее, парнокопытное, птица, животное
Корабль, пароход, парусник, корвет
Критерии оценки:
«отлично»
правильно решено задание 1;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решено самостоятельное задание №1, самостоятельно.
«хорошо»
правильно решено задание 1;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решено самостоятельное задание №1, не все поля, методы и конструкторы реализованы, а так же отсутствует наследование классов.
«удовлетворительно»
правильно решено задание 1;
наличие отчета по практической работе, не соответствующего образцу оформления отчета.
не решено самостоятельное задание №1.

Отчет по практической работе аналогичный практической работе №1, в отчет входит оформление всех самостоятельных заданий данной практической работы

Практическая работа №19 «Создание проектов с использованием текстовых файлов»
Учебная цель:
Познакомиться с интегрированной средой разработки Microsoft Visual Studio 2012.
Освоить приемы работы с текстовыми файлами.

Учебные задачи:
Научиться создавать проекты для работы с текстовыми файлами.

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен
уметь:
разрабатывать программное обеспечение с помощью языков программирования.

знать:
специализированное программное обеспечение проектирования;
алгоритмизацию и программирование на встроенных алгоритмических языках;
платформы для создания, исполнения и управления информационной системой.

Задачи практической работы:

Повторить теоретический материал по теме практической работы.
Ответить на вопросы для закрепления теоретического материала.
Выполнить задания.
Оформить отчет.

Обеспеченность занятия и средства обеспечения указаны в рабочей программе профессионального модуля.

Краткие теоретические и учебно-методические материалы по теме практической работы

Файл это именованная структура данных, представляющая собой последовательность элементов данных, причем количество элементов последовательности практически не ограничено. В первом приближении файл можно рассматривать как массив переменной длины неограниченного размера.
В пространстве имен System.IO предусмотрено четыре класса, которые предназначены для работы с файловой системой компьютера, т. е для создания, удаления переноса и т.д. файлов и каталогов:
Directory и File реализуют свои возможности с помощью статических методов, поэтому данные классы можно использовать без создания соответствующих объектов (экземпляров классов);
DirectoryInfo и FileInfo обладают схожими функциональными возможностями c Directory и File, но порождены от класса FileSystemInfo и поэтому реализуются путем создания соответствующих экземпляров классов.
Для записи и чтения текстовых файлов очень удобно использовать классы StreamWriter и StreamReader.
Для записи в файл нужно сначала создать файл и открыть поток для работы с ним
StreamWriter sw = File.CreateText("test.txt");
sw - поток 
File.CreateText("test.txt")  - метод создания файла «test.txt»(по умолчанию сохраняется в папку Debug сохраненного проекта).
После того как открыт поток можо записывать в него текстовые строки используя методы Write и WriteLine.
sw.WriteLine("Мой первый файл созданый в C#");
Если проверить после запуска программы файл, то увидим что он пуст. Данные не появятся в файле до тех пор пока мы не закроем поток sw.
Делается это с помощью метода Close:
sw.Close();
Добавить текст в уже созданный файл понадобится метод AppendText. Использовать его нужно вместо CreateText:
StreamWriter sw = File.AppendText("test.txt");
sw.WriteLine("Добавили вторую строчку в файл");
sw.Close();
Для чтения нужно открыть поток класса StreamReader, привязав его к файлу. Делается это при помощи метода 
File.OpenText(имя файла’);
StreamReader sr = File.OpenText("test.txt");
Если нужно считать только первую строку из файла для этого воспользуемся следующей конструкцией sr.ReadLine(). 
Допустим нужно вывести первую строчку из файла на консоль. Делается следующим образом:
System.Console.WriteLine(sr.ReadLine());
Чтение из файла проводится построчно. Для вывода всего файла нам нужно построчно его считывать до тех пор, пока в нем есть строчки.
while (true)
{
string st = sr.ReadLine();
if (st==null)
break;
System.Console.WriteLine(st);
}
Как и при записи в файл, так и при чтении из него не стоит забывать о закрытии потока методом Close.
Sr.Close();

Вопросы для закрепления теоретического материала к практическому занятию:
Что такое файл? В чем заключаются особенности текстового файла?
В чем преимущество использования файлов по сравнению с массивами?
Какие операции можно производить с файлами?
Может ли файл состоять из одного элемента?
Какой файл называется текстовым?
Можно ли текстовый файл открыть одновременно для чтения и для записи?

Задания и инструкция по выполнению практической работы
Задание 1. Создайте приложение, которое читает и выводит информацию в текстовый файл.
- Откройте Visual Studio 2012, далее нажмите на Начальной странице пункт меню Создать проект и в разделе Visual C# выберите Приложение Windows Form.
- Задайте имя проекта и нажмите ОК.
- Измените заголовок формы, в свойстве Text установите значение Работа с файлами.
- Разместите на форме 5 кнопок и текстовое поле и в текстовом поле свойство Multiline = true (включение многострочного режима) как показано на рисунке. В свойстве Font установите размер шрифта равным 12 пт.

- Создайте событие для элемента Button1(Создать файл), для этого достаточно дважды щелкнуть мышью по данному элементу. Выше метода Button1_Click подключите библиотеку System.IO, для работы с файлами.

- Создайте событие для элемента Button2(Удалить файл), для этого достаточно дважды щелкнуть мышью по данному элементу.

- Создайте событие для элемента Button3(Прочитать из файла), для этого достаточно дважды щелкнуть мышью по данному элементу.

- Создайте событие для элемента Button4(Записать в файл), для этого достаточно дважды щелкнуть мышью по данному элементу.

- Создайте событие для элемента Button5(Очистить поле), для этого достаточно дважды щелкнуть мышью по данному элементу.

- Запустите проект и протестируйте работоспособность. Запишите в файл числовые значения.

- Добавьте на форму кнопку, по нажатию на которую будет происходить подсчет суммы цифр из файла. Установите свойства для компонентов в соответствии с рисунком. Свойство Text компонент Label1 оставьте пустым.

- Создайте событие для элемента Button6(Рассчитать сумму), для этого достаточно дважды щелкнуть мышью по данному элементу.

- Запустите проект и протестируйте работоспособность.

Самостоятельное задание №1. Модифицируйте проект задания №1 по вариантам. Вывод результата поместить в конец файла, пример изображен на рисунке.

количество чисел в файле.
максимальный элемент в файле.
среднее арифметическое значение чисел в файле.
минимальный элемент в файле.
количество отрицательных чисел в файле.
количество положительных чисел в файле.
количество нулей в файле.
произведение чисел в файле.
количество искомого числа в файле.
количество максимальных элементов в файле.
количество минимальных элементов в файле.
количество четных чисел в файле.
количество не четных чисел в файле.
количество чисел, которые делятся на 3 без остатка.
количество чисел, которые делятся на 7 без остатка.
сумму двузначных чисел.

Критерии оценки:
«отлично»
правильно решено задание 1;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решено самостоятельное задание №1, самостоятельно и вариант соответствует номеру ПК.
«хорошо»
правильно решено задание 1;
наличие отчета по практической работе, соответствующего образцу оформления отчета;
решено самостоятельное задание 1с недочетами, вывод осуществляется не в файл, а на форму и вариант соответствует номеру ПК.
«удовлетворительно»
правильно решено задание 1;
наличие отчета по практической работе, не соответствующего образцу оформления отчета.
решено самостоятельное задание, но вариант не соответствует номеру ПК и вывод результаты осуществляется на форму.

Отчет по практической работе аналогичный практической работе №1, в отчет входит оформление всех самостоятельных заданий данной практической работы










13PAGE 15


13PAGE 14615


13PAGE \* MERGEFORMAT14315



Пространство имен данного проекта. По умолчанию сгенерирован класс - Program. Для объявления класса сначала идет ключевое слово class, а потом название класса, и далее блок самого класса в фигурных скобках.


Директивы using позволяет подключить пространства имен (библиотеки, которые находятся в файла с расширением dll).
Например, using System; подключается пространство имен System, которое содержит базовые классы платформы .NET.

13 EMBED Unknown 1415

Обозреватель решений
Ctrl+Alt+L

Панель свойств F4

Панель элементов Ctrl+Alt+X

Вывод информации о компиляции

Форма

Вывод результата в элемент на форме Label2 в свойство Text

Объявляется переменная cels вещественного типа, вычисляющая по формуле

Объявляется переменная fahr вещественного типа, значение которой берется из элемента на форме TextBox1 из свойства Text, предварительно переведя данные в вещественный тип, т. к. в свойстве Text значения находятся в типе String.


Свойство Visible отвечает за видимость элемента во время запуска

Свойство Enabled отвечает за доступность элемента во время запуска

5

4

3

2

1

2

1

2

1

Количество найденных чисел увеличиваем на единицу

Пока n (число) не равно нулю

Откидываем последнюю цифру числа, поделив его на 10 и взяв только целую часть

объявляется целая переменная n, начальное значение которой равно значению в TextBox1, предварительно преобразовав к целому типу

К предыдущему значению суммы прибавляем последнюю цифру в числе, разделив число на 10 и взяв остаток от деления

объявляется целая переменная s для сохранения суммы цифр числа

Имя свойств класса пишется с заглавной буквы. Данное свойство предназначено для чтения и записи переменной.

Поля в классе пишутся с прописной буквы

Защищенные поля, но доступные для наследуемых классов: высота и длина. Данные свойства есть у всех фигур

Конструктор, который задает начальные свойства данных полей.


Общедоступный метод, который возвращает значение площади фигуры строчного типа.


Общедоступный метод, который возвращает значение площади фигуры строчного типа.


Метод, который возвращает строчное значение типа фигуры

Конструктор указывает, что значения высоты и длины следует брать из конструктора предка «Фигура»

Указывается, что данный класс наследует поля и методы класса фигура



Рисунок 1Рисунок 1З 1
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·@
·
·-
·
·
·
·
·
·
·
·
·
·
·
·ѓ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·ў
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·‡
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·»
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·з
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·‚
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·г
·
·
·
·
·Љ
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Г
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·§
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ф
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·°
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·C
·Ђ
·Ќ
·
·
·!
·@
·
·
·
·м
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·‡
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·F
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ї
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·° 1
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·J
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·!
·@
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·ѓ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·!
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђђ
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·ъ
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ж
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·ѕ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·†
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·A
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·ЂЂ
·
·
·
·
·°
·
·
·
·
·„
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·&
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·‚
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·!
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·є
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·д
·]
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·g
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
· 
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·°
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·Ђ
·J
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·°
·
·
·
·
·
·л
·
·
·
·
·
·
·
·
·
·
·Ђ
·H
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·@
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·ѓ
·
·Ђ
·
·
·
·Ђ
·
·
·
·
·@
·
·
·
·[
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·]
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·ж
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·у
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ї
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·†
·
·џ
·
·
·!
·@
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·м
·е
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·†
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·A
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·†
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·‚
·
·—
·
·
·
·°
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·Ѓ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·†
·
·Њ
·
·
·
·
·(
·@
·
·
·
·
·°
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·°
·
·
·
·
·ё
·†
·
·М
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·¦
·
·°
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·@
·
·
·»
·
·
·
·
·
·
·
·B
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·C
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Л
·
·
·
·
·
·
·
·
·°
·
·
·
·
·„
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·°
·
·
·
·
·
·ѓ
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·„
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·­
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·@
·
·
·
·
·
·
·QРисунок 1Рисунок 1Рисунок 1° 1
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·І
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·¬
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·µ
·
·
·а
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Щ
·
·
·
·
·° 1
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·C
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·T
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·"
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·t
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·!
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·Ж
·
·
·
·
·
·
·
·
·
·
·†
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·!
·@
·Ђ
·њ
·
·
·
·
·
·
·°
·
·
·
·
·
·
·°
·
·
·
·
·
·
·°
·Ѓ
·
·
·
·°
·@
·I
·
·
·
·°
·@
·
·
·
·
·°
·@
·
·
·
·
·
·°
·@
·
·
·
·
·П
·@
·
·
·
·
·
·е
·@
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·!
·@
·
·М
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Њ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·E
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·?
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ѓ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·!
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·B
·Ђ
·V
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·E
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·к
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·К
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·В
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·n
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·°
·+
·
·
·
·
·
·
·!
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·†
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·B
·
·
·
·
·
·
·
·
·
·®
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·S
·
·
·
·
·
·
·
·
·
·G
·
·
·
·
·
·
·
·
·
·
·
·
·я° Ѓ
·
·
·
·
·
·
·
·
·
·й
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·E
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·д
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·A
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Z
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·(
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Љ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·K
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·l
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·h
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·С
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·ѓ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·–
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·’
·
·
·
·
·
·
·
·
·
·P
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·B
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·Ё
·z
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·|
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ъ
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·ё
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·ё
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·^
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Д
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·‚
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·° Ѓ
·
·
·
·
·
·
·
·
·
·
·
·
·
·™
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·R
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·†
·
·
·
·
·
·
·C
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·‡
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·є
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·C
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·…
·
·
·
·
·
·
·
·
·
·
·
·
·
·H
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·%
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ѓ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ѓ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·А
·
·
·
·#
·І
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·І
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Р
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·†
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·ж
·@
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·$
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·!
·@
·Ђ
·
·
·
·
·A
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·!
·@
·Ђ
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·„
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·B
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·ь
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·ш
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·™
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·г
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·@
·Ђ
·
·
·
·
·A
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·h
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·x
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·ѓ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·ц
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·™
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·я
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·C
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·h
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·д
·
·
·
·
·Х
·@
·
·
·
·
·}
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·!
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·І
·
·
·
·
·
·
·
·
·
·#
·
·ф
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·И
·
·
·
·
·‡
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·А
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·†
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·С
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·1
·
·
·
·
·
·
·
·
·
·
·№
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·Њ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·ѓ
·
·
·
·
·
·
·
·
·
·В
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·X
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·C
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·«
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·\
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·л
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·O
·
·
·
·
·
·
·B
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·†
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·ёќ
·
·
·ѓ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·!
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ш
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·!
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·„
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·a
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·Ђ
·
·
·
·
·°
·ё
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·A
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·ё
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·Ђ
·r
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·й
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·'
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·!
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·э
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·C
·
·
·
·
·‡
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ѓ
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·‚
·Ѓ
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·Ѓ
·
·
·C
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·С
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·”
·
·°
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·І
·@
·Ђ
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·q
·Ђ
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·V
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·C
·Ђ
·
·
·
·
·
·
·п
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·`
·
·
·ж
·@
·Ђ
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·…
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·!
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ё
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·‚
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·›
·
·
·н
·@
·Ђ
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·$
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·ѓ
·
·
·
·°
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·Ґ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·©
·
·Ђ
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Г
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·‡
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·k
·
·
·л
·@
·Ђ
·
·
·
·c
·
·°
·
·
·
·@
·Ђ
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·К
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·B
·
·
·
·н
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·A
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·u
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·)
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·Ђ
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·°
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·C
·Ђ
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·A
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·В
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ѓ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·І
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·Z
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Рисунок 4Рисунок 6Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Picture 3Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Picture 2Рисунок 1Рисунок 1Ц 1
·
·
·
·„
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђђ
·
·
·
·ѕ
·
·
·
·
·
·
·
·
·
·ѓ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·µ 1
·
·
·
·
·ђ
·
·
·
·
·
·
·
·
·Н
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·“
·
·
·
·Ђ
·5
·
·
·
·
·
·
·
·
·Ч
·
·
·
·
·
·
·
·
·°
·
·
·
·‚
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·°
·
·
·
·
·
·
·
·Ђ
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·@
·
·
·
·
·
·
·
·
·
·
·
·
·Ё
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·D
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·ѕ
·
·
·
·
·
·
·Ћ
·
·
·
·
·
·
·
·
·
·
·
·A
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·B
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·ѓ
·M
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ќ
·
·
·!
·
·
·
·
·
·
·
·
·‡
·
·
·
·
·°
·
·
·
·
·
·—
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·ѓ
·M
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ќ
·
·
·!
·
·
·
·
·
·
·
·
·‡
·
·
·
·
·°
·
·
·
·
·
·—
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·ѓ
·M
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ќ
·
·
·!
·
·
·
·
·
·
·
·
·‡
·
·
·
·
·°
·
·
·
·
·
·—
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·ѓ
·M
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ќ
·
·
·!
·
·
·
·
·
·
·
·
·‡
·
·
·
·
·°
·
·
·
·
·
·—
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·ѓ
·M
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ќ
·
·
·!
·
·
·
·
·
·
·
·
·‡
·
·
·
·
·°
·
·
·
·
·
·—
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·°
·
·
·
·ѓ
·M
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Ќ
·
·
·!
·
·
·
·
·
·
·
·
·‡
·
·
·
·
·°
·
·
·
·
·
·—
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·‹
·
·
·!
·
·
·
·
·°
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Рисунок 1Root Entry

Приложенные файлы

  • doc serkova
    Размер файла: 5 MB Загрузок: 16