Добавил:
bekan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Programmalıq támiynat sapasın támiyinlew / 1-ameliy_ST
.pdf
1-ámeliy. Programmalıq támiynat sapasın támiyinlewde qáteler hám
olardıń payda bolıw sebeplerin anıqlaw.
Jumıstıń maqseti: Programmalıq támiynat sapasın támiyinlew (SQA)
procesinde ushırasatuǵın qátelerdiń (Errors), kemshiliklerdiń (Defects/Bugs)
hám buzılıwlardıń (Failures) túrlerin úyreniw. Qátelerdiń kelip shıǵıw
sebeplerin (Root Cause Analysis) analizlew hám olardı tabıw usılların
ámeliyatta qollanıw. C++ kodlarındaǵı sintaksislik, logikalıq hám orınlanıw
waqtındaǵı qátelerdi tabıw, ońlaw hám olardıń aldın alıw kónlikpelerin
qáliplestiriw.
Teoriyalıq bólim: Sapanı támiyinlewde terminologiya júdá áhmiyetli:
1. Error (Qáte): Adam (programmist) tárepinen jiberilgen qáte háreket
(mısalı, logikanı qáte túsiniw, sintaksislik qáte).
2. Defect / Bug (Kemshilik): Qáte nátiyjesinde kodta payda bolǵan
nadurıs instrukciya.
3. Failure (Buzılıw): Defect sebepli programmanıń kútilgen nátiyjeden
basqa nátiyje beriwi yamasa toqtap qalıwı.
Qátelerdiń sebepleri: Talaplardıń anıq emesligi, waqıt jetispewshiligi,
kodtıń quramalılıǵı, kommunikaciyanıń joqlıǵı.
ÁMELIY BÓLIM:
Hár qıylı qáte túrlerin C++ kodlarında analizleymiz hám ońlaymız.
1-mısal: Sintaksislik qáte (Syntax Error)
Bul eń ápiwayı qáte, kompilyator onı birden tabadı.
Kod (Qáte):
#include <iostream>
using namespace std;
int main() {
int x = 10

cout << "X mánisi: " << x << endl;
return 0;
}
Qáte analizi: `int x = 10` qatarınıń sońında noqatlı útir (`;`) qoyılmaǵan.
Dúzetiw: `int x = 10;`
2-mısal: Logikalıq qáte (Logic Error)
Programma isleydi, biraq nátiyje qáte.
Kod (Qáteli):
#include <iostream>
using namespace std;
// Eki sannıń ortasha mánisin esaplaw
double ortasha(int a, int b) {
return a + b / 2; // Qáte formula!
}
int main() {
cout << "Ortasha (10, 20): " << ortasha(10, 20) << endl;
// Kútilgen: 15. Haqıyqıy: 20 (10 + 10)
return 0;
}
Qáte analizi: Operatorlardıń prioritetin esapqa almaw. Bóliw (`/`) qosıwdan (`+`)
aldın orınlanadı.
Dúzetiw: `return (a + b) / 2.0;` (Qawsırma hám 2.0 qollanıw kerek).

3-mısal: Orınlanıw waqtındaǵı qáte (Runtime Error)
Programma kompilyaciyadan ótedi, biraq islep turǵanda qulaydı.
Kod (Qátesi bar):
#include <iostream>
using namespace std;
int main() {
int a = 10;
int b = 0;
int c = a / b; // 0 ge bóliw!
cout << "Nátiyje: " << c << endl;
return 0;
}
Qáte analizi: `b` nıń mánisi 0 bolǵanlıqtan, `ZeroDivisionError` payda boladı.
Dúzetiw: Bóliwden aldın tekseriw kerek (`if (b != 0)`).
4-mısal: Yadtıń aǵıp ketiwi (Memory Leak)
Dinamikalıq yadtı durıs basqarmaw.
Kod (Qátesi bar):
void memoryHog() {
int* ptr = new int[100]; // Yad alındı
ptr[0] = 10;
// delete[] ptr; // UMÍTÍLDÍ!
}

int main() {
while(true) {
memoryHog(); // Hár shaqırǵanda yad azayıp bara beredi
}
return 0;
}
Qáte analizi: `new` menen alınǵan yad `delete` penen bosatılmaǵan.
Dúzetiw: Funkciya sońında `delete[] ptr;` qosıw kerek.
5-mısal: Shegaradan shıǵıp ketiw (Buffer Overflow)
Massivtiń joq indeksine baylanısıw.
Kod (Qátesi bar):
#include <iostream>
using namespace std;
int main() {
int arr[5] = {1, 2, 3, 4, 5};
// Cikl 0 den 5 ke shekem (0,1,2,3,4,5) - 6 element!
for (int i = 0; i <= 5; i++) {
cout << arr[i] << " ";
}
return 0;
}
Qáte analizi: `arr[5]` elementi joq (indeksler 0-4). Bul "Undefined Behavior"
(Belgisiz minez-qulıq) alıp keledi.

Dúzetiw: `i < 5` bolıwı kerek.
ÁMELIY TAPSÍRMALAR
1-tapsırma: Logikalıq qáteni tabıw.
Tómendegi kodta `factorial` funkciyası nadurıs islep atır. Qáteni tawıp, dúzetiń.
int factorial(int n) {
int result = 1;
for (int i = 1; i < n; i++) { // Qáte usı jerde
result *= i;
}
return result;
}
(Mısalı: `factorial(5)` 120 shıǵıwı kerek, biraq 24 shıǵıp atır).
2-tapsırma: Runtime Error (Pointer).
Tómendegi kod ne ushın qulaydı? (Null Pointer Dereference).
int* p = nullptr;
*p = 10;
Qáteni dúzetiw ushın kod jazıń.
3-tapsırma: Tip qátesi (Type Mismatch).
`double` mánisti `int` ke joǵaltıwsız aylandırıw qátesin kórsetiwshi mısal jazıń.
(Mısalı: `int x = 3.14 + 2.5;`). Qalay durıs aylandırıw kerek?
4-tapsırma: Sheksiz cikl (Infinite Loop).
`while` cikli menen kod jazıń, biraq cikl heshqashan toqtamasın (logikalıq qáte).
Keyin onı toqtaytuǵın etip dúzetiń.

5-tapsırma: Root Cause Analysis (Talaplar).
Jaǵday: "Programma durıs isleydi, biraq klient narazı, sebebi esabatlar PDF
ornına Excel formatında shıǵıp atır".
Bul qáteniń túri qanday? (Error, Defect, Failure?).
Túpkilikli sebep (Root Cause) kodta ma, yaki talaplarda ma? Analiz jazıń.
Соседние файлы в папке Programmalıq támiynat sapasın támiyinlew
