Современные технологии программирования (часть 2) Лабораторная работа 3
Состав работы
|
|
|
|
|
|
Работа представляет собой rar архив с файлами (распаковать онлайн), которые открываются в программах:
- Microsoft Word
Описание
Лабораторная работа №3
Класс Управление для «Конвертора p1_р2».
Цель: Сформировать практические навыки реализации классов на языке C#.
Задание 1
1. Реализовать Управление для «Конвертера p1_р2».
2. Протестировать каждый метод класса.
Спецификация класса Управление для «Конвертера p1_р2».
ADT Control_
Данные
Объект класса Control_ (Управление) отвечают за координацию действий между классом «Интерфейс» и классами «Редактор», «Конвертер p1_10», «Конвертер 10_p2», «История». Объект класса Control_ содержат поля: ed типа Editor, his типа История, и свойства: Pin типа int (основание системы счисления исходного числа), Pout типа int (основание системы счисления результата), St типа State (состояние конвертера). Он может находиться в одном из двух состояний: «Редактирование», «Преобразовано». Объекты этого типа изменяемы.
Операции
Операции представлены в таблице 4.
Таблица 4 - Операции
Control_ Конструктор
Вход: Нет.
Процесс: Создаёт объект Управление типа (тип Control_) и инициирует поля объекта начальными значениями.
DoCommand Выполнить команду.
Вход: n - целое значение, номер выполняемой команды.
Предусловия: Нет.
Процесс: В зависимости от значения n и состояния (St) передаёт сообщение объекту Редактор или Преобразователь и изменяет состояние. Возвращает строку результата: либо отредактированное число, либо результат преобразования.
Выход: Строка.
Постусловия: Нет.
end Control_
Рекомендации к выполнению
1. Тип данных реализовать, используя класс.
2. Для записи и считывания полей «преобразователя» используйте свойства.
3. Тип данных реализуйте в отдельном файле Control_.
Пример описания класса Управление приведён ниже.
namespace Конвертор
{
class Control_
{
//Основание системы сч. исходного числа.
const int pin = 10;
//Основание системы сч. результата.
const int pout = 16;
//Число разрядов в дробной части результата.
const int accuracy = 10;
public История his = new История();
public enum State {Редактирование, Преобразовано}
//Свойство для чтения и записи состояние Конвертера.
public State St { get; set; }
//Конструктор.
public Control_()
{
St = State.Редактирование;
Pin = pin;
Pout = pout;
}
//объект редактор
public Editor ed = new Editor();
//Свойство для чтения и записи основание системы сч. р1.
public int Pin { get; set; }
//Свойство для чтения и записи основание системы сч. р2.
public int Pout { get; set; }
//Выполнить команду конвертера.
public string DoCmnd(int j)
{
if (j == 19)
{
double r = Conver_P_10.dval(ed.Number, (Int16)Pin);
string res = Conver_10_P.Do(r, (Int32)Pout,acc());
St = State.Преобразовано;
his.ДобавитьЗапись(Pin, Pout, ed.Number, res);
return res;
}
else
{
St = State.Редактирование;
return ed.DoEdit(j);
}
}
//Точность представления результата.
private int acc()
{
return (int)Math.Round(ed.Acc() * Math.Log(Pin) / Math.Log(Pout) + 0.5);
}
}
}
Содержание отчета
1. Задание.
2. Текст программы.
3. Тестовые наборы данных для тестирования класса.
Контрольные вопросы
1. Что такое инкапсуляция?
2. Как синтаксически представлено поле в описании класса?
3. Как синтаксически представлен метод в описании класса?
4. Как синтаксически представлено простое свойство в описании класса?
5. Особенности описания методов класса?
6. Особенности описания и назначение конструктора класса?
7. Видимость идентификаторов в описании класса?
8. Особенности вызова методов применительно к объектам класса?
Интерфейс приложения «Конвертор р1_р2».
Цель: Сформировать практические навыки реализации графических интерфейсов пользователя (GUI) на основе библиотеки визуальных компонентов.
Задание 2
1. Реализовать «Интерфейс» приложения «Конвертер р1_р2», используя библиотечный класс формы и визуальные компоненты.
2. Протестировать методы класса.
Спецификация класса «Интерфейс».
Интерфейс приложения представлен на рисунке 1.
ADT TPanel_p_p
Данные
«Интерфейс» конвертера действительных чисел из системы счисления с основанием p1 в систему счисления с основанием p2 предназначен для: выбора оснований систем счисления p1, p2 из диапазона от 2..16; ввода и редактирования действительного числа со знаком в системе счисления с выбранным основанием p1; отображения результата – представления ввёдённого числа в системе счисления с основанием p2; отображения справки о приложении; отображения истории текущего сеанса работы пользователя с приложением.
«Интерфейс» несёт на себе визуальные компоненты, реализующие выполнения команд преобразователя и объект «Управление» класса Control_.
Операции. Операции представлены в таблице 5.
Таблица 5 - Операции
Наименование Пояснение
trackBar1_Scroll Обработчик события Scroll для компонента trackBar1.
Вход: object sender, EventArgs e.
sender – указатель на объект, который явился инициатором события Scroll. e - это объект базового класса для классов, содержащих данные о событии.
Предусловия: Пользователь перетаскивает бегунок компонента trackBar1.
Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р1 исходного числа. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок.
Постусловия: Обновления выполнены.
Выход: Нет.
numericUpDown1_ValueChanged Обработчик события ValueChanged для компонента numericUpDown1.
Вход: object sender, EventArgs e. sender – указатель на объект, который явился инициатором события ValueChanged.
Предусловия: Пользователь изменяет р1 с помощью компонента numericUpDown1.
Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р1 исходного числа. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок.
Постусловия: Обновления выполнены.
Выход: Нет.
trackBar2_Scroll Обработчик события Scroll для компонента trackBar2.
Вход: object sender, EventArgs e. sender – указатель на объект, который явился инициатором события Scroll.
Предусловия: Пользователь перетаскивает бегунок компонента trackBar2.
Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления p2 исходного числа. Устанавливает новое значение основания системы счисления.
Постусловия: Обновления выполнены.
Выход: Нет.
numericUpDown2_ValueChanged Обработчик события ValueChanged для компонента numericUpDown2.
Вход: object sender, EventArgs e. sender – указатель на объект, который явился инициатором события ValueChanged.
Предусловия: Пользователь изменяет р2 с помощью компонента numericUpDown2.
Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р2 результата. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок.
Постусловия: Обновления выполнены.
Выход: Нет.
numericUpDown1_ValueChanged Обработчик события ValueChanged для компонента numericUpDown1.
Вход: object sender, EventArgs e. sender – указатель на объект, который явился инициатором события ValueChanged.
Предусловия: Пользователь изменяет р1 с помощью компонента numericUpDown1.
Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р1 результата. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок.
Постусловия: Обновления выполнены.
Выход: Нет.
TPanelp_p_Load Обработчик события Load для компонента TPanelp_p.
Вход: (object sender, EventArgs e). sender – указатель на объект, который явился инициатором события Load.
Предусловия: Форма загружается в память.
Процесс: Устанавливает начальные значения свойств визуальных компонентов формы после загрузки формы.
Выход: Нет.
Постусловия: Установка свойств выполнена.
DoCmnd(int j) Выполнить команду.
Вход: j значение целого типа – номер команды преобразователя.
Предусловия: Пользователь нажал командную кнопку команды с номером j.
Процесс: Передаёт сообщение объекту Управление и отображает возвращаемый им результат. Вызывается метод объекта Управление и передаётся номер набранной пользователем команды Конвертора.
Выход: Нет.
Постусловия: Обновляется состояние Интерфейса.
button_Click Обработчик события Click для командных кнопок.
Вход: object sender, EventArgs e. sender: object – указатель на объект, который явился инициатором события Click.
Предусловия: Пользователь нажал командную кнопку.
Процесс: Извлекает из свойства Tag командной кнопки номер соответствующей ей команды. Вызывает метод DoCmnd Интерфейса и передаёт в него номер команды.
Выход: Нет.
Постусловия: Нет.
TPanelp_p_KeyPress Обработчик события KeyPress для алфавитно-цифровых клавиш клавиатуры.
Вход: object sender, KeyPressEventArgs e.
Предусловия: Пользователь нажал алфавитно-цифровую клавишу клавиатуры.
Процесс: Определяет по нажатой алфавитно-цифровой клавише номер соответствующей ей команды. Вызывает метод DoCmnd Интерфейса и передаёт в него номер команды.
Выход: Нет.
Постусловия: Команда пользователя вызвана.
TPanelp_p_KeyDown Обработчик события KeyDown для клавиш управления клавиатуры.
Вход: (object sender, KeyEventArgs e)
Предусловия: Пользователь нажал клавишу управления клавиатуры.
Процесс: Определяет по нажатой клавише управления номер соответствующей ей команды. Вызывает метод DoCmnd Интерфейса и передаёт в него номер команды.
Выход: нет.
Постусловия: Команда пользователя вызвана.
UpdateP1
Выполнить обновления связанные с изменением р1.
Вход: Нет.
Предусловия: Изменено основание с.сч. р1 исходного числа.
Процесс: Выполняет необходимые обновления при смене ос. с. сч. р1.
Выход: Нет.
Постусловия: Состояние кнопок обновлено.
UpdateP2
Выполнить обновления связанные с изменением р2.
Вход: Нет.
Предусловия: Изменено основание с.сч. р2 результата.
Процесс: Выполняет необходимые обновления при смене ос. с. сч. р2.
Выход: Нет.
Постусловия: Состояние кнопок обновлено.
UpdateButtons
Вход: Нет.
Предусловия: Изменено основание с.сч. р1 исходного числа.
Процесс: Обновляет состояния командных кнопок предназначенных для ввода цифр выбранной системы счисления p1.
Выход: Нет.
Постусловия: Состояние кнопок обновлено.
выходToolStripMenuItem_Click Команда Выход основного меню класса TPanelp_p формы.
Вход: object sender, EventArgs e.
Предусловия: Пользователь кликает мышью на пункте Выход основного меню формы.
Процесс: Завершает работу приложения.
Выход: Нет.
Постусловия: Приложение завершено.
справкаToolStripMenuItem_Click Команда Справка основного меню класса TPanelp_p формы.
Вход: object sender, EventArgs e
Предусловия: Пользователь кликает мышью на пункте Справка основного меню формы.
Процесс: Показывает окно со справкой по приложению.
Выход: Нет.
Постусловия: Отображено окно справки.
историяToolStripMenuItem_Click Команда История основного меню класса TPanelp_p формы.
Вход: object sender, EventArgs e
Предусловия: Пользователь кликает мышью на пункте История основного меню формы.
Процесс: Открывает окно История.
Выход: Нет.
Постусловия: Окно История - открыто.
end TPanel_p_p
Рекомендации к выполнению.
1. Интерфейс приложения будет состоять из трёх форм: основная форма класс TPanel_p_p, HistoryForm – форма для отображения истории, AboutBox – форма, информирующая о приложении. Все они наследники класса Form.
2. Для реализации интерфейса приложения разместите на форме компоненты, описанные в таблице 6.
Таблица 6 - Компоненты
Имя компонента Имя класса Назначение
label1 Label Исходное число.
label2 Label Результат.
label3 Label Подпись к исходному числу.
label4 Label Подпись к результату.
trackBar1 TrackBar Изменять основание с. сч. р1.
trackBar2 TrackBar Изменять основание с. сч. р2.
numericUpDown1 NumericUpDown Изменять основание с. сч. р1.
numericUpDown2 NumericUpDown Изменять основание с. сч. р2.
button1 – button10 Button Ввод цифр от 0 – 9.
button11 – button16 Button Ввод цифр от A – F.
button17 Button Разделитель целой и дробной частей (,).
button18 Button Забой крайнего правого символа (BS).
button19 Button Удалить исходное число (CL).
button20 Button Выполнить (Execute).
menuStrip1 menuStrip1 Основное меню главной формы.
выходToolStripMenuItem ToolStripMenuItem Завершение работы приложения.
историяToolStripMenuItem ToolStripMenuItem Просмотр журнала сеанса работы.
справкаToolStripMenuItem ToolStripMenuItem Справка по приложению.
Для этого перейдите на вкладку Конструктор формы окна редактора и сделайте форму активной. Добавьте на форму из вкладки «Панели элементов» из раздела «Все формы Windows Forms» командные кнопки Button. Кнопки помещайте на форму снизу вверх слева направо, начиная с 0. Порядок добавления кнопок на форму должен совпадать с порядком их нумерации. Выделите все кнопку и в окне Свойства на закладке Свойства раскройте свойство Font (Шрифт) и установите требуемые вам свойства для шрифта. Затем в свойство Text (Текст) занесите соответствующие цифры. Затем в свойство Tag каждой кнопки занесите целое число соответствующее кнопке: кнопки для ввода цифр нумеруйте от 0 до 15; кнопка разделитель целой и дробной части – 16; удалить крайний символ слева (BS) - 17; очистить всё (CL) – 18; выполнить ( Enter) - 19. Измените размер кнопок (свойство Size), если это необходимо.
Добавьте на форму два компонента TrackBar из вкладки «Панель элементов» из раздела «Все формы Windows Forms». С помощью окна «Свойства» установите в их свойства Minimum значение 2, а в Maximum - значение 16. Рядом с каждым из них разместите компонент NumericUpDown «числовое поле со стрелками вверх/вниз». Добавьте на форму два компонента Label. В одном будем отображать основание системы счисления р1, в другом – подпись к нему. Добавьте на форму ещё два компонента Label для основания системы счисления результата р2.
Добавьте на форму компонент MenuStrip из вкладки «Панель элементов» из раздела «Все формы Windows Forms». Добавьте в компонент MenuStrip три пункта меню MenuItem. С помощью окна «Свойства» установите в их свойства Text значение Выход, История, Справка. Полученная форма будет иметь вид, как представлено на рис.18 .
Для настройки отклика приложения на действия пользователя необходимо создать обработчики событий для тех компонент интерфейса, которыми будет манипулировать пользователь. Обработчик события для выделенного компонента создаётся с помощью окна «Свойства» закладки «События». Правее выбранного события в свободном поле необходимо сделать двойной клик мышью и в классе формы появится текст шаблона обработчика этого события. Затем вам необходимо описать в обработчике необходимые вам действия. Обработчики событий для компонентов главной формы приведены в таблице 7.
Таблица 7 - Обработчики событий для компонентов главной формы
Имя компонента Событие Обработчик
TPanelp_p (главная форма) Load TPanelp_p_Load
TPanelp_p (главная форма) KeyDown TPanelp_p_KeyDown
TPanelp_p (главная форма) KeyPress TPanelp_p_KeyPress
trackBar1 Scroll trackBar1_Scroll
trackBar2 Scroll trackBar1_Scroll
numericUpDown1 ValueChanged numericUpDown1_ValueChanged
numericUpDown2 ValueChanged numericUpDown1_ValueChanged
button1 – button19 Click button_Click
выходToolStripMenuItem Click выходToolStripMenuItem_Click
историяToolStripMenuItem Click историяToolStripMenuItem1_Click
справкаToolStripMenuItem Click справкаToolStripMenuItem_Click
Теперь можно запустить приложение и протестировать работу командных кнопок для ввода цифр действительного числа, представленного в выбранной системе счисления. А также для изменения оснований систем счисления исходного числа и результата. Ниже приведён текст модуля главного окна приложения.
namespace Конвертор
{
public partial class Form1 : Form
{
//Объект класса Управление.
Control_ ctl = new Control_();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = ctl.ed.Number;
//Основание с.сч. исходного числа р1.
trackBar1.Value = ctl.Pin;
//Основание с.сч. результата р2.
trackBar2.Value = ctl.Pout;
label3.Text = "Основание с. сч. исходного числа " + trackBar1.Value;
label4.Text = "Основание с. сч. результата " + trackBar2.Value;
label2.Text = "0";
//Обновить состояние командных кнопок.
this.UpdateButtons();
}
//Обработчик события нажатия командной кнопки.
private void button1_Click(object sender, EventArgs e)
{
//ссылка на компонент, на котором кликнули мышью
Button but = (Button)sender;
//номер выбранной команды
int j = Convert.ToInt16(but.Tag.ToString());
DoCmnd(j);
}
//Выполнить команду.
private void DoCmnd(int j)
{
if (j == 19) { label2.Text = ctl.DoCmnd(j); }
else
{
if (ctl.St == Control_.State.Преобразовано)
{
//очистить содержимое редактора
label1.Text = ctl.DoCmnd(18);
}
//выполнить команду редактирования
label1.Text = ctl.DoCmnd(j);
label2.Text = "0";
}
}
//Обновляет состояние командных кнопок по основанию с. сч. исходного числа.
private void UpdateButtons()
{
//просмотреть все компоненты формы
foreach (Control i in this.Controls)
{
if (i is Button)//текущий компонент - командная кнопка
{
int j = Convert.ToInt16(i.Tag.ToString());
if (j < trackBar1.Value)
{
//сделать кнопку доступной
i.Enabled = true;
}
if ((j >= trackBar1.Value) && (j <= 15))
{
//сделать кнопку недоступной
i.Enabled = false;
}
}
}
}
//Изменяет значение основания с.сч. исходного числа.
private void trackBar1_Scroll(object sender, EventArgs e)
{
numericUpDown1.Value = trackBar1.Value;
//Обновить состояние командных кнопок.
this.UpdateP1();
}
//Изменяет значение основания с.сч. исходного числа.
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
//Обновить состояние.
trackBar1.Value = Convert.ToByte(numericUpDown1.Value);
//Обновить состояние командных кнопок.
this.UpdateP1();
}
//Выполняет необходимые обновления при смене ос. с.сч. р1.
private void UpdateP1()
{
label3.Text = "Основание с. сч. исходного числа " + trackBar1.Value;
//Сохранить р1 в объекте управление.
ctl.Pin = trackBar1.Value;
//Обновить состояние командных кнопок.
this.UpdateButtons();
label1.Text = ctl.DoCmnd(18);
label2.Text = "0";
}
//Изменяет значение основания с.сч. результата.
private void trackBar2_Scroll(object sender, EventArgs e)
{
//Обновить состояние.
numericUpDown2.Value = trackBar2.Value;
this.UpdateP2();
}
//Изменяет значение основания с.сч. результата.
private void numericUpDown2_ValueChanged(object sender, EventArgs e)
{
trackBar2.Value = Convert.ToByte(numericUpDown2.Value);
this.UpdateP2();
}
//Выполняет необходимые обновления при смене ос. с.сч. р2.
private void UpdateP2()
{
//Копировать основание результата.
ctl.Pout = trackBar2.Value;
//Пересчитать результат.
label2.Text = ctl.DoCmnd(19);
label4.Text = "Основание с. сч. результата " + trackBar2.Value;
}
//Пункт меню Выход.
private void выходToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}
//Пункт меню Справка.
private void справкаToolStripMenuItem_Click(object sender, EventArgs e)
{
AboutBox1 a = new AboutBox1();
a.Show();
}
//Пункт меню История.
private void историяToolStripMenuItem1_Click(object sender, EventArgs e)
{
Form2 history = new Form2();
history.Show();
if (ctl.his.Записей() == 0)
{
history.textBox1.AppendText("История пуста");
return;
}
//Ообразить историю.
for (int i = 0; i < ctl.his.Записей(); i++)
{
history.textBox1.AppendText(ctl.his[i].ToString());
}
}
//Обработка алфавитно-цифровых клавиш.
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
int i = -1;
if (e.KeyChar >= 'A' && e.KeyChar <= 'F') i = (int)e.KeyChar - 'A' + 10;
if (e.KeyChar >= 'a' && e.KeyChar <= 'f') i = (int)e.KeyChar - 'a' + 10;
if (e.KeyChar >= '0' && e.KeyChar <= '9') i = (int)e.KeyChar - '0';
if (e.KeyChar == '.') i = 16;
if ((int)e.KeyChar == 8) i = 17;
if ((int)e.KeyChar == 13) i = 19;
if ((i < ctl.Pin)||(i >= 16)) DoCmnd(i);
}
//Обработка клавиш управления.
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete)
//Клавиша Delete.
DoCmnd(18);
if (e.KeyCode == Keys.Execute)
//Клавиша Execute Separator.
DoCmnd(19);
if (e.KeyCode == Keys.Decimal)
//Клавиша Decimal.
DoCmnd(16);
}
}
}
Содержание отчета
1. Задание.
2. Текст программы.
3. Тестовые наборы данных для тестирования методов класса.
Контрольные вопросы
1. Назначения компонентов класса Button?
2. Назначения компонентов класса Label?
3. Назначения компонентов класса TextBox?
4. Назначения компонентов класса TrackBar?
5. Назначения компонентов класса numericUpDown?
6. Когда возникает событие Load?
7. Когда возникает событие Click?
8. Когда возникает событие Scroll?
9. Когда возникает событие ValueChanged?
10. Когда возникает событие KeyPress?
11. Когда возникает событие KeyDown?
Класс Управление для «Конвертора p1_р2».
Цель: Сформировать практические навыки реализации классов на языке C#.
Задание 1
1. Реализовать Управление для «Конвертера p1_р2».
2. Протестировать каждый метод класса.
Спецификация класса Управление для «Конвертера p1_р2».
ADT Control_
Данные
Объект класса Control_ (Управление) отвечают за координацию действий между классом «Интерфейс» и классами «Редактор», «Конвертер p1_10», «Конвертер 10_p2», «История». Объект класса Control_ содержат поля: ed типа Editor, his типа История, и свойства: Pin типа int (основание системы счисления исходного числа), Pout типа int (основание системы счисления результата), St типа State (состояние конвертера). Он может находиться в одном из двух состояний: «Редактирование», «Преобразовано». Объекты этого типа изменяемы.
Операции
Операции представлены в таблице 4.
Таблица 4 - Операции
Control_ Конструктор
Вход: Нет.
Процесс: Создаёт объект Управление типа (тип Control_) и инициирует поля объекта начальными значениями.
DoCommand Выполнить команду.
Вход: n - целое значение, номер выполняемой команды.
Предусловия: Нет.
Процесс: В зависимости от значения n и состояния (St) передаёт сообщение объекту Редактор или Преобразователь и изменяет состояние. Возвращает строку результата: либо отредактированное число, либо результат преобразования.
Выход: Строка.
Постусловия: Нет.
end Control_
Рекомендации к выполнению
1. Тип данных реализовать, используя класс.
2. Для записи и считывания полей «преобразователя» используйте свойства.
3. Тип данных реализуйте в отдельном файле Control_.
Пример описания класса Управление приведён ниже.
namespace Конвертор
{
class Control_
{
//Основание системы сч. исходного числа.
const int pin = 10;
//Основание системы сч. результата.
const int pout = 16;
//Число разрядов в дробной части результата.
const int accuracy = 10;
public История his = new История();
public enum State {Редактирование, Преобразовано}
//Свойство для чтения и записи состояние Конвертера.
public State St { get; set; }
//Конструктор.
public Control_()
{
St = State.Редактирование;
Pin = pin;
Pout = pout;
}
//объект редактор
public Editor ed = new Editor();
//Свойство для чтения и записи основание системы сч. р1.
public int Pin { get; set; }
//Свойство для чтения и записи основание системы сч. р2.
public int Pout { get; set; }
//Выполнить команду конвертера.
public string DoCmnd(int j)
{
if (j == 19)
{
double r = Conver_P_10.dval(ed.Number, (Int16)Pin);
string res = Conver_10_P.Do(r, (Int32)Pout,acc());
St = State.Преобразовано;
his.ДобавитьЗапись(Pin, Pout, ed.Number, res);
return res;
}
else
{
St = State.Редактирование;
return ed.DoEdit(j);
}
}
//Точность представления результата.
private int acc()
{
return (int)Math.Round(ed.Acc() * Math.Log(Pin) / Math.Log(Pout) + 0.5);
}
}
}
Содержание отчета
1. Задание.
2. Текст программы.
3. Тестовые наборы данных для тестирования класса.
Контрольные вопросы
1. Что такое инкапсуляция?
2. Как синтаксически представлено поле в описании класса?
3. Как синтаксически представлен метод в описании класса?
4. Как синтаксически представлено простое свойство в описании класса?
5. Особенности описания методов класса?
6. Особенности описания и назначение конструктора класса?
7. Видимость идентификаторов в описании класса?
8. Особенности вызова методов применительно к объектам класса?
Интерфейс приложения «Конвертор р1_р2».
Цель: Сформировать практические навыки реализации графических интерфейсов пользователя (GUI) на основе библиотеки визуальных компонентов.
Задание 2
1. Реализовать «Интерфейс» приложения «Конвертер р1_р2», используя библиотечный класс формы и визуальные компоненты.
2. Протестировать методы класса.
Спецификация класса «Интерфейс».
Интерфейс приложения представлен на рисунке 1.
ADT TPanel_p_p
Данные
«Интерфейс» конвертера действительных чисел из системы счисления с основанием p1 в систему счисления с основанием p2 предназначен для: выбора оснований систем счисления p1, p2 из диапазона от 2..16; ввода и редактирования действительного числа со знаком в системе счисления с выбранным основанием p1; отображения результата – представления ввёдённого числа в системе счисления с основанием p2; отображения справки о приложении; отображения истории текущего сеанса работы пользователя с приложением.
«Интерфейс» несёт на себе визуальные компоненты, реализующие выполнения команд преобразователя и объект «Управление» класса Control_.
Операции. Операции представлены в таблице 5.
Таблица 5 - Операции
Наименование Пояснение
trackBar1_Scroll Обработчик события Scroll для компонента trackBar1.
Вход: object sender, EventArgs e.
sender – указатель на объект, который явился инициатором события Scroll. e - это объект базового класса для классов, содержащих данные о событии.
Предусловия: Пользователь перетаскивает бегунок компонента trackBar1.
Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р1 исходного числа. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок.
Постусловия: Обновления выполнены.
Выход: Нет.
numericUpDown1_ValueChanged Обработчик события ValueChanged для компонента numericUpDown1.
Вход: object sender, EventArgs e. sender – указатель на объект, который явился инициатором события ValueChanged.
Предусловия: Пользователь изменяет р1 с помощью компонента numericUpDown1.
Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р1 исходного числа. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок.
Постусловия: Обновления выполнены.
Выход: Нет.
trackBar2_Scroll Обработчик события Scroll для компонента trackBar2.
Вход: object sender, EventArgs e. sender – указатель на объект, который явился инициатором события Scroll.
Предусловия: Пользователь перетаскивает бегунок компонента trackBar2.
Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления p2 исходного числа. Устанавливает новое значение основания системы счисления.
Постусловия: Обновления выполнены.
Выход: Нет.
numericUpDown2_ValueChanged Обработчик события ValueChanged для компонента numericUpDown2.
Вход: object sender, EventArgs e. sender – указатель на объект, который явился инициатором события ValueChanged.
Предусловия: Пользователь изменяет р2 с помощью компонента numericUpDown2.
Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р2 результата. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок.
Постусловия: Обновления выполнены.
Выход: Нет.
numericUpDown1_ValueChanged Обработчик события ValueChanged для компонента numericUpDown1.
Вход: object sender, EventArgs e. sender – указатель на объект, который явился инициатором события ValueChanged.
Предусловия: Пользователь изменяет р1 с помощью компонента numericUpDown1.
Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р1 результата. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок.
Постусловия: Обновления выполнены.
Выход: Нет.
TPanelp_p_Load Обработчик события Load для компонента TPanelp_p.
Вход: (object sender, EventArgs e). sender – указатель на объект, который явился инициатором события Load.
Предусловия: Форма загружается в память.
Процесс: Устанавливает начальные значения свойств визуальных компонентов формы после загрузки формы.
Выход: Нет.
Постусловия: Установка свойств выполнена.
DoCmnd(int j) Выполнить команду.
Вход: j значение целого типа – номер команды преобразователя.
Предусловия: Пользователь нажал командную кнопку команды с номером j.
Процесс: Передаёт сообщение объекту Управление и отображает возвращаемый им результат. Вызывается метод объекта Управление и передаётся номер набранной пользователем команды Конвертора.
Выход: Нет.
Постусловия: Обновляется состояние Интерфейса.
button_Click Обработчик события Click для командных кнопок.
Вход: object sender, EventArgs e. sender: object – указатель на объект, который явился инициатором события Click.
Предусловия: Пользователь нажал командную кнопку.
Процесс: Извлекает из свойства Tag командной кнопки номер соответствующей ей команды. Вызывает метод DoCmnd Интерфейса и передаёт в него номер команды.
Выход: Нет.
Постусловия: Нет.
TPanelp_p_KeyPress Обработчик события KeyPress для алфавитно-цифровых клавиш клавиатуры.
Вход: object sender, KeyPressEventArgs e.
Предусловия: Пользователь нажал алфавитно-цифровую клавишу клавиатуры.
Процесс: Определяет по нажатой алфавитно-цифровой клавише номер соответствующей ей команды. Вызывает метод DoCmnd Интерфейса и передаёт в него номер команды.
Выход: Нет.
Постусловия: Команда пользователя вызвана.
TPanelp_p_KeyDown Обработчик события KeyDown для клавиш управления клавиатуры.
Вход: (object sender, KeyEventArgs e)
Предусловия: Пользователь нажал клавишу управления клавиатуры.
Процесс: Определяет по нажатой клавише управления номер соответствующей ей команды. Вызывает метод DoCmnd Интерфейса и передаёт в него номер команды.
Выход: нет.
Постусловия: Команда пользователя вызвана.
UpdateP1
Выполнить обновления связанные с изменением р1.
Вход: Нет.
Предусловия: Изменено основание с.сч. р1 исходного числа.
Процесс: Выполняет необходимые обновления при смене ос. с. сч. р1.
Выход: Нет.
Постусловия: Состояние кнопок обновлено.
UpdateP2
Выполнить обновления связанные с изменением р2.
Вход: Нет.
Предусловия: Изменено основание с.сч. р2 результата.
Процесс: Выполняет необходимые обновления при смене ос. с. сч. р2.
Выход: Нет.
Постусловия: Состояние кнопок обновлено.
UpdateButtons
Вход: Нет.
Предусловия: Изменено основание с.сч. р1 исходного числа.
Процесс: Обновляет состояния командных кнопок предназначенных для ввода цифр выбранной системы счисления p1.
Выход: Нет.
Постусловия: Состояние кнопок обновлено.
выходToolStripMenuItem_Click Команда Выход основного меню класса TPanelp_p формы.
Вход: object sender, EventArgs e.
Предусловия: Пользователь кликает мышью на пункте Выход основного меню формы.
Процесс: Завершает работу приложения.
Выход: Нет.
Постусловия: Приложение завершено.
справкаToolStripMenuItem_Click Команда Справка основного меню класса TPanelp_p формы.
Вход: object sender, EventArgs e
Предусловия: Пользователь кликает мышью на пункте Справка основного меню формы.
Процесс: Показывает окно со справкой по приложению.
Выход: Нет.
Постусловия: Отображено окно справки.
историяToolStripMenuItem_Click Команда История основного меню класса TPanelp_p формы.
Вход: object sender, EventArgs e
Предусловия: Пользователь кликает мышью на пункте История основного меню формы.
Процесс: Открывает окно История.
Выход: Нет.
Постусловия: Окно История - открыто.
end TPanel_p_p
Рекомендации к выполнению.
1. Интерфейс приложения будет состоять из трёх форм: основная форма класс TPanel_p_p, HistoryForm – форма для отображения истории, AboutBox – форма, информирующая о приложении. Все они наследники класса Form.
2. Для реализации интерфейса приложения разместите на форме компоненты, описанные в таблице 6.
Таблица 6 - Компоненты
Имя компонента Имя класса Назначение
label1 Label Исходное число.
label2 Label Результат.
label3 Label Подпись к исходному числу.
label4 Label Подпись к результату.
trackBar1 TrackBar Изменять основание с. сч. р1.
trackBar2 TrackBar Изменять основание с. сч. р2.
numericUpDown1 NumericUpDown Изменять основание с. сч. р1.
numericUpDown2 NumericUpDown Изменять основание с. сч. р2.
button1 – button10 Button Ввод цифр от 0 – 9.
button11 – button16 Button Ввод цифр от A – F.
button17 Button Разделитель целой и дробной частей (,).
button18 Button Забой крайнего правого символа (BS).
button19 Button Удалить исходное число (CL).
button20 Button Выполнить (Execute).
menuStrip1 menuStrip1 Основное меню главной формы.
выходToolStripMenuItem ToolStripMenuItem Завершение работы приложения.
историяToolStripMenuItem ToolStripMenuItem Просмотр журнала сеанса работы.
справкаToolStripMenuItem ToolStripMenuItem Справка по приложению.
Для этого перейдите на вкладку Конструктор формы окна редактора и сделайте форму активной. Добавьте на форму из вкладки «Панели элементов» из раздела «Все формы Windows Forms» командные кнопки Button. Кнопки помещайте на форму снизу вверх слева направо, начиная с 0. Порядок добавления кнопок на форму должен совпадать с порядком их нумерации. Выделите все кнопку и в окне Свойства на закладке Свойства раскройте свойство Font (Шрифт) и установите требуемые вам свойства для шрифта. Затем в свойство Text (Текст) занесите соответствующие цифры. Затем в свойство Tag каждой кнопки занесите целое число соответствующее кнопке: кнопки для ввода цифр нумеруйте от 0 до 15; кнопка разделитель целой и дробной части – 16; удалить крайний символ слева (BS) - 17; очистить всё (CL) – 18; выполнить ( Enter) - 19. Измените размер кнопок (свойство Size), если это необходимо.
Добавьте на форму два компонента TrackBar из вкладки «Панель элементов» из раздела «Все формы Windows Forms». С помощью окна «Свойства» установите в их свойства Minimum значение 2, а в Maximum - значение 16. Рядом с каждым из них разместите компонент NumericUpDown «числовое поле со стрелками вверх/вниз». Добавьте на форму два компонента Label. В одном будем отображать основание системы счисления р1, в другом – подпись к нему. Добавьте на форму ещё два компонента Label для основания системы счисления результата р2.
Добавьте на форму компонент MenuStrip из вкладки «Панель элементов» из раздела «Все формы Windows Forms». Добавьте в компонент MenuStrip три пункта меню MenuItem. С помощью окна «Свойства» установите в их свойства Text значение Выход, История, Справка. Полученная форма будет иметь вид, как представлено на рис.18 .
Для настройки отклика приложения на действия пользователя необходимо создать обработчики событий для тех компонент интерфейса, которыми будет манипулировать пользователь. Обработчик события для выделенного компонента создаётся с помощью окна «Свойства» закладки «События». Правее выбранного события в свободном поле необходимо сделать двойной клик мышью и в классе формы появится текст шаблона обработчика этого события. Затем вам необходимо описать в обработчике необходимые вам действия. Обработчики событий для компонентов главной формы приведены в таблице 7.
Таблица 7 - Обработчики событий для компонентов главной формы
Имя компонента Событие Обработчик
TPanelp_p (главная форма) Load TPanelp_p_Load
TPanelp_p (главная форма) KeyDown TPanelp_p_KeyDown
TPanelp_p (главная форма) KeyPress TPanelp_p_KeyPress
trackBar1 Scroll trackBar1_Scroll
trackBar2 Scroll trackBar1_Scroll
numericUpDown1 ValueChanged numericUpDown1_ValueChanged
numericUpDown2 ValueChanged numericUpDown1_ValueChanged
button1 – button19 Click button_Click
выходToolStripMenuItem Click выходToolStripMenuItem_Click
историяToolStripMenuItem Click историяToolStripMenuItem1_Click
справкаToolStripMenuItem Click справкаToolStripMenuItem_Click
Теперь можно запустить приложение и протестировать работу командных кнопок для ввода цифр действительного числа, представленного в выбранной системе счисления. А также для изменения оснований систем счисления исходного числа и результата. Ниже приведён текст модуля главного окна приложения.
namespace Конвертор
{
public partial class Form1 : Form
{
//Объект класса Управление.
Control_ ctl = new Control_();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = ctl.ed.Number;
//Основание с.сч. исходного числа р1.
trackBar1.Value = ctl.Pin;
//Основание с.сч. результата р2.
trackBar2.Value = ctl.Pout;
label3.Text = "Основание с. сч. исходного числа " + trackBar1.Value;
label4.Text = "Основание с. сч. результата " + trackBar2.Value;
label2.Text = "0";
//Обновить состояние командных кнопок.
this.UpdateButtons();
}
//Обработчик события нажатия командной кнопки.
private void button1_Click(object sender, EventArgs e)
{
//ссылка на компонент, на котором кликнули мышью
Button but = (Button)sender;
//номер выбранной команды
int j = Convert.ToInt16(but.Tag.ToString());
DoCmnd(j);
}
//Выполнить команду.
private void DoCmnd(int j)
{
if (j == 19) { label2.Text = ctl.DoCmnd(j); }
else
{
if (ctl.St == Control_.State.Преобразовано)
{
//очистить содержимое редактора
label1.Text = ctl.DoCmnd(18);
}
//выполнить команду редактирования
label1.Text = ctl.DoCmnd(j);
label2.Text = "0";
}
}
//Обновляет состояние командных кнопок по основанию с. сч. исходного числа.
private void UpdateButtons()
{
//просмотреть все компоненты формы
foreach (Control i in this.Controls)
{
if (i is Button)//текущий компонент - командная кнопка
{
int j = Convert.ToInt16(i.Tag.ToString());
if (j < trackBar1.Value)
{
//сделать кнопку доступной
i.Enabled = true;
}
if ((j >= trackBar1.Value) && (j <= 15))
{
//сделать кнопку недоступной
i.Enabled = false;
}
}
}
}
//Изменяет значение основания с.сч. исходного числа.
private void trackBar1_Scroll(object sender, EventArgs e)
{
numericUpDown1.Value = trackBar1.Value;
//Обновить состояние командных кнопок.
this.UpdateP1();
}
//Изменяет значение основания с.сч. исходного числа.
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
//Обновить состояние.
trackBar1.Value = Convert.ToByte(numericUpDown1.Value);
//Обновить состояние командных кнопок.
this.UpdateP1();
}
//Выполняет необходимые обновления при смене ос. с.сч. р1.
private void UpdateP1()
{
label3.Text = "Основание с. сч. исходного числа " + trackBar1.Value;
//Сохранить р1 в объекте управление.
ctl.Pin = trackBar1.Value;
//Обновить состояние командных кнопок.
this.UpdateButtons();
label1.Text = ctl.DoCmnd(18);
label2.Text = "0";
}
//Изменяет значение основания с.сч. результата.
private void trackBar2_Scroll(object sender, EventArgs e)
{
//Обновить состояние.
numericUpDown2.Value = trackBar2.Value;
this.UpdateP2();
}
//Изменяет значение основания с.сч. результата.
private void numericUpDown2_ValueChanged(object sender, EventArgs e)
{
trackBar2.Value = Convert.ToByte(numericUpDown2.Value);
this.UpdateP2();
}
//Выполняет необходимые обновления при смене ос. с.сч. р2.
private void UpdateP2()
{
//Копировать основание результата.
ctl.Pout = trackBar2.Value;
//Пересчитать результат.
label2.Text = ctl.DoCmnd(19);
label4.Text = "Основание с. сч. результата " + trackBar2.Value;
}
//Пункт меню Выход.
private void выходToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}
//Пункт меню Справка.
private void справкаToolStripMenuItem_Click(object sender, EventArgs e)
{
AboutBox1 a = new AboutBox1();
a.Show();
}
//Пункт меню История.
private void историяToolStripMenuItem1_Click(object sender, EventArgs e)
{
Form2 history = new Form2();
history.Show();
if (ctl.his.Записей() == 0)
{
history.textBox1.AppendText("История пуста");
return;
}
//Ообразить историю.
for (int i = 0; i < ctl.his.Записей(); i++)
{
history.textBox1.AppendText(ctl.his[i].ToString());
}
}
//Обработка алфавитно-цифровых клавиш.
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
int i = -1;
if (e.KeyChar >= 'A' && e.KeyChar <= 'F') i = (int)e.KeyChar - 'A' + 10;
if (e.KeyChar >= 'a' && e.KeyChar <= 'f') i = (int)e.KeyChar - 'a' + 10;
if (e.KeyChar >= '0' && e.KeyChar <= '9') i = (int)e.KeyChar - '0';
if (e.KeyChar == '.') i = 16;
if ((int)e.KeyChar == 8) i = 17;
if ((int)e.KeyChar == 13) i = 19;
if ((i < ctl.Pin)||(i >= 16)) DoCmnd(i);
}
//Обработка клавиш управления.
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete)
//Клавиша Delete.
DoCmnd(18);
if (e.KeyCode == Keys.Execute)
//Клавиша Execute Separator.
DoCmnd(19);
if (e.KeyCode == Keys.Decimal)
//Клавиша Decimal.
DoCmnd(16);
}
}
}
Содержание отчета
1. Задание.
2. Текст программы.
3. Тестовые наборы данных для тестирования методов класса.
Контрольные вопросы
1. Назначения компонентов класса Button?
2. Назначения компонентов класса Label?
3. Назначения компонентов класса TextBox?
4. Назначения компонентов класса TrackBar?
5. Назначения компонентов класса numericUpDown?
6. Когда возникает событие Load?
7. Когда возникает событие Click?
8. Когда возникает событие Scroll?
9. Когда возникает событие ValueChanged?
10. Когда возникает событие KeyPress?
11. Когда возникает событие KeyDown?
Дополнительная информация
зачет
Похожие материалы
Лабораторная работа №3 "Современные технологии программирования (часть 2)"
Daniil2001
: 24 декабря 2024
Работа успешно зачтена
80 руб.
Современные технологии программирования (часть 2) - Лабораторная работа 3 - Вариант 5
sarekuwa
: 20 ноября 2023
Лабораторная работа №3
Класс Управление для «Конвертора p1_р2».
Цель: Сформировать практические навыки реализации классов на языке C#.
Задание 1
1. Реализовать Управление для «Конвертера p1_р2».
2. Протестировать каждый метод класса.
Спецификация класса Управление для «Конвертера p1_р2».
ADT Control_
Данные
Объект класса Control_ (Управление) отвечают за координацию действий между классом «Интерфейс» и классами «Редактор», «Конвертер p1_10», «Конвертер 10_p2», «История». Объект класса Control_ с
800 руб.
Современные технологии программирования (часть 2-я). Лабораторная работа №3. Для всех вариантов (2020).
nik200511
: 24 февраля 2021
Лабораторная работа №3
Класс Управление для «Конвертора p1_р2».
Цель: Сформировать практические навыки реализации классов на языке C#.
Задание 1
1. Реализовать Управление для «Конвертера p1_р2».
2. Протестировать каждый метод класса.
Спецификация класса Управление для «Конвертера p1_р2».
ADT Control_
Данные
Объект класса Control_ (Управление) отвечают за координацию действий между классом «Интерфейс» и классами «Редактор», «Конвертер p1_10», «Конвертер 10_p2», «История». Объект класса Control_
54 руб.
Современные технологии программирования (часть 2-я). Лабораторные работы №1-3.
sibguter
: 18 февраля 2020
ВЫПОЛНЕНО НА C#!
Задание 1
1. Реализовать преобразователь действительных чисел со знаком из десятичной системы счисления в систему счисления с заданным основанием p, в соответствии с приведенной ниже спецификацией, используя класс. Основание системы счисления p принадлежит диапазону значений от 2 до 16.
2. Протестировать каждый метод класса.
Задание 2
1. Реализовать преобразователь действительных (конвертер р_10) чисел из системы счисления с основанием р в десятичную систему счисления в соотве
239 руб.
Современные технологии программирования (часть 2)
Илья272
: 5 ноября 2023
Лабораторные работы
ПРИЛОЖЕНИЕ 1 ПРАКТИЧЕСКИЕ ЗАДАНИЯ ДЛЯ ЗАКРЕПЛЕНИЯ. ПРИЛОЖЕНИЕ КОНВЕРТОР Р1_Р2.......................2
Лабораторная работа №1..................................................................................................................................9
Лабораторная работа №2................................................................................................................................15
Лабораторная работа №3.................................................
1300 руб.
Лабораторная работа №3 по Современные технологии программирования
zalexz95
: 17 октября 2017
Лабораторная работа. Абстрактный тип данных (ADT) p - ичное число
1. Реализовать абстрактный тип данных «р-ичное число», используя класс, в соответствии с приведенной ниже спецификацией.
2. Протестировать каждую операцию, определенную на типе данных, одним из методов тестирования.
3. Протестировать тип данных в целом.
Спецификация типа данных «р-ичное число».
ADT TPNumber
200 руб.
Лабораторная работа №3. Современные технологии программирования
Lampa
: 14 января 2014
на тему «Абстрактный тип данных: p – ичный процессор»
Задание
1. В соответствии с приведенной ниже спецификацией реализовать абстрактный тип данных «P-ичный процессор», используя класс
• Object Pasca,• С++.
2. Протестировать каждую операцию, определенную на типе данных одним из методов тестирования.
Спецификация типа данных «P-ичный процессор».
ADT TProc
Данные
P-ичный процессор (тип TProc) выполняет двухоперандные операции TOprtn = (None, Add, Sub, Mul, Dvd) и однооперандные операции - функ
39 руб.
Лабораторная работа №3 по дисциплине: Современные технологии в программировании (часть 2)
zzzzzzz
: 8 января 2020
Тема работы: «Класс Управление для «Конвертора p1_р2». Интерфейс приложения «Конвертор р1_р2»».
Класс Управление для «Конвертора p1_р2»
Цель: Сформировать практические навыки реализации классов на языке C#.
Задание:
1. Реализовать преобразователь действительных чисел со знаком из десятичной системы счисления в систему счисления с заданным основанием p, в соответствии с приведенной ниже спецификацией, используя класс. Основание системы счисления p принадлежит диапазону значений от 2 до 16.
2. П
100 руб.
Другие работы
ММА/ИДО Иностранный язык в профессиональной сфере (ЛТМ) Тест 20 из 20 баллов 2024 год
mosintacd
: 28 июня 2024
ММА/ИДО Иностранный язык в профессиональной сфере (ЛТМ) Тест 20 из 20 баллов 2024 год
Московская международная академия Институт дистанционного образования Тест оценка ОТЛИЧНО
2024 год
Ответы на 20 вопросов
Результат – 100 баллов
С вопросами вы можете ознакомиться до покупки
ВОПРОСЫ:
1. We have … to an agreement
2. Our senses are … a great role in non-verbal communication
3. Saving time at business communication leads to … results in work
4. Conducting negotiations with foreigners we shoul
150 руб.
Задание №2. Методы управления образовательными учреждениями
studypro
: 13 октября 2016
Практическое задание 2
Задание 1. Опишите по одному примеру использования каждого из методов управления в Вашей профессиональной деятельности.
Задание 2. Приняв на работу нового сотрудника, Вы надеялись на более эффективную работу, но в результате разочарованы, так как он не соответствует одному из важнейших качеств менеджера - самодисциплине. Он не обязателен, не собран, не умеет отказывать и т.д.. Но, тем не менее, он отличный профессионал в своей деятельности. Какими методами управления Вы во
200 руб.
Особенности бюджетного финансирования
Aronitue9
: 24 августа 2012
Содержание:
Введение
Теоретические основы бюджетного финансирования
Понятие и сущность бюджетного финансирования
Характеристика основных форм бюджетного финансирования
Анализ бюджетного финансирования образования
Понятие и источники бюджетного финансирования образования
Проблемы бюджетного финансирования образования
Основные направления совершенствования бюджетного финансирования образования
Заключение
Список использованный литературы
Цель курсовой работы – исследовать особенности бюджетного фин
20 руб.
Программирование (часть 1-я). Зачёт. Билет №2
sibsutisru
: 3 сентября 2021
ЗАЧЕТ по дисциплине “Программирование (часть 1)”
Билет 2
Определить значение переменной y после работы следующего фрагмента программы:
a = 3; b = 2 * a – 10; x = 0; y = 2 * b + a;
if ( b > y ) or ( 2 * b < y + a ) ) then begin x = b – y; y = x + 4 end;
if ( a + b < 0 ) and ( y + x > 2 ) ) then begin x = x + y; y = x – 2 end;
200 руб.