Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3курс инф .docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
652.25 Кб
Скачать

37. Проектні құрастыру және компиляцияға жіберу.

Қосымшаны компилациялау әр түрлі әдіспен орындалуы мүмкін. Компиляция Run|Run командасы арқылы немесе жедел батырма немесе Ғ9 батырмасы арқылы орындалады. Осы жағдайда бағдарламаның компиляциясы, компоновкасы орындалады және орындалу модулі .exe жасалынады сосын ол орындалуға жіберіледі. Алайда .exe модулінің жасалуы компиляция кезінде қате болмағанда ғана құрылады. Егер компиляциядагы файлда жөнделмейтін қателер болса, онда орындалатын файл құрылмайды. Ал егер де қателер болмаса, онда фай құрылады, бірақ та мұндай жағдайдың өзінде де компиляторда ескертулері болуы мүмкін. Run командасын орындау кезінде командалық жолды шақыра аламыз. Ол үшін алдымен Run| Parameters командасын орындаймыз және ашылған терезеге командалық жол қажет ететін команданы жазамыз.

Жобаны құрып оны бірден компиляцияга жібере бермейміз. Тек соңғы өзгертулерде қате бар жоғын тексеру маңыздырақ. Өйткені ол үшін уақыт жұмсамаған абзал. Одан да мәзірдің басқа да командаларын қолданған дұрыс: Project| Compile Unit, Project| Make Project немесе Project| Build Project.

Compile командасы компиляцияны тек Код Редакторы терезесінде немесе Жоба менеджерінде біз белгілеген модуль үшін ғана орындайды. Егер компиляция сәтті өтсе, онда объекті файл .obj құрылады.

Make командасы мәтіндері өзгертілгеннен алдыңғы жобаның компоновкасынан бастап барлық модуль үшін компиляция жасайды. Егер компиляция сәтті өтсе, онда модульдің объктілі файлы .obj құрылады және программаның компоновкасы жасалынады. Егер ол да сәтті өтсе, онда орындалу модулі .exe құрылады. Яғни Make пен Run командасының айырмашылығы тек компоновкадан кейін приложениенің орындалуы жүрмейтіндігінде.

38. Құрастырушы және компилятор хабарламасы.

Компилятор қандай қателіктер мен ескертулер туралы хабарламалар беретініндігі жайлы қарастырайық. Ол үшін қарапайым қате операторы бар приложение/қосымша құрап көрейік. Жаңа приложение/қосымша бастап, формаға Label белгісін Button батырмасын көшіреміз. Батырма шертпесіне келесі операторды жазамыз:

void_fastcall TForm1::Button1Click(Tobject *Sender) .

{

int i,j;

double A;

for(i=0; i<50; i++)

A *= 10000; // A 10000 есе өседі

Label1->Caption = “A= ” +B;

Бұл код 50 рет орындалатын және әр итерацияда А айнымалысын 10000-ға өсіретін for циклын қамтиды.

Енді Run| Run немесе жедел батырманы немесе F9 батырмасын басайық. Код Редакторы терезесінен суреттегідей бейнені көреміз:

Терезенің төмен жағында қателіктер мен ескертулер туралы хабарлама көрінеді. Бірінші хабарлама :

[C++ Warning] Unit1.cpp(23): W8013 Possible use of ‘A’ before definition ([C++ предупреждениеъ модуль Unit1.cpp, строка 23: W8013 переменная А, возможно, используется до того, как ей присвоено значение)

Бұл ескерту А айнымалысының бастапқы мәнін бермегеніміз жайлы және 23 жолда анықталмаған. Бұл компилятор үшін қателік емес тек Warning- ескерту. Осыны түзету үшін А айнымалысын 1 ге теңестіруіміз керек: double A=1;

Екінші хабарлама:

[C++Error] Unit1.cpp(24) : E2451 Undefined symbol ‘B’

([C++ Ошибка] модуль Unit1.cpp, строка 24: E2451 Необъявленный идентификатор В )

Бұл қателік туралы хабарлама. Бұл жағдайда мына операторда:

Label1->Caption= “A= ”+ B;

Бұл жерде А айнымалысымен қоса мүлдем хабарланбаған В айнымалысы көрсетілген.

Үшінші хабарлама:

[C++ Warning] Unit1.cpp(25): W8080 ‘j’ is declared but never used

([C++Предупреждение)] модуль Unit1.cpp, строка 25: W8080 Переменная ‘j’ объявлене, но нигде не используется)

Шынында да ‘j’ айнымалысын хабарлап, оны еш жерде қолданған жоқпыз. Сондықтан оны өшіріп тастауға болады.

Соңғы хабарлама:

[C++Warning] Unit1.cpp(25): W8057 Parametr ‘Sender’ is never used

Sender –компонент болып табылады. Ол бізге керек емес, яғни бұл ескертуді қайтарып тастауға болады.

Мысалдың дұрыс нұсқасы мынындай:

double A=1;

void_fastcall TForm1::Button1Click(TObject *Sender) .

{

int i;

for(i=0; i<50; i++)

A *= 10000; // A 10000 есе өседі

Label1->Caption = “A= ” + FloatToStr(A);

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]