- •Лабораторная работа №2
- •1.Задание на выполнение лабораторной работы
- •2. Порядок выполнения работы
- •3 Методические указания
- •3.2. Создание заготовки для консольного приложения.
- •3.3. Кодирование проекта
- •6)Описание функций, созданных программистом
- •3.4. Отладка и доказательство правильности работы программы
- •3.5. Типичные ошибки программирования и хороший стиль программирования
- •4.Содержание отчета по выполненной лабораторной работе
- •5. Задания на самостоятельную работу при подготовке к лабораторным занятиям
- •6. Перечень используемой литературы
6)Описание функций, созданных программистом
Функции созданные программистом должны размещаться за пределами тела функции main(). Для данного проекта целесообразно разработать функцию, например с именемmenu(), реализующую функциональное символьное меню, в котором должно бытьcемь пронумерованных символьных строк с содержательным наименованием задач и содержательный вопрос к пользователю программы: Введите номер выбранной задачи? В ответ на этот вопрос пользователь вводит один из номеров задач из списка 1…7., которое присваивается целочисленной переменной, напримерL. Значение переменнойLиспользуется в оператореif….elseif() для управления переходами на решаемые задачи.
Начальная часть кода функции menu() может иметь, например такой вид:
int menu()
{int L;
charfm0[]="Функциональное меню для задач обработки двумерных массивов";
AnsiToOem(fm0,fm0);
cout<<fm0<<endl<<endl;
charfm1[]=" 1. Задача 1. Сформировать исходный двумерный массив";
AnsiToOem(fm1,fm1);
cout<<fm1<<endl<<endl;
charfm2[]=" 2. Задача 2. Получить сумму элементов верхней треугольной матрицы";
AnsiToOem(fm2,fm2);
cout<<fm2<<endl<<endl;
………………………….
………………………….
charfm7[]=" 7. Задача 7. Перемножить преобразованную и транспонированную матрицы";
AnsiToOem(fm7,fm7);
cout<<fm7<<endl<<endl;
charfm8[]=" Выберите и введите номер требуемого пункта меню";
AnsiToOem(fm8,fm8);
cout<<fm8<<endl<<endl;
charfm9[]=" Для выхода из программы введите 0";
AnsiToOem(fm9,fm9);
cout<<fm9<<endl<<endl;
getch();
cin>> L;
returnL;
}//конец меню
Функция, реализующая задачу №1, может иметь, например, такой вид:
int Zadacha1()
{ int i,j;
int k=6;
A[0][0] = 2;
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{ k=k+1;
srand(time(NULL));// инициализирует ф-ю rand()
A[i][j] = A[i][j]+rand() % k;
cout<<"A["<< i<<"]"<<"["<<j<<"] ="<<A[i][j]<<endl;
}
}
return 0;
} //конец функции int Zadacha1()
3.4. Отладка и доказательство правильности работы программы
Отладка программы сводиться к ее многократным запускам с целью обнаружения и исправления синтаксических и алгоритмических ошибок в исходном тексте программы, которые неизбежны даже в маленьких программах начинающих программистов. При этом выполняются следующие действия:
1)С помощью кнопки Compile(Ctrl+F7) или команды меню Build/Compile имя файла.cpp запускается программа Компилятор(Compiler), которая компилирует и выполняет полный синтаксический контроль исходного текста программы. Ошибки компиляции выводятся в окно сообщений(нижнее окно главной формы VC). Кроме текста сообщения с сущностью ошибки компилятор указывает, правда не всегда точно, местоположение ошибки на строках исходного текста. Для этого необходимо перевести курсор мыши на строку нужного сообщения и дважды щелкнуть левой клавишей мыши. При этом против строки с ошибкой в окне редактирования кода появляется стрелка-указатель голубого цвета. После исправления всех синтаксических ошибок(при этом в протоколе синтаксического контроля счетчики числа ошибок и замечаний будут показывать 0) можно перейти к следующему этапу обработки исходного текста программы– компоновке исполняемой программы.
2)Для этого необходимо с помощью кнопки Buield или команды главного меню Build/Rebuild All запустить программу Компоновщик(Linker). Если эта программа обработала откомпилированный текст программы(объектный код) без ошибок(при этом счетчики числа ошибок и замечаний будут показывать 0), то можно запускать полученную исполняемую программу на выполнение, в противном случае необходимо устранить ошибки и замечания Компоновщика. Для этого можно воспользоваться кнопкой Execute Program, клавишей F7 или пунктом меню Build/ Build имя файла. exe.
3)После исправления всех ошибок Компилятора и Компоновщика можно приступить к обнаружению и исправлению алгоритмических ошибок, присутствующих в коде программы, т.е. доказательству правильности работы программы.
Так как все числовые задачи проекта имеют один исходный файл и не имеют зависимостей по искомым результатом, то наиболее продуктивной методикой доказательства правильности работы программы является формирование контрольных точек по каждой из задач с помощью любых внешних средств и сопоставление их с получаемыми программой результатами.
При совпадении результатов программа работает правильно. В противном случае следует искать алгоритмическую ошибку в коде задачи: сначала найти ее место в коде, а затем придумать как ее устранить и добиться совпадения контрольного и получаемого программой результирующего значения.