Определение значений объектов программы в момент прерывания 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Определение значений объектов программы в момент прерывания



Окно Watch. Становится доступным только в момент прерывания. Вызывается через мерю Debug. Имена интересующих объектов заносятся в выделенную строку окна. Сложные объекты (массивы и пользовательские типы данных – структуры) раскрываются щелчком по значку слева от имени. Содержимое колонок очевидно: имя, значение, тип. Добавить имя или выражение можно, щелкнув по первой пустой строке, удалить – нажатием клавиши Del на выбранной строке. Отслеживать можно объекты процедуры, где установлено прерывание.

Окно Locals. Это окно вызывается в момент прерывания и показывает значения всех объектов процедуры, в которой произошло прерывание. Содержание окна совпадает с содержанием окна Watch.

Окно Immediate. В данном окне можно задавать программный фрагмент, состоящий в общем случае из нескольких инструкций, который вычисляет и выводит на экран величины, необходимые для целей отладки. В этом фрагменте можно использовать все объекты программы, которые видимы в точке прерывания, а также в случае необходимости допустимо задавать и использовать в вычислениях переменные, не описанные в окне Code. Фрагмент как бы продолжает выполнение программы с точки прерывания. После окончания работы с окном он не сохраняется. Однако допустимо копирование части кода из окна Code и обратно. В последнем случае скопированный текст становится частью программного кода и может быть сохранен.

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

Продолжение работы

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

- командой Start (описывается ниже); выполнение продолжается до ближайшей точки прерывания, если она установлена;

- командой Run To Cursor; выполнение продолжается до строки, в которой установлен курсор;

- командами пошагового исполнения Step Into (F8) или Step Over (Shift+F8).

Команды Step Into и Step Over выполняют одну инструкцию и переходят в режим прерывания. Разница между ними в том, что последовательное исполнение команды Step Into позволяет заходить внутрь вызываемых процедур, а команды Step Over – нет. Следовательно, если вызываемая процедура отлажена, то разумно использовать команду Step Over, если нет, то команду Step Into.

Start Debugging (F5) – запуск программы.

Start With Full Compile (Ctrl+F5) – запуск приложения с перекомпиляцией всех модулей проекта.

Stop Debugging (Ctrl+Alt+Break) – принудительное прерывание программы; причины – "зацикливание" или недостаток времени. Появляется после запуска вместо команды Start Debugging.

Restart (Ctrl+Shift+F5) – повторный старт программы с начала; выполняется из точки прерывания.

П2.10. Меню Tools (Средства)

Здесь рассмотрим только пункт Options – установки среды. Ниже приводятся рекомендуемые настройки.

1. Environment (Среда):

- Import and Export Settings – используя кнопку Browse выбрать директорию (папку), где установки текущей задачи будут сохранены; рекомендуется выбрать папку, в которой будут храниться все программы на языке Basic;

- остальные без изменений.

2. Projects and Solutions (Проекты и решения):

- General (Общие):

- Projects locations: выбрать папку, в которой будет сохранен проект; рекомендация прежняя;

- Always show solution (Всегда показывать решение) –> Снять флажок,

- остальные без изменений;

3. Text Editor (Редактор текста):

- Basic:

- General –> Установить флажок Line Numbers (Показывать номера строк), остальные не трогать;

- Tabs (Табуляция и отступы) –> Установить Tab (Табуляция) и Indent (Отступ) size (Размер) на 4 позиции, если не установлены, остальные не трогать;

- VB Specific: не трогать;

- остальные пункты программ на языке не касаются.

Пункты Database Tools и Windows Forms Designer не трогать.

На этом настройку среды программирования будем считать законченной. Последующие задачи (проекты) будут использовать выбранные установки и настройку среды повторно выполнять не надо.

П2.11. Меню Window (Окно)

Управляет расположением окон.

Лучше им не пользоваться либо изучить самостоятельно.

