Вопросы по самопроверке

Оглавление

Введение....................................................................................................................................... 2

1. Краткая справка по языку Си и разработке консольных приложений в среде VisualC++

2008...............................................................................................................................................  
Вопросы по самопроверке........................................................................................................  
2. Программы линейной структуры........................................................................................  
2.1. Средства разработки программ линейной структуры................................................  
Целый тип данных.............................................................................................................  
Вещественные типы данных............................................................................................  
Стандартные функции для обработки числовых данных.............................................  
Оператор присваивания и его сокращенные формы.....................................................  
Арифметические выражения............................................................................................  
Вывод десятичных чисел в окно программы.................................................................  
Ввод десятичных чисел с клавиатуры.............................................................................  
2.2 Приемы, используемые для минимизации вычислений..............................................  
2.3 Примеры выполнения задания.......................................................................................  
Пример 2.1 выполнения задания......................................................................................  
Пример 2.2 выполнения задания......................................................................................  
2.4. Задания А для самостоятельной работы......................................................................  
2.5. Задания Б для самостоятельной работы.......................................................................  
Вопросы по самопроверке........................................................................................................  
3. Программы разветвляющейся структуры...........................................................................  
3.1 Средства разработки программ разветвляющейся структуры...................................  
Условные операторы.........................................................................................................  
Сложные логические выражения.....................................................................................  
Условное выражение (тернарный оператор)..................................................................  
3.2. Примеры выполнения задания......................................................................................  
3.3. Задания для самостоятельной работы..........................................................................  
Вопросы по самопроверке........................................................................................................  
4. Программы циклической структуры...................................................................................  
4.1. Средства разработки программ циклической структуры...........................................  
Цикл с параметром (for)....................................................................................................  
Цикл с предусловием (while)............................................................................................  
Цикл с постусловием (dowhile).......................................................................................  
4.2. Вычисление и вывод данных в виде таблицы.............................................................  
4.3. Пример выполнения задания с использованием цикла while...................................  
4.4. Пример выполнения задания с использованием цикла for......................................  
4.5. Задания для самостоятельной работы..........................................................................  
4.6. Сохранение результатов вычислений в массиве.........................................................  
4.7. Пример выполнения задания.........................................................................................  
4.8. Задания для самостоятельной работы..........................................................................  
Вопросы по самопроверке......................................................................................................  
Список рекомендуемой литературы......................................................................................  

1. Краткая справка по языку Си и разработке консольных приложений в среде VisualC++ 2008

Система программирования VisualC++ предоставляет возможность разработки и отладки различных программных продуктов, в том числе приложений, работающих как с использованием графического интерфейса пользователя, так и в консольном режиме. Последние имеют интерфейс пользователя в виде текстового окна, называемого окномпрограммы,в котором последовательно,строка за строкой отображаются данные,вво-димые пользователем с клавиатуры, и данные, выводимые программой. Позицию начала ввода или вывода в окне программы указывает курсор - мигающий символ, имеющий вид подчеркивания в режиме вставки или прямоугольника – в режиме замены. По умол-чанию длина строки равна 80, а количество строк – 50. Изменить эти и другие параметры окна программы позволяет диалог, открывающийся при вводе команды Свойства в сис-темном меню окна программы при ожидании ввода данных.

При вводе пользователь имеет возможность редактировать последние вводимые данные, используя клавиши с печатными символами, а также клавиши BackSpace (уда-ление последнего введённого символа), Delete (удаление символа справа от курсора), Insert (переключение режимов вставки и замены), Стрелка вверх (удаление всех введён-ных символов), Стрелка влево (перемещение курсора в предыдущую позицию), Стрелка вправо (перемещение курсора в следующую позицию). Если в окне диалога, открываю-щегося при вводе команды Свойства системного меню окна программы, установить на вкладке Общие флажок Выделение мышью, то становится возможным выделять части текста буксировкой мыши, копировать выделенное в буфер обмена щелчком её правой клавиши и затем вставлять в позицию курсора щелчком правой клавиши. Завершается ввод нажатием клавиши Enter, при этом курсор перемещается в начало новой строки.

