Технология отладки программы в интегрированной среде разработки Microsoft Visual Studio

Лабораторная работа №2

Разработка программ с разветвленной структурой

Цель работы

Приобретение навыков в составлении и отладке программ на языке C# с использованием операторов: условного перехода if, разветвления switch..case, безусловного перехода goto.

Задание на лабораторную работу

1. Освоить функции системы Microsoft Visual Studio по отладке программы (п. 2.5).

2. Составить программу, работающую в диалоговом режиме (диалог организовать с помощью оператора switch..case, например выбор пунктов меню: "Произвести расчет", "Выход").

Требования к программе

Программа должна выполнять следующие действия:

– вывод меню;

– вывод сообщения о назначении программы;

– ввод данных;

– вычисления и вывод результатов.

Результаты работы выводятся в отформатированном виде.

Порядок выполнения работы

1. Получить вариант задания (п. 2.8).

2. Изучить функции Microsoft Visual Studio по отладке программы (п. 2.5).

3. Подготовить текст программы и отладить её с использованием интегрированной среды разработки Microsoft Visual Studio (п. 2.5, 2.6, 2.7).

4. Во время отладки использовать не менее двух контрольных точек останова (п. 2.5). Проверить работу программы при различных значениях исходных данных, требующих использования разветвленного алгоритма.

5. Ответить на контрольные вопросы (п. 2.10).

6. Оформить отчёт (см. п. 1.10)

Технология отладки программы в интегрированной среде разработки Microsoft Visual Studio

При выполнении лабораторной работы описание этапов подготовки текста программы, компиляции и запуска на выполнение смотрите в лабораторной работе №1 (п. 1.5, 1.7, 1.8).

Если программа успешно откомпилирована и выполнена, но результаты работы не будут правильными, это значит, что программа содержит одну или несколько логических ошибок, то есть полученные после выполнения программы результаты не совпали с ожидаемыми.

Возможно, неправильно обрабатывается ввод данных или допущена ошибка в вычислениях, или допущена ошибка при программировании вывода данных.

Отладка в интегрированной среде разработки приложений заключается в просмотре промежуточных значений переменных во время останова программы и их анализе.

С этой целью в Microsoft Visual Studio обеспечивается возможность трассировки, то есть выполнение программы «по шагам».

Чтобы начать сеанс отладки, выберете команду Отладка-Шаг с обходом(Debug/Trace Into) или нажмите F10. Первая фигурная скобка метода Main будет выделена на экране подсвеченной строкой желтого цвета (Рисунок 2.1). С этого момента мы будем называть эту полосу полосой запуска. Первое нажатие F10 запускает сеанс отладки. Отладчик выполнит невидимый код запуска. Далее выполняемая строка программы – первый оператор из блока программы. Каждое нажатие F10 вызывает выполнение подсвеченного оператора.

Рисунок 2.1

Примечание. Для выполнения оператора Console.ReadLine() необходимо ввести запрашиваемые данные в соответствии с их объявлением.

Использование окна Watch (окна наблюдения).

В окне видимых переменных внизу экрана переменные отображаются со своим текущим значением. Также при наведении курсора на переменную в окне редактора ее значение появится во всплывающем окне-подсказке.

Контрольные точки останова. Для отладки больших программ, чтобы не просматривать весь текст в поиске нужного места, можно установить контрольную точку – точку останова. Она похожа на сигнал «стоп» для программы. Для задания точки останова нужно нажать на соответствующую область окна редактора - Рисунок 2.3

Рисунок 2.3

После этого выбранная строка становится красной – в ней устанавливается точка останова. Если там уже имеется точка останова, то она отменяется.

После того как вы установите все контрольные точки останова, запустите программу на выполнение. Программа будет выполняться до первой точки останова. После останова программы вы можете просмотреть текущие значения переменных и продолжить выполнение программы нажатием F5 или F10.

По окончании отладки необходимо удалить все точки останова.

Справки по операторам

2.6.1. Оператор IF

Основным средством разработки разветвленных структур алгоритмов в C# являются условные операторы if и case. С их помощью можно влиять на последовательность выполнения операторов программы.

Оператор if предназначен для выполнения одного из двух возможных действий (операторов) в зависимости от некоторого условия (при этом одно из действий может быть пустым, то есть отсутствовать).

Формально в терминах языка программирования это можно записать так:

If (Условие)

Оператор ветви «Да»;

Else

Оператор ветви «Нет»;

Оператор if выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисления получается значение булевского типа. В первом случае, если значение есть true (истина), то выполняется < Оператор ветви «Да»>, указанный после ключевого слова then, иначе выполняется < Оператор ветви «Нет»>, указанный после ключевого слова else. Во втором случае, если результат вычисления выражения есть false (ложь), то выполняется оператор, следующий за оператором if.

Условие — это некоторое выражение, имеющее результат логического типа.

Условие всегда должно записываться в круглых скобках. Примеры записи условий:

if (a>b) — простое условие, используется операция сравнения;

if (a>0 && b>0 && c>0) — сложное условие, три операции отношения объединены в одно условие с помощью логической операции И.

Часто возникает необходимость выполнять в одной из ветвей (или в обеих ветвях) условного оператора несколько команд. В этом случае используется составной оператор.

Составной оператор – группа операторов, помещенных между скобок {}.

Например:

if (x>y)

{

max=x;

Console.Write("max=", max);

}

else

x=x+1;

В качестве оператора в одной ветви или в обеих ветвях могут быть использованы условные операторы. Такие операторы называются вложенными.

Например:

if (x>y)

{

if (x > z)

max=z;

Console.Write("max=", max);

}

else

x=x+1;

Примечание. Служебное слово else всегда ассоциируется с ближайшим по тексту if.

Пример 1. Определить, является ли заданное целое число кратным 3.

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Console.Write("Задайте n = ");

int n = int.Parse(Console.ReadLine());

if(n % 3 == 0)

Console.WriteLine("Число {0} кратно 3", n);

else

Console.WriteLine("Число {0} некратно 3", n);

Console.Write("Press any key to continue . . . ");

Console.ReadKey(true);

 

}

}

}

 

2.6.2. Оператор выбора SWITCH ..CASE

Как мы выяснили, оператор if позволяет сделать выбор одного из двух возможных продолжений. Если вариантов выбора более двух, то можно использовать вложенные операторы if. Но это не всегда удобно. Когда счёт вариантов выбора идёт на десятки (а может быть, и на сотни!), тогда применение if становится совершенно неудобным. Для таких случаев рекомендуют использовать специальный оператор switch.

Оператор switch — это оператор для выбора одного из многих продолжений.

Схематично этот оператор можно изобразить так:

Формальная запись этого оператора на С# выглядит так:

Switch(Выражение)

{

case Константа1: Операторы1; break;

case Константа2: Операторы2; break;

...................................

case КонстантаN: ОператорыN; break;

default: