Главная страница
Навигация по странице:

  • Задание.

  • Задание

  • Выполнение Активизируем ИСР. В главном меню исполняем команду File=>New Proect.

  • Toolbox

  • Отладка=>Запуск без отладки

  • Лабораторная работа циклы. Поволжский государственный университет телекоммуникаций и информатики


    Скачать 3.57 Mb.
    НазваниеПоволжский государственный университет телекоммуникаций и информатики
    АнкорЛабораторная работа циклы
    Дата08.10.2022
    Размер3.57 Mb.
    Формат файлаpdf
    Имя файлаLR_CSharp_Akchurin_2010.pdf
    ТипДокументы
    #721430
    страница5 из 7
    1   2   3   4   5   6   7
    18.
    Многопоточные приложения
    Предмет исследований

    Преимущества многопоточности.

    Реализация многопоточности.

    Применение в программах.
    Контрольные вопросы
    1.
    Типы многопоточности в программах.
    2.
    Создание дополнительных потоков в программах.
    3.
    Обмен данными между потоками.
    4.
    Применение делегатов при создание многопоточных приложений в C#/
    5.
    Преимущества многопоточных приложений на современных ПК.
    6.
    Использование метода "
    Thread
    .Sleep".
    Задание. Напишите программу реализующую создание второго потока при ее запуске и обмен данными между потоками.
    Пример. В примере показана программ в которой из основного потока созда- ется еще один поток. Второй поток исполняется до того момента пока в первом переменной str не будет присвоено значение x. После этого глобальная пере- менная stopThread примет значение true и цикл во втором потоке завершится, что привет к завершения работы самого потока. В данном примере представ- лен обмен данными между потоками с помощью глобальных переменных.
    Листинг программы using System; using System.Threading; namespace LabTh
    { class Program
    { static bool stopThread; public static void MyThread()
    { for (int i = 0; ; i++)
    { if (stopThread) break;
    Console.WriteLine("MyThread: {0}", i);

    99
    Thread.Sleep(2000);
    }
    Console.WriteLine("Поток MyThread остановлен");
    }
    [STAThread] static void Main(string[] args)
    {
    ThreadStart myThreadDelegate = new ThreadStart(MyThread);
    Thread thr = new Thread(myThreadDelegate);
    Console.WriteLine("Запуск потока MyThread"); stopThread = false; thr.Start(); string str; do
    {
    Console.WriteLine("Команда (х -- выход): "); str = Console.ReadLine();
    Console.WriteLine("основной поток: {0}", str);
    } while (str != "x"); stopThread = true;
    Console.ReadLine();
    }
    }
    }
    При работе программы видно, что при присвоении заданной переменной зна- чения "x" происходит прекращение работы потока.

    100

    101
    19.
    Работа с папками
    Предмет исследований

    Свойство компонентов label, button, textBox, listbox.

    Просмотр содержимого папки.

    Создание папки в указанном месте.

    Удаление указанной папки
    Контрольные вопросы
    Просмотр содержимого папками.
    1.
    Создание новых папками и назначение имени.
    2.
    Удаление заданных папок.
    3.
    Использование listbox для вывода содержимого папок.
    4.
    Использование textbox для работы с папками.
    5.
    События onClick.
    6.
    Права доступа к папкам.
    7.
    Задание. Создать программу, позволяющую создавать и удалять, а также про- сматривать их содержимое. Программа должна содержать графический ин- терфейс.
    Пример. В примере представлена программа, позволяющая создавать, уда- лять и просматривать папки на жестком диске. В программе реализован гра- фический интерфейс. При помощи элемента интерфейса textboxуказывается, какую папку создавать, удалять или просматривать. Выбор действий произво- дится с помощь элементов button. Ввод результата производится с помощью элемента интерфейса listbox.
    В поле с "Путь к папке" указывается папка. При помощи кнопки "Просмотреть" выводится содержимое указанной папки. Кнопки "Создать" и "Удалить" исполь- зуются для создания либо удаление по заданному пути. В поле "Вывод резуль- тата выводится содержимое папки либо сообщение об успешности операций создания или удаления папки. Кнопка "Очистить используется для очистки поля "Вывод результат".
    Окно формы

    102
    Листинг программы using
    System; using
    System.Windows.Forms; using
    System.IO; namespace
    LabDirector
    { public partial class
    Form1
    :
    Form
    { public
    Form1()
    {
    InitializeComponent();
    } private void button1_Click(
    object sender,
    EventArgs e)
    { string a = textBox1.Text; string
    [] fl; string
    [] dr; if
    (a != (
    null
    ))
    { fl =
    Directory
    .GetFiles(a); dr =
    Directory
    .GetDirectories(a); foreach
    (
    string h in fl) listbox1.Items.Add(h); foreach
    (
    string s in dr) listbox1.Items.Add(s);

    103
    }
    } private void button2_Click(
    object sender,
    EventArgs e)
    { string a = textBox1.Text; string q; if
    (a != (
    null
    ))
    {
    Directory
    .CreateDirectory(a); if
    (
    Directory
    .Exists(a))
    { q =
    String
    .Concat(a,
    " Успешное создания!"
    ); listbox1.Items.Add(q);
    } else
    { q =
    String
    .Concat(a,
    " Ошибка создания!"
    ); listbox1.Items.Add(q);
    }
    }
    } private void button3_Click(
    object sender,
    EventArgs e)
    { string a = textBox1.Text; string q; if
    (a != (
    null
    ))
    { if
    (
    Directory
    .Exists(a))
    {
    Directory
    .Delete(a);
    } else
    { q =
    String
    .Concat(a,
    " Каталога не существует!"
    ); listbox1.Items.Add(q);
    } if
    (
    Directory
    .Exists(a))
    { q =
    String
    .Concat(a,
    " Ошибка удаление!"
    ); listbox1.Items.Add(q);

    104
    } else
    { q =
    String
    .Concat(a,
    " Успешно удален!"
    ); listbox1.Items.Add(q);
    }
    }
    } private void button4_Click(
    object sender,
    EventArgs e)
    { listbox1.Items.Clear();
    }
    }
    }
    При запуске программы мы указываем путь и выбираем одно из возможных действий. На данной картинке выбран просмотр содержимого папки:

    105
    20.
    Многооконные приложения
    Предмет исследований

    Исследование использование нескольких окон форм (Form) в одном при- ложении.

    Возможность вывода сообщений при работе с приложениями Windows
    Form.

    Открытие и закрытие новых окон в приложениях.

    Создание парольного доступа к окнам приложения.
    Контрольные вопросы
    Открытие новых окон в приложениях.
    1.
    Организация доступа к окнам.
    2.
    Работа с MessageBox.
    3.
    Организация завершение приложения.
    4.
    Интеграция изображений в форму.
    5.
    Закрытие окно в приложении.
    6.
    Работа с событием FormClosing.
    7.
    Объекты Show или Showdialog.
    8.
    Задание. Создайте программу, в которой предусмотрена работа с несколькими окнами, организация парольного доступа к скрытым окном и вывод сообщений об ошибках через MessageBox
    Пример. В примере показана программа, демонстрирующая работу с много- оконными программами и организацию парольного доступа к окнам а так же работу с MessageBox
    В программе используются компоненты Button, TextBox и
    PictureBox. Все эти компоненты можно найти в "Панели элементов" вкладка "Стандартные элементы управления".
    При запуске программы открывается "Главное окно" (форма 1) с двумя кнопка- ми.

    106
    При нажатии на кнопку с именем "Окно 1" открывается “Окно 1” (форма 2) с картинкой. Например
    Если пользователь нажимает кнопку "Окно 2", то вызывается форма 4, окно которой не отображается, а из нее вызывается форма 3. Появляется “Окно 3”
    (форма 3) с запросом пароля.

    107
    Если пароль введен правильно, то пользователь получает доступ к “Окну 4”
    (форма 4).
    Окно с запросом пароля автоматически закрываетчя. Если пользователь за- крывает окно ввода пароля, то приложение завершается.
    Листинг программы (Форма 1) using System; using System.Windows.Forms; namespace LabWindows
    { public partial class Form1: Form
    { public Form1()
    {
    InitializeComponent();/
    // Показать окно 1
    } private void button1_Click(object sender, EventArgs e)
    {
    Form2 f2 = new Form2(); f2.Show();
    // Показать окно 2
    } private void button2_Click(object sender, EventArgs e)
    {
    Form4 f4 = new Form4(); f4.Show();
    // Показать окно 4
    }
    }
    }

    108
    Листинг программы (Форма 2) using System.Windows.Forms; namespace LabWindows
    { public partial class Form2 : Form
    { public Form2()
    {
    InitializeComponent();
    // Показать окно 2
    }
    }
    }
    Отображается окно запроса пароля.
    Листинг программы (Форма 3) using System; using System.Windows.Forms; namespace LabWindows
    { public partial class Form3 : Form
    { bool key = false; public Form3()
    {
    InitializeComponent();
    // Показать окно 3
    } private void button1_Click(object sender, EventArgs e)
    { string pass = "123";
    // Это пароль if (pass == textBox1.Text)
    { key = true;
    Form3.ActiveForm.Close();
    // Закрыть окно 3
    } else
    MessageBox.Show("Ошибка!!! Пароля!!"); // Вывод сообщения
    }

    109 private void Form3_FormClosing(object sender, FormClosingEventArgs e)
    { if (key == false)
    { int a = 0;
    Environment.Exit(a);
    // Закрыть приложение
    }
    }
    }
    }
    Листинг программы (Форма 4) using System.Windows.Forms; namespace LabWindows
    { public partial class Form4 :Form
    { public Form4()
    {
    Form3 f3 = new Form3(); f3.ShowDialog();
    // Показать окно 4
    InitializeComponent();
    }
    }
    }
    При запуске программы мы видим следующее:
    Если нажата кнопка «Окно 1», то

    110
    Если нажата кнопка «Окно 2», то
    Если пароль правильный, то

    111

    112
    21.
    Компонент ProgressBar
    Предмет исследований

    Использование таймера и его режимов.

    Свойства компонента ProgressBar.

    Компонент statusStrip и его варианты вывода им информации.

    Работа с подкомпонентом StatusLabel компонента statusStrip.
    Контрольные вопросы
    Варианты использования компонента ProgressBar в программах.
    1.
    Задание параметров ProgressBar.
    2.
    Работа с таймером.
    3.
    Варианты использование Таймера в программах.
    4.
    Компонент statusStrip и его подкомпоненты.
    5.
    Задание параметров подкомпонентам statusStrip.
    6.
    События onClick.
    7.
    Задание. Создать программу, в которой будут использоваться следующие компоненты: ProgressBar, statusStrip (и один из его подкомпонентов). Для рабо- ты с ProgressBar, statusStrip используйте таймер.
    Пример. Программа, демонстрирующая работу с компонентами ProgressBar, statusStrip (и один из его подкомпонентов). Их мы добавляем в форму из "Па- нели элементов", вкладка "Стандартные элементы управления". В программе также использованы компоненты Button для управления, они в "Панели эле- ментов".
    При нажатии кнопки "Старт" полоса прогресса в компоненте ProgressBar начи- нает заполняться слева направо, внизу в компоненте statusBar показывается процент выполнения. При помощи кнопки "Стоп" полосу можно остановить.
    Кнопка "Очистка" используется для перевода ProgressBar и statusStrip в изна- чальное состояние.

    113
    Листинг программы using
    System; using
    System.Windows.Forms; namespace
    LabProgress
    { public partial class
    Form1
    :
    Form
    {
    Timer time = new
    Timer
    (); public
    Form1()
    {
    InitializeComponent();
    } private void button1_Click(
    object sender,
    EventArgs e)
    { time.Interval = 250; time.Tick += new
    EventHandler
    (IncreaseProgressBar); time.Start();
    } private void
    IncreaseProgressBar(
    object sender,
    EventArgs e)
    { progressBar1.Increment(1); toolStripStatusLabel1.Text = progressBar1.Value.ToString() +
    "% Выполнено"
    ; if
    (progressBar1.Value == progressBar1.Maximum)
    { time.Stop(); progressBar1.Value = 0;
    }

    114
    } private void button2_Click(
    object sender,
    EventArgs e)
    { time.Stop();
    } private void button3_Click(
    object sender,
    EventArgs e)
    { progressBar1.Value = 0; toolStripStatusLabel1.Text =
    "0"
    ;
    }
    }
    }
    При запуске нажимаем кнопку "Старт" и смотрим результат выполнения.

    115
    22.
    Списки
    Предмет исследований
    Приложение Windows с компонентами списков:

    Список listBox.

    Комбинированный список comboBox. Это комбинация простого списка с однострочным редактором textBox.
    Контрольные вопросы
    Списки, их назначение.
    1.
    Компоненты списков listBox (список) и ComboBox (комбинированный спи-
    2.
    сок) в ИСР. Их назначение и сравнение.
    Создание в форме компонентов списков.
    3.
    Свойство Items (элементы). Нумерация элементов списков.
    4.
    Метод SelectedIndex.
    5.
    Предварительное редактирование списков.
    6.
    Свойство Text (текст) компонента comboBox.
    7.
    Программное редактирование строк компонентов списков.
    8.
    Метод добавить элемент Add(Item) и его использование.
    9.
    Метод ввести элемент Insert(Index,Item) и его использование.
    10.
    Метод удалить элемент RemoveAt(Index) и его использование.
    11.
    Задание. Создать проект работы со списками.
    Пример. Создать проект работы со списками. В проекте предусмотреть:

    Инициализацию поля ввода.

    Добавление строки из поля ввода в конец комбинированного списка.

    Вставку строки из поля ввода в комбинированный список в выделенное место.

    Удаление строки из комбинированного списка в выделенном месте.

    Копирование строки из комбинированного списка в выделенном месте в список
    Рекомендуемая форма программы:

    116
    Форма содержит следующие компоненты:

    listBox1 - список.

    label1 – метка для заголовка (Список) компонента listBox1.

    comboBox1 - комбинированный список.

    label2 – метка для заголовка (Комбинированный список) компонента comboBox1.

    textBox1 - однострочный редактор для ввода текста. В него вводится стро- ка текста (по умолчанию - Новое).

    label3 – метка для заголовка (Текст = >) компонента textBox1.

    button1– кнопка "Инициализация textBox". Позволяет в textBox1 очистить поле Text и установить там курсор.

    button2 – кнопка "Добавить в comboBox" для заполнения компонента comboBox1.

    button3 – кнопка "Вставить в comboBox". Позволяет вставить строку в вы- деленное место в списке.

    Button4 – кнопка "Удалить из comboBox". Позволяет удаплить выделенную строку в списке.

    button5 – кнопка "Копировать в listBox". Позволяет копировать в listBox строку, выделяемую в comboBox.

    117
    Выполнение
    Активизируем ИСР. В главном меню исполняем команду File=>New Proect.
    Активизируется окно выбора типа проекта. В нем нужно выбрать WindowsFor- mApplication. Отображается окно выбора скрытности кода, в котором выбира- ем обычныой загрузки. Теперь отображаются окна проекта:

    Form1.cs [Design]. Конструктор формы, там пустая форма, которую нужно заполнить компонентами.

    Toolbox - компоненты.

    Properties - свойства.

    Form1.cs. Редактор кода с шаблоном кода модуля формы. Если окна нет, то правый щелчок по окну конструктора вызывает контекстное меню, в ко- тором нужно исполнить команду View Code.

    Error List. Сообщения об ошибках.
    Задание свойств формы. Выбираем объект Form1 и подбираем его размеры и положение. В окне Properties назначаем свойства формы:
    Свойство
    Значение
    English
    Перевод
    English
    Name
    Имя
    Form1
    Text
    Текст
    Списки
    Заполнение формы. При заполнении формы в палитре компонент Toolbox выбирается нужный блок и переносится в форму. Там подбираются его поло- жение и размеры. Затем в окне Properties назначаются свойства компонента.
    Большая часть свойств устанавливается автоматически, их редактировать не следует.
    Для кнопок следует изменить текст, показав выполняемое действие. Также необходимо добавить функциональность кнопки, написав код обработчика события нажатия. При двойном щелчке по кнопке ИСР автоматически объяв- ляет подпрограмму обработчика и в код автоматически заносит ее шаблон.
    Остается для каждого обработчика записать исполняемые команды.
    Листинг программы using
    System; using
    System.Windows.Forms; namespace
    WindowsFormsApplSpiski
    { public partial class
    Form1
    :
    Form

    118
    { public
    Form1()
    {
    InitializeComponent();
    } private void
    Form1_Load(
    object sender,
    EventArgs e)
    {
    } private void button1_Click(
    object sender,
    EventArgs e)
    { textBox1.Text =
    ""
    ; textBox1.Focus();
    } private void button2_Click(
    object sender,
    EventArgs e)
    { comboBox1.Items.Add(textBox1.Text); textBox1.Text =
    ""
    ; textBox1.Focus();
    } private void button3_Click(
    object sender,
    EventArgs e)
    { int i = comboBox1.SelectedIndex; comboBox1.Items.Insert(i, textBox1.Text); textBox1.Text =
    ""
    ; textBox1.Focus();
    } private void button4_Click(
    object sender,
    EventArgs e)
    { int i = comboBox1.SelectedIndex; comboBox1.Items.RemoveAt(i);
    } private void button5_Click(
    object sender,
    EventArgs e)
    { int i = comboBox1.SelectedIndex;

    119 listBox1.Items.Add(comboBox1.Items[i]);
    }
    }
    }
    Проверим программу в работе сначала без компиляции. Запускаем программу командой Отладка=>Запуск без отладки. Если допущены ошибки, то про- грамма не исполняется, выводится окно с сообщением об этом. В окне ошибок все ошибки перечислены, их нужно исправить и посторно запустить пронрам- му. Если ошибок нет, то программа запускается.
    Теперь надо проверить правильность логики обработчиков.

    Инициализация textBox. Кнопка очищает textBox1 и передает ему фокус ввода. Курсор появляется в его поле.

    Добавить в comboBox. Для каждой строки в textBox1 заносим текст, кноп- кой переносим его в конец списка. Повторяем операцию нужное число раз.
    Каждый раз проверяем список comboBox1, убеждаясь в появлении новой строки в конце.

    Вставить в comboBox.. В textBox1 заносим строку текста для ввода в про- извольно выбираемую позицию. В сomboBox1 выделяем позицию для ввода. Кнопкой текст из textBox1 перемещается в выделенную строку comboBox1.

    Удалить из comboBox.. В сomboBox1 выделяем позицию для удаления.
    Кнопкой выделенную строка удаляется из comboBox1.

    Копировать в listBox. В comboBox выделяем позицию для копирования, ее текст перемещается в верхнюю строку. Кнопкой копируем ее в конец listBox. Каждый раз наблюдаем listBox, чтобы убедится в появлении там

    120 новой строки в очередной позиции. Обратите внимание на появление в listBox линейки прокрутки, когда его поле заполнено.
    Приложение перед закрытием программы:
    Если все правильно, то проект компилируется и собирается. Это можно сде- лать двумя способами:

    Команда Построение=>Построить решение генерирует исполяемый файл в отладочном режиме. Он размещается во вложенной папке проекта bin\debug.

    Команда Построение=>Перестроить решение генерирует исполяемый файл в выпускном режиме. Он размещаеттсв во вложенной папке проекта bin\release.

    121
    1   2   3   4   5   6   7


    написать администратору сайта