Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Выполнение программы по шагам без захода в функцию






Это простейший способ выполнения программы по элементарным фрагментам. Выбор команды Debug | Step Over или нажатие клавиши F10 вызывает выполнение отладчиком всего кода в операторе, указанном строкой выполнения, включая любые вызываемые на ней процедуры или функции, пока управление не вернется обратно к программисту. После этого строка выполнения указывает следующий выполняемый оператор.

Возьмем следующий пример программы.

 

Пример 1 – Простая программа, выполняемая по шагам.

 

#include " stdafx.h"

#include < iostream>

 

using namespace std;

 

int sqr(int x)

{ //10

int q = x*x; //11

return q; //12

} //13

 

void main()

{ //0

const int N = 10; //1

int a[N] = {5, 2, 7, -9, 4, 8, -1, 0, 3, 6}; //2

//найдем сумму квадратов //3

//положительных элементов массива //4

int s = 0; //5

for (int i = 0; i < N; i++) //6

if (a[i] > 0) s += sqr(a[i]); //7

cout < < s < < endl; //8

return; //9

}

 

Если нажать клавишу F10, то строка выполнения перемещается на фигурную скобку в начале программы (строка 0), поскольку это первое, что выполняется в программе. Второе нажатие клавиши F10 перемещает строку выполнения вниз до оператора объявления константы размерности массива N на следующей строке (строка 1). После этого нажатие F10 переводит указатель к строке с объявлением массива и его инициализации (строка 2). Далее, при нажатии F10, строки 3 и 4 будут пропущены, так как они состоят только из комментариев и указатель переместится к строке 5. В ней производится объявление переменной для хранения суммы квадратов элементов массива s и ее инициализация нулем.

После этого нажатие F10 вызывает начало выполнения цикла for. Первое нажатие инициализирует переменную i, и указатель переходит к строке 7. Далее нажатие F10 приводит к выполнению оператора if и указатель переходит на строку 8. Однако далее управление будет передано обратно на строку 6, так как цикл еще не завершен.

Обратите внимание, что в окне Locals выводятся значения счетчика i, максимального элемента m, размерности массива N и сам массив a.

Сравнение (строка 7) вызывается 10 раз, но не возможно понять выполняется ли при этом операция присвоение нового значения m. Выполнение по шагам не позволяет отладчику показывать детали любых вычислений для отдельной строки.

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

Если необходимо видеть подробности, то в пример нужно внести следующее простое изменение:

 

Пример 2 – Модифицированная программа, для лучшего выполнения по шагам

 

#include " stdafx.h"

#include < iostream>

 

using namespace std;

 

int sqr(int x)

{ //10

int q = x*x; //11

return q; //12

} //13

 

void main()

{ //0

const int N = 10; //1

int a[N] = {5, 2, 7, -9, 4, 8, -1, 0, 3, 6}; //2

//найдем сумму квадратов //3

//положительных элементов массива //4

int s = 0; //5

for (int i = 0; i < N; i++) //6

if (a[i] > 0) //7.0

s += sqr(a[i]); //7.1

cout < < s < < endl; //8

return; //9

}

 

Если теперь нажимать клавишу F10, то указатель после строка 7.0 будет при выполнении условия переходить на строку 7.1, а при не выполнении на строку 8.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.