Вывод данных из программы выполняется в виде текста, символ за символом при автоматическом перемещении курсора в очередную позицию строки, а при достижении её конца – в начало новой строки.

Консольный режим обычно используется в тех случаях, когда основными требо-ваниями к программе являются минимизация времени счёта и расхода оперативной па-мяти. На подготовку таких программ требуется меньше времени, поэтому консольный режим удобно использовать для быстрой проверки и отладки отдельных алгоритмов. Именно поэтому, имея в виду, что данный сборник задач ориентирован на развитие на-

«Практикум по программированию на языке C в среде VS C++»


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

Рис. 1.1

Для создания программы, работающей в консольном режиме, следует после за-

пуска Visual C++ ввести команду File/New/Project.... В открывшемся окне New Project

(см. рис. 1.1) выбрать в левом списке строку Win32, в правом списке – Win32 Console Application, ввести в поле Location: (или выбрать в диалоге, нажав кнопку Browse…) папку для размещения проекта, ввести в поле Name: имя проекта и нажать кнопку OK, а затем - кнопку Finish во вновь появившемся окне Win32 Application Wizard. При этом изменится набор окон, как показано на рис. 1.2.

В окне редактирования программы (см. рис. 1.2) будет представлен подготовлен-ный системой исходный текст простейшей программы - шаблон консольной программы

(или просто шаблон программы).

Элементами шаблона программы являются

заголовок программы

//Программа 1.cpp: Defines the entry point for the console application

