Организация повторения программы
Лабораторная работа №1
Тема: “Программы, использующие команды ветвления.
Отладка программы“
Отладка программы
Отладку программы выполняют для поиска логических ошибок в программе.
Перед отладкой необходимо откомпилировать программу (F7).
Отладка осуществляется с помощью пошагового выполнения программы и просмотра текущих значений переменных. Для просмотра текущего значения переменной нужно поставить курсор на строку, следующую за строкой с интересующей нас переменной, и поставить точку останова программы <F9>. Далее нажать кнопку <F5> для выполнения программы до данной строки. Значение переменной будет отображено на вкладке Locals в нижней части экрана. Можно также просто перетащить переменную на вкладку Watch.
Вкладки Locals и Watch
Команды отладчика:
<Ctrl> + <F10> -выполняет программу до строки, в которой находится курсор.
<F10> - выполняет один шаг программы (одну строку); подпрограммы выполняются как один шаг.
<F11>- если курсор стоит на строке, в которой выполняется вызов подпрограммы, то выполняется заход в подпрограмму.
<F5> - выполняет программу до той строки, где стоит точка останова программы, в случае если таких точек нет, программа выполняется полностью.
<F9> - поставить/снять точку останова программы
<Shift> + <F5> - останавливает отладку программы.
Эти клавиши необходимо нажимать, когда активно окно с текстом программы. Сделать нужное окно активным можно щелчком мыши в этом окне, или с помощью панели задач, или с помощью комбинации клавиш <Alt> + <Tab>.
Часть 1
Ветвление в программе с помощью вложенных конструкций if-else
Задание
Запустите среду программирования Microsoft Visual Studio 2005.
Вы увидите стартовую страницу данной среды разработки. Далее создайте проект консольного приложения. Для этого выполните команду меню File|New|Project (или нажмите <Ctrl>+<Shift>+<N>). Затем выберите тип проекта (Project types:) Visual C++, если дерево доступных проектов еще не открылось нажмите левой клавишей мыши по значку «+» с лева от названия типа проекта. Теперь нажмите Win32, выберите из предоставленных шаблонов (Templates:) Win32 Console Applicationвведите в поле Name: свою фамилию латинскими буквами. В поле Location: C:\Work (см. рисунок).
Создание нового консольного приложения
Перед вами появится окно мастера создания проектов (см. рисунок на следующей странице).
Нажмите кнопку Next>.
В следующем окне в поле Additional Options:установите флажок Empty project(см. рисунок).
Нажмите кнопку Finish.
В следующем окне щелкните правой клавишей мыши по папке Source Files на вкладке Solution Explorer, выберите пункт выпадающего меню Add|New Item…
Перед вами появится окно мастера Add New Item. В появившемся окне в разделе Categories:(находится слева)выберите Code(см. рисунок).Затем в разделе Templates:выберите C++ File (.cpp) и в поле Nameвведите имя файла: свою фамилию латинскими буквами.
Затем нажмите кнопку Add.
Набирая далее текст программы, периодически нажимайте <Ctrl>+<S>, при этом выполняется команда Save и сохраняется текущее состояние программы. Делать это необходимо во избежание потери результатов своей работы.
Пример 1
В качестве первого примера рассмотрим программу, которая считывает два числа и находит частное от деления первого числа на второе. Программа сопровождается комментариями, которые начинаются со знака //.
Наберите текст программы (комментарии набивать не нужно!). Команды языка С++ должны заканчиваться точкой с запятой.
// С помощью команды #include подключаются дополнительные
// библиотеки:
#include <iostream> // обеспечивает потоковый ввод-вывод
#include <windows.h> // обеспечивает использование русских букв
using namespace std; // определяет пространство имен
int main()// выполнение программы всегда начинается с этой строчки
// команды программы всегда пишут внутри блока (внутри фигурных
// скобок)
{
SetConsoleCP(1251); // подключаем кодовую страницу CP 1251
SetConsoleOutputCP(1251); // то же для вывода
cout << "Задайте два числа "; // выводим текст на экран
double a, b, c; // объявляем переменные
cin >> a >> b;
// считываем два числа (при вводе числа должны разделяться пробелами)
if (b) // если b не равно 0
{
c = a / b;
// находим частное (присваивание выполняется справа налево
cout << "Их частное: " << c << endl;
// выводим результат на экран
}
Else
// в противном случае (если b равно 0), выводим сообщение об ошибке
// в данных
cout << "Второе число должно быть не равно 0\n";
return 0; // программа должна заканчиваться этой командой
}
//============================================================
Запустите программу, нажав <Ctrl> + <F5>. В появившемся окне нажмите Yes. Скорее всего сначала Вы увидите сообщения об ошибках (но если вы ВНИМАТЕЛЬНО!!! набирали, ошибокНЕ будет). Исправляя ошибки, нужно начинать с первой, поскольку ошибки могут быть наведенными, т.е. одна ошибка может повлечь за собой множество сообщений. Нажмите <F8>, исправьте ошибку в выделенной строке и опять нажмите <F8>. Повторяйте эти действия, пока программа не запустится.
ВАЖНО!!! Для того, чтобы вы могли работать с русскими символами, необходимо при первом запуске вашего приложения правой клавишей мыши щелкнуть на заголовке консольного окна. Затем выбрать пункт выпадающего меню Умолчания, перейти на вкладку Шрифт и выбрать там шрифт Lucida Console и нажмите OK. На вопрос хотите ли вы применить эти свойства только к текущему окну или ко всем окнам с тем же именем выберете, применить ко всем окнам с тем же именем.
Задайте какие-либо исходные данные и получите ответ.
Пример 2
В качестве второго примера возьмем программу решения уравнения для любых a, b, c. Известно, что решением этого уравнения являются , где
d = b2 - 4ac при . Хорошая программа должна выдавать ответ в любом случае, поэтому мы должны рассмотреть все возможные варианты ответа. Если , то наша программа будет решать квадратное уравнение, в противном случае – линейное. В каждом из этих случаев должен быть выдан один из трех вариантов ответа, следовательно, всего эта программа должна выдавать один из шести вариантов сообщений.
Наберите нижеследующий текст программы. Обязательно делайте отступы, используя клавишу <Tab>. Это делает структуру программы более понятной.
ВАЖНО!!! Для того, чтобы вы могли работать с русскими символами, необходимо при первом запуске вашего приложения правой клавишей мыши щелкнуть на заголовке консольного окна. Затем выбрать пункт выпадающего меню Умолчания, перейти на вкладку Шрифт и выбрать там шрифт Lucida Console и нажмите OK. На вопрос хотите ли вы применить эти свойства только к текущему окну или ко всем окнам с тем же именем выберете, применить ко всем окнам с тем же именем.
#include <iostream> //!!! Потоковый ввод/вывод
#include <math.h>
#include <windows.h>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout<<"Программа решает уравнение вида A*x*x + B*x + C = 0\n";
cout<<"Введите A,B,C, разделяя их пробелом ";
double a=0,b=0,c=0,x1=0,x2=0;
cin >> a >> b >> c;
if ( a != 0 ) // Решение квадратного уравнения:
{
double d = b*b - 4*a*c;
//формула вычисления дискриминанта
if ( d > 0 )
{
x1 = (-b + sqrt(d)) / (2*a);
x2 = (-b - sqrt(d)) / (2*a);
cout << "Уравнение имеет два корня: " << x1 <<" и "<< x2 << endl;
}
else if ( d == 0 )
{
x1=(-b) / (2*a);
cout<<"Уравнение имеет один корень: " << x1 << endl;
}
else
cout<<"Действительных корней нет\n";
}
else // Решение линейного уравнения b*x + c = 0:
{
if (b) // Если b != 0
{
x1 = -c / b;
cout<<"Уравнение имеет один корень: " << x1 << endl;
}
else if (!c) // Если с == 0
cout<<"Решением уравнения является любое число \n";
else
cout<<"Уравнение не имеет решений\n";
}
return 0;
}
Организация повторения программы
Для того чтобы предоставить возможность не перезапускать программу при вводе нового набора исходных данных, используют повторение всей программы с помощью цикла do следующим образом:
#include …
…
#include <conio.h>
/* Необходимо подключить этот файл для использования фнкции _getch() */
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Do
{
… //текст программы
} while (_getch() != 27);
return 0; }
}
Повторение происходит при нажатии любой клавиши на клавиатуре после получения окончательного ответа программы. При нажатии клавиши <Esc>происходит остановка программы.