В нижней части меню приводится список всех открытых окон с выделенным активным окном.

Приложение 3. Ответы на вопросы для самопроверки

Перед каждой группой ответов указаны № и заголовок раздела, в конце которого сформулированы вопросы.

Элементы языка

1. Различаются ли прописные и строчные буквы в изучаемых языках? В языке C отличаются, в языке Basic – нет.

2. Перечислите допустимые имена.

x X X_X A15B 15C a2 KOH A1b MAKC_HOMEP

Допустимые имена: x X X_X A15B KOH A1b MAKC_HOMEP

3. Перечислите знаки разрядки.К ним относят: пробел, табуляцию (клавиша Tab), переход на новую строку (клавиша Enter).

4. Где могут записываться комментарии в тексте программы на языке C? Комментарии в языке C могут записываться в любом месте, где допустим пробел.

5. Чем отличается запись нескольких инструкций в одной строке в языках C и Basic? В языке C инструкция заканчивается символом ";", а в языке Basic при записи нескольких инструкций в одной строке они должны разделяться символом ":".

Элементы данных

1. Каковы ориентировочно максимальные целое и вещественные значения? Максимально допустимое целое значение в языке C составляет 232-1 (»4*109), для Basic – 264-1, для данных с плавающей точкой они совпадают и»1.79*10308.

2. В каком языке отсутствует логический тип данных? В языке C.

3. Есть ли отличия в правилах записи строковых литералов в языках C и Basic? Нет.

4. Можно ли в языке C задать произвольную нижнюю границу индекса? Нет.

5. Что такое длина измерения массива? Количество элементов в данном измерении.

6. В каком языке есть ключевое слово для описания структур? В языке C.

Выражения

1. Чему равно выражение: -7\2? На каком языке оно написано? Выражение написано на языке Basic и равно –3.

2. Известно целое значение n. Как определить младшую цифру числа? На языке C следует записать выражение abs(n % 10), в языке Basicabs(n mod 10).

3. Как следует записать на языке C соотношение a<b<c? a<b && b<c.

4. Как на языке Basic записать условие попадания точки M(x,y) в квадрат с центром в начале координат и стороной a? abs(x)<=a/2 and abs(y)<=a/2.

Основные инструкции

1. Какие преимущества имеет инструкция присваивания языка C перед аналогичной инструкцией языка Basic? В языке C можно одной инструкцией присвоить одно и то же значение нескольким объектам программы.

2. Какой новый объект программы позволяет выполнить инструкцию goto? Этот новый объект – метка.

3. Допустим ли выход из тела цикла с помощью инструкции goto? Да.

4. Можно ли реализовать разветвление алгоритма более, чем на 2 ветви? Да, вложенными инструкциями if или инструкцией многоальтернативного выбора.

5. Почему необходимо в языке C наличие пустой инструкции? Она необходима в тех случаях, когда по правилам языка в записи требуется наличие некоторой инструкции, а алгоритм не выполняет никаких действий.

6. В чем смысл составной инструкции? Инструкция употребляется тогда, когда правила требуют одной инструкции, а для решения задачи необходимо несколько.

7. Можно ли организовать цикл, не используя инструкцию цикла? Да, можно.

8. В чем преимущество циклов с предусловием? Эти инструкции позволяют записать цикл, у которого при определенных значениях данных тело цикла ни разу не выполнится.

9. Можно ли изменять конечное значение счетчика цикла внутри тела цикла в инструкции for языка Basic? А в инструкции for языка C? В языке Basic этого делать нельзя, а в языке C – можно.

10. Чему равно значение счетчика цикла после его окончания? Отличается ли это правило для языков Basic и C? Оно равно тому значению, которое счетчик имел в момент выхода из цикла. Не отличается.

11. В чем разница в действиях инструкций break и continue языка C? Инструкция break передает управление следующей за циклом выполняемой инструкции, а инструкция continue пропускает оставшиеся инструкции тела цикла и выполнения цикла продолжается.