комментарий (начинается с пары символов //) указывающий, в каком файле проекта на-ходится описание исходного текста программы и что это приложение консольное.

«Практикум по программированию на языке C в среде VS C++»



Панель инст-   Панель инст-   Панель инст-
рументов   рументов Edit   рументов De-
Standard       bug
         

  Окно редакти-   Окно
  рования про-   вывода
Строка меню граммы   сообщений
         
         


Рис. 1.2

директива #include"stdafx.h",подключающая к шаблону заголо-вочный файл stdafx.h, необходимый для использования минимального набора стан-дартных (библиотечных) функций, обеспечивающих работу проекта,

главная функция (primary function),включающая

§ заголовок функции

int _tmain(int argc, _TCHAR* argv[])

§ тело функцииблок из пары фигурных скобок,содержащих лишь одиноператор return0;

выхода из программы с кодом завершения 0.

«Практикум по программированию на языке C в среде VS C++»


Для создания файла исполняемой программы шаблона (как и создаваемых на его основе консольных программ), который будет размещён в подпапке Debug папки при-ложения, следует ввести команду Build/BuildSolution. Работающая программа шаблона будет представлять только окно консольного приложения(окно программы). Для её за-

пуска в среде VisualC++ необходимо ввести команду Debug/StartWithoutDebugging (старт без отладки), или щелкнуть кнопку , или нажать клавиши Ctrl+F5. В резуль-тате откроется окно программы (см. рис 1.3) с предложением нажать любую клавишу, будет выполнен единстаенный оператор шаблона return0;, завершающий работу программы, а нажатие любой клавиши приведёт к закрытию её окна.

Рис 1.3.

При запуске программы шаблона командой Debug/StartDebugging (старт в ре-жиме отладки),или щелчком на кнопке , или нажатием клавиши F5, или при запуске из папки окно программы также откроется, но сразу же закроется, и работа программы будет завершена. Чтобы задержать окно программы до нажатия клавиши, в программу следует добавить перед оператором return0; оператор getch(); и директиву

#include "conio.h"как показано ниже #include "stdafx.h" #include "conio.h"

int _tmain(int argc, _TCHAR* argv[])

{

getch(); return0;

}

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

«Практикум по программированию на языке C в среде VS C++»


В дальнейшем при разработке программы в шаблон потребуется добавлять опера-торы, объявления переменных и именованных констант, комментарии, директивы, соз-даваемые пользователем функции, а также, при необходимости, директивы #include, подключающих к проекту иные наборы библиотечных и пользовательских функций.

Комментарии никак не влияют на создание исполняемой программы и простопропускаются компилятором. Назначение же комментариев состоит в том, чтобы облег-чить понимание алгоритма программы при чтении её исходного текста. Оформить текст в виде комментария можно одним из следующих способов:

∗ поместив символы // перед текстом строки, например,

//оператор getch(); заставит программу getch(); //ждать нажатия клавиши

∗ заключив текст в скобки вида /* и */, например, текст, занимающий несколько строк,

/* составить программу вычисления времени движения тела с ускорением 9,8 м/с^2 на пути заданной длины, вводимой с клавиатуры */

или поясняющий текст внутри конструкции языка, если комментарий не искажает их смысл и правила построения

int _tmain(int argc, _TCHAR* argv[/*массив аргументов*/])

или

int _tmain(int argc/*количество аргументов*/, _TCHAR* argv[])

Нельзя использовать этот комментарий, например, после знака /, внутри задаваемых пользователем имён, внутри строковых констант (текстов, начинающихся и заканчивающихся символом ", например, "conio.h") и других таких же комментариев.

Операторы программы служат для описания её алгоритма.Конструкция операто-ра определяет, какие действия должны быть выполнены по обработке данных и\или пе-редаче управления от оператора к оператору. В соответствии с правилами построения различают составные операторы или блоки, структурные операторы и простые опе-раторы.

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

Простые операторы могут выражать некоторое законченное действие и завер-шаться знаком; (точка с запятой), например, getch(); или return 0; или q++; (увеличить

«Практикум по программированию на языке C в среде VS C++»


значение переменной q на 1), а также быть частью выражений, например, s=s+q++ (уве-личить значение переменной s на значение переменной q, а затем увеличить значение переменной q на 1) или частью списков с разделителем «запятая» внутри структурных операторов (см. один из примеров организации цикла for в разделе 4.1).

Блоки (составные операторы) начинаются с открывающей фигурной скобки ({) и заканчиваются парной закрывающей фигурной скобкой (}). Они используются в качест-ве тел функций (например, тело функции _tmain, см. выше), могут быть частями струк-турных операторов или иметь самостоятельное значение. Их особенностью является то, что они могут содержать, помимо вложенных в них других операторов, в том числе и со-ставных, объявления локальных переменных, используемых («видимых») только внутри этих блоков. Операторы, входящие в составной, могут описывать сложный алгоритм, выполнение которого начинается при входе в составной оператор. Завершение алгорит-ма происходит либо при выполнении оператора, меняющего естественный порядок их выполнения (в порядке их следования в тексте программы), например, оператором return выхода из функции, либо при достижении парной закрывающей фигурной скобки.

Обрабатываемые данные хранятся в ячейках оперативной памяти, а переменные и константы представляют их в исходном тексте программы.Отличие переменной отконстанты состоит в том, что переменным можно присваивать новые значения, а значе-ния констант задают только в исходном тексте программы и нельзя изменять их при её выполнении. В простейшем случае для объявления переменной используется конструк-ция <Имя типа><><Имя переменной>;

где

<Имя типа> - один из предописанных типов: int (целый), float (веществен-ный), double (вещественный удвоенной точности), char (символьный),

<> - пробел, <Имя переменной> - последовательность латинских букв, цифр, знаков $ и _

(подчерк), начинающаяся с буквы, знака $ или _.

Вместо одной можно описать несколько переменных, записав их имена через за-

пятую.

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


«Практикум по программированию на языке C в среде VS C++»


переменной должно записываться вслед за знаком = после её имени (знак «равно» имеет в Си смысл присваивания переменной значения).

Помимо обычных констант, значения и типы которых определяются по их форме записи, можно использовать и именованные константы (иногда их называют перемен-ными-константами), которые представляют значения своими именами. Именованные константы объявляются подобно переменным с начальными значениями, но перед их именами необходимо ставить слово const.

intx, y=-5;/*Объявление двух переменных типаint.Переменная y будет иметь начальное значение -5*/

intconstn = 10;/*Объявление именованной константы типаint */

Именованные константы в ряде случаев позволяют облегчить понимание алго-ритма программы и избежать ошибок при необходимости изменения значения. Напри-мер, если число 10 используется для объявления размеров нескольких массивов и в опе-раторах обработки этих массивов, то желательно использовать именованную константу со значением 10. Тогда, при необходимости замены числа 10 другим, достаточно будет сделать эту замену только в объявлении именованной константы (см. пример программы в разделе 4.6).

Рассмотрим следующий пример программы, вычисляющей время движения тела с ускорением 9,8 м/с2 на пути заданной длины, вводимой с клавиатуры.

#include"stdafx.h"

#include"conio.h"/*подключение библиотечных подпрограммконсольного ввода-вывода, в частности getch(); */

#include"math.h"/*подключение библиотечных подпрограммвычисления математических функций

*/

//главная функция программы

int_tmain(intargc, _TCHAR* argv[])

{

// ОБЪЯВЛЕНИЯ ПЕРЕМЕННЫХ

«Практикум по программированию на языке C в среде VS C++»


floatconstg=9.8;/*Именованная константа,представляющая ускорение. */

floatT;/*Переменная вещественного типа,которая будетпредставлять искомое время. */

intS;//Переменная целого типа,представляющая длину пути.// ОПЕРАТОРЫ

//Вывод приглашения к вводу значения переменной Sprintf("EnterS: ");

//Ввод значения переменной Sscanf("%d",&S);

//Вычисление времени движения тела на заданном пути

T=sqrt(S*2/g);

//Вывод результата с пояснениями printf("T=%f\n", T);

//Задержка закрытия окна программы до нажатия клавиши getch();

return0;

}

В блоке главной функции _tmain программы используется объявление имено-ванной константы (константа g), объявления переменных T и S, а также операторы, представляющие алгоритм решения задачи. Протокол ввода-вывода программы пред-ставлен в окне программы на следующем рисунке.

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

Цвет фона (чёрный) и символов (белый) в окне программы можно изменить сле-дующим образом: раскрыть системное меню окна щелчком на кнопке , выбрать пункт Свойства, в появившемся окне диалога на вкладке Цвета из представленной палитры вы-брать для фона и символов желаемые цвета, нажать кнопку OK. Например, при выборе белого цвета для фона и чёрного для символов окно программы примет вид

«Практикум по программированию на языке C в среде VS C++»


Используемая в VisualC++ кодировка символов не обеспечивает правильный вы-вод букв кириллицы, что представляет неудобство для русскоязычных пользователей. Наиболее простым способом обеспечения вывода текстов на русском языке является включение в программу объявления функции Ruc перекодирования символов как пока-зано ниже.

#include "stdafx.h" #include "conio.h"

// Подключение библиотечных подпрограмм

// вычисления математических функций.

#include "math.h"

//заголовок функции Ruc, описание см. ниже. char* Ruc(chars[]);

int _tmain(int argc, _TCHAR* argv[])

{

// ОБЪЯВЛЕНИЯ ПЕРЕМЕННЫХ

floatconstg=9.8;/*Именованная константа,представляющая ускорение. */

floatT;/*Переменная вещественного типа,которая будетпредставлять искомое время. */

intS;//Переменная целого типа,представляющая длину пути.// ОПЕРАТОРЫ

//Вывод приглашения к вводу значения переменной S.

//Знак \ в конце строки первой строки оператора обозначает //перенос текста константы на начало новой строки. printf(Ruc("Программа вычисляет время,за которое тело\при ускорении %f\n пройдёт заданный путь.\n"), g);printf(Ruc("Введите длину пути в метрах: "));

//Ввод значения переменной S. scanf("%d",&S);

«Практикум по программированию на языке C в среде VS C++»


//Вычисление времени движения тела на заданном пути. //Математическая функция sqrt извлекает квадратный корень. T=sqrt(S*2/g);

//Вывод результата с пояснениями.

printf("%sT=%f", Ruc("Путь будет пройден за"), T); printf("%s\n", Ruc("секунд."));

//Задержка закрытия окна программы до нажатия клавиши. getch();

return 0;

}

char* Ruc(char s[])

{ //Функция перекодирования русских букв//для вывода в окно программы.

int i;

static char ss[257];

for (i=0;s[i]!='\0'; i++)

{

if (s[i]>= -64 && s[i] <= -17)ss[i]=(-64+s[i]); //А..п

else if (s[i]>= -16 && s[i] <= 0)ss[i]=(char)(-16+s[i]); //р..я

else if (s[i] == -72)ss[i]=(char)(-15); //ё

else if (s[i] == -88)ss[i]=(char)(-16); //Ё

else

ss[i]=s[i];

}

ss[i]='\0';

returnss;

}

Протокол ввода-вывода программы будет иметь вид


«Практикум по программированию на языке C в среде VS C++»


В исходном тексте программы использована, помимо главной функции _tmain, дополнительная функция Ruc. Дополнительные функции можно размещать как перед главной функцией, так и после неё. Но если функция размещена после главной или лю-бой другой, из которой она вызывается, то необходимо давать опережающее объявление её заголовка (как и сделано в приведённом примере, так как функция Ruc размещена по-сле главной).

Используемые в программе дополнительные, помимо главной, функции можно также размещать в одном или нескольких отдельных файлах. Чтобы разместить допол-нительные функции при их создании в среде VisualC++ в отдельном файле следует вве-сти команду Project/AddNewItem…, в открывшемся окне выделить элемент списка HeaderFile.h, ввести имя, которое хотите дать файлу (например, Перекодировщик), и щелкнуть на кнопке Add. В результате в папке проекта появится новый файл, в списке

SolutionExplorer (открываемом командой View/SolutionExplorer) будет размещен соот-

ветствующий ему элемент, а также в окне VisualC++ появится новая вкладка для ввода описаний функций, озаглавленная именем созданного файла (Перекодировщик.h). За-тем перед заголовком главной функции следует записать директиву #include с именем файла (#include"Перекодировщик.h"). Пример представляют следующие рисун-ки.


«Практикум по программированию на языке C в среде VS C++»



«Практикум по программированию на языке C в среде VS C++»


Если файл с добавляемыми функциями был создан ранее (уже существует), то в файл главной функции нужно просто добавить директиву #include со ссылкой на него

(например, #include"D:\temp\Перекодировщик.h").

Одним из важных этапов разработки программ является их отладка – локализация и устранение ошибок, препятствующих созданию исполняемого файла (синтаксических ошибок), и ошибок, вносящих несоответствие программы заданию на её разработку (смысловых ошибок).

Синтаксические ошибки выявляет система программирования при выполнении команды Build/BuildSolution или Build/RebuildSolution. Сообщения об ошибках выво-

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

В VisualC++ многие библиотечные функции языка C имеют усовершенствован-ный аналог, который предлагается использовать в сообщениях об ошибках типа warning. Однако такие ошибки не препятствуют созданию исполняемого файла. Другой тип оши-бок отмечен в сообщениях словом error. В большинстве случаев эти ошибки связаны с нарушением правил языка C (например, не дано опережающее объявление заголовка функции, размещенной после главной, не поставлена знак «точка с запятой» после объ-явления переменной, нет соответствия между открывающими и закрывающими скобка-ми) и вызовом не существующих функций. Такие ошибки препятствуют созданию ис-полняемого файла и их необходимо устранять.

Поиск и устранение смысловых ошибок более сложен. Существующие методики в большинстве случае не могут дать гарантий на отсутствие таких ошибок, однако без их применения разработку программы нельзя считать законченной. К числу таких методик относится тестирование всей программы и её частей. Тестирование всей программы со-стоит в подборе тестовых исходных данных для работы программы, для которых извест-ны, в соответствии с заданием, требуемые результаты работы программы, и сравнение с ними реальных результатов работы программы. Если реальные результаты не совпадают с требуемыми, значит программа не соответствует заданию и необходимо выявить и уст-ранить причину этого несоответствия. С этой целью может использоваться как отладоч-ная печать, так и имеющиеся в VisualC++ средства отладки.

«Практикум по программированию на языке C в среде VS C++»


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

Части программы можно отлаживать в любом порядке. Однако желательно начать с той части, которая представляет суть задания. В большинстве случаев это часть обра-ботки данных, и именно она наиболее сложна в отладке. Приступить к ней, минуя ввод исходных данных, позволяют следующие средства системы программирования:

∗ задание начальных значений переменных,

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

∗ слежение в среде VisualC++ за значениями переменных и изменение их при выполнении программы в отладочном режиме,

∗ использование различных способов приостановки программы и после-дующего продолжения её выполнения.

Рассмотрим эти приёмы и средства более подробно.

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

Например, вставив в код программы директиву #defineu1 (директива опреде-ления имени, в данном случае имени u1), везде ниже по тексту можем размещать кон-струкции

#ifdefu1

... // код

... // используемый для

... // отладки

#endif

заставляя компилятор обрабатывать код между директивами #ifdefu1 (если u1 опре-делено) и #endif (конец блока #ifdef), то есть рассматривать его как часть кода про-

«Практикум по программированию на языке C в среде VS C++»


граммы. Чтобы исключить использование в программе отладочного кода, достаточно удалить директиву #defineu1 или превратить строку с ней в комментарий.

Подобный результат можно получить для отдельной отладочной вставки с помо-щью конструкции

///*

... // код

... // используемый для

... // отладки

//*/

позволяющей добавить отладочный код в программу. Чтобы превратить всю конструк-цию в комментарий достаточно в первой строке переместить первые два знака // в её ко-нец (первая строка примет вид /*// и станет началом многострочного комментария).

Возможно использование рассмотренных конструкций и для временного удале-ния части кода рабочего варианта программы, если это ускорит процесс отладки других частей. Например, если программа требует ввода значительных объёмов исходных дан-ных, то при её отладке целесообразно временно заменить ручной ввод заданием и редак-тированием начальных значений переменных.

Директив #define в программе может быть несколько. Чтобы определяемые ди-рективами #define имена указывали на отладочный вариант программы в сочетании с директивой #ifdef, они должны быть информативными, например, #definedebug1, #definedebug2 и тому подобными.Тогда временно удаляемые при отладкечасти кодов рабочей программы должны начинаться с директивы #ifndef (если имя не определено), а отладочные вставки кодов – с директивы #ifdef. Если в программе от-ладочный код должен замещать часть кода рабочей программы, то, например, при нали-чии директивы #definedebug1 следует использовать конструкцию

#ifdefdebug1 //если имяdebug1определено,добавить

... // код, используемый для

... // отладки

#else//иначе,т.е.если имяdebug1не определено,//использовать

... // часть кода

... // рабочей

... // программы

#endif

«Практикум по программированию на языке C в среде VS C++»


Дополнительную информацию по директивам условной компиляции можно найти в справочной системе VisualC++.

Чтобы ускорить поиск и исправление ошибок в программе желательно подгото-вить в окне VisualC++ минимальные наборы инструментов панели отладки (Debug)

и панели редактирования текста (Edit)

Для этого в меню Tools следует выбрать пункт Customize… и в открывшемся окне

установить флажки на строках Debug и TextEditor. Затем на вкладке Commands,

,

«Практикум по программированию на языке C в среде VS C++»


выбрав в левом списке строку Edit, отбуксировать из правого списка на панель инстру-ментов редактирования Edit окна VisualC++ недостающие значки. Аналогично выпол-нить настройку панели инструментов отладки, выбрав в левом списке окна Customize строку Debug. Чтобы удалить ненужные значки с панелей инструментов, их просто сле-дует отбуксировать с панелей в любое место при открытом окне Customize.

Инструменты панели Debug имеют следующее назначение:

- запустить программу в обычном режиме, без использования отладочных средств среды VisualC++.

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

- завершить работу программы, запущенной в режиме отладки, и вернуться к редактированию её кода.

- добавить в окно наблюдения Watch строку слежения за текущим значением переменной или выражения: выражение следует выделить, а переменную либо выделить, либо поставить перед ней курсор и щелкнуть на этом значке. Можно также получить и всплывающую подсказку по значению, подведя курсор к переменной или выделенному выражению. (В VSC++ 2008 есть окно Autos, где автоматически отображаются локаль-ные переменные текущего блока или оператора)

- выполнить шаг трассировки без захода в подпрограммы (трассировка без за-хода в подпрограммы – это выполнение программы строка за строкой при каждом щелч-ке на кнопке, без захода в вызываемые в строке функции).

- трассировка с заходом в подпрограммы (если в текущей строке программы есть вызовы функций, то после щелчка на кнопке появится код функции для выполнения его трассировки).

- завершение выполнения кода функции и возврат управления в вызвавшую её программу.

При отладке обычно используют точки безусловного и условного останова (по-следние рассматривать не будем). Строка программы является точкой безусловного ос-танова, если при работе программы в отладочном режиме выполнение программы будет остановлено непосредственно перед этой строкой. Таких точек в программе может быть несколько. Сделать строку точкой безусловного останова можно выбором в контекстном меню строки пункта Breakpoint/insertBreakpoint. В результате на серой вертикальной по-

«Практикум по программированию на языке C в среде VS C++»


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

Использование в отладочном варианте программы

∗ начального значения переменной S и отключение её ввода директивами условной компиляции,

∗ точек безусловного останова и

∗ окна наблюдения за текущими значениями переменных и выражения sqrt(S*2/g)

поясняет следующий рисунок.


«Практикум по программированию на языке C в среде VS C++»


После запуска программы в отладочном режиме (щелчком на кнопке ) её вы-полнение будет приостановлено в первой точке безусловного останова, отмеченной красным кружком (перед выполнением строки T=sqrt(S*2/g);, отмеченной красным кружком), а при повторном щелчке на кнопке - перед строкой

printf("%sT=%f", Ruc("Путь будет пройден за"), T);


«Практикум по программированию на языке C в среде VS C++»


Вопросы по самопроверке

1. Когда целесообразно использовать консольные приложения?

2. Какой интерфейс пользователя имеют консольные приложения?

3. Что включает шаблон консольного приложения?

4. В чем назначение операторов программы?

5. Какую конструкцию программы называют блоком?

6. В чем назначение переменных программы?

7. Что такое именованная константа?

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

9. Для чего предназначены директивы #include?

10. Какие виды ошибок бывают в программе?

11. Такие ошибки препятствуют созданию исполняемого файла?

12. Какими способами можно запустить консольное приложение?

13. Что понимают под отладкой программы?

14. Что такое тестирование?

15. Какие средства есть в VisualC++ для поиска смысловых ошибок в программе?

16. Что называют точкой безусловного останова?

17. Как приостановить на заданной строке программы её выполнение в отладочном ре-жиме?

18. Какие бывают виды трассировки?

19. Какими способами можно наблюдать за значениями переменных в процессе отладки программы?

20. Как создать панель инструментов отладки или изменить набор её инструментов?

21. Для чего предназначены комментарии в программе?

22. Какие есть виды комментариев?

23. Как можно быстро превратить часть строк программы в комментарий?

24. Как можно создать отладочный вариант программы, используя директивы условной компиляции, чтобы после отладки можно было быстро восстановить рабочий ва-риант программы?


«Практикум по программированию на языке C в среде VS C++»



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: