Скачиваний:
0
Добавлен:
20.09.2026
Размер:
219 Кб
Скачать
☆
7-ámeliy. Programmalıq támiynat talapların islep shıǵıw. Programmalıq
támiynat effektivligin bahalaw.
Jumıstıń maqseti: Programmalıq támiynatqa qoyılatuǵın talaplardı
(Requirements) durıs formallastırıw hám olardıń effektivligin (Performance Efficiency) bahalaw. Funkcional (FR) hám Funkcional emes (NFR) talaplardı ajıratıw, "SMART" kriteriyaların qollanıw. Kodtıń islew waqtın (Time Complexity) hám yad sarpın (Space Complexity) ólshew usılların úyreniw.
1. Talaplar:
Funkcional: Ne isleytuǵını (Login, Tólem). Funkcional emes: Qalay isleytuǵını (Tezlik, Isenimlilik).
2. Effektivlikti bahalaw:
 Big O Notation: Algoritm quramalılıǵı (O(n), O(log n)). Profiling: Kodtıń qaysı bólegi kóp waqıt alatuǵının tabıw. Benchmark: Testlew arqalı waqıttı ólshew.
ÁMELIY BÓLIM:
Talaplardı analizleymiz hám kodtıń effektivligin ólsheymiz. 1-mısal: Talaplardı formallastırıw Klient: "Programma tez islesin". (Jaman).
Analiz: "Tez" subyektiv túsinik.
SMART Talap: "Izlew nátiyjesi 100 000 jazıw arasınan 0.5 sekund ishinde shıǵıwı kerek."
2-mısal: Waqıttı ólshew (Benchmarking) Másele: 1 den N ge shekemgi sanlar qosındısın esaplaw (Cikl vs Formula).
Kod: #include <iostream>
#include <chrono> // Waqıt kitapxanası using namespace std; using namespace std::chrono;
int main() { long long N = 100000000;
// 1-usıl: Cikl (O(N)) auto start = high_resolution_clock::now(); long long sum = 0; for (int i = 1; i <= N; i++) sum += i; auto stop = high_resolution_clock::now(); auto duration = duration_cast<milliseconds>(stop - start); cout << "Cikl waqtı: " << duration.count() << " ms" << endl;
// 2-usıl: Formula (O(1)) start = high_resolution_clock::now(); sum = N * (N + 1) / 2; stop = high_resolution_clock::now(); duration = duration_cast<milliseconds>(stop - start); cout << "Formula waqtı: " << duration.count() << " ms" << endl;
return 0; } Nátiyje: Formula millisekundqa jetpey esaplaydı, cikl bolsa waqıt aladı.
3-mısal: Yad sarpı (Space Complexity)
Másele: Fibonachchi sanları.
1. Rekursiya (Yad kóp - Stack).
2. Iteraciya (Yad az - 3 ózgeriwshi). Kod (Iteraciya - O(1) Space): int fib(int n) { int a = 0, b = 1, c; for (int i = 2; i <= n; i++) { c = a + b; a = b; b = c; } return b; }
4-mısal: Profiling (Simulyaciya) Kodtaǵı "tar jerdi" (bottleneck) tabıw. Kod: void process() { loadData(); // 10 ms sortData(); // 2000 ms (Tar jer) saveData(); // 50 ms } Sheshim: `sortData` nı optimallastırıw kerek (Bubble Sort ornına Quick Sort).
5-mısal: NFR (Júkleme) Talap: "Server 1000 paydalanıwshını kóteriwi kerek". Test: JMeter arqalı 1000 virtual paydalanıwshı jiberip, serverdiń qulap-
qulamawın tekseriw.
ÁMELIY TAPSÍRMALAR
1-tapsırma: Talaplardı ajıratıw.
Tómendegi talaplardı FR (Funkcional) hám NFR (Funkcional emes) ge bóliń:
1. "Paydalanıwshı parolin ózgerte alıwı kerek."
2. "Parol keminde 8 belgi bolıwı kerek."
3. "Juwap waqtı 2 sekundtan aspasın."
4. "Sistema 24/7 islewi kerek."
2-tapsırma: SMART Talap.
"Sayt qolaylı bolıwı kerek" degen talaptı SMART formatına (Ólshenetuǵın) ótkeriń. (Mısalı: "Klient 3 ret basqanda tovar satıp ala alıwı kerek").
3-tapsırma: Algoritm quramalılıǵı.
Eki kodtı salıstırıń (O(N) hám O(N^2)): A) `for (int i=0; i<N; i++)` B) `for (int i=0; i<N; i++) for (int j=0; j<N; j++)` N=1000 bolǵanda, operaciyalar sanın esaplań.
4-tapsırma: Benchmark jazıw.
`std::vector` hám `std::list` tiń ortasına element qosıw (insert) tezligin ólshewshi programma jazıń. Qaysı biri tez?
5-tapsırma: Yad optimizaciyası.
1 million `int` sandı saqlaw ushın qansha yad kerek? (`10^6 * 4 byte`). Eger `short` (2 byte) qollansaq, qansha únemleymiz? Esaplań.
Соседние файлы в папке Programmalıq támiynat sapasın támiyinlew