Файл: Практикум по информатике рекомендовано в качестве учебного пособия.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 732
Скачиваний: 14
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
35
MessageBox
.Show(
"Вторник"
); else if
(dayOfWeek == 3)
MessageBox
.Show(
"Среда"
); else if
(dayOfWeek == 4)
MessageBox
.Show(
"Четверг"
); else if
(dayOfWeek == 5)
MessageBox
.Show(
"Пятница"
); else if
(dayOfWeek == 6)
MessageBox
.Show(
"Суббота"
); else if
(dayOfWeek == 7)
MessageBox
.Show(
"Воскресенье"
); else
MessageBox
.Show(
"Неверное значение!"
);
3.3. Кнопки-переключатели
При создании программ в Visual Studio для организации разветвлений часто используются элементы управления в виде кнопок-переключателей
(
RadioButton
). Состояние такой кнопки (включено–выключено) визуально отражается на форме, а в программе можно узнать его с помощью свойства
Checked
: если кнопка включена, это свойство будет содержать
True
, в про- тивном случае
False
. Если пользователь выбирает один из вариантов пере- ключателя в группе, все остальные автоматически отключаются.
Группируются радиокнопки с помощью какого-либо контейнера – часто это бывает элемент
GroupBox
. Радиокнопки, размещенные в раз- ных контейнерах, образуют независимые группы.
Рис. 3.1. Группа радиокнопок
if
(radioButton1.Checked)
MessageBox
.Show(
"Выбрана функция: синус"
); else if
(radioButton2.Checked)
MessageBox
.Show(
"Выбрана функция: косинус"
); else if
(radioButton1.Checked)
MessageBox
.Show(
"Выбрана функция: экспонента"
);
36
3.4. Пример написания программы
З а д а н и е : ввести три числа – x
, y
, z
. Вычислить sin( )
sin( )
, при
0
, при
0
sin(sin( ))
, при
0
x
y
x
z
z x
U
y e
z
z x
y
x
z
z x
Рис. 3.2. Окно лабораторной работы
3.4.1. Создание формы
Создайте форму, в соответствии с рис. 3.2.
Разместите на форме элементы
Label
,
TextBox и
Button
. Поле для вывода результатов также является элементом
TextBox с установленным в
True свойством
Multiline и свойством
ScrollBars установленным в
Both
3.4.2. Создание обработчиков событий
Обработчики событий создаются аналогично тому, как и в преды- дущих лабораторных работах. Текст обработчика события нажатия на кнопку «Пуск» приведен ниже. private void button1_Click(
object sender,
EventArgs e)
{
// Получение исходных данных из TextBox double x =
Convert
.ToDouble(textBox2.Text); double y =
Convert
.ToDouble(textBox1.Text);
37 double z =
Convert
.ToDouble(textBox3.Text);
// Ввод исходных данных в окно результатов textBox4.Text =
"Результаты работы программы "
+
"ст. Петрова И.И. "
+
Environment
.NewLine; textBox4.Text +=
"При X = "
+ textBox2.Text +
Environment
.NewLine; textBox4.Text +=
"При Y = "
+ textBox1.Text +
Environment
.NewLine; textBox4.Text +=
"При Z = "
+ textBox3.Text +
Environment
.NewLine;
// Вычисление выражения double u; if
((z ‐ x) == 0) u = y *
Math
.Sin(x) *
Math
.Sin(x) + z; else if
((z ‐ x) < 0) u = y *
Math
.Exp(
Math
.Sin(x)) ‐ z; else u = y *
Math
.Sin(
Math
.Sin(x)) + z;
// Вывод результата textBox4.Text +=
"U = "
+ u.ToString() +
Environment
.NewLine;
}
Запустите программу и убедитесь в том, что все ветви алгоритма выполняются правильно.
Индивидуальные задания
По указанию преподавателя выберите индивидуальное задание из нижеприведенного списка. В качестве f(x) использовать по выбору:
sh(x), x
2
, e
x
. Отредактируйте вид формы и текст программы, в соответст- вии с полученным заданием.
Усложненный вариант задания для продвинутых студентов: с помо- щью радиокнопок (
RadioButton
) дать пользователю возможность во время работы программы выбрать одну из трех приведенных выше функций.
1.
0
,
1
)
(
0
,
y f(x)
)
(
0
,
)
(
)
(
2 2
2
xy
y
x
f
xy
y
x
f
xy
y
x
f
y
x
f
a
2.
0
,
0 0
,
)
(
0
/
,
)
(
/
)
(
ln
0
/
,
)
(
)
(
ln
3 2
3 3
2
y
x
y
x
f
y
x
y
x
f
y
x
f
y
x
y
x
f
x
f
b
3.
2 2
2 2
( )
sin
,
0
( )
cos
,
0
( )
tg
,
0.
f x
y
y x y
c
f x
y
y x y
y
f x
y
x y
4.
3 3
3
( )
arctg
( ) ,
( )
arctg
( ) ,
( )
0.5,
f x
y
f x
x y
d
y
f x
f x
y x
y
f x
y x
38 5.
,
)
(
0
,
,
)
(
2
/
0
,
,
)
(
иначе
x
if
x
четное
i
x
f
i
x
нечетное
i
x
f
i
e
6.
,
)
(
2 5
0 1
0
,
)
(
10 5
0
,
2
)
(
иначе
x
f
xb
b
x
f
xb
e
g
b
x
f
7.
,
)
(
40 12
,
*
4
)
(
10 1
,
2
)
(
иначе
x
bf
xb
b
x
f
xb
e
s
x
f
8.
,
)
(
,
)
(
5
)
(
3
cos
1
,
)
(
3
)
(
5
sin
2
m
x
m
x
f
m
x
x
f
m
x
f
x
m
x
f
m
x
f
j
9.
,
)
(
3
,
)
(
,
3
)
(
2 2
2 3
p
x
p
x
f
p
x
p
x
f
p
x
p
x
f
l
10.
10
,
)
(
10
,
10
,
)
(
ln
)
(
xq
q
x
f
xq
e
xq
q
x
f
k
q
x
f
11.
5
),
(
min
,
),
(
max
y
x
f
z
y
x
f
m
12.
),
(
max
,
)
(
min
y
x
f
z
y
y
x
f
n
13.
2
,
max
),
(
min
z
y
y
x
f
p
14.
,
)
(
min
,
)
(
max
xyz
z
y
x
f
xyz
z
y
x
f
q
15.
2 2
(sin( ))
sin
( ) ,
0
(cos( ))
cos
( ) ,
0
(tg( ))
tg
,
0.
f
x
f y
x y
c
f
x
f y
x y
y
f
x
y
x y
16.
2 2
2
ax
2
( ), 1 | x | 3,
x
1
( ), | x |
3
f(x)
ax
,| x | 1.
x 2
f x
a
a
f x
17.
0
,
)
(
0
,
cos
)
(
0
,
cos
)
(
2 2
3 3
y
x
x
f
y
y
x
y
y
x
f
y
x
x
y
x
f
c
18.
10
,
)
(
10
,
10
,
)
(
ln
)
(
2
k
x
k
x
f
k
x
k
x
k
x
f
k
q
x
f
19.
2 2
sin( ( )) cos( ( )),
0
tg( (
),
0
sin ( ( )) cos ( ( )),
0.
f x
f y
x y
c
f x y x y
f x
f y
x y
20.
,
),
(
min max
z
y
x
f
r
39
ЛАБОРАТОРНАЯ РАБОТА № 4.
ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ
Цель лабораторной работы:
изучить простейшие средства отлад- ки программ в среде Visual Studio. Составить и отладить программу циклического алгоритма.
4.1. Операторы организации циклов
Под циклом понимается многократное выполнение одних и тех же операторов при различных значениях промежуточных данных. Число повторений может быть задано в явной или неявной форме.
К операторам цикла относятся: цикл с предусловием while
, цикл
с постусловием do while
, цикл с параметром for и цикл перебора foreach
. Рассмотрим некоторые из них.
1 2 3 4 5 6 7 8 9 ... 12
4.2. Цикл с предусловием
Оператор цикла while организует выполнение одного оператора (про- стого или составного) неизвестное заранее число раз. Формат цикла while
: while
(B) S; где
B
– выражение, истинность которого проверяется (условие заверше- ния цикла);
S
– тело цикла – оператор (простой или составной).
Перед каждым выполнением тела цикла анализируется значение выражения
В
: если оно истинно, то выполняется тело цикла, и управле- ние передается на повторную проверку условия
В
; если значение
В
лож- но – цикл завершается и управление передается на оператор, следую- щий за оператором
S
Если результат выражения
B
окажется ложным при первой провер- ке, то тело цикла не выполнится ни разу. Отметим, что если условие
B
во время работы цикла не будет изменяться, то возможна ситуация за- цикливания, то есть невозможность выхода из цикла. Поэтому внутри тела должны находиться операторы, приводящие к изменению значения выражения
B
так, чтобы цикл мог корректно завершиться.
В качестве иллюстрации выполнения цикла while рассмотрим про- грамму вывода целых чисел от 1 до n по нажатию кнопки на форме: private void button1_Click(
object sender,
EventArgs e)
{
40 int n = 10;
// Количество повторений цикла int i = 1;
// Начальное значение while
(i <= n)
// Пока i меньше или равно n
{
MessageBox
.Show(i.ToString());
// Показываем i i++;
// Увеличиваем i на 1
}
}
4.3. Цикл с постусловием
Оператор цикла do while также организует выполнение одного оператора (простого или составного) неизвестное заранее число раз.
Однако в отличие от цикла while условие завершения цикла проверяет- ся после выполнения тела цикла. Формат цикла do while
: do
S while
(B); где
В
– выражение, истинность которого проверяется (условие заверше- ния цикла);
S
– тело цикла – оператор (простой или блок).
Сначала выполняется оператор
S
, а затем анализируется значение вы- ражения
В
: если оно истинно, то управление передается оператору
S
, если ложно – цикл завершается, и управление передается на оператор, следую- щий за условием
B
. Так как условие
В
проверяется после выполнения тела цикла, то в любом случае тело цикла выполнится хотя бы один раз.
В операторе do while
, так же как и в операторе while
, возможна ситуация зацикливания в случае, если условие
В
всегда будет оставаться истинным.
4.4. Цикл с параметром
Цикл с параметром имеет следующую структуру: for
(<инициализация>; <выражение>; <модификация>)
<оператор>;
Инициализация используется для объявления и/или присвоения на- чальных значений величинам, используемым в цикле в качестве пара- метров (счетчиков). В этой части можно записать несколько операторов, разделенных запятой. Областью действия переменных, объявленных в части инициализации цикла, является цикл и вложенные блоки. Ини- циализация выполняется один раз в начале исполнения цикла.
Выражение определяет условие выполнения цикла: если его ре- зультат истинен, цикл выполняется. Истинность выражения проверяется перед каждым выполнением тела цикла, таким образом, цикл с пара-
41 метром реализован как цикл с предусловием. В блоке выражение через запятую можно записать несколько логических выражений, тогда запя- тая равносильна операции логическое И (&&).
Модификация выполняется после каждой итерации цикла и служит обычно для изменения параметров цикла. В части модификация можно записать несколько операторов через запятую.
Оператор (простой или составной) представляет собой тело цикла.
Любая из частей оператора for
(инициализация, выражение, моди- фикация, оператор) может отсутствовать, но точку с запятой, опреде- ляющую позицию пропускаемой части, надо оставить.
Пример формирования строки, состоящей из чисел от 0 до 9, разде- ленных пробелами: string s =
""
;
// Инициализация строки for
(
int i = 0; i <= 9; i++)
// Перечисление всех чисел s += i.ToString() +
" "
;
// Добавляем число и пробел
MessageBox
.Show(s.ToString());
// Показываем результат
Данный пример работает следующим образом. Сначала вычисляет- ся начальное значение переменной i
. Затем, пока значение i
меньше или равно 9, выполняется тело цикла, и затем повторно вычисляется значение i
. Когда значение i
становится больше 9, условие – ложно и управление передается за пределы цикла.
4.5. Средства отладки программ
Практически в каждой вновь написанной программе после запуска обнаруживаются ошибки.
Ошибки первого уровня (ошибки компиляции) связаны с непра- вильной записью операторов (орфографические, синтаксические). При обнаружении ошибок компилятор формирует список, который отобра- жается по завершению компиляции (рис. 4.1). При этом возможен толь- ко запуск программы, которая была успешно скомпилирована для пре- дыдущей версии программы.
Рис. 4.1. Окно со списком ошибок компиляции
42
При выявлении ошибок компиляции в нижней части экрана появляет- ся текстовое окно (см. рис. 4.1), содержащее сведения обо всех ошибках, найденных в проекте. Каждая строка этого окна содержит имя файла, в ко- тором найдена ошибка, номер строки с ошибкой и характер ошибки. Для быстрого перехода к интересующей ошибке необходимо дважды щелкнуть на строке с ее описанием. Следует обратить внимание на то, что одна ошибка может повлечь за собой другие, которые исчезнут при ее исправле- нии. Поэтому необходимо исправлять их последовательно, сверху вниз и, после исправления каждой – компилировать программу снова.
Ошибки второго уровня (ошибки выполнения) связаны с ошибками выбранного алгоритма решения или с неправильной программной реа- лизацией алгоритма. Эти ошибки проявляются в том, что результат рас- чета оказывается неверным либо происходит переполнение, деление на ноль и др. Поэтому перед использованием отлаженной программы ее надо протестировать, т. е. сделать просчеты при таких комбинациях ис- ходных данных, для которых заранее известен результат. Если тестовые расчеты указывают на ошибку, то для ее поиска следует использовать встроенные средства отладки среды программирования.
В простейшем случае для локализации места ошибки рекомендуется поступать следующим образом. В окне редактирования текста устано- вить точку останова перед подозрительным участком, которая позволит остановить выполнение программы и далее более детально следить за ходом работы операторов и изменением значений переменных. Для этого достаточно в окне редактирования кода щелкнуть слева от нужной стро- ки. В результате чего данная строка будет выделена красным (рис. 4.2).
Рис. 4.2. Фрагмент кода с точкой останова
При выполнении программы и достижения установленной точки программа будет остановлена, и далее можно выполнять код по шагам с помощью команд Отладка → Шаг с обходом (без захода в методы) или Отладка → Шаг с заходом (с заходом в методы) (рис. 4.3).