
21.1 Структура процедуры
Заголовок
Раздел объявления типов, локальных переменных
Раздел исполнения
Примервычисления стоимости покупки товара со скидкой, если стоимость покупки составит более 500 рублей и без нее, если стоимость покупки – менее 500 рублей с использованием процедурыSumma.
using System;
using System.Collections.Generic;
using
System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//
Объявление процедурыSumma
public void Summa(out double S, out double Skidka, double C, int K)
{
Skidka = 0;
S = C * K;
DialogResult rsl = MessageBox.Show("Рассчитать сумму к оплате?: ", "Оплата", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (rsl == DialogResult.Yes)
{
MessageBox.Show("Сумма = " + String.Format("{0,8:f2}", S) + " руб.", "Оплата без скидки", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
if (S > 500)
{
Skidka = S * 0.8;
MessageBox.Show("Сумма со скидкой =
" + String.Format("{0,8:f2}", Skidka) + " руб.",
"Оплата со скидкой", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}
private void button1_Click(object sender, EventArgs e)
{
try //охраняемый блок
{
double S, Skidka;
double cena = double.Parse(textBox1.Text);
int kol = int.Parse(textBox2.Text);
Summa(out S, out Skidka, cena, kol);
label1.Text = "Сумма = " + String.Format("{0,8:f2}", S) + " руб.";
label2.Text = "Скидка = " + String.Format("{0,8:f2}", Skidka) + " руб.";
}
catch //перехватчик исключения и формирование ошибки
{
MessageBox.Show("Надо вводить цифры
", "Ошибочный ввод данных",
MessageBoxButtons.OK, MessageBoxIcon.Error);
} // ошибка
}
}
}
Интерфейс проекта в режиме запуска
1. Сумма к оплате < 500 рублей и скидка не предоставляется:
2. Сумма к оплате > 500 рублей и предоставляется скидка:
21.2 Структура функции
С именем функции связано значение, поэтому имя функции можно использовать в выражении. (Имя функции может входить как операндв выражение).
Заголовок
Раздел объявления типов, локальных переменных
Раздел исполнения
Примервычисления корней квадратного уравнения
a*x2 +b*x+c=0
Рассмотрим процедуру обработки события нажатия кнопки Button1, в которой вызывается функцияD– расчета дискриминанта квадратного уравнения.
using System;
using
System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public double d(double p1, double p2, double p3) // функция дискриминант с параметрами p1, p2, p3
{
return p2*p2 - 4*p1*p3;
}
private void button1_Click(object sender, EventArgs e)
{
double x1,x2;
double a = double.Parse(textBox1.Text);
double b = double.Parse(textBox2.Text);
double c = double.Parse(textBox2.Text);
if (a == 0)
MessageBox.Show("Коэффициент при второй степени неизвестного х равен 0 ", "Уравнение не квадратное!", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
{
if (d(a, b, c) > 0)
{
DialogResult rsl = MessageBox.Show("Корни расчитать?: ", "Имеются действительные корни!", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (rsl == DialogResult.Yes)
x1 = (-b + Math.Sqrt(d(a, b, c))) / 2 * a;
x2 = (-b - Math.Sqrt(d(a, b, c))) / 2 * a;
label1.Text = "Корни уравнения: x1= " + String.Format("{0,6:f3}", x1) +
" x2= " + String.Format("{0,6:f3}", x2);
}
else
{
MessageBox.Show("Уравнение не имеет действительных корней! ", "Дискриминант < 0", MessageBoxButtons.OK, MessageBoxIcon.Warning);
label1.Text = "Ответ:";
}
}
}
private void button2_Click(object sender, EventArgs e) // очистка объектов
{
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
label1.Text = " ";
}
private void button3_Click(object sender, EventArgs e) // завершение работы
{
Application.Exit();
}
}
}
Интерфейс проекта в режиме запуска
1. Случай, когда при вводе данных допущена ошибка вида: а=0
2. Случай, когда при вводе данных d>0
В случае вывода данных с новой строки используется символ \n. Например:
label1.Text = "Корни уравнения:\n x1= " + String.Format("{0,6:f3}", x1) + "\n x2= " + String.Format("{0,6:f3}", x2); даст результат:
3. Случай, когда при вводе данных d< 0
4.
Работа кнопки «Очистить»