Виконання задачі Б. Порядок дій і команддо виконання в лабораторній роботі умовної богатофайлової компіляції програмних модулів.
Крок 1. Копіюємо файли програмних модулів для умовної компіляції:
Ø Створіть папку Lab2_B на диску D:\ у папці Lab2;
Ø Cкопіюйте файли Input_abE.cpp, Avt_step. cpp, Sum_ord. cpp з папки Lab2_A2 в папку Lab2_B.
Крок 2. Створюємо текст файлу F_x_B.cpp у папці Lab2_B:
Запишіть у файл F_x_B.cpp наступні оператори і коментарі
/* F_х_B.cpp */
//--Необхідно зняти коментар для обраного методу інтегрування,
//-- щоб виконувалась умовна компіляція
//----#define METOD ('PR') /* Метод прямокутників*/
//----#define METOD ('TR') /* Метод трапецій*/
#define F(x) sqrt(0.3*x+1.2)/(1.6*x+sqrt(x*x+0.5))
Крок 3. Активізуємо програмного майстра (помічника) Consol Wіzard і проект файлів програми С++:
Ø Виконайте команду New у меню Fіle в керуючому вікні С++ Buіlder, щоб відкрилося вікно New Іtems, де виберить Consol Wіzard;
Ø Установить у вікні Consol Wіzard опцію С++ і збережить налаштування через ОК. В результаті у вікні С++ Buіlder буде показана назва Project2, а у заголовку вікна редактора коду буде назва Unіt1.cpp і у полі редактора коду буде записаний у програму наступний шаблон:
|
|
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
return 0;
}
//---------------------------------------------------------------------------
Ø Виконайте в меню Fіle команду Save Project As та змінюємо назву фалу Unіt1 на файл U_Lab2_B.cpp, а назву проекту Project2.bpr на назву P_Lab2_B.bpr.
Крок 4. Створюємо у вікні редактора коду програмний модуль U_Іnteg_pr.cpp для обчислення інтеграла до заданої функції F(x) по методу прямокутників:
/* U_Integ_prB.cpp */
//---------------------------------------------------------------------------
#include <vcl.h>
#include <system.hpp>
#include <stdio.h>
#include <math.h>
#include <conio.h>
float d[3];
float h;
#include "D:\Lab2\Lab2_B\Input_abE.cpp"
#include "D:\Lab2\Lab2_B\Avt_step.cpp"
#include "D:\Lab2\Lab2_B\Sum_ord.cpp"
//--------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{ float IL,IR;
clrscr();
input_data();
avt_step(d[0], d[1], d[2]);
gotoxy(33,11);
char S1[30],S2[30];
CharToOem("Визначення інтегралів\n",S1);
printf(S1);
IL=sum_ord(d[0], /* початок інтервалу інтегрування*/
d[1]-h, /* кінець інтервалу інтегрування*/
h)*h; /* h - крок зміни аргументу F(x)*/
IR=sum_ord(d[0]+h, /* початок інтервалу інтегрування*/
d[1], /* кінець інтервалу інтегрування*/
h)*h; /* h - крок зміни аргументу F(x)*/
CharToOem("\n ІНТЕГРАЛ ДОРІВНЮЄ", S2);
printf(S2);
printf("\n IL= %f",IL);
printf("\n IR= %f",IR);
printf("\n (IL + IR)/2 = %f",(IL+IR)/2);
getch();
return 0;
}
//---------------------------------------------------------------------------
Крок 5. Створюємо у вікні редактора коду програмний модуль U_Іnteg_tr.cpp для обчислення інтегралу до заданої функції F(x) по методу трапецій:
/* U_Integ_trB.cpp */
//---------------------------------------------------------------------------
#include <vcl.h>
|
|
#include <system.hpp>
#include <stdio.h>
#include <math.h>
#include <conio.h>
float d[3],h;
#include "D:\Lab2\Lab2_B\Input_abE.cpp"
#include "D:\Lab2\Lab2_B\Avt_step.cpp"
#include "D:\Lab2\Lab2_B\Sum_ord.cpp"
//--------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{ float Itr;
clrscr();
input_data();
avt_step(d[0], d[1], d[2]);
gotoxy(33,11);
char S1[30],S2[30];
CharToOem("Визначення інтегралів\n",S1);
printf(S1);
Itr=sum_ord(d[0], /* початок інтервалу інтегрування*/
d[1], /* кінець інтервалу інтегрування */
h)*h /* h - крок зміни аргументу F(x)*/
-0.5*F(d[0])*h /* корекція по ординаті F(a)*/
-0.5*F(d[1])*h; /* корекція по ординаті F(b)*/
CharToOem("\n ІНТЕГРАЛ ДОРІВНЮЄ", S2);
printf(S2);
printf("\n Itr = %f",Itr);
getch();
return 0;
}
//---------------------------------------------------------------------------------------------
Крок 6. Створюємо у вікні редактора коду основний програмний модуль U_Lab2_B.cpp з функциєю main():
/ * U_Lab2_B.cpp * /
//-------------------Умовна компіляція файлів--------------------
//--------------------закрита зона----------------------
#pragma hdrstop
//--------------------закрита зона----------------------
#include "F_x_B.cpp"
#ifdef METOD
#if METOD == 'PR'
#include "U_Integ_prB.cpp"
#else
#include "U_Integ_trB.cpp"
#endif
#else
#include <conio.h>
//--------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
clrscr();
window(10,10,80,25);
textcolor(WHITE+BLINK);
char S1[30],S2[30];
CharToOem("\n Інтеграл не обчислюється",S1);
сprintf(S1);
textbackground(YELLOW);
textcolor(BLACK);
gotoxy(12,4);
char S1[30],S2[30];
CharToOem("\n Ви забули задати метод інтегрування",S2);
сprintf(S2);
gotoxy(12,6);
textcolor(WHITE);
cputs(" У файлі -> F_x_B.cpp задайте метод інтегрування функції");
textmode(LASTMODE);
getch();
return 0;
}
#endif
//--------------------------------------------------------------------
Крок 7. У файлі F_x_B.cpp задаємо обчислення інтегралу методом прямокутників і перевіряємо правильність роботи програми С++:
Ø Виконайте умовну компіляцію командою Run або F9 для файлу U_Lab2_B.cpp і перевірте правильність роботи програми С++ у
вікні MS DOS для таких значень змінних: а = 10; b = 45; E = 0.2.
Крок 8. У файлі F_x_B.cpp задаємо обчислення інтегралу методом трапецій і перевіряємо правильність роботи програми С++:
Ø Виконайте умовну компіляцію командою Run або F9 для файлу U_Lab2_B.cpp і перевірте правильність роботи програми у вікні
MS DOS для таких значень змінних: а = 10; b = 45; E = 0.2.
Крок 9. Відновлюємо у файлі F_x_B.cpp наступні коментарі (не задаємо METOD)
//---- #define METOD ('PR') /* Метод прямокутників*/
//---- #define METOD ('TR') /* Метод трапеції*/
і перевіряємо правильність роботи програми С++:
Ø Виконайте умовну компіляцію командою Run або F9 для файлу U_Lab2_B.cpp і перевірте правильність роботи програми С++ у вікні MS DOS.
2.4 Контрольні питання до лабораторної роботи № 2
1. Пояснить призначення богатофайлової компіляції файлів при одержанні виконавчого коду прикладної програми.
2. Пояснить, яка компіляція файлів називається "умовною".
3. Як налаштовується C++ Buіlder для одержання виконавчого коду консольної програми С++ для роботи в MS DOS.
4. Які види вказівок препроцесору застосовуються при розробці програми С++ у лабораторній роботі № 2.
5. Яка функція виконує узгодження кодів для вивіду на дисплей написів шрифтом кирилиці у програмах для виконання в MS DOS.
6. Покажить, яким чином можна у програмі С++ використовувати
вказівку препроцесору #define Debug.