Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


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



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

Окно Locals(Локальные). Это окно вызывается в момент прерывания и показывает значения всех объектов процедуры, в которой произошло прерывание. Названия колонок совпадают с названиями окна Watch. Для отладки этого окна достаточно, поэтому в VB2010окно Watchотсутствует.

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

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

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

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

-командами пошагового исполнения Step Into (F8) (Шаг с заходом – F11) или Step Over (Shift+F8) (Шаг с обходом – F10).

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

StartDebugging (F5) (Начать отладку) – запуск программы. В точке прерывания в меню этот пункт называется Continue(Продолжить).

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

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

Для всех команд отладки в Панели инструментов имеются соответствующие кнопки.

П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 позиции, если не установлены, установить флажок: Keep tabs(Сохранять знаки табуляции); остальные не трогать;

- VB Specific(Только для VB): не трогать;

Остальные пункты меню Параметры в данном курсе не нужны..

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

П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, в языках С++и Basic он есть.

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

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

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

6. Можно ли объявить массив произвольных размеров? Если да, то в каком языке? Можно, в языке Basic.

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

Выражения

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

2. Известно целое значение n. Как определить младшую цифру числа? На языке Cследует записать выражение abs(n % 10), в языке BasicAbs(nMod 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. А для языка Basic? Только перевод строки Enter.

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

6. Что возвращают функции 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 напоминает тип Object языка Basic? Объединение или смесь.

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

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

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

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

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. Что делает инструкция FileClose без параметров? Закрывает все открытые файлы.

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. Для чего служит оператор delete? Для освобождения памяти, выделенной в " куче" оператором new.

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

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

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

1. Какой заголовочный файл нужен для работы с окнами? coniow.h.

2. Укажите начальные координаты курсора в текстовом режиме.

Начальные координаты курсора – (1, 1).

Приложение 4. Темы для курсовой работы

Решение следует оформлять в виде отдельной процедуры. Главная процедура должна содержать ввод и контроль исходных данных, вызов процедуры и печать результата.

Отчет по курсовой работе должен содержать:

- титульный лист;

- условие задачи;

- текст программы, разбитый на отдельные модули;

- результаты тестирования;

- инструкцию пользователя, в которой указываются ограничения программы и порядок ввода исходных данных;

- список использованных источников.

 

1. Найти корни полинома методом Лина.

2. Написать генератор перестановок.

3. Упорядочить массив методом пирамидальной сортировки.

4. Упорядочить массив методом двухпутевого слияния.

5. Упорядочить массив методом Шелла.

6. Упорядочить массив методом бинарных вставок.

7. Определить, является ли натуральное число n простым.

8. Определить седловую точку матрицы.

9. Определить, является ли целая матрица Bклеткой целой матрицы A.

10. Определить максимальный размер клетки матрицы A, состоящей только из положительных элементов.

11. Составить " магический" квадрат для нечетного n.

12. Найти максимальное число, входящее в матрицу Aболее одного раза.

13. Найти количество вхождений каждого числа в последовательность целых значений.

14. Найти № первой строки матрицы произвольного размера, для которой число перемен знаков элементов строки максимально при движении слева направо.

15. Определить количество различных чисел в целой матрице.

16. Даны 2 целых последовательности чисел Aи B. Сформировать последовательность C, содержащую все элементы последовательности A без повторений, не входящие в последовательность B.

17. Заданы nточек на плоскости своими координатами. Найти минимальный размер угла, в который всегда попадали минимум 2 точки при произвольном повороте этого угла вокруг начала координат.

18. Даны nточек на плоскости. Определить 2 из них такие, что количества точек, лежащих по обе стороны от прямой, проходящей через эти точки, различались минимально.

19. Найти все простые числа, меньшие натурального числа n.

20. Дана упорядоченная последовательность натуральных чисел b. Найти, входит ли в эту последовательность l-е число Фибоначчи. Числа Фибоначчи определяются по формуле: a0=1; a1=1;

an=an-1+an-2.

21. Решение системы линейных алгебраических уравнений: метод Зейделя.

22. Найти коэффициенты полинома R2n(x)=Pn(x)*Qn(x), где:

Pn(x)=anxn+an-1xn-1+…+a1x+a0, Qn(x)=bnxn+bn-1xn-1+…+b1x+b0.

23. Программа с помощью функции, генерирующей равномерно распределенное случайное число, выбирает целое значение от 0 до 9. Пользователь за 3 попытки должен угадать выбранное число. При каждой попытке выдается сообщение о том, равно, меньше или больше предложенное значение выбранному.

24. Для заданного четного числа n(n> 2) проверить гипотезу Гольдбаха о том, что его можно представить в виде суммы 2-х простых чисел. В случае подтверждения гипотезы получить эти 2 числа, в противном случае выдать сообщение.

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

26. Представим шахматную доску матрицей 8*8. Целые m и n задают позицию ферзя. Заполнить позицию ферзя символом " ф", позиции, находящиеся под боем, - символом " *".

27. Решить такую же задачу для коня.

28. Заданы положение и массы n материальных точек на плоскости. Найти разбиение этого множества на 2 непустых и непересекающихся множества так, чтобы их центры тяжести находились наиболее близко друг к другу.

29. Найти корни полинома методом Фридмана.

30. Решение системы линейных алгебраических уравнений: метод Гаусса.

31. Найти экстремум функции нескольких переменных методом покоординатного спуска.

32. Найти минимум и координаты точки минимума функции N переменных методом Хука-Дживса.

33. Найти экстремум функции нескольких переменных методом деформируемого многогранника.

34. Найти минимум и координаты точки минимума функции N переменных методом Розенброка.

35. Найти минимум и координаты точки минимума функции N переменных методом Пауэлла.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Абрамов, С.А. и др. Задачи по программированию. – М: Наука, 1988. – 224с.

2. Балуев, А.Н., Даугавет, В.А., Шидловская, Н.А. Сборник упражнений по АЛГОЛ 60. – М.: Наука ФМ, 1976. – 128 с.

3. Бахвалов, Н.С. Численные методы. – М.: Наука, 1975. – 632 с.

4. Березин, И.С., Жидков, Н.П. Методы вычислений. В 2-х т. Т.2. – М.: Физматгиз, 1959. – 620 с.

5. Брудно, А.Л., Каплан, Л.И. Олимпиады по программированию для школьников. – М: Наука ФМ, 1985. – 96с.

6. Джехани, Н. Программирование на языке Си. – М.: Радио и связь, 1988. –272 с.

7. Зак, Д. Самоучитель Visual Basic.NET. – Киев: BHV; СПб.: Питер, 2003. – 558 с.

8. Зиборов, В.В. Visual Basic 2010 на примерах. – СПб.: БХВ-Петербург, 2010. – 336 с.

9. Касьянов, В.Н. и др. Индивидуальные задания по практике на ЭВМ. – Новосибирск: Изд-во НГУ, 1979. – 41 с.

10. Керниган, Б., Ритчи, Д., Фьюэр, А. Язык программирования Си. Задачи по языку Си. – М.: Радио и связь, 1985. – 279 с.

11. Кнут, Д. Искусство программирования для ЭВМ: В 3-х т. Т.3. Сортировка и поиск. – М: Мир, 1978. – 844 с.

12. Крылов, В.И., Бобков, В.В., Монастырный, П.И. Вычислительные методы: В 2-х т. Т.1. – М.: Наука ФМ, 1976. – 303 с.

13. Погодина, Т.П. Сборник задач по программированию на языке Паскаль. – Челябинск, физ.-мат. лицей №31, 2002. – 52с.

14. Подбельский, В.В., Фомин, С.С. Программирование на языке Си: учебное пособие. – 2-е доп. изд. – М.: Финансы и статистика, 2004. – 600 с.

15. Страуструп, Б. Язык программирования С++. – М.: Бином, 2011. – 1136 с.

16. Химмельблау, Д. Прикладное нелинейное программирование. – М: Мир, 1975. – 534 с.

 


Поделиться:



Последнее изменение этой страницы: 2017-04-12; Просмотров: 291; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.108 с.)
Главная | Случайная страница | Обратная связь