- •Введение
- •1 Компоненты Visual C#
- •1.1 Компонент класса TextBox
- •1.2 Компонент класса Label
- •1.3 Компонент класса Button
- •1.4 Компонент класса DataGridView
- •1.5 Компонент класса NumericUpDown
- •2 Примеры выполнения практических заданий
- •2.1 Простейшие алгоритмы
- •2.2 Выражения
- •2.3 Циклы
- •2.4 Одномерные массивы
- •2.5 Матрицы
- •2.6 Строки
- •2.7 Записи и файлы
- •2.8 Функции и процедуры
- •Список литературы
2 Примеры выполнения практических заданий
2.1 Простейшие алгоритмы
Задание: Найти сумму двух целых чисел A и B.
Для решения поставленной задачи потребуются компоненты:
A_L1 класса Label для подписи компонента A_TB;
A_TB класса TextBox для ввода числа A;
B_L класса Label для подписи компонента B_TB;
B_TB класса TextBox для ввода числа B;
Res_L класса Label для подписи компонента Res_TB;
Res_TB класса TextBox для вывода результата. Данный компонент
должен быть недоступным для редактирования, что достигается путем установки свойства ReadOnly в значение true;
Calc_B класса Button для активизации расчета.
Установим следующие значения свойств компонентов (таблица 4):
Таблица 4 – Значения свойств компонентов для примера выполнения задания по работе с простейшими алгоритмами
Компонент.Свойство |
Значение |
A_L.Text |
Число &A |
B_L.Text |
Число &B |
Res_L.Text |
&Результат |
Res_TB.ReadOnly |
true |
|
|
Calc_B.Text |
Рас&чет |
Опишем событие Click кнопки Calc_B2:
private void Calc_B_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(A_TB.Text); |
// Получение |
числа |
A |
int b = Convert.ToInt32(B_TB.Text); |
// Получение |
числа |
B |
int res = a+b; |
// Расчет результата |
||
Res_TB.Text = res.ToString(); |
// Вывод результата |
}
1A_L является идентификатором компонента. Здесь и далее подразумевается, что у соответствующего компонента изменено свойство Name.
2Реализации алгоритмов, приводимые в примерах, не всегда оптимальны, так как направлены на раскрытие механизмов работы с компонентами.
12
Внешний вид1 и пример работы программы показаны на рисунке 1.
Рисунок 1 – Внешний вид и пример работы программы, реализующей простейшие алгоритмы
2.2 Выражения
Задание: По значениям двух переменных x и y найти значения перемен-
ных |
|
k, |
m, |
|
p, |
где |
k sin 2x cos 3y , |
m lg x 5 2 , |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
p |
k 2m |
при |
|
k |
|
|
m |
. |
|
|
||||
|
2 |
|
|
|
|
|
|
|
|
|
|
|||
при |
|
k |
|
|
m |
|
|
|
||||||
|
|
|
|
|
|
|||||||||
|
5k 4m |
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Для решения поставленной задачи потребуются компоненты:
X_L класса Label для подписи компонента X_TB;
X_TB класса TextBox для ввода числа x;
Y_L класса Label для подписи компонента Y_TB;
Y_TB класса TextBox для ввода числа y;
K_L класса Label для подписи компонента K_TB;
K_TB класса TextBox для вывода числа k;
M_L класса Label для подписи компонента M_TB;
M_TB класса TextBox для вывода числа m;
P_L класса Label для подписи компонента P_TB;
P_TB класса TextBox для вывода числа p;
Calc_B класса Button для активизации расчета.
Установим следующие значения свойств компонентов (таблица 5):
1 Здесь и далее для получения внешнего вида, показанного на рисунках, необходима настройка еще ряда свойств компонентов, изучение которых не предусматривается в рамках данных занятий.
13
Таблица 5 – Значения свойств компонентов для примера выполнения задания по работе с выражениями
Компонент.Свойство |
Значение |
X_L.Text |
Число &X |
Y_L.Text |
Число &Y |
K_L.Text |
Число &K |
K_TB.ReadOnly |
true |
|
|
M_L.Text |
Число &M |
M_TB.ReadOnly |
true |
|
|
P_L.Text |
Число &P |
P_TB.ReadOnly |
true |
|
|
Calc_B.Text |
Рас&чет |
Опишем событие Click кнопки Calc_B:
private void Calc_B_Click(object sender, EventArgs e)
{
double x,y,k,m,p; |
|
x = Convert.ToDouble(X_TB.Text); |
// Получение числа x |
y = Convert.ToDouble(Y_TB.Text); |
// Получение числа y |
k = Math.Sin(2*x) + Math.Cos(3*y); |
// Расчет числа k |
m = Math.Pow(Math.Log10(x)+5,2); |
// Расчет числа m |
if (Math.Abs(k) > Math.Abs(m)) |
// Проверка условия |
p = Math.Sqrt(k+2*m); |
// Истина, расчет числа p |
else |
|
p = Math.Pow(5*k+4*m,2); |
// Ложь, расчет числа p |
K_TB.Text = k.ToString(); |
// Вывод числа k |
M_TB.Text = m.ToString(); |
// Вывод числа m |
P_TB.Text = p.ToString(); |
// Вывод числа p |
}
Внешний вид и пример работы программы показаны на рисунке 2.
Рисунок 2 – Внешний вид и пример работы программы, реализующей вычисления выражений
14
2.3 Циклы
xi
Задание: По формуле ( 1)i 1i!(i 4) члена ряда с номером i составить
программы вычисления:
а) суммы первых n членов ряда (i = 1,2,…n);
б) суммы всех начальных членов ряда, значение которых не меньше заданного числа e.
В задании обозначение i! обозначает расчет факториала. Факториал некоторого числа – это последовательное перемножение чисел начиная с 1 до заданного числа, например, 5! = 1*2*3*4*5.
Для решения поставленной задачи потребуются компоненты:
X_L класса Label для подписи компонента X_TB;
X_TB класса TextBox для ввода числа x;
N_L класса Label для подписи компонента N_TB;
N_TB класса TextBox для ввода числа n (программа «а)»);
Calc1_B класса Button для активизации расчета программы «а)»;
E_L класса Label для подписи компонента E_TB;
E_TB класса TextBox для ввода числа e (программа «б)»);
Calc2_B класса Button для активизации расчета программы «б)».
Sum1_L класса Label для подписи компонента Sum1_TB;
Sum1_TB класса TextBox для вывода суммы программы «а)»;
Sum2_L класса Label для подписи компонента Sum2_TB;
Sum2_TB класса TextBox для вывода суммы программы «б)».
Установим следующие значения свойств компонентов (таблица 6).
Таблица 6 – Значения свойств компонентов для примера выполнения задания по работе с циклами
Компонент.Свойство |
Значение |
X_L.Text |
Число &X |
N_L.Text |
Число &N |
E_L.Text |
Число &E |
Sum1_L.Text |
&Сумма 1 |
Sum1_TB.ReadOnly |
true |
|
|
Sum2_L.Text |
С&умма 2 |
Sum2_TB.ReadOnly |
true |
|
|
Calc1_B.Text |
Расчет &1 |
Calc2_B.Text |
Расчет &2 |
15
Опишем событие Click кнопки Calc1_B (программа «а)»):
private void Calc1_B_Click(object sender, EventArgs e)
{
/* Ввод значений "x" и "n" */
int n = Convert.ToInt32(N_TB.Text); double x = Convert.ToDouble(X_TB.Text);
/* Для вычисления суммы членов ряда переменной-накопителю
необходимо изначально присвоить значение "0" */ double sum = 0;
int f;
/* Организация цикла перебора членов ряда */ for (int i=1; i<=n; i++)
{
/* Расчет факториала */ f = 1;
for (int j=2; j<=i; j++) f *= j;
/* Расчет слагаемого и его суммирование. При расчете
слагаемого используется условный оператор для возведения -1 в требуемую степень */
sum += Math.Pow(x,i)/(((i+1)%2 == 0 ? 1 : -1)*f*(i+4));
}
Sum1_TB.Text = sum.ToString(); // Вывод результата
}
Программа «б)» во многом схожа с программой «а)» и реализуется в описании события Click кнопки Calc2_B. Реализация отличается следующими моментами:
вместо заранее заданного количества членов ряда n задается точность расчета e;
так как заранее неизвестно количество членов ряда, подлежащих суммированию, то рекомендуется применение вместо цикла for либо цикла while, либо цикла do…while, выход из которых производится при невыполне-
нии некоторого условия.
Внешний вид и пример работы программы показаны на рисунке 3.
Рисунок 3 – Внешний вид и пример работы программы, реализующей циклические алгоритмы
16