12. Происходит ли выход из инструкции switch по достижения конца ветви case? А в инструкции select языка Basic? В языке C – нет, а в языке Basic – происходит.

Ввод-вывод

1. Что происходит, когда длина выводимого значения больше величины W? Значение выводится полностью.

2. При каких условиях при выводе значений с плавающей точкой не ставится десятичная точка? Когда значение параметра D равно 0.

3. Перечислите символы – ограничители ввода. Знаки разрядки и любой символ, который не преобразуется данной спецификацией.

4. Чем отличаются правила ввода значений по спецификациям f и e? Ничем.

5. Что возвращают функции printf и scanf? Функция printf возвращает число выведенных символов, функция scanf – число введенных скалярных значений.

Процедуры

1. Что такое блок? Блок – это составная инструкция + описания, расположенные в начале блока.

2. Есть ли в языке Basic главная процедура? Да, есть.

3. В каком языке не определено понятие подпрограммы? В языке C.

4. Что такое указатель на функцию? Это специальный тип указателя, задающий адрес определения некоторой функции.

5. Чем являются выходные скалярные параметры в языке C? Выходные скалярные параметры должны быть указателями.

6. Что передается в вызываемую процедуру, если аргумент – имя массива? В этом случае передается адрес начального элемента массива.

Препроцессор

1. С какой позиции записываются директивы препроцессора? С первой.

2. Какова область действия директивы #define? От текста директивы до другой директивы, отменяющей ее действие. Если такой директивы нет, то до конца файла, где она записана.

3. Можно ли обойтись без директивы #include в языке C? Можно, если в тексте программы не используется ни одна библиотечная функция.

Стиль программирования

1. Как разумно размещать инструкции текста программы? Одну инструкцию в строке текста программы.

2. Какую роль играют отступы при размещении вложенных инструкций? Отступы подчеркивают и выявляют структуру программы, показывая уровень вложенности сложных инструкций.

3. В чем суть "венгерской" нотации имен? Имя содержит информацию о типе и смысле именованного объекта. Рекомендуются имена из нескольких слов, каждое из которых начинается с прописной буквы.

4. На что, вероятно, указывает предупреждение при трансляции? На место вероятного нарушения правил языка или неоднозначной трактовки транслятором отмеченного фрагмента.

5. В чем различие в применении операторов "И" и "ИЛИ" в языках C и Basic? В языке C вычисление выражения прекращается, как только определился результат, в языке Basic выражение вычисляется полностью.

6. Чем отличается действие оператора деления / в языках C и Basic? В языке C при делении целого на целое результат будет целый, причем дробная часть отбрасывается. В языке Basic при этом в общем случае получается дробный результат.

Данные. Дополнение

1. Что произойдет при присваивании переменной типа enum значения не из списка допустимых значений в программе на языке C? А в языке Basic? В языке C произойдет ошибка, а в языке Basic нет.

2. Есть ли предопределенный тип для дат/времени в языке C? Нет.

3. Какое средство языка C напоминает тип variant языка Basic? Объединение или смесь.

4. Для чего нужен тип void? Для описания процедур, не возвращающих значений или не имеющих параметров, а также для формирования "универсальных" указателей.

5. Какой язык позволяет менять структуру и размеры массивов во время выполнения программы? Язык Basic.

6. Может ли структура быть элементом другой структуры? Да, может.

7. Как называются инструкции, задающие пользовательский тип данных в языках C и Basic? Это инструкция typedef в языке C и инструкция type в языке Basic.

8. Каков основной принцип автоматических преобразований числовых типов данных? Основной принцип таких преобразований – не терять точности представления, входящих в выражение операндов.

Операторы. Дополнение

1. Чему равно значение выражения sizeof (<имя_типа>)? Длине (числу байтов) элемента данного типа.

2. Какой тип должен иметь левый операнд оператора ->? Указатель.

