- •Лабораторная работа №2
- •1.Задание на выполнение лабораторной работы
- •2. Порядок выполнения работы
- •3 Методические указания
- •3.2. Создание заготовки для консольного приложения.
- •3.3. Кодирование проекта
- •6)Описание функций, созданных программистом
- •3.4. Отладка и доказательство правильности работы программы
- •3.5. Типичные ошибки программирования и хороший стиль программирования
- •4.Содержание отчета по выполнению лабораторных работ
- •5. Задания на самостоятельную работу при подготовке к лабораторным занятиям
- •6. Перечень используемой литературы
3.2. Создание заготовки для консольного приложения.
Для создания консольного приложения и пустого проекта в среде Visual C++ необходимо выполнить следующие действия:
1) Запустите Visual C++ с рабочего стола (если установлен ярлык VC) либо из пункта главного меню Программы;
2) В главном меню VCзапустите командуFile / New.
3) В появившемся окне Newактивизируйте закладкуProjects, а в ней выберите пунктWin32 Console Application.Щелкнете по полюProjectnameэтого окна и с клавиатуры введите имя вашего проекта(например,Pro1), а в полеLocation введите маршрут для размещения проекта на диске( например,C:\AiU042, гдеAiU042 – имя папки для размещения проектов группы АиУ-04-2). Не изменяя настройку оставшихся элементов управления формыNew , нажмите кнопкуOK. В ответ будет выведено диалоговая панельWin32 Console Application – Step1 of 1.Не изменяя установки ее управляющих элементов(по умолчанию установлен нужный нам тип проекта –An empty project(пустой проект)), нажать кнопкуFinish. В ответ выводится диалоговая панельNew Project information,в которой выводится информация о выполненных системой действиях. Нажимаем кнопкуОК. В ответ обновляется образ главного окнаVC,: выводятся кнопки инструментария и рабочие окна - окно проекта(слева), окно редактирования кода(справа) и окно вывода сообщений (внизу).
4) В появившемся окне проекта отметьте имя появившейся папки проекта(имя проекта classes), выберите вкладкуFile View(внизу окна проекта),два раза щелкните по папкеимя проекта Files,на появившемся дереве папок проекта выберитеSource Files и дважды щелкните правой клавишей по этой папке. В появившемся окне контекстного меню щелкните левой клавишей по строкеAdd Files to Folder. На появившемся диалоговом окнеInsert Files in to Projectщелкнуть по полюИмя файла и после появления курсора мыши набрать в полеИмя файлас расширением.cpp(основное имя файла с исходным кодом программы можно оставить таким же, как и имя проекта, например,AiU0403.cpp.).Далее следует нажать кнопкуОКи в появившемся диалоговом окне нажать кнопкуДА.Затем необходимо в окне проекта щелкнуть по папкеSourse Filesи на дереве проекта будет выведен значок пустого файла для исходного текста программы(имя файла.cpp).Щелкнув два раза по этому имени переводим фокус на окно редактирования кода и оно активизируется(Окно окрашивается в светлый фон и на первой строке окна появляется курсор).После завершения этих действий можно в окно редактирования кода вводить исходный текст программы, а затем выполнять ее компиляцию, сборку и выполнение с целью отладки.
3.3. Кодирование проекта
Заголовочная часть программы должна состоять из:
директив для препроцессора, обеспечивающих включение в программу заголовочных файлов, содержащих объявления функций и переменных стандартных библиотек ввода-вывода;
математических функций;
функций для работы в текстовом режиме;
определений функций, разработанных для данного проекта;
описаний глобальных массивов и(или) переменных.
Тогда код заголовочной части для разрабатываемой программы будет иметь, например, следующий вид:
# include <iostream.h>// Библиотека ввода-вывода
# include <windows.h>// Главный заголовочный файл дляWindows-приложений
# include <conio.h>// Библиотека для работы с консолью в текстовом режиме
# include <stdlib.h>// Библиотека специальных функций
# include <time.h >// Библиотека для работы с временем и датами.
long int A[3][3]={{0,0,0},{0,0,0},{0,0,0}};//Глобальный исходный массив
long int B[3][3]={{0,0,0},{0,0,0},{0,0,0}};//Глобальный промежуточный массив
int menu();//функция, реализующая функциональное меню
int Zadacha1();//функция, реализующая задачу №1
………………….
int Zadacha7();//функция, реализующая задачу №7.
Как следует из приведенного текста заголовочной части имена всех заголовочных файлов заключены в угловые скобки(< >), что говорит о том, что препроцессор должен искать эти файлы в системном каталоге \INCLUDE\.
Описание или тело главной функцииintmain() представляет последовательность описаний, определений, операторов, заключенных в фигурные скобки { } и обеспечивающих решение всех поставленных в проекте задач. Любая программа на С++ должна включать только одну функцию с этим именем.
Для кодирования проекта могут быть полезными следующие рекомендации:
1) Так как исходный массив из случайных целочисленных элементов формируется в задаче 1 и используется во всех других задачах, то целесообразно ему придать статус глобального массива, и тогда он будет доступен на протяжении работы программы. Аналогичный статус должен получить и массив B[3][3], в котором будет сохранятся транспонированная матрица и она же будет использоваться в задаче 7.
2) При выводе на экран строковых данных на русском языке необходимо использовать специальную функцию AnsiToOem(x,y),обеспечивающую конвертирование строки из кодировкиANSI(Windows)в кодировкуOEM(MS-DOS),которая описана в первой лабораторной работе.
3) Для формирования разных значений псевдослучайных чисел в диапазоне 0..kи присваивания их элементам двумерного массива можно использовать следующий блок операторов:
A[0][0] = 2;
for (i=0;i<3;i++)
{ for (j=0;j<3;j++)
{
k=k+1;
srand(time(NULL));
A[i][j] = A[i][j]+rand() % k;
}
}
Случайное целое значение, генерируемое функцией rand() находится в диапазоне 0..32767. Однако, с помощью инициализации функцииrand() функциейsrand(time(NULL)) и масштабирования значения, генерируемогоrand(), с помощью выраженияA[i][j] =A[i][j]+rand() %kмы обеспечиваем заполнение массиваA[3][3] разными целочисленными значениями при каждом новом запуске этого блока операторов.
4) Для создания меню можно использовать условный оператор if … else,который был рассмотрен в первой лабораторной работе или операторswitch cбесконечным цикломfor (;;).В бесконечном цикле оператораswitch пользователь может выбрать какой–либо пункт, выполнить соответствующие действие, а затем вернуться к меню. Так продолжается до тех пор, пока пользователь не выберет пункт выхода. Чтобы выйти из цикла switch, необходим операторbreak.
5) Описание главной функции для настоящего проекта можно начинать, например, таким кодом:
int main()
{
int fl=0; //вспомогательные переменные
int fl1=0;//для управления порядком выполнения задач
M1: int L=menu(); //Запуск функции меню
if(L==1 && fl==0)
{Zadacha1(); //запуск функция, реализующей задачу 1
fl=1;
char tx2[] = " Для возврата в меню нажмите любую клавишу";
AnsiToOem(tx2,tx2);
cout <<tx2<<endl;
getch(); //функция задержки выполнения программы
system("cls"); //функция очистки экрана монитора
goto M1;//переход в функциональное меню
}
else if(L==2 && fl==1)
{
Zadacha2();//запуск функция, реализующей задачу 2
char tx2[] = " Для возврата в меню нажмите любую клавишу";
AnsiToOem(tx2,tx2);
cout <<tx2<<endl;
getch();
system("cls");
goto M1;
}
………………..
………………
…………………
else if(L==7 && fl==1 && fl1==1)
{
Zadacha7();//функция, реализующая задачу 7
char tx2[] = " Для возврата в меню нажмите любую клавишу";
AnsiToOem(tx2,tx2);
cout <<tx2<<endl;
getch();
system("cls");
goto M1;
}
return 0;
} //конецmain