Міністерство освіти та науки України
Національний університет «Львівська політехніка»
Кафедра інформаційних
систем та мереж
Лабораторна робота №1
на тему:
«Створення графічного інтерфейсу»
Львів-2010
Мета:
Набуття навичок зі створення графічного інтерфейсу з використанням елементів керування Label (мітки), TextBox (текстового поля), CommandButton (кнопки).
Короткі теоретичні відомості:
Microsoft .NET (читається дот-нет) — програмна технологія, запропонована фірмою Microsoft як платформа для створення як звичайних програм, так і вебпрограм. Багато в чому є продовженням ідей та принципів, покладених в технологію Java.
Одною з ідей .NET є сумісність служб, написаних різними мовами. Хоча ця можливість рекламується Microsoft як перевага .NET, платформа Java має таку саму можливість.
Кожна бібліотека (збірка) в .NET має свідчення про свою версію, що дозволяє усунути можливі конфлікти між різними версіями збірок.
.NET — кросплатформена технологія, на даний момент існує реалізація для платформи Microsoft Windows, FreeBSD (від Microsoft) і варіант технології для ОС Linux в проекті Mono (в рамках угоди між Microsoft з Novell), DotGNU.
Захист авторських прав відноситься до створення середовищ виконання (CLR — Common Language Runtime) для програм .NET. Компілятори для .NET випускаються багатьма фірмами для різних мов вільно.
.NET поділяється на дві основні частини — середовище виконання (по суті віртуальна машина) та інструментарій розробки.
Середовища розробки .NET-програм: Visual Studio .NET (C++, C#, J#), SharpDevelop, Borland Developer Studio (Delphi, C#) і т. д. Середовище Eclipse має додаток для розробки .NET-програм. Застосовні програми також можна розроблювати в текстовому редакторі та використовувати консольний компілятор.
Також як і технологія Java, середовище розробки .NET створює байт-код, призначений для виконання віртуальною машиною. Вхідна мова цієї машини в .NET називається CIL (Common Intermediate Language), також відома як MSIL (Microsoft Intermediate Language), або просто IL. Застосування байт-кода дозволяє отримати кроссплатформеність на рівні скомпільованого проекту (в термінах .NET: збірка), а не на рівні початкового тексту, як, наприклад, в С. Перед запуском збірки в середовищі виконання (CLR) байт-код перетворюється вбудованим в середовище JIT-компілятором (just in time, компіляція на льоту) в машинні коди цільового процесора.
Слід зазначити, що один з перших JIT-компіляторів для Java був також розроблений фірмою Microsoft (на даний момент в Java використовується більш досконала багаторівнева компіляція — Sun HotSpot). Сучасна технологія динамічної компіляції дозволяє досягнути аналогічного рівня швидкодії з традиційними «статичними» компіляторами (наприклад, С++) і питання швидкодії часто залежить від якості того чи іншого компілятора.
C# (вимовляється Сі-шарп) — об'єктно-орієнтована мова програмування з безпечною системою типізації для платформи .NET. Розроблена Андерсом Гейлсбергом, Скотом Вілтамутом та Пітером Гольде під егідою Microsoft Research (при фірмі Microsoft).
Синтаксис C# близький до С++ і Java. Мова має строгу статичну типізацію, підтримує поліморфізм, перевантаження операторів, вказівники на функції-члени класів, атрибути, події, властивості, винятки, коментарі у форматі XML. Перейнявши багато що від своїх попередників — мов С++, Delphi, Модула і Smalltalk — С#, спираючись на практику їхнього використання, виключає деякі моделі, що зарекомендували себе як проблематичні при розробці програмних систем: так, C# не підтримує множинне спадкування класів (на відміну від C++) або виведення типів (на відміну Haskell).
C# є дуже близьким родичем мови програмування Java. Мова Java була створена компанією Sun Microsystems, коли глобальний розвиток інтернету поставив задачу роззосереджених обчислень. Взявши за основу популярну мову C++, Java виключила з неї потенційно небезпечені речі (типу вказівників без контролю виходу за межі). Для роззосереджених обчислень була створена концепція віртуальної машини та машинно-незалежного байт-коду, свого роду посередника між вихідним текстом програм і апаратними інструкціями комп'ютера чи іншого інтелектульного пристрою.
Java набула чималої популярності, і була ліцензована також і компанією Microsoft. Але з плином часу Sun почала винуватити Microsoft, що та при створенні свого клону Java робить її сумісною виключно з платформою Windows, чим супепречить самій концепції машинно-незалежного середовища виконання і порушує ліцензійну угоду. Microsoft відмовилася піти назустріч вимогам Sun, і тому з'ясування стосунків набуло статусу судового процесу. Суд визнав позицію Sun справедливою, і зобов'язав Microsoft відмовитися від позаліцензійного використання Java.
У цій ситуації в Microsoft вирішили, користуючись своєю вагою на ринку, створити свій власний аналог Java, мови в якій корпорація стане повновласним господарем. Ця створена мова отримала назву C#. Вона успадкувала від Java концепції віртуальної машини (середовище .NET), байт-коду (MSIL) і більшої безпеки вихідного коду програм, плюс врахувала досвід використання програм на Java.
Нововведенням C# стала можливість легшої взаємодії, порівняно з мовами-попередниками, з кодом програм, написаних на інших мовах, що є важливим при створенні великих проектів. Якщо програми на різних мовах виконуються на платформі .NET, .NET бере на себе клопіт по сумісності програм (тобто типів даних, за кінцевим рахунком).
Станом на сьогодні C# визначено флагманською мовою корпорації Microsoft, бо вона найповніше використовує нові можливості .NET. Решта мов програмування, хоч і підтримуються, але визнані такими, що мають спадкові прогалини щодо використання .NET.
C# розроблявся як мова програмування прикладного рівня для CLR і, як такий, залежить, перш за все, від можливостей самої CLR. Це стосується, перш за все, системи типів C#. Присутність або відсутність тих або інших виразних особливостей мови диктується тим, чи може конкретна мовна особливість бути трансльована у відповідні конструкції CLR. Так, з розвитком CLR від версії 1.1 до 2.0 значно збагатився і сам C#; подібної взаємодії слід чекати і надалі. (Проте ця закономірність буде порушена з виходом C# 3.0, що є розширеннями мови, що не спираються на розширення платформи .NET.) CLR надає C#, як і всім іншим .NET-орієнтованим мовам, багато можливостей, яких позбавлені «класичні» мови програмування. Наприклад, збірка сміття не реалізована в самому C#, а проводиться CLR для програм, написаних на C# точно так, як і це робиться для програм на VB.NET, J# тощо.
Хід виконання роботи:
Запускаю середовище програмування Visual Studio 2010.
Обираю пункт меню File->New->Project та обираю тип проекту Windows Forms, а також налаштовую директорії на назву проекту.
З допомогою панелі інструментів створюю графічний інтерфейс програми, перетягуючи потрібні компоненти на форму, також налаштовую властивості форми та її компонентів.
Організовую обробку подій натискання кнопок, вводу символів та інші – для забезпечення потрібної функціональності програми.
Створюю необхідні функції для обрахунку заданої у завданні формули.
Тестую програму.
Оформляю звіт до лабораторної роботи.
Завдання:
11. Обчислення значення виразу:
, k=1, 2, 3,… .
Код програми:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Lab1_MZKIT
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void txtbKeyDown(object sender, KeyEventArgs e)
{
char c = (char)e.KeyCode;
if (!char.IsDigit(c) && !char.IsSeparator(c) && !char.IsControl(c))
{
e.Handled = true;
}
}
private void txtbKeyPressDoubleFilter(object sender, KeyPressEventArgs e)
{
char c = (char)e.KeyChar;
if (!char.IsDigit(c) && !char.IsControl(c))
{
if ((c!='.') || (c=='.' && (((TextBox)sender).Text.IndexOf('.')!=-1 || ((TextBox)sender).Text.Length==0)))
e.Handled = true;
}
}
private void btnExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void txtbKeyPressIntFilter(object sender, KeyPressEventArgs e)
{
char c = e.KeyChar;
if (!char.IsDigit(c) && !char.IsControl(c))
e.Handled = true;
}
private double binom(double a, double b, int n)
{
double s=0;
for (int i = 0; i <= n; i++)
s += combination(i, n) * Math.Pow(a, n - i) * Math.Pow(-b, i);
return s;
}
private int fact(int n)
{
int f = 1;
for (int i = 2; i <= n; i++)
f *= i;
return f;
}
private int combination(int i, int k)
{
return fact(k) / (fact(i) * fact(k - i));
}
private void btnCalculate_Click(object sender, EventArgs e)
{
double a = 0, b = 0;
int n = 0;
try
{
a = double.Parse(txtbA.Text);
}
catch
{
MessageBox.Show("Невірно введено дійсне А... Повторіть введення...", "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtbA.Focus();
return;
}
try
{
b = double.Parse(txtbB.Text);
}
catch
{
MessageBox.Show("Невірно введено дійсне B... Повторіть введення...", "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtbB.Focus();
return;
}
try
{
n = int.Parse(txtbN.Text);
}
catch
{
MessageBox.Show("Невірно введено ціле N... Повторіть введення...", "Помилка", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtbN.Focus();
return;
}
txtbResult.Text = binom(a, b, n).ToString();
}
}
}
Результати роботи програми:
Висновки:
Я ознайомився із середовищем візуального програмування Visual Studio, структурою та властивостями його вікон. Також я розробив навчальний проект з використанням найпростіших компонентів.
Я набув навичок зі створення графічного інтерфейсу з використанням елементів керування Label (мітки), TextBox (текстового поля), Button (кнопки) та обробки виключних ситуацій під час виконання.