3. Дано: i=4; y=i++; x=++i. Чему равны значения i, y, x? i=6; y=4; x=6.

4. Какой тип имеет результат выполнения унарного оператора "&"? Результат должен быть указателем на тип объекта программы, адрес которого вычисляется.

5. Что означают операторы "=" и "==" в языке C? Чей приоритет выше? "=" – это оператор присваивания, "==" – это оператор равенства, приоритет последнего выше.

6. В чем отличие операторов унарного и бинарного оператора "&"? Унарный "&" – это нахождение адреса объекта, бинарный "&" – это поразрядный оператор "И".

7. Какой оператор имеет 3 операнда? 3 операнда имеет условное выражение "?".

Передача данных потоком

1. Какие символы являются ограничителями ввода для спецификации s функции scanf? Пробел и перевод строки (клавиша Enter).

2. Удаляются ли символы-ограничители из входного потока функцией gets? Да, заменяются на конечный нулевой символ.

3. Какой символ помещается в конец выводимой строки функцией puts? Перевод строки.

4. Можно ли ввести строку, содержащую пробелы, функцией scanf? Нет, пробел является ограничителем ввода.

Файлы

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

2. Что представляют файлы с расширением по умолчанию bak? Это предыдущая версия файла с расширением c (cpp).

3. Что такое дескриптор файла? Это идентификатор канала передачи данных.

4. Что означает запись FILE* в языке C? Это указатель на тип FILE, который представляет собой структуру, определенную в файле stdio.h.

5. Что делает инструкция close без параметров? Закрывает все открытые файлы.

6. Укажите тип первого параметра функции MsgBox. Тип string.

Структура программы

1. Могут ли исполняемые инструкции записываться вне тела процедур? Нет, не могут.

2. Может ли в одной области видимости исполняемая инструкция предшествовать декларации? Нет, не может.

3. Отличается ли время жизни для объектов static и extern? Нет, не отличается.

4. Объявление объекта с ключевым словом extern это определение или описание? Это описание.

5. Что произойдет, если число инициаторов больше числа элементов массива? Произойдет ошибка при трансляции.

Указатели, массивы, строки

1. Что означают операторы * и & при работе с указателями? Оператор "*" означает: извлечь значение по известному адресу, оператор "&" – определить адрес известного объекта.

2. Что означает запись *(p + i), где p – указатель? Извлечь значение по адресу, смещенного от адреса p, на i элементов типа указателя в сторону увеличения.

3. Есть ли понятие указатель в языке Basic? Нет.

4. Укажите средство для сравнения строк в языке C. Функция strcmp.

5. Что делает функция gets? Вводит строку с клавиатуры до символа перевод строки, задает введенное значение символьному массиву, заменяя символ перевод строки на конечный нуль.

6. Укажите средства для сцепления строк в языках C и Basic. В языке C для сцепления строк используется функция strcat, а в языке Basic – операторы "&" и "+".

7. Для чего служит функция free? Для освобождения памяти, выделенной в "куче" функциями malloc или calloc.

8. Дайте определение рекурсивной процедуры. Рекурсивная процедура – это процедура, текст которой содержит обращение к самой себе.

9. С помощью какой структуры данных реализуется рекурсия? Рекурсия реализуется с помощью структуры данных, называемой стеком.

Работа с экраном

1. Как перейти в графический режим? Необходимо вызвать функцию initgraph.

2. Укажите размер экрана и начальные координаты курсора в текстовом и графическом режимах соответственно. При установках по умолчанию размер экрана в текстовом режиме составляет 25 строк по вертикали и 80 позиций по горизонтали, начальные координаты курсора – (1,1); в графическом режиме – размер определяется установленным драйвером экрана, для драйвера VGA – это 480 пикселей по вертикали и 640 пикселей по горизонтали, начальные координаты курсора – (0,0).



Поделиться:


Последнее изменение этой страницы: 2017-02-08; просмотров: 304; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.93.207 (0.079 с.)