2-ma’ruza mavzu: algoritmlash va dasturlashning asosiy tushunchalari reja



Yüklə 145,22 Kb.
səhifə3/6
tarix07.01.2024
ölçüsü145,22 Kb.
#209276
1   2   3   4   5   6
2) 2- ma\'ruza matni dasturlash

    Bu səhifədəki naviqasiya:
  • Amallar
ketma-ketlik (chiziqli) , tarmoqlanish, takrorlanish (takrorlash)
1. Chiziqli algoritm tuzilmasi ketma-ket bajariladigan buyruqlar tizimidan iborat bo‘ladi:
Amallar
Blok-sxema

1-amal

2-amal. . . .
.
n-amal




2. Tarmoqlanish. Bu tuzilma shart bajarilishi natijasiga qarab (ha yoki yo‘q) algoritmni bajarish yo‘nalishini belgilaydi.


Tarmoqlanish tuzilmasi to‘rtta ko‘rinishda bo‘lishi mumkin:

  • agar-u holda;

  • agar-u holda-aks holda;

  • shartlar ketma-ketligi agar-u holda;

  • shartlar ketma-ketligi agar-u holda-aks holda.




Algoritmik til

Blok-sxema

1. agar-u holda

agar shart
u holda amal
tamom



2. agar-u holda-aks holda

Agar shart
u holda 1-amal
aks holda 2-amal
tamom



3. tanlash

Tanlash
agar 1-shart: 1-amal
agar 2-shart: 2-amal
. . . . . . . . . . . .
agar N-shart: N-amal
tamom



4. tanlash-aks holda

Tanlash
Agar 1-shart: 1-amal
Agar 2-shart: 2-amal
. . . . . . . . . . . .
agar N-shart: N-amal
aks holda N+1 amal
tamom





Agar buyrugʻiga misollar



Algoritmni so‘zlar yordamidagi ifodasi

Blok-sxema ko‘rinishidagi ifodasi

Agar x > 0
u holda y := sin(x)
tamom



Agar a > b
u holda a := 2*a; b := 1
aks holda b := 2*b
tamom



Tanlash
Agar n = 1: y := sin(x)
Agar n = 2: y := cos(x)
Agar n = 3: y := 0
Tamom



Tanlash
agar a > 5: i := i+1
agar a = 0: j := j+1
aks holda i := 10; j:=0
tamom



3. Takrorlash tuzilmasi buyruq, ko‘rsatma va amallarni ko‘p marotaba bajarilishini ta’minlaydi. Takrorlashni ta’minlashning asosiy turlari ushbu jadvalda ko‘rsatilgan:




Ogʻzaki so‘zlar orqali

Blok-sxema tilida

Toki takrorlash turi
Toki so‘zidan keyin keluvchi shart bajarilgunga qadar takrorlash tanasida ko‘rsatilgan buyruqlar bajariladi.

Takrorlash boshi toki shart
Takrorlash tanasi (buyruqlar ketma-ketligi)
Takrorlash oxiri



Uchun takrorlash turi
Takrorlash o‘zgaruvchisi (takrorlash parametri) barcha qiymatlarni qabul qilgunga qadar takrorlash tanasida ko‘rsatilgan buyruqlar bajariladi.

Takrorlash boshi i uchun 1 dan 2 gacha
Takrorlash tanasi (buyruqlar ketma-ketligi)
Takrorlash oxiri






Toki va uchun buyruqlariga misollar

So‘zlar orqali

Blok-sxema orqali

Takrorlash boshi toki i <= 5
S := S+A[i]
i := i+1
takrorlash oxiri



Takrorlash boshi i uchun 1 dan 5 gacha
X[i] := i*i*i
Y[i] := X[i]/2
takrorlash oxiri



Binar amallar additiv ya’ni + qo‘shish va – ayirish amallariga, hamda multiplikativ, ya’ni * ko‘paytirish, / bo‘lish va % modul olish amallariga ajratiladi.
Butun sonni butun songa bo‘lganda natija butun songacha yaxlitlanadi.
Misol uchun, 20/3 = 6; (-20)/3 = -6; 20/(-3) = -6.
Unar amallarga ishorani o‘zgartiruvchi unar minus “–” va unar plyus “+” amallari kiradi. Bundan tashqari inkrement “++” va dekrement “--” amallari ham unar amallarga kiradi.
(C / C ++) Ternar operatori:
Ternar operatori quyidagi shaklga ega:
amal1 : amal2 : amal3
exp1 ifodasi har doim baholanadi. amal2 va amal3 bajarilishi amal1 natijasiga bogʻliq. Agar exp1 natijasi nolga teng bo‘lmasa, exp2 baholanadi, aks holda exp3 baholanadi.
Kamchiliklari:
amal1 har qanday kamchiligi amal2 yoki amal3 dan oldin darhol baholanadi va yangilanadi. Boshqacha qilib aytganda, holatni uchlamchi nuqtai nazardan baholaganingizdan keyin ketma-ketlikda nuqta bor. Agar exp2 yoki exp3 kamchiligi bo‘lsa, ulardan faqat bittasi baholanadi.
Qaytish turi:
Ternar operatori qaytish turiga ega. Qaytish turi odatiy \ ortiqcha yuklangan konversiya qoidalariga muvofiq exp2 ga va exp3 ning exp2 ga konvertatsiyasiga bogʻliq. Agar ular o‘zgartirilmasa, kompilyator xato tashlaydi. Quyidagi misollarga qarang.
Quyidagi dastur xatosiz kompilyatsiya qiladi. Uchlamchi iboraning qaytish turi float(exp2 dagiday) bo‘lishi kutilmoqda va exp3 (ya'ni, haqiqiy nol - turi int) noaniq ravishda float shaklga o‘tkaziladi.
#include
using namespace std;
int main()
{
int test = 0;
float fvalue = 3.111f;
cout << (test ? fvalue : 0) << endl;
return 0;
}
Quyidagi dastur kompilyatsiya qilmaydi, chunki kompilyator uchlamchi iboraning qaytariladigan turini topa olmaydi, yoki exp2 (belgilar qatori) va exp3 (int) o‘rtasida yashirin konversiya mavjud emas.
#include
using namespace std;
int main()
{
int test = 0;
cout << test ? "A String" : 0 << endl;
return 0;
}
Quyidagi dastur kompilyatsiya qilishi “mumkin” yoki ish vaqtida ishlamay qolishi mumkin. Uchinchi iboraning qaytish turi (char *) turi bilan cheklangan, ammo int ni qaytaradi, shuning uchun dastur xato bilan tugaydi. Haqiqatan ham, dastur ish vaqtida 0-chi manzilga bir qatorni bosib chiqarishga harakat qiladi.
#include
using namespace std;
int main()
{
int test = 0;
cout << (test ? "A String" : 0) << endl;
return 0;
}

Yüklə 145,